These schemas provide structured information and statistics about wallet balances, tokens, and NFTs.

Wallet Balance Schemas

Integrations

export class WalletIntegrations {
    stats: WalletIntegration[];
    errors: RecipeError[];
}

export class WalletIntegration {
    wallet: BaseWallet;
    integration: BaseIntegration;
    balances: IntegrationTokenStats[];
    nft_balances: IntegrationNFTStats[];
    wallet_stats?: WalletIntegrationStats;
}

export class BaseIntegration {
    recipe_id: string;
    integration_id: string;
    chain: ChainKeys;
    stats: IntegrationStats;
    name: string;
    platform: string;
    type: string;
    address?: string;
    position_id?: string;
}

export class IntegrationStats {
    breakdown: BaseToken[];
    nft_breakdown: NFTCollection[];
    apy?: APYStats;
    tvl?: TvlStats;
    borrow_stats?: BorrowStats;
    airdrop_stats?: AirdropStats;
    staking_stats?: StakingStats;
    multiplier_stats?: MultiplierStats;
    impermanent_loss_stats?: ImpermanentLossStats;
    risk_score_stats?: RiskScoreStats;
}

export class IntegrationTokenStats {
    token: BaseToken;
    wallet: BaseWallet;
    balance: string;
    balance_type: string;
    usd_value?: string;
    unlock_timestamp?: number;
}

export class IntegrationNFTStats {
    nft_collection: NFTCollection;
    wallet: BaseWallet;
    balance: string;
    balance_type: string;
    usd_value?: string;
    unlock_timestamp?: number;
}

export class WalletIntegrationStats {
    borrow_stats?: WalletIntegrationBorrowStats;
    airdrop_stats?: WalletIntegrationAirdropStats;
    option_stats?: WalletIntegrationOptionStats;
    order_book_stats?: WalletIntegrationOrderBookStats;
    apy?: WalletIntegrationApyStats;
    yield_stats?: WalletYieldStats;
}

export class APYStats {
    value?: string;
    type?: string;
}

export class TvlStats {
    usd_value: string;
    tokens: TvlStatsTokens[];
}

export class TvlStatsTokens {
    token: BaseToken;
    amount: string;
    usd_value?: string;
}

export class BorrowStats {
    min_collateral_rate?: string;
}

export class AirdropStats {
    latest_round?: string;
}

export class StakingStats {
    staking_type?: string;
    validator?: ValidatorStats;
    lp_token_name?: string;
}

export class MultiplierStats {
    total_apy?: string;
    base_apy?: string;
    rewards_apr?: string;
    reward_apr_per_token?: TokenApys[];
    sample_count?: string;
    variance_coefficient?: string;
    multiplier_deviation?: string;
}

export class ImpermanentLossStats {
    percentage?: string;
    value?: string;
    time_ago?: string;
}

export class RiskScoreStats {
    leverage_score?: string;
    impermanent_loss_score?: string;
    yield_outlook_score?: string;
    reward_token_score?: string;
    tvl_score?: string;
    global_score?: string;
}

export class WalletIntegrationBorrowStats {
    interest_rate?: string;
    leverage_rate?: string;
    debt_type?: DebtType;
    min_collateral_rate?: string;
    interest_rate_type?: AnnualReturnType;
    health_rate?: number;
}

export class WalletIntegrationAirdropStats {
    was_in_last_round: boolean;
}

export class WalletIntegrationOptionStats {
    option_type?: OptionType;
    expiration_timestamp?: number;
    strike_price?: string;
    base_asset_name?: string;
}

export class WalletIntegrationOrderBookStats {
    base_token?: BaseToken | PartialToken;
    quote_token?: BaseToken | PartialToken;
    order_type?: OrderType;
    limit_price?: string;
    order_creation_timestamp?: number;
}

export class WalletYieldStats {
    daily_base_rate?: number;
    daily_rewards_rate?: number;
    daily_yield?: number;
}

export class ValidatorStats {
    name?: string;
    status?: string;
    address?: string;
    commission_percentage?: string;
}

export class TokenApys {
    token: BaseToken;
    apr: string;
}
@dataclass
class WalletIntegrations:
    stats: list[WalletIntegration]
    errors: list[RecipeError]

@dataclass
class WalletIntegration:
    wallet: BaseWallet
    integration: BaseIntegration
    balances: list[IntegrationTokenStats] = field(default_factory=list)
    nft_balances: list[IntegrationNFTStats] = field(default_factory=list)
    wallet_stats: WalletIntegrationStats | None = None

@dataclass
class BaseIntegration:
    recipe_id: str
    integration_id: str
    chain: ChainKeys
    stats: IntegrationStats
    position_id: str | None = None
    name: str = ""
    platform: str = ""
    type: str = ""
    address: str | None = None

@dataclass
class IntegrationStats:
    apy: APYStats | None = None
    tvl: TvlStats | None = None
    breakdown: list[BaseToken] = field(default_factory=list)
    nft_breakdown: list[NFTCollection] = field(default_factory=list)
    borrow_stats: BorrowStats | None = None
    airdrop_stats: AirdropStats | None = None
    staking_stats: StakingStats | None = None
    multiplier_stats: MultiplierStats | None = None
    impermanent_loss_stats: ImpermanentLossStats | None = None
    risk_score_stats: RiskScoreStats | None = None

@dataclass
class IntegrationTokenStats:
    token: BaseToken
    wallet: BaseWallet
    usd_value: str | None
    balance: str
    balance_type: str
    unlock_timestamp: int | None = None

@dataclass
class IntegrationNFTStats:
    nft_collection: NFTCollection
    wallet: BaseWallet
    usd_value: str | None
    balance: str
    balance_type: str
    unlock_timestamp: int | None = None

@dataclass
class WalletIntegrationStats:
    borrow_stats: WalletIntegrationBorrowStats | None = None
    airdrop_stats: WalletIntegrationAirdropStats | None = None
    option_stats: WalletIntegrationOptionStats | None = None
    order_book_stats: WalletIntegrationOrderBookStats | None = None
    apy: WalletIntegrationApyStats | None = None
    yield_stats: WalletYieldStats | None = None

@dataclass
class APYStats:
    value: str | None = None
    type: str | None = None

@dataclass
class TvlStats:
    tokens: list[TvlStatsTokens]
    usd_value: str | None

@dataclass
class TvlStatsTokens:
    token: BaseToken
    amount: str
    usd_value: str | None

@dataclass
class BorrowStats:
    min_collateral_rate: str | None = None


@dataclass
class AirdropStats:
    latest_round: str | None = None

@dataclass
class StakingStats:
    staking_type: str | None = None
    validator: ValidatorStats | None = None
    lp_token_name: str | None = None

@dataclass
class MultiplierStats:
    total_apy: str | None = None
    base_apy: str | None = None
    rewards_apr: str | None = None
    reward_apr_per_token: list[TokenApys] | None = None
    sample_count: str | None = None
    variance_coefficient: str | None = None
    multiplier_deviation: str | None = None

@dataclass
class ImpermanentLossStats:
    percentage: str | None = None
    value: str | None = None
    time_ago: str | None = None

@dataclass
class RiskScoreStats:
    leverage_score: str | None = None
    impermanent_loss_score: str | None = None
    yield_outlook_score: str | None = None
    reward_token_score: str | None = None
    tvl_score: str | None = None
    global_score: str | None = None

@dataclass
class WalletIntegrationBorrowStats:
    interest_rate: str | None = None
    leverage_rate: str | None = None
    debt_type: DebtType | None = None
    min_collateral_rate: str | None = None
    interest_rate_type: AnnualReturnType | None = None
    health_rate: float | None = None

@dataclass
class WalletIntegrationAirdropStats:
    was_in_last_round: bool = False


@dataclass
class WalletIntegrationOptionStats:
    option_type: OptionType | None = None
    expiration_timestamp: int | None = None
    strike_price: str | None = None
    base_asset_name: str | None = None

@dataclass
class WalletIntegrationOrderBookStats:
    base_token: BaseToken | PartialToken | None = None
    quote_token: BaseToken | PartialToken | None = None
    order_type: OrderType | None = None
    limit_price: str | None = None
    order_creation_timestamp: int | None = None

@dataclass
class WalletYieldStats:
    daily_base_rate: float | None = None
    daily_rewards_rate: float | None = None
    daily_yield: float | None = None

@dataclass
class ValidatorStats:
    name: str | None = None
    status: str | None = None
    address: str | None = None
    commission_percentage: str | None = None

@dataclass
class TokenApys:
    token: BaseToken
    apr: str

Tokens

export class WalletTokens {
    stats: WalletToken[];
    errors: TokenError[];
}

export class WalletToken {
    token: BaseToken;
    wallet: BaseWallet;
    balance: string;
    usd_value?: string;
}

export class TokenError {
    token: SimpleToken;
    chain: ChainKeys;
}
@dataclass
class WalletTokens:
    stats: list[WalletToken]
    errors: list[TokenError]

@dataclass
class WalletToken:
    token: BaseToken
    wallet: BaseWallet
    usd_value: str | None
    balance: str

@dataclass
class TokenError:
    token: SimpleToken
    chain: ChainKeys

NFTs

export class WalletNFTs {
    errors: WalletNFTError[];
    items?: NFTItem[];
}

export class WalletNFTError {
    indexer_id: string;
    chain: ChainKeys;
}

export class NFTItem {
    name: string;
    id: string;
    token_id: string;
    chain: string;
    traits: Record<string, string>;
    urls: Record<string, string>;
    traits_hash?: string;
    creator_address?: string;
    owner_address?: string;
    token?: BaseToken;
    wallet?: BaseWallet;
    collection?: NFTCollection;
    description?: string;
    avatar?: string;
    video_avatar?: string;
    price?: string;
    url?: string;
    rarity_score?: number;
    rank?: number;
}

export class NFTCollection {
    id: string;
    chain: string;
    low_volume: boolean;
    unknown_volume: boolean;
    is_fully_index: boolean;
    marketplaces: NFTCollectionMarketplace[];
    available_traits?: string[];
    name?: string;
    avatar?: string;
    banner?: string;
    volume?: string;
    volume_usd?: string;
    address?: string;
    token?: BaseToken;
    market_cap?: string;
    market_cap_usd?: string;
    floor_price?: string;
    floor_price_usd?: string;
    description?: string;
    average_price?: string;
    number_of_assets?: number;
    number_of_owners?: number;
    last_24h_change?: string;
    stats?: NFTCollectionStats;
    last_24h_change_percentage?: string;
}

export class NFTCollectionMarketplace {
    indexer_id!: string;
    slug_id?: string;
    url?: string;
    marketplace_id?: string;
}

export class NFTCollectionStats {
    price_timeseries?: Record<string, string>;
}
@dataclass
class WalletNFTs:
    items: list[NFTItem] | None
    errors: list[WalletNFTError]

@dataclass
class WalletNFTError:
    indexer_id: str
    chain: ChainKeys

@dataclass
class NFTItem:
    name: str
    id: str
    token_id: str
    chain: str
    traits: dict[str, str] = field(default_factory=dict)
    traits_hash: str | None = None
    creator_address: str | None = None
    owner_address: str | None = None
    token: BaseToken | None = None
    wallet: BaseWallet | None = None
    collection: NFTCollection | None = None
    description: str | None = None
    avatar: str | None = None
    video_avatar: str | None = None
    price: str | None = None
    url: str | None = None
    urls: dict[str, str] = field(default_factory=dict)
    rarity_score: float | None = None
    rank: int | None = None

@dataclass
class NFTCollection:
    id: str
    address: str | None
    chain: str
    marketplaces: list[NFTCollectionMarketplace]
    number_of_assets: int | None
    number_of_owners: int | None
    available_traits: list[str] | None
    token: BaseToken | None
    last_24h_change: str | None = None
    last_24h_change_percentage: str | None = None
    name: str | None = None
    avatar: str | None = None
    banner: str | None = None
    description: str | None = None
    volume: str | None = None
    volume_usd: str | None = None
    average_price: str | None = None
    floor_price: str | None = None
    floor_price_usd: str | None = None
    market_cap: str | None = None
    market_cap_usd: str | None = None
    stats: NFTCollectionStats | None = None
    low_volume: bool = False
    unknown_volume: bool = False
    is_fully_index: bool = False

@dataclass
class NFTCollectionMarketplace:
    indexer_id: str
    slug_id: str | None = None
    url: str | None = None
    marketplace_id: str | None = None

@dataclass
class NFTCollectionStats:
    price_timeseries: dict[str, str | float | None]

Shared Types

export enum DebtType {
    FARM = 'FARM',
    LOAN = 'LOAN',
    SHORT = 'SHORT',
    MARGIN = 'MARGIN',
    MARGIN_LONG = 'MARGIN_LONG',
    MARGIN_SHORT = 'MARGIN_SHORT',
    LEVERAGE_POSITION = 'LEVERAGE_POSITION',
}

export enum AnnualReturnType {
    APY = 'APY',
    APR = 'APR',
}

export enum OrderType {
    BUY = 'BUY',
    SELL = 'SELL',
}

export enum TokenType {
    ADDRESS = 'address',
    NATIVE = 'native_token',
    DENOM = 'denom',
}

export class BaseWallet {
    address!: string;
    chain!: string;
}

export class PartialToken {
    name: string;
    denom: string;
}

export class SimpleToken {
    token_id: string;
    name: string;
    denom: string;
    image?: string;
}

export class TokenChain {
    type: TokenType;
    value: string;
}

class TokenChainInfo {
    chain: ChainKeys;
    id: TokenChain;
    decimals?: number;
}

export class BaseToken {
    name: string;
    denom: string;
    id: string;
    display_id: string;
    image?: string;
    latest_price?: string;
    price_24h_change?: string;
    chain_properties?: TokenChainInfo;
}
class DebtType(StrEnum):
    FARM = "FARM"
    LOAN = "LOAN"
    SHORT = "SHORT"
    MARGIN = "MARGIN"
    MARGIN_LONG = "MARGIN_LONG"
    MARGIN_SHORT = "MARGIN_SHORT"
    LEVERAGE_POSITION = "LEVERAGE_POSITION"

class AnnualReturnType(StrEnum):
    APY = "APY"
    APR = "APR"

class OrderType(StrEnum):
    BUY = "BUY"
    SELL = "SELL"

class TokenType(StrEnum):
    ADDRESS = "address"
    NATIVE = "native_token"
    DENOM = "denom"

@dataclass
class BaseWallet:
    address: str
    chain: str

@dataclass
class PartialToken:
    name: str
    denom: str

@dataclass
class SimpleToken:
    token_id: str
    name: str
    denom: str
    image: str | None = None

@dataclass
class TokenChain:
    type: TokenType
    value: str

@dataclass
class TokenChainInfo:
    chain: ChainKeys
    id: TokenChain
    decimals: int | None

@dataclass
class BaseToken:
    name: str
    denom: str
    id: str
    display_id: str
    image: str | None = None
    latest_price: str | None = None
    price_24h_change: str | None = None
    chain_properties: TokenChainInfo | None = None