diff --git a/src/blindpay/client.py b/src/blindpay/client.py index 16a6390..5d36381 100644 --- a/src/blindpay/client.py +++ b/src/blindpay/client.py @@ -20,6 +20,10 @@ from blindpay.resources.payouts.payouts import PayoutsResource, PayoutsResourceSync from blindpay.resources.quotes.quotes import QuotesResource, QuotesResourceSync from blindpay.resources.receivers.receivers import ReceiversResource, ReceiversResourceSync + from blindpay.resources.terms_of_service.terms_of_service import ( + TermsOfServiceResource, + TermsOfServiceResourceSync, + ) from blindpay.resources.virtual_accounts.virtual_accounts import ( VirtualAccountsResource, VirtualAccountsResourceSync, @@ -161,6 +165,12 @@ def webhook_endpoints(self) -> "WebhookEndpointsResource": return create_webhook_endpoints_resource(self._instance_id, self._api) + @cached_property + def terms_of_service(self) -> "TermsOfServiceResource": + from blindpay.resources.terms_of_service import create_terms_of_service_resource + + return create_terms_of_service_resource(self._instance_id, self._api) + def __getattr__(self, name: str) -> Any: return getattr(self._base, name) @@ -355,6 +365,12 @@ def webhook_endpoints(self) -> "WebhookEndpointsResourceSync": return create_webhook_endpoints_resource_sync(self._instance_id, self._api) + @cached_property + def terms_of_service(self) -> "TermsOfServiceResourceSync": + from blindpay.resources.terms_of_service import create_terms_of_service_resource_sync + + return create_terms_of_service_resource_sync(self._instance_id, self._api) + def __getattr__(self, name: str) -> Any: return getattr(self._base, name) diff --git a/src/blindpay/resources/__init__.py b/src/blindpay/resources/__init__.py index 4c70aba..e9f1e90 100644 --- a/src/blindpay/resources/__init__.py +++ b/src/blindpay/resources/__init__.py @@ -7,6 +7,7 @@ from .payouts import create_payouts_resource from .quotes import create_quotes_resource from .receivers import create_receivers_resource +from .terms_of_service import create_terms_of_service_resource from .virtual_accounts import create_virtual_accounts_resource from .wallets import create_blockchain_wallets_resource, create_offramp_wallets_resource from .webhooks import create_webhook_endpoints_resource @@ -22,6 +23,7 @@ "create_payouts_resource", "create_quotes_resource", "create_receivers_resource", + "create_terms_of_service_resource", "create_virtual_accounts_resource", "create_blockchain_wallets_resource", "create_offramp_wallets_resource", diff --git a/src/blindpay/resources/terms_of_service/__init__.py b/src/blindpay/resources/terms_of_service/__init__.py new file mode 100644 index 0000000..aabbaa8 --- /dev/null +++ b/src/blindpay/resources/terms_of_service/__init__.py @@ -0,0 +1,17 @@ +from .terms_of_service import ( + InitiateInput, + InitiateResponse, + TermsOfServiceResource, + TermsOfServiceResourceSync, + create_terms_of_service_resource, + create_terms_of_service_resource_sync, +) + +__all__ = [ + "create_terms_of_service_resource", + "create_terms_of_service_resource_sync", + "TermsOfServiceResource", + "TermsOfServiceResourceSync", + "InitiateInput", + "InitiateResponse", +] diff --git a/src/blindpay/resources/terms_of_service/terms_of_service.py b/src/blindpay/resources/terms_of_service/terms_of_service.py new file mode 100644 index 0000000..47057d8 --- /dev/null +++ b/src/blindpay/resources/terms_of_service/terms_of_service.py @@ -0,0 +1,42 @@ +from typing_extensions import Optional, TypedDict + +from ..._internal.api_client import InternalApiClient, InternalApiClientSync +from ...types import BlindpayApiResponse + + +class InitiateInput(TypedDict): + idempotency_key: str + receiver_id: Optional[str] + redirect_url: Optional[str] + + +class InitiateResponse(TypedDict): + url: str + + +class TermsOfServiceResource: + def __init__(self, instance_id: str, client: InternalApiClient): + self._instance_id = instance_id + self._client = client + + async def initiate(self, data: InitiateInput) -> BlindpayApiResponse[InitiateResponse]: + return await self._client.post(f"/e/instances/{self._instance_id}/tos", data) + + +class TermsOfServiceResourceSync: + def __init__(self, instance_id: str, client: InternalApiClientSync): + self._instance_id = instance_id + self._client = client + + def initiate(self, data: InitiateInput) -> BlindpayApiResponse[InitiateResponse]: + return self._client.post(f"/e/instances/{self._instance_id}/tos", data) + + +def create_terms_of_service_resource(instance_id: str, client: InternalApiClient) -> TermsOfServiceResource: + return TermsOfServiceResource(instance_id, client) + + +def create_terms_of_service_resource_sync( + instance_id: str, client: InternalApiClientSync +) -> TermsOfServiceResourceSync: + return TermsOfServiceResourceSync(instance_id, client) diff --git a/src/blindpay/resources/wallets/blockchain.py b/src/blindpay/resources/wallets/blockchain.py index 64da7e7..5985b7e 100644 --- a/src/blindpay/resources/wallets/blockchain.py +++ b/src/blindpay/resources/wallets/blockchain.py @@ -59,6 +59,27 @@ class MintUsdbStellarInput(TypedDict): signedXdr: str +class MintUsdbSolanaInput(TypedDict): + address: str + amount: str + + +class MintUsdbSolanaResponse(TypedDict): + success: bool + signature: str + + +class PrepareSolanaDelegationTransactionInput(TypedDict): + amount: str + owner_address: str + token_address: str + + +class PrepareSolanaDelegationTransactionResponse(TypedDict): + success: bool + transaction: str + + class BlockchainWalletsResource: def __init__(self, instance_id: str, client: InternalApiClient): self._instance_id = instance_id @@ -110,6 +131,14 @@ async def create_asset_trustline(self, address: str) -> BlindpayApiResponse[Crea async def mint_usdb_stellar(self, data: MintUsdbStellarInput) -> BlindpayApiResponse[None]: return await self._client.post(f"/instances/{self._instance_id}/mint-usdb-stellar", data) + async def mint_usdb_solana(self, data: MintUsdbSolanaInput) -> BlindpayApiResponse[MintUsdbSolanaResponse]: + return await self._client.post(f"/instances/{self._instance_id}/mint-usdb-solana", data) + + async def prepare_solana_delegation_transaction( + self, data: PrepareSolanaDelegationTransactionInput + ) -> BlindpayApiResponse[PrepareSolanaDelegationTransactionResponse]: + return await self._client.post(f"/instances/{self._instance_id}/prepare-delegate-solana", data) + class BlockchainWalletsResourceSync: def __init__(self, instance_id: str, client: InternalApiClientSync):