@paxoslabs/earn-sdk
Version:
Paxos Labs Earn SDK
1,565 lines (1,558 loc) • 104 kB
TypeScript
import { C as ChainId } from './vault-config-BNzhv3QV.js';
export { g as getBridgeFee, a as getDepositExchangeRate, b as getWithdrawExchangeRate, i as isDepositSpendApproved, c as isWithdrawalSpendApproved } from './exchange-rate-C1sqPUWT.js';
export { getVaultByKey } from './vaults.js';
import { Address, erc20Abi, Hex, TypedDataDomain } from 'viem';
import { B as BridgeData } from './teller-DhrMj3mv.js';
import { V as VaultKey } from './config-BQynVNDC.js';
import { Y as YieldType, E as EarnVault, S as SupportedAsset, A as AssetFilterOptions, V as VaultFilterOptions, W as WithdrawSupportedAsset } from './earn-sdk-api-CAc-JIqW.js';
export { a as APIError } from './earn-sdk-api-CAc-JIqW.js';
declare const TellerAbi: readonly [{
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "_owner";
readonly type: "address";
}, {
readonly internalType: "address";
readonly name: "_vault";
readonly type: "address";
}, {
readonly internalType: "address";
readonly name: "_accountant";
readonly type: "address";
}, {
readonly internalType: "address";
readonly name: "_endpoint";
readonly type: "address";
}];
readonly stateMutability: "nonpayable";
readonly type: "constructor";
}, {
readonly inputs: readonly [];
readonly name: "InvalidDelegate";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "InvalidEndpointCall";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint16";
readonly name: "optionType";
readonly type: "uint16";
}];
readonly name: "InvalidOptionType";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "LzTokenUnavailable";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainLayerZeroTellerWithMultiAssetSupport_InvalidToken";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainTellerBase_DestinationChainReceiverIsZeroAddress";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainTellerBase_GasLimitExceeded";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainTellerBase_GasTooLow";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}];
readonly name: "MultiChainTellerBase_MessagesNotAllowedFrom";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}];
readonly name: "MultiChainTellerBase_MessagesNotAllowedTo";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainTellerBase_TargetTellerIsZeroAddress";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "MultiChainTellerBase_ZeroMessageGasLimit";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "eid";
readonly type: "uint32";
}];
readonly name: "NoPeer";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "msgValue";
readonly type: "uint256";
}];
readonly name: "NotEnoughNative";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "addr";
readonly type: "address";
}];
readonly name: "OnlyEndpoint";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "eid";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "sender";
readonly type: "bytes32";
}];
readonly name: "OnlyPeer";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint8";
readonly name: "bits";
readonly type: "uint8";
}, {
readonly internalType: "uint256";
readonly name: "value";
readonly type: "uint256";
}];
readonly name: "SafeCastOverflowedUintDowncast";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "token";
readonly type: "address";
}];
readonly name: "SafeERC20FailedOperation";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__AssetNotSupported";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__BadDepositHash";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__MinimumAssetsNotMet";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__MinimumMintNotMet";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__Paused";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__PermitFailedAndAllowanceTooLow";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__ShareLockPeriodTooLong";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__SharesAreLocked";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__SharesAreUnLocked";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__ZeroAssets";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "TellerWithMultiAssetSupport__ZeroShares";
readonly type: "error";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "asset";
readonly type: "address";
}];
readonly name: "AssetAdded";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "asset";
readonly type: "address";
}];
readonly name: "AssetRemoved";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "user";
readonly type: "address";
}, {
readonly indexed: true;
readonly internalType: "contract Authority";
readonly name: "newAuthority";
readonly type: "address";
}];
readonly name: "AuthorityUpdated";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "asset";
readonly type: "address";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}];
readonly name: "BulkDeposit";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "asset";
readonly type: "address";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}];
readonly name: "BulkWithdraw";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "bool";
readonly name: "allowMessagesFrom";
readonly type: "bool";
}, {
readonly indexed: false;
readonly internalType: "bool";
readonly name: "allowMessagesTo";
readonly type: "bool";
}, {
readonly indexed: false;
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}, {
readonly indexed: false;
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}, {
readonly indexed: false;
readonly internalType: "uint64";
readonly name: "messageGasMin";
readonly type: "uint64";
}];
readonly name: "ChainAdded";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}];
readonly name: "ChainAllowMessagesFrom";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}];
readonly name: "ChainAllowMessagesTo";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}];
readonly name: "ChainRemoved";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}];
readonly name: "ChainSetGasLimit";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}];
readonly name: "ChainStopMessagesFrom";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "chainSelector";
readonly type: "uint256";
}];
readonly name: "ChainStopMessagesTo";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "uint256";
readonly name: "nonce";
readonly type: "uint256";
}, {
readonly indexed: true;
readonly internalType: "address";
readonly name: "receiver";
readonly type: "address";
}, {
readonly indexed: true;
readonly internalType: "address";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "depositTimestamp";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "shareLockPeriodAtTimeOfDeposit";
readonly type: "uint256";
}];
readonly name: "Deposit";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "uint256";
readonly name: "nonce";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "bytes32";
readonly name: "depositHash";
readonly type: "bytes32";
}, {
readonly indexed: true;
readonly internalType: "address";
readonly name: "user";
readonly type: "address";
}];
readonly name: "DepositRefunded";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "bytes32";
readonly name: "messageId";
readonly type: "bytes32";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "address";
readonly name: "to";
readonly type: "address";
}];
readonly name: "MessageReceived";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "bytes32";
readonly name: "messageId";
readonly type: "bytes32";
}, {
readonly indexed: false;
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly indexed: false;
readonly internalType: "address";
readonly name: "to";
readonly type: "address";
}];
readonly name: "MessageSent";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: true;
readonly internalType: "address";
readonly name: "user";
readonly type: "address";
}, {
readonly indexed: true;
readonly internalType: "address";
readonly name: "newOwner";
readonly type: "address";
}];
readonly name: "OwnershipTransferred";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [];
readonly name: "Paused";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [{
readonly indexed: false;
readonly internalType: "uint32";
readonly name: "eid";
readonly type: "uint32";
}, {
readonly indexed: false;
readonly internalType: "bytes32";
readonly name: "peer";
readonly type: "bytes32";
}];
readonly name: "PeerSet";
readonly type: "event";
}, {
readonly anonymous: false;
readonly inputs: readonly [];
readonly name: "Unpaused";
readonly type: "event";
}, {
readonly inputs: readonly [];
readonly name: "accountant";
readonly outputs: readonly [{
readonly internalType: "contract AccountantWithRateProviders";
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "asset";
readonly type: "address";
}];
readonly name: "addAsset";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "bool";
readonly name: "allowMessagesFrom";
readonly type: "bool";
}, {
readonly internalType: "bool";
readonly name: "allowMessagesTo";
readonly type: "bool";
}, {
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}, {
readonly internalType: "uint64";
readonly name: "messageGasMin";
readonly type: "uint64";
}];
readonly name: "addChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "srcEid";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "sender";
readonly type: "bytes32";
}, {
readonly internalType: "uint64";
readonly name: "nonce";
readonly type: "uint64";
}];
readonly internalType: "struct Origin";
readonly name: "origin";
readonly type: "tuple";
}];
readonly name: "allowInitializePath";
readonly outputs: readonly [{
readonly internalType: "bool";
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}];
readonly name: "allowMessagesFromChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}];
readonly name: "allowMessagesToChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "authority";
readonly outputs: readonly [{
readonly internalType: "contract Authority";
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "from";
readonly type: "address";
}];
readonly name: "beforeTransfer";
readonly outputs: readonly [];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "address";
readonly name: "destinationChainReceiver";
readonly type: "address";
}, {
readonly internalType: "contract ERC20";
readonly name: "bridgeFeeToken";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGas";
readonly type: "uint64";
}, {
readonly internalType: "bytes";
readonly name: "data";
readonly type: "bytes";
}];
readonly internalType: "struct BridgeData";
readonly name: "data";
readonly type: "tuple";
}];
readonly name: "bridge";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "messageId";
readonly type: "bytes32";
}];
readonly stateMutability: "payable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "minimumMint";
readonly type: "uint256";
}, {
readonly internalType: "address";
readonly name: "to";
readonly type: "address";
}];
readonly name: "bulkDeposit";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "shares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "withdrawAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "minimumAssets";
readonly type: "uint256";
}, {
readonly internalType: "address";
readonly name: "to";
readonly type: "address";
}];
readonly name: "bulkWithdraw";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "assetsOut";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "minimumMint";
readonly type: "uint256";
}];
readonly name: "deposit";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "shares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "minimumMint";
readonly type: "uint256";
}, {
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "address";
readonly name: "destinationChainReceiver";
readonly type: "address";
}, {
readonly internalType: "contract ERC20";
readonly name: "bridgeFeeToken";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGas";
readonly type: "uint64";
}, {
readonly internalType: "bytes";
readonly name: "data";
readonly type: "bytes";
}];
readonly internalType: "struct BridgeData";
readonly name: "data";
readonly type: "tuple";
}];
readonly name: "depositAndBridge";
readonly outputs: readonly [];
readonly stateMutability: "payable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "depositNonce";
readonly outputs: readonly [{
readonly internalType: "uint96";
readonly name: "";
readonly type: "uint96";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "minimumMint";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "deadline";
readonly type: "uint256";
}, {
readonly internalType: "uint8";
readonly name: "v";
readonly type: "uint8";
}, {
readonly internalType: "bytes32";
readonly name: "r";
readonly type: "bytes32";
}, {
readonly internalType: "bytes32";
readonly name: "s";
readonly type: "bytes32";
}];
readonly name: "depositWithPermit";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "shares";
readonly type: "uint256";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "endpoint";
readonly outputs: readonly [{
readonly internalType: "contract ILayerZeroEndpointV2";
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "srcEid";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "sender";
readonly type: "bytes32";
}, {
readonly internalType: "uint64";
readonly name: "nonce";
readonly type: "uint64";
}];
readonly internalType: "struct Origin";
readonly name: "";
readonly type: "tuple";
}, {
readonly internalType: "bytes";
readonly name: "";
readonly type: "bytes";
}, {
readonly internalType: "address";
readonly name: "_sender";
readonly type: "address";
}];
readonly name: "isComposeMsgSender";
readonly outputs: readonly [{
readonly internalType: "bool";
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "isPaused";
readonly outputs: readonly [{
readonly internalType: "bool";
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "";
readonly type: "address";
}];
readonly name: "isSupported";
readonly outputs: readonly [{
readonly internalType: "bool";
readonly name: "";
readonly type: "bool";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "srcEid";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "sender";
readonly type: "bytes32";
}, {
readonly internalType: "uint64";
readonly name: "nonce";
readonly type: "uint64";
}];
readonly internalType: "struct Origin";
readonly name: "_origin";
readonly type: "tuple";
}, {
readonly internalType: "bytes32";
readonly name: "_guid";
readonly type: "bytes32";
}, {
readonly internalType: "bytes";
readonly name: "_message";
readonly type: "bytes";
}, {
readonly internalType: "address";
readonly name: "_executor";
readonly type: "address";
}, {
readonly internalType: "bytes";
readonly name: "_extraData";
readonly type: "bytes";
}];
readonly name: "lzReceive";
readonly outputs: readonly [];
readonly stateMutability: "payable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "";
readonly type: "bytes32";
}];
readonly name: "nextNonce";
readonly outputs: readonly [{
readonly internalType: "uint64";
readonly name: "nonce";
readonly type: "uint64";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "oAppVersion";
readonly outputs: readonly [{
readonly internalType: "uint64";
readonly name: "senderVersion";
readonly type: "uint64";
}, {
readonly internalType: "uint64";
readonly name: "receiverVersion";
readonly type: "uint64";
}];
readonly stateMutability: "pure";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "owner";
readonly outputs: readonly [{
readonly internalType: "address";
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "pause";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "eid";
readonly type: "uint32";
}];
readonly name: "peers";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "peer";
readonly type: "bytes32";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly components: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "address";
readonly name: "destinationChainReceiver";
readonly type: "address";
}, {
readonly internalType: "contract ERC20";
readonly name: "bridgeFeeToken";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGas";
readonly type: "uint64";
}, {
readonly internalType: "bytes";
readonly name: "data";
readonly type: "bytes";
}];
readonly internalType: "struct BridgeData";
readonly name: "data";
readonly type: "tuple";
}];
readonly name: "previewFee";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "fee";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "";
readonly type: "uint256";
}];
readonly name: "publicDepositHistory";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "";
readonly type: "bytes32";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "nonce";
readonly type: "uint256";
}, {
readonly internalType: "address";
readonly name: "receiver";
readonly type: "address";
}, {
readonly internalType: "address";
readonly name: "depositAsset";
readonly type: "address";
}, {
readonly internalType: "uint256";
readonly name: "depositAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "shareAmount";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "depositTimestamp";
readonly type: "uint256";
}, {
readonly internalType: "uint256";
readonly name: "shareLockUpPeriodAtTimeOfDeposit";
readonly type: "uint256";
}];
readonly name: "refundDeposit";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract ERC20";
readonly name: "asset";
readonly type: "address";
}];
readonly name: "removeAsset";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}];
readonly name: "removeChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "";
readonly type: "uint32";
}];
readonly name: "selectorToChains";
readonly outputs: readonly [{
readonly internalType: "bool";
readonly name: "allowMessagesFrom";
readonly type: "bool";
}, {
readonly internalType: "bool";
readonly name: "allowMessagesTo";
readonly type: "bool";
}, {
readonly internalType: "address";
readonly name: "targetTeller";
readonly type: "address";
}, {
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}, {
readonly internalType: "uint64";
readonly name: "minimumMessageGas";
readonly type: "uint64";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "contract Authority";
readonly name: "newAuthority";
readonly type: "address";
}];
readonly name: "setAuthority";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}, {
readonly internalType: "uint64";
readonly name: "messageGasLimit";
readonly type: "uint64";
}];
readonly name: "setChainGasLimit";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "_delegate";
readonly type: "address";
}];
readonly name: "setDelegate";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "_eid";
readonly type: "uint32";
}, {
readonly internalType: "bytes32";
readonly name: "_peer";
readonly type: "bytes32";
}];
readonly name: "setPeer";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint64";
readonly name: "_shareLockPeriod";
readonly type: "uint64";
}];
readonly name: "setShareLockPeriod";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "shareLockPeriod";
readonly outputs: readonly [{
readonly internalType: "uint64";
readonly name: "";
readonly type: "uint64";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "";
readonly type: "address";
}];
readonly name: "shareUnlockTime";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}];
readonly name: "stopMessagesFromChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint32";
readonly name: "chainSelector";
readonly type: "uint32";
}];
readonly name: "stopMessagesToChain";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "newOwner";
readonly type: "address";
}];
readonly name: "transferOwnership";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "unpause";
readonly outputs: readonly [];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "vault";
readonly outputs: readonly [{
readonly internalType: "contract BoringVault";
readonly name: "";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}];
/**
* @file Bridge functionality for cross-chain operations
* @module vaults/bridge
*/
/**
* Parameters for preparing a cross-chain bridge transaction
* @interface PrepareBridgeTransactionParams
* @property {VaultKey} vaultKey - Unique identifier for the vault
* @property {bigint} bridgeAmount - Amount of shares to bridge (in base units)
* @property {ChainId} sourceChainId - Chain ID where shares currently exist
* @property {ChainId} destinationChainId - Chain ID where shares will be bridged to
* @property {Address} userAddress - Ethereum address of the user initiating the bridge
*/
interface PrepareBridgeTransactionParams {
vaultKey: VaultKey;
bridgeAmount: bigint;
sourceChainId: ChainId;
destinationChainId: ChainId;
userAddress: Address;
}
/**
* Transaction data for executing a cross-chain bridge operation
* @interface BridgeTransactionData
* @property {typeof TellerAbi} abi - ABI for the CrossChainTeller contract
* @property {Address} address - Address of the CrossChainTeller contract
* @property {string} functionName - Name of the function to call on the contract
* @property {[bigint, BridgeData]} args - Arguments for the bridge function:
* [amount, bridgeArgs]
* @property {number} chainId - ID of the chain where the transaction should be executed
* @property {bigint} value - Amount of native token to send with the transaction
*/
interface BridgeTransactionData {
abi: typeof TellerAbi;
address: Address;
functionName: "bridge";
args: [bigint, BridgeData];
chainId: number;
value: bigint;
}
declare const prepareBridgeTransactionData: ({ vaultKey, bridgeAmount, sourceChainId, destinationChainId, userAddress, }: PrepareBridgeTransactionParams) => Promise<BridgeTransactionData>;
/**
* @file Deposit functionality for Nucleus vaults
* @module vaults/deposit
*/
/**
* Result object containing transaction data for a deposit operation
* @interface DepositTransactionData
* @property {typeof TellerAbi} abi - ABI for the Teller contract
* @property {Address} address - Address of the Teller contract
* @property {'deposit'} functionName - Name of the function to call
* @property {[Address, bigint, bigint]} args - Arguments for the deposit function:
* [depositAsset, depositAmount, minimumMint]
* @property {number} chainId - ID of the chain where the transaction should be executed
*/
interface DepositTransactionData {
abi: typeof TellerAbi;
address: Address;
functionName: "deposit";
args: [Address, bigint, bigint];
chainId: number;
}
/**
* Parameters for prepareDepositTransactionData()
* Accepts yieldType, recipientAddress, depositToken, and chainId for automatic vault resolution
* @interface PrepareDepositTransactionDataParams
* @property {string} yieldType - Yield strategy type (e.g., "PRIME", "TBILL", "LENDING")
* @property {Address} recipientAddress - Ethereum address of the user (recipient of vault shares)
* @property {Address} depositToken - Token contract address to deposit (matches vault's baseTokenAddressId)
* @property {string} depositAmount - Amount of assets to deposit as a decimal string (e.g., "1.5")
* @property {number | string} chainId - ID of the chain where the deposit will occur
* @property {number} [slippage] - Maximum acceptable slippage in basis points (e.g., 100 for 1%)
*/
interface PrepareDepositTransactionDataParams {
yieldType: string;
recipientAddress: Address;
depositToken: Address;
depositAmount: string;
chainId: ChainId;
slippage?: number;
}
/**
* Prepares the transaction data needed to deposit assets into a vault
*
* This function calculates the minimum amount of vault tokens to be minted based on
* the current exchange rate and the specified slippage tolerance. It automatically
* resolves the vault from yieldType, depositToken, and chainId parameters.
*
* ```typescript
* const depositData = await prepareDepositTransactionData({
* yieldType: 'PRIME',
* recipientAddress: '0x1234...',
* depositToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
* depositAmount: "1.0",
* chainId: 1,
* slippage: 100, // 1% slippage (100 bps)
* });
* ```
*
* @param {PrepareDepositTransactionDataParams} params - Parameters for the deposit operation
* @returns {Promise<DepositTransactionData>} Promise resolving to the prepared transaction data
* @throws {APIError} If vault cannot be resolved, asset not found, or contracts not configured
*/
declare function prepareDepositTransactionData(params: PrepareDepositTransactionDataParams): Promise<DepositTransactionData>;
/**
* Parameters required for preparing an approval transaction
* @interface PrepareApproveDepositTokenParams
* @property {Address} depositToken - Token contract address to approve
* @property {Address} boringVaultAddress - Address of the BoringVault to approve spending
* @property {string} [depositAmount] - Optional amount to approve (defaults to maximum approval)
* @property {number | string} chainId - ID of the chain where the approval will occur
*/
interface PrepareApproveDepositTokenParams {
depositToken: Address;
boringVaultAddress: Address;
depositAmount?: string;
chainId: ChainId;
}
/**
* Result object containing transaction data for an ERC20 approval operation
* @interface ApproveDepositTokenTransactionData
* @property {typeof erc20Abi} abi - ABI for the ERC20 token contract
* @property {Address} address - Address of the ERC20 token being approved
* @property {'approve'} functionName - Name of the function to call
* @property {[Address, bigint]} args - Arguments for the approve function:
* [spender (boringVault address), amount]
*/
interface ApproveDepositTokenTransactionData {
abi: typeof erc20Abi;
address: Address;
functionName: "approve";
args: [Address, bigint];
}
/**
* Prepares the transaction data needed to approve a deposit token for the vault
*
* This function prepares an ERC20 approval transaction that allows the vault's
* BoringVault contract to spend the user's deposit tokens.
*
* @example
* ```typescript
* const approveData = await prepareApproveDepositToken({
* depositToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
* boringVaultAddress: '0x1234...',
* depositAmount: "1000.0", // Approve 1000 USDC
* chainId: 1,
* });
* ```
*
* @param {PrepareApproveDepositTokenParams} params - Parameters for the approval operation
* @returns {Promise<ApproveDepositTokenTransactionData>} Promise resolving to the prepared transaction data
* @throws {APIError} If parameters are invalid
*/
declare function prepareApproveDepositToken(params: PrepareApproveDepositTokenParams): Promise<ApproveDepositTokenTransactionData>;
/**
* @file Deposit with permit functionality for Nucleus vaults
* @module vaults/deposit/deposit-with-permit
*/
/**
* T008: EIP-2612 Permit type definition
* Standard structure for permit typed data per EIP-2612 specification
*/
declare const PERMIT_TYPES: {
readonly Permit: readonly [{
readonly name: "owner";
readonly type: "address";
}, {
readonly name: "spender";
readonly type: "address";
}, {
readonly name: "value";
readonly type: "uint256";
}, {
readonly name: "nonce";
readonly type: "uint256";
}, {
readonly name: "deadline";
readonly type: "uint256";
}];
};
/**
* T009: Complete EIP-712 typed data for permit signature
* Returned by prepareDepositPermitSignature() ready for wallet signing
*
* @property domain - EIP-712 domain separator
* @property types - EIP-2612 Permit type structure
* @property message - Permit message fields
* @property primaryType - Always "Permit" for EIP-2612
*/
interface PermitSignatureData {
domain: TypedDataDomain;
types: typeof PERMIT_TYPES;
message: {
owner: Address;
spender: Address;
value: bigint;
nonce: bigint;
deadline: bigint;
};
primaryType: "Permit";
}
/**
* T009: Parsed permit signature components
* Returned by parsePermitSignature() after converting hex signature
*
* @property v - Recovery ID (27 or 28)
* @property r - First 32 bytes of signature
* @property s - Second 32 bytes of signature
*/
interface ParsedPermitSignature {
v: number;
r: Hex;
s: Hex;
}
/**
* T009: Parameters for prepareDepositPermitSignature
* Input parameters for generating permit typed data
*
* @property yieldType - Vault yield strategy
* @property depositToken - Token contract address to deposit
* @property depositAmount - Deposit amount as decimal string
* @property recipientAddress - User address (permit owner)
* @property chainId - Blockchain network ID
* @property deadline - Optional permit expiration (defaults to 1 hour)
*/
interface PrepareDepositPermitSignatureParams {
yieldType: YieldType;
depositToken: Address;
depositAmount: string;
recipientAddress: Address;
chainId: number;
deadline?: bigint;
}
/**
* T009: Encoded transaction data for permit deposit
* Returned by updated prepareDepositWithPermitTransactionData()
*
* @property data - Hex-encoded function call data
* @property address - Teller contract address
* @property chainId - Chain ID for transaction
*/
interface EncodedDepositWithPermitData {
data: Hex;
address: Address;
chainId: number;
}
/**
* T018-T030: Prepare complete EIP-712 typed data for permit signature
*
* Reads token metadata (name, version, nonce) from the blockchain and
* constructs the complete EIP-712 structure for wallet signing.
*
* @param params - Permit signature parameters
* @returns Complete EIP-712 typed data ready for signing
* @throws {APIError} If token doesn't support EIP-2612, vault not found, or chain unsupported
*
* @example
* ```typescript
* const permitData = await prepareDepositPermitSignature({
* yieldType: 'PRIME',
* depositToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
* depositAmount: '1000.0',
* recipientAddress: userAddress,
* chainId: 1,
* deadline: BigInt(Math.floor(Date.now() / 1000) + 3600),
* });
*
* // Sign with wallet
* const signature = await signTypedData(permitData);
* ```
*/
declare function prepareDepositPermitSignature(params: PrepareDepositPermitSignatureParams): Promise<PermitSignatureData>;
/**
* T036-T040: Parse raw hex signature into v, r, s components
*
* Handles both v-based and yParity-based signature formats.
* Converts yParity to v by adding 27 if needed.
*
* @param signature - Raw hex signature from wallet
* @returns Parsed signature components (v, r, s)
* @throws {APIError} If signature format is invalid
*
* @example
* ```typescript
* const signature = await signTypedData(permitData);
* const { v, r, s } = parsePermitSignature(signature);
* // Use v, r, s in smart contract call