Files
2026-02-19 12:17:09 -05:00

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]