Source code for intents.models
from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from .enums import DepositMode, DepositType, RecipientType, RefundType, SwapStatus, SwapType
_camel = ConfigDict(alias_generator=to_camel, populate_by_name=True)
[docs]
class TokenResponse(BaseModel):
model_config = _camel
asset_id: str
decimals: int
blockchain: str
symbol: str
price: float
price_updated_at: datetime
contract_address: str | None = None
[docs]
class AppFee(BaseModel):
model_config = _camel
recipient: str
fee: int = Field(ge=0, description="Fee in basis points")
[docs]
class QuoteRequest(BaseModel):
model_config = _camel
dry: bool
swap_type: SwapType | str
slippage_tolerance: int = Field(description="Slippage in basis points")
origin_asset: str
deposit_type: DepositType | str
destination_asset: str
amount: str
refund_to: str
refund_type: RefundType | str
recipient: str
recipient_type: RecipientType | str
deadline: datetime
deposit_mode: DepositMode | str = DepositMode.SIMPLE
connected_wallets: list[str] | None = None
session_id: str | None = None
virtual_chain_recipient: str | None = None
virtual_chain_refund_recipient: str | None = None
custom_recipient_msg: str | None = None
referral: str | None = None
quote_waiting_time_ms: int = 3000
app_fees: list[AppFee] | None = None
[docs]
def to_api_dict(self) -> dict:
return self.model_dump(by_alias=True, exclude_none=True, mode="json")
[docs]
class Quote(BaseModel):
model_config = _camel
amount_in: str
amount_in_formatted: str
amount_in_usd: str
min_amount_in: str
max_amount_in: str | None = None
amount_out: str
amount_out_formatted: str
amount_out_usd: str
min_amount_out: str
time_estimate: int = Field(description="Estimated swap time in seconds")
deposit_address: str | None = None
deposit_memo: str | None = None
deadline: datetime | None = None
time_when_inactive: datetime | None = None
virtual_chain_recipient: str | None = None
virtual_chain_refund_recipient: str | None = None
custom_recipient_msg: str | None = None
refund_fee: str | None = None
[docs]
class QuoteResponse(BaseModel):
model_config = _camel
correlation_id: str | None = None
timestamp: datetime
signature: str
quote_request: QuoteRequest
quote: Quote
[docs]
class TransactionDetails(BaseModel):
model_config = _camel
hash: str
explorer_url: str
[docs]
class SwapDetails(BaseModel):
model_config = _camel
intent_hashes: list[str]
near_tx_hashes: list[str]
origin_chain_tx_hashes: list[TransactionDetails]
destination_chain_tx_hashes: list[TransactionDetails]
amount_in: str | None = None
amount_in_formatted: str | None = None
amount_in_usd: str | None = None
amount_out: str | None = None
amount_out_formatted: str | None = None
amount_out_usd: str | None = None
slippage: int | None = None
refunded_amount: str | None = None
refunded_amount_formatted: str | None = None
refunded_amount_usd: str | None = None
refund_reason: str | None = None
deposited_amount: str | None = None
deposited_amount_formatted: str | None = None
deposited_amount_usd: str | None = None
referral: str | None = None
[docs]
class ExecutionStatusResponse(BaseModel):
model_config = _camel
correlation_id: str
quote_response: QuoteResponse
status: SwapStatus
updated_at: datetime
swap_details: SwapDetails
[docs]
class SubmitDepositRequest(BaseModel):
model_config = _camel
tx_hash: str
deposit_address: str
near_sender_account: str | None = None
memo: str | None = None
[docs]
def to_api_dict(self) -> dict:
return self.model_dump(by_alias=True, exclude_none=True)
[docs]
class SubmitDepositResponse(BaseModel):
model_config = _camel
correlation_id: str
quote_response: QuoteResponse
status: SwapStatus
updated_at: datetime
swap_details: SwapDetails