UNPKG

@paxoslabs/earn-sdk

Version:
102 lines (98 loc) 2.65 kB
import { Address } from 'viem'; /** * @file Vault configuration * @module vaults/config * @description Defines the configuration for all supported vaults */ /** * Available vault keys in the system * @constant {Object} VaultKeys * @property {string} NRWA - Key for the nRWA vault * @property {string} NTBILL - Key for the nTBILL vault * @property {string} NBASIS - Key for the nBASIS vault * @property {string} NCREDIT - Key for the nCREDIT vault * @property {string} NINSTO - Key for the nINSTO vault * @property {string} NPAYFI - Key for the nPAYFI vault * @property {string} OPNRWA - Key for the Op-nRWA vault * @property {string} OPNTBILL - Key for the Op-nTBILL vault * @property {string} OPNBASIS - Key for the Op-nBASIS vault * @property {string} OPPLUME - Key for the Op-plume vault * @property {string} OPPUSD - Key for the Op-pUSD vault */ declare const VaultKeys: { readonly OPNALPHA: "op-nALPHA"; readonly OPNBASIS: "op-nBASIS"; readonly OPNETF: "op-nETF"; readonly OPNPAYFI: "op-nPAYFI"; readonly OPNPLUME: "op-PLUME"; readonly OPNRWA: "op-nRWA"; readonly OPNTBILL: "op-nTBILL"; readonly OPPUSD: "op-pUSD"; readonly XLHYPE: "XLHYPE"; readonly CAMPUSD: "campUSD"; }; /** * Type representing valid vault keys * @typedef {string} VaultKey */ type VaultKey = (typeof VaultKeys)[keyof typeof VaultKeys]; interface Token { symbol: string; address: Address; decimals: number; } interface VaultToken extends Token { name: string; } interface VaultContracts { accountant: Address; boringVault: Address; teller: Address; } interface Bridge { type: "hyperlane" | "layerzero" | "none"; chainIdentifier: number; } interface Deposit { sourceChains: { [chainId: string]: DepositSourceChain; }; } interface DepositSourceChain { displayName: string; destinationChains: { [chainId: string]: DepositDestinationChain; }; depositTokens: { [tokenSymbol: string]: Token; }; } interface DepositDestinationChain { displayName: string; bridge: Bridge; } interface Withdraw { sourceChains: { [chainId: string]: WithdrawSourceChain; }; } interface WithdrawSourceChain { displayName: string; destinationChains: { [chainId: string]: WithdrawDestinationChain; }; } interface WithdrawDestinationChain { displayName: string; bridge: Bridge; wantTokens: { [tokenSymbol: string]: Token; }; } interface Vault { contracts: VaultContracts; token: VaultToken; deposit: Deposit; withdraw: Withdraw; } export type { VaultKey as V, Vault as a };