Source code for ccxt_pandas.wrappers.schemas.ledger_schema

"""Ledger data schema."""

import pandas as pd
import pandera.pandas as pa
from pandera.typing import Series

from ccxt_pandas.wrappers.schemas.base_schemas import BaseExchangeSchema, FeeFieldsMixin


[docs] class LedgerSchema(BaseExchangeSchema, FeeFieldsMixin): """Ledger data schema. Used by methods like fetch_ledger. Returns ledger entries showing account balance changes from trades, deposits, withdrawals, and other transactions. """ # Required fields id: Series[str] = pa.Field(title="ID", description="Ledger entry identifier (e.g., order ID)") direction: Series[str] = pa.Field( isin=["in", "out"], title="Direction", description="Direction: 'in' or 'out'" ) account: Series[str] = pa.Field(title="Account", description="Account identifier") referenceId: Series[str] = pa.Field( title="Reference ID", description="ID of trade, transaction, etc." ) referenceAccount: Series[str] = pa.Field( title="Reference Account", description="ID of opposite account" ) type: Series[str] = pa.Field( title="Type", description="Reference type (e.g., trade, deposit, withdrawal)" ) currency: Series[str] = pa.Field(title="Currency", description="Currency code") amount: Series[float] = pa.Field(ge=0, title="Amount", description="Amount (excluding fee)") timestamp: Series[pd.Timestamp] = pa.Field( title="Timestamp", description="Ledger entry timestamp" ) datetime: Series[pd.Timestamp] = pa.Field( title="Datetime", description="Ledger entry datetime (alias)" ) before: Series[float] = pa.Field(ge=0, title="Before", description="Balance before this entry") after: Series[float] = pa.Field(ge=0, title="After", description="Balance after this entry") status: Series[str] = pa.Field( isin=["ok", "pending", "canceled"], title="Status", description="Entry status", )
# Note: fee_currency, fee_cost, fee_rate come from FeeFieldsMixin (Optional) # Note: exchange field comes from BaseExchangeSchema (Optional)