@paxoslabs/earn-sdk
Version:
Paxos Labs Earn SDK
102 lines (98 loc) • 2.65 kB
TypeScript
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 };