154 lines
2.6 KiB
Python
154 lines
2.6 KiB
Python
"""
|
|
FetcherPay SDK Types
|
|
"""
|
|
|
|
from typing import Optional, Dict, Any, List
|
|
from dataclasses import dataclass
|
|
from enum import Enum
|
|
|
|
|
|
class PaymentStatus(str, Enum):
|
|
PENDING = 'pending'
|
|
AUTHORIZED = 'authorized'
|
|
PROCESSING = 'processing'
|
|
SETTLED = 'settled'
|
|
FAILED = 'failed'
|
|
CANCELLED = 'cancelled'
|
|
REFUNDED = 'refunded'
|
|
PARTIALLY_REFUNDED = 'partially_refunded'
|
|
|
|
|
|
class Rail(str, Enum):
|
|
AUTO = 'auto'
|
|
ACH = 'ach'
|
|
RTP = 'rtp'
|
|
CARD = 'card'
|
|
CRYPTO = 'crypto'
|
|
|
|
|
|
class AccountType(str, Enum):
|
|
ASSET = 'asset'
|
|
LIABILITY = 'liability'
|
|
REVENUE = 'revenue'
|
|
EXPENSE = 'expense'
|
|
EQUITY = 'equity'
|
|
|
|
|
|
@dataclass
|
|
class Fee:
|
|
amount: int
|
|
rate: str
|
|
|
|
|
|
@dataclass
|
|
class TimelineEvent:
|
|
status: str
|
|
timestamp: str
|
|
detail: str
|
|
|
|
|
|
@dataclass
|
|
class Refund:
|
|
id: str
|
|
payment_id: str
|
|
amount: int
|
|
reason: Optional[str]
|
|
status: str
|
|
created_at: str
|
|
|
|
|
|
@dataclass
|
|
class Payment:
|
|
id: str
|
|
object: str
|
|
status: PaymentStatus
|
|
amount: int
|
|
currency: str
|
|
rail: str
|
|
rail_selected: str
|
|
description: Optional[str]
|
|
source: Dict[str, Any]
|
|
destination: Dict[str, Any]
|
|
fee: Optional[Fee]
|
|
timeline: List[TimelineEvent]
|
|
ledger_entry_ids: List[str]
|
|
refunds: List[Refund]
|
|
idempotency_key: Optional[str]
|
|
metadata: Dict[str, Any]
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
@dataclass
|
|
class PaymentMethod:
|
|
id: str
|
|
object: str
|
|
type: str
|
|
status: str
|
|
bank_account: Optional[Dict[str, Any]]
|
|
card: Optional[Dict[str, Any]]
|
|
usdc_wallet: Optional[Dict[str, Any]]
|
|
metadata: Dict[str, Any]
|
|
created_at: str
|
|
|
|
|
|
@dataclass
|
|
class LedgerBalance:
|
|
pending: int
|
|
posted: int
|
|
available: int
|
|
|
|
|
|
@dataclass
|
|
class LedgerAccount:
|
|
id: str
|
|
object: str
|
|
name: str
|
|
type: AccountType
|
|
currency: str
|
|
balance: LedgerBalance
|
|
metadata: Dict[str, Any]
|
|
created_at: str
|
|
updated_at: str
|
|
|
|
|
|
@dataclass
|
|
class LedgerEntry:
|
|
id: str
|
|
object: str
|
|
journal_id: str
|
|
account_id: str
|
|
payment_id: Optional[str]
|
|
entry_type: str
|
|
amount: int
|
|
currency: str
|
|
status: str
|
|
description: Optional[str]
|
|
metadata: Dict[str, Any]
|
|
created_at: str
|
|
|
|
|
|
@dataclass
|
|
class WebhookEndpoint:
|
|
id: str
|
|
object: str
|
|
url: str
|
|
events: List[str]
|
|
status: str
|
|
secret: str
|
|
metadata: Dict[str, Any]
|
|
created_at: str
|
|
|
|
|
|
@dataclass
|
|
class ListResponse:
|
|
data: List[Any]
|
|
has_more: bool
|
|
next_cursor: Optional[str]
|
|
|
|
|
|
# Request types
|
|
CreatePaymentRequest = Dict[str, Any]
|
|
CreatePaymentMethodRequest = Dict[str, Any]
|
|
CreateWebhookRequest = Dict[str, Any]
|