import { IUserRoles } from './user'; import { IAddress, type ChainType, type IStellarNetwork } from './web3'; export type IHIstoricalSnapshot = { total_assets: number; total_shares: number; asset_share_ratio: number; underlying_price: number; snapshot_datetime: string; block_id: number; id: string; tvl: number; }; export interface IWSMonitorHeaders { 'x-user-id'?: string; 'x-environment'?: string; } export type IWSSubaccountPermission = { name: string; chain: number; account_address?: string; }; export type IWSSubaccountTwap = { source_token: string; dest_token: string; subaccount_chain: number; time_interval: number; amount: number; start_time?: string; limit_price?: number; number_of_orders: number; complete_all_orders?: boolean; slippage_tolerance?: number; }; export type IWSSubaccountTwapHistoryItem = { start_time: string; time_interval: number; source_token: string; destination_token: string; amount: number | null; limit_price: number; active: boolean; number_of_orders: number; complete_all_orders: boolean; id: string; updated_at: string; created_at: string; subaccount_id: string; }; export type IWSSubaccountTwapFill = { transaction_hash: string | null; source_token: string; destination_token: string; source_amount_in: number | null; destination_amount_out: number | null; implied_price: number | null; fee_amount: number | null; id: string; updated_at: string; created_at: string; twap_id: string; fireblocks_transaction_id: string; status: IWSFireblocksTxStatus; message: string; }; export type IWSSubaccountToken = { address: string; chain: number; decimals: number; discount_factor: number; img_url: string | null; price: number; symbol: string; token_type: number; }; interface IWSSubaccountCefiAsset { type: string; name: string; underlying: string; symbol: string; asset_type: string; } interface IWSSubaccountCefiSpotToken { asset: IWSSubaccountCefiAsset; value: number; balance: number; } interface IWSSubaccountCefiDerivative { value: number; asset_type: string; asset: IWSSubaccountCefiAsset; units: number; avg_cost: number; entry_cost: number; } export interface IWSSubaccountCefi { value: number; name: string; spot_tokens: IWSSubaccountCefiSpotToken[]; derivative_positions: IWSSubaccountCefiDerivative[]; } export interface IWSSubaccountLoan { address: IAddress; lender: IAddress; borrower: IAddress; state: string; total_repaid: number; principal_token: IWSTokenEntry; principal_amount: number; interest_amount: number; upcoming_payment: { amount: number; due_date: string; }; apr: number; initial_principal_amount: number; deployed_date: string; payment_interval: number; lender_apr: number; } export type IWSMetricsPnlAttributes = { pnl: number; percent_return: number; realized_apr: number; } | null; export type IWSMetricsPnl = { id: string; datetime: string | Date; pnl: number; pnl_vs_spot: number; swaps_pnl: number; timestamp: number; debt_interest_owed: number; credit_interest_owed: number; total_account_value: number; net_deposits: number; net_deposits_pv: number; hedger_pnl: number; lifetime: IWSMetricsPnlAttributes; lifetime_vs_spot: IWSMetricsPnlAttributes; three_day: IWSMetricsPnlAttributes; three_day_vs_spot: IWSMetricsPnlAttributes; seven_day: IWSMetricsPnlAttributes; seven_day_vs_spot: IWSMetricsPnlAttributes; thirty_day: IWSMetricsPnlAttributes; thirty_day_vs_spot: IWSMetricsPnlAttributes; }; export type IWSMetricsStrategy = { subaccount: string; strategy: string; datetime: string | Date; chain_id: number; estimated_apr: number; strategy_pnl: number; pending_rewards: number; strategy_notional: number; pnl_vs_spot: number; pnl_vs_spot_3d: number; pnl_vs_spot_7d: number; pnl_vs_spot_30d: number; realized_apr: number; realized_apr_3d: number; realized_apr_7d: number; realized_apr_30d: number; pool_weights: Record; lp_price: number; strategy_name: string; net_deposits: number; }; export type IWSMetricsToken = { subaccount: string; strategy: string; datetime: string | Date; chain_id: number; symbol: string; units_held: number; value_held: number; units_implied: number; value_implied: number; collateral_posted_amount: number; margin_posted_amount: number; collateral_posted_value: number; margin_posted_value: number; pool_weight: number; }; export type IWSMetricsTRS = { datetime: string | Date; reciever: string; payer: string; trs_address: string; chain_id: number; initial_underyling_price: number; reference_underlying_price: number; current_underlying_price: number; required_reciever_margin: number; required_payer_margin: number; mark_to_market_pnl: number; initial_margin: number; swap_contract_units: number; state: string; direction: string; underlying_token: string; }; export type IWSMetricsHealthFactor = { id: string; datetime: string; health_factor: number; total_account_value: number; total_equity_value: number; total_loan_value: number; total_loan_interest_amount: number; total_pnl: number; aggregate_payer_margin: number; aggregate_receiver_margin: number; intrest_paid: number; total_net_deposits: number; net_account_value: number; life_time_apr: number; percent_return: number; margin_fraction: number; maintenance_margin_fraction: number; total_collateral_value: number; total_pnl_3d: number; total_pnl_7d: number; total_pnl_30d: number; realized_apr_3d: number; realized_apr_7d: number; realized_apr_30d: number; }; export type IWSMetricsHedgerPnl = { subaccount: string; strategy: string; datetime: string | Date; chain_id: number; symbol: string; funding_payments: number; fees: number; unrealized: number; realized: number; pnl: number; implied_delta: number; hedge_delta: number; oi_biased_implied_delta: number; oi_bias: number; }; export type IWSMetricsHedger = { subaccount: string; strategy: string; datetime: string | Date; chain_id: number; strategy_notional: number; strategy_pnl: number; hedger_pnl: number; trs_pnl: number; realized_pnl: number; unrealized_pnl: number; fees: number; funding: number; corrections: number; total_hedge_delta: number; total_implied_delta: number; net_pnl: number; realized_apr_3d: number; realized_apr_7d: number; realized_apr_30d: number; }; export type IWSMetricsTimeseries = { aggregate_payer_margin: number; aggregate_receiver_margin: number; datetime: string | Date; health_factor: number; id: string; intrest_paid: number; life_time_apr: number; maintenance_margin_fraction: number; margin_fraction: number; net_account_value: number; percent_return: number; realized_apr_3d: number | null; realized_apr_7d: number | null; realized_apr_30d: number | null; total_account_value: number; total_collateral_value: number; total_equity_value: number; total_loan_interest_amount: number; total_loan_value: number; total_net_deposits: number; total_pnl: number; total_pnl_3d: number | null; total_pnl_7d: number | null; total_pnl_30d: number | null; }; export type IWSTokenEntry = { symbol: string; address: `0x${string}`; decimals: number; img_url?: string; price?: number; chain?: number; balance?: number; value?: number; label?: string; discount_factor?: string; type?: string; }; export type IWSTokenPrice = { price: number; dt: string; }; export type IWSUserSubaccount = { internal_name: string; friendly_name: string; address: string; chains: { chain_id: number; name: string; id: string; }[]; status: string; subaccount_type: string; min_health_factor: number; estimated_apr: number; id: string; user_id: string; implementation: string; turnkey_address: string; }; export type IWSUser = { eoa: string; full_name: string; type_: IUserRoles; nonce: string; disabled: boolean; id: string; }; export type IWSFireblocksTxStatus = 'SUBMITTED' | 'PENDING_AML_SCREENING' | 'PENDING_AUTHORIZATION' | 'QUEUED' | 'PENDING_SIGNATURE' | 'PENDING_3RD_PARTY_MANUAL_APPROVAL' | 'PENDING_3RD_PARTY' | 'BROADCASTING' | 'CONFIRMING' | 'COMPLETED' | 'CANCELLING' | 'BLOCKED' | 'REJECTED' | 'FAILED'; export interface IWSIntegrationMorphoApy { apy: number; vault_positions: any[]; token: IWSTokenEntry; } export interface IWSVaultLoan { address: IAddress; lender: IAddress; borrower: IAddress; state: string; total_repaid: number; principal_token: IWSTokenEntry; principal_amount: number; interest_amount: number; upcoming_payment: { amount: number; due_date: string; }; apr: number; initial_principal_amount: number; deployed_date: string; payment_interval: number; } export interface IDebankTokenExposure { amount: number; chain: string; decimals: number; id: IAddress; logoUrl: string; name: string; symbol: string; } export interface IDebankProtocolExposure { assetUsdValue: number; chain: string; debtUsdValue: number; id: string; logoUrl: string; netUsdValue: number; protocol: string; siteUrl: string; address: string; tokenExposure: Record; protocolExposure: Record; } export interface ITokenizedVaultSubaccount { address: string; strategist: ITokenizedVaultStrategist; } export type IOperatorTypeEnum = 'eoa' | 'subaccount'; export interface ITokenizedVaultOperator { address: `0x${string}`; operator_type: IOperatorTypeEnum; } export interface ITokenizedVaultEoaOperator { address: string; id: string; name: string; } export interface ITokenizedVaultStrategist { strategist_name: string; strategist_logo: string; id: string; } export interface IOTCTrade { value: number; payer: string; receiver: string; units: number; price: number; trade_name: string; symbol: string; strike: number; expiry: string; asset_type: string; underlying: string; average_cost: number; } export interface IOTCPosition { value: number; underlying: string; settlement_type: string; settlement_currency: string; asset_type: string; symbol: string; trades: IOTCTrade[]; } export interface ITokenizedVaultReward { tokenizedvault_id: string; id: string; text: string; img_url: string; multiplier: number; created_at: string; start_datetime: string; } export interface ITokenizedVaultReportedAPY { apy: number; underlying_apy: number; liquid_apy: number; points_apy: number | null; rewards_compounded: number; rewards_claimable: number; explainer: string; id: string; tokenized_vault_id: string; created_at: Date; updated_at: Date; } export interface ITokenizedVaultReceiptTokenIntegration { address: string; chain: number; token_class: string; shorthand: string; symbol: string; tiingo_ticker: string; img_url: string; is_transferable: boolean; id: string; position_id: string; stable_token_pair_id: string; } export interface IComposabilityIntegration { name: string; description: string; earning_multiplier: number; protocol_url: string; logo_url: string; tokenized_vault_id: string; id: string; } export interface ISolanaVaultMetadata { vault_state_pda: string; share_mint: string; deposit_mint: string; deposit_token_symbol?: string; deposit_token_decimals?: number; program_id?: string; } export interface IStellarVaultMetadata { deposit_token_address: string | null; deposit_token_symbol?: string; deposit_token_decimals?: number; network_name: IStellarNetwork; utila_vault_id?: string; utila_wallet_id?: string; } export interface ITokenizedVault { address: string; yield_distributor: string; chain: number; enable_external_assets_update: boolean; chain_type: ChainType; default_apy_horizon: 7 | 30 | null; enabled_historical_price_horizons: any[]; description: string; internal_type: 'lendingPool' | 'tokenizedVault' | 'tokenizedVaultV2' | 'multiAssetVault'; public_type: 'Lending' | 'Defi Yield' | 'Pre-deposit'; is_featured: boolean; is_spotlighted?: boolean; withdrawal_only?: boolean | null; is_visible: boolean; weekly_performance_fee_bps: number; platform_fee_override: { management_fee: number; is_fee_waived: boolean; }; management_fee_waived_until_date: string | null; management_fee_waived_until_tvl: number | null; performance_fee_waived_until_date: string | null; performance_fee_waived_until_tvl: number | null; start_datetime: Date; vault_name: string; vault_logo_url: string; reserve_target: number; reserve_tolerance: number; status: 'active' | 'closed'; is_charge_fees_manual: boolean; id: string; receipt_token_symbol: string; rewards: ITokenizedVaultReward[]; subaccounts: ITokenizedVaultSubaccount[]; reported_apy: ITokenizedVaultReportedAPY | null; campaign_apy: number | null; receipt_token_integrations: ITokenizedVaultReceiptTokenIntegration[]; hardcoded_strategists: ITokenizedVaultStrategist[]; max_daily_drawdown: number | null; risk: string; operators: ITokenizedVaultOperator[]; eoa_operators: ITokenizedVaultEoaOperator[]; composability_integrations?: IComposabilityIntegration[]; solana_vault_metadata?: ISolanaVaultMetadata | null; stellar_vault_metadata?: IStellarVaultMetadata | null; lagDuration: number; historical_apy: Record | null; historical_snapshots?: IHIstoricalSnapshot[]; max_drawdown: number | null; daily_pnl_per_share: Record; latest_reported_tvl: number | null; cached_at?: string | null; instant_redeem_config: null | { subaccount_address: string; output_asset_symbol: string; is_paused: boolean; available_liquidity: number; redeemable_assets: Array<{ address: string; symbol: string; decimals: number; spread_bps: number; }>; }; show_cap_filled: boolean | null; } export interface IWSVaultHistoricalApy { data: { labels: string[]; values: number[]; }; average_apy: number; status: number; error: string | null; } export interface IHistoricalTimeseriesPoint { tvl: number | null; daily_apy: number | null; daily_pnl: number | null; share_price: number | null; total_assets: number | null; total_shares: number | null; asset_share_ratio: number | null; missing: boolean; } export interface IHistoricalTimeseriesResponse { data: Record; } export {};