export type PublicMeta = { updatedAt: string; version: string; source: string; [key: string]: unknown; }; export type ApiEnvelope = { data: TData; meta: PublicMeta; }; export type SupplyByChain = { chain: string; chainKey: string; supply: string; }; export type SupplyData = { circulatingSupply: string; byChain: SupplyByChain[]; }; export type ReserveData = { nativeBtcReserve: string; btcPriceUsd: string; reserveValueUsd: string; addresses?: unknown; addressCount?: unknown; }; export type ReserveAddress = { address: string; balanceBtc: string; explorerUrl: string; }; export type CustodianAddressesData = { addresses: ReserveAddress[]; total: number; }; export type CollateralizationData = { reserveRatio: string; }; export type ProofOfReserveData = { supply: SupplyData; reserves: ReserveData; collateralization: CollateralizationData; }; export type ChainContract = { contractType: string; contractAddress: string; explorerUrl: string; }; export type ChainItem = { chain: string; chainKey: string; type: "native" | "bridge" | string; isNew: boolean; deployment?: string | null; contract: ChainContract; }; export type ChainsData = { natives?: ChainItem[]; bridges?: ChainItem[]; }; export type BackingStatusData = { reserveRatio: string; }; export type MintBurnRecord = { action: string; status: string; network: string; amount: string; merchantName: string; date: string; txHash: string; }; export type Pagination = { pageIndex: number; pageSize: number; total: number; }; export type MintBurnData = { records: MintBurnRecord[]; pagination: Pagination; }; export type MintBurnRecordsData = { records: MintBurnRecord[]; }; export type ParticipantItem = { role: string; name: string; description: string; tags: string[]; website: string; }; export type ParticipantsData = { participants: ParticipantItem[]; }; export type MerchantItem = { name: string; description: string; tags: string[]; website: string; }; export type MerchantsData = { merchants: MerchantItem[]; }; export type CustodianItem = { name: string; description: string; website: string; }; export type CustodiansData = { custodians: CustodianItem[]; }; export type EcosystemProject = { name: string; category: string; networks: string[]; url: string; }; export type EcosystemData = { projects: EcosystemProject[]; }; export type McpErrorCode = "INVALID_PARAM" | "UPSTREAM_UNAVAILABLE" | "RATE_LIMITED" | "UPSTREAM_CONTRACT_ERROR" | "INTERNAL_ERROR"; export type McpErrorPayload = { code: McpErrorCode; message: string; hint: string; retryable: boolean; details: Record; };