import datetime from pydantic import BaseModel, ConfigDict, Field from src.constants import PayoneerProgramMoveTypes, PayoneerStatusTypes class AccountPayee(BaseModel): model_config = ConfigDict(populate_by_name=True) account_payee_id: int = Field(alias='accountPayeeId') payoneer_program_id: int = Field(alias='payoneerProgramId') prev_payoneer_program_id: int = Field(alias='prevPayoneerProgramId') class Event(BaseModel): model_config = ConfigDict(populate_by_name=True) account_payee: AccountPayee = Field(alias='accountPayee') class PayoneerStatus(BaseModel): type: PayoneerStatusTypes description: str class PayoneerPayoutMethod(BaseModel): type: str currency: str class PayoneerStatusData(BaseModel): account_id: int status: PayoneerStatus registration_date: datetime.date payout_method: PayoneerPayoutMethod class PayoneerStatusResponse(BaseModel): result: PayoneerStatusData class MovePayoneerProgramData(BaseModel): payee_id: str adopted_to_partner_id: int adopted_payee_id: str date_adopted: datetime.datetime class MovePayoneerProgramResponse(BaseModel): result: MovePayoneerProgramData class PayoneerProgramData(BaseModel): payoneer_program_id: int payoneer_program_name: str funding_currency: str reference_payment_type_id: int # API returns the program data directly, not wrapped in a result field PayoneerProgramResponse = PayoneerProgramData class AbacusStateData(BaseModel): abacus_state_id: int action_name: str action_status: str class PayoneerProgramMoveTypeResponse(BaseModel): move_type: PayoneerProgramMoveTypes