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