import type { Abi } from 'abitype'; import type { AbiParametersToPrimitiveTypes } from 'abitype'; import { AnchorProvider } from '@coral-xyz/anchor'; import type { BaseContract } from 'ethers'; import type { BN } from '@coral-xyz/anchor'; import { Commitment } from '@solana/web3.js'; import { ConfirmOptions } from '@solana/web3.js'; import { Connection } from '@solana/web3.js'; import type { ContractTransaction } from 'ethers'; import type { ContractTransactionResponse } from 'ethers'; import type { DeferredTopicFilter } from 'ethers'; import { ethers } from 'ethers'; import type { EventFragment } from 'ethers'; import type { ExtractAbiEvent } from 'abitype'; import type { ExtractAbiEventNames } from 'abitype'; import type { ExtractAbiEvents } from 'abitype'; import type { ExtractAbiFunction } from 'abitype'; import type { ExtractAbiFunctionNames } from 'abitype'; import type { ExtractAbiFunctions } from 'abitype'; import type { FunctionFragment } from 'ethers'; import { Interface } from 'ethers'; import { InterfaceAbi } from 'ethers'; import { JsonRpcProvider } from 'ethers'; import { LRUCache } from 'lru-cache'; import type { Overrides } from 'ethers'; import { Program } from '@coral-xyz/anchor'; import type { Provider } from 'ethers'; import { PublicKey } from '@solana/web3.js'; import type { Result } from 'ethers'; import type { SendTransactionOptions } from '@solana/wallet-adapter-base'; import type * as Sentry from '@sentry/browser'; import { Signer } from 'ethers'; import { Signer as Signer_2 } from '@solana/web3.js'; import { Transaction } from '@solana/web3.js'; import { TransactionReceipt } from 'ethers'; import { TransactionResponse } from 'ethers'; import { TransactionSignature } from '@solana/web3.js'; import { VersionedTransaction } from '@solana/web3.js'; import { Wallet } from 'ethers'; import type { WalletClient } from 'viem'; import { web3 } from '@coral-xyz/anchor'; export declare const ABI_ADDRESS_RESOLVER: readonly [{ readonly name: "addr"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "name"; readonly type: "bytes32"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; }, { readonly name: "addr"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "name"; readonly type: "bytes32"; }, { readonly name: "coinType"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; }]; }]; export declare const ABI_CHAINLINK_V3: readonly [{ readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "description"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint80"; readonly name: "_roundId"; readonly type: "uint80"; }]; readonly name: "getRoundData"; readonly outputs: readonly [{ readonly internalType: "uint80"; readonly name: "roundId"; readonly type: "uint80"; }, { readonly internalType: "int256"; readonly name: "answer"; readonly type: "int256"; }, { readonly internalType: "uint256"; readonly name: "startedAt"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "updatedAt"; readonly type: "uint256"; }, { readonly internalType: "uint80"; readonly name: "answeredInRound"; readonly type: "uint80"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "latestRoundData"; readonly outputs: readonly [{ readonly internalType: "uint80"; readonly name: "roundId"; readonly type: "uint80"; }, { readonly internalType: "int256"; readonly name: "answer"; readonly type: "int256"; }, { readonly internalType: "uint256"; readonly name: "startedAt"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "updatedAt"; readonly type: "uint256"; }, { readonly internalType: "uint80"; readonly name: "answeredInRound"; readonly type: "uint80"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "version"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; /** ERC20 allowance + approve ABI for cross-chain approval checks */ export declare const ABI_CROSS_CHAIN_ERC20: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; export declare const ABI_ERC20: readonly [{ readonly constant: true; readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_spender"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_from"; readonly type: "address"; }, { readonly name: "_to"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint8"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly [{ readonly name: "_owner"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly name: "balance"; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly constant: false; readonly inputs: readonly [{ readonly name: "_to"; readonly type: "address"; }, { readonly name: "_value"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; }]; readonly payable: false; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly constant: true; readonly inputs: readonly [{ readonly name: "_owner"; readonly type: "address"; }, { readonly name: "_spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly payable: false; readonly stateMutability: "view"; readonly type: "function"; }, { readonly payable: true; readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }]; /** * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error) * for tokens (ie. Maker) that use bytes32 instead of string. */ export declare const ABI_ERC20_BYTES32: readonly [{ readonly type: "event"; readonly name: "Approval"; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; }, { readonly type: "event"; readonly name: "Transfer"; readonly inputs: readonly [{ readonly indexed: true; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "allowance"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }, { readonly name: "spender"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "approve"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "spender"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly type: "function"; readonly name: "balanceOf"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "decimals"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint8"; }]; }, { readonly type: "function"; readonly name: "name"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "bytes32"; }]; }, { readonly type: "function"; readonly name: "symbol"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "bytes32"; }]; }, { readonly type: "function"; readonly name: "totalSupply"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "transfer"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "recipient"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly type: "function"; readonly name: "transferFrom"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "recipient"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }]; /** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */ export declare const ABI_ERC4626: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: false; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }, { readonly name: "spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "spender"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly name: "assetTokenAddress"; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "convertToAssets"; readonly outputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "convertToShares"; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }, { readonly name: "receiver"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "caller"; readonly type: "address"; }]; readonly name: "maxDeposit"; readonly outputs: readonly [{ readonly name: "maxAssets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "caller"; readonly type: "address"; }]; readonly name: "maxMint"; readonly outputs: readonly [{ readonly name: "maxShares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }]; readonly name: "maxRedeem"; readonly outputs: readonly [{ readonly name: "maxShares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }]; readonly name: "maxWithdraw"; readonly outputs: readonly [{ readonly name: "maxAssets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }, { readonly name: "receiver"; readonly type: "address"; }]; readonly name: "mint"; readonly outputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewMint"; readonly outputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewRedeem"; readonly outputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewWithdraw"; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }, { readonly name: "receiver"; readonly type: "address"; }, { readonly name: "owner"; readonly type: "address"; }]; readonly name: "redeem"; readonly outputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalAssets"; readonly outputs: readonly [{ readonly name: "totalManagedAssets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "to"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "from"; readonly type: "address"; }, { readonly name: "to"; readonly type: "address"; }, { readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly name: "assets"; readonly type: "uint256"; }, { readonly name: "receiver"; readonly type: "address"; }, { readonly name: "owner"; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; /** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */ export declare const ABI_ERC721: readonly [{ readonly type: "event"; readonly name: "Approval"; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: true; readonly name: "tokenId"; readonly type: "uint256"; }]; }, { readonly type: "event"; readonly name: "ApprovalForAll"; readonly inputs: readonly [{ readonly indexed: true; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly name: "operator"; readonly type: "address"; }, { readonly indexed: false; readonly name: "approved"; readonly type: "bool"; }]; }, { readonly type: "event"; readonly name: "Transfer"; readonly inputs: readonly [{ readonly indexed: true; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly name: "to"; readonly type: "address"; }, { readonly indexed: true; readonly name: "tokenId"; readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "approve"; readonly stateMutability: "payable"; readonly inputs: readonly [{ readonly name: "spender"; readonly type: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; }]; readonly outputs: readonly []; }, { readonly type: "function"; readonly name: "balanceOf"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "getApproved"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "tokenId"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "isApprovedForAll"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }, { readonly name: "operator"; readonly type: "address"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly type: "function"; readonly name: "name"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "string"; }]; }, { readonly type: "function"; readonly name: "ownerOf"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "tokenId"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly name: "owner"; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "safeTransferFrom"; readonly stateMutability: "payable"; readonly inputs: readonly [{ readonly name: "from"; readonly type: "address"; }, { readonly name: "to"; readonly type: "address"; }, { readonly name: "tokenId"; readonly type: "uint256"; }]; readonly outputs: readonly []; }, { readonly type: "function"; readonly name: "safeTransferFrom"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "from"; readonly type: "address"; }, { readonly name: "to"; readonly type: "address"; }, { readonly name: "id"; readonly type: "uint256"; }, { readonly name: "data"; readonly type: "bytes"; }]; readonly outputs: readonly []; }, { readonly type: "function"; readonly name: "setApprovalForAll"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "operator"; readonly type: "address"; }, { readonly name: "approved"; readonly type: "bool"; }]; readonly outputs: readonly []; }, { readonly type: "function"; readonly name: "symbol"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "string"; }]; }, { readonly type: "function"; readonly name: "tokenByIndex"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "index"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "tokenByIndex"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; }, { readonly name: "index"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly name: "tokenId"; readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "tokenURI"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "tokenId"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly type: "string"; }]; }, { readonly type: "function"; readonly name: "totalSupply"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint256"; }]; }, { readonly type: "function"; readonly name: "transferFrom"; readonly stateMutability: "payable"; readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; }, { readonly name: "recipient"; readonly type: "address"; }, { readonly name: "tokeId"; readonly type: "uint256"; }]; readonly outputs: readonly []; }]; export declare const ABI_FEE_ORACLE: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "FEES_DIVISOR"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "categoryId"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "specificAddr"; readonly type: "address"; }]; readonly name: "getContextFeeAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "feePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "feeAmount"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "categoryId"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "specificAddr"; readonly type: "address"; }]; readonly name: "getContextFeeRate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; 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 internalType: "uint256"; readonly name: "feePercent"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "categoryId"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "specificAddr"; readonly type: "address"; }]; readonly name: "setContextFeeRate"; 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"; }]; export declare const ABI_LENDING_POOL_V2: readonly [{ readonly inputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "bDepositsPaused"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "bWithdrawalsPaused"; readonly type: "bool"; }]; readonly name: "DepositWithdrawalStatusChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "newFeeCollectorAddr"; readonly type: "address"; }]; readonly name: "FeeCollectorUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "aprWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "NewLoanDeployedByPool"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "withdrawalAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "OnEmergencyWithdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "prevValue"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "OnMaxSupplyChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "processedOn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "requestedOn"; readonly type: "uint256"; }]; readonly name: "WithdrawalProcessed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "WithdrawalRequested"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spenderAddr"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "callbackPeriodInSeconds"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "gracePeriodInSeconds"; readonly type: "uint256"; }]; readonly name: "callLoan"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "lateInterestFeeWithTwoDecimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "latePrincipalFeeWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "changeLateFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "maintenanceCollateralRatioWith2Decimals"; readonly type: "uint256"; }]; readonly name: "changeMaintenanceCollateralRatio"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "claim"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newLagDuration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "newUnderlyingAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newLoansOperator"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newLoansDeployerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newFeesCollectorAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newScheduledCallerAddress"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "newProcessingHour"; readonly type: "uint8"; }]; readonly name: "configurePool"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "convertToAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "convertToShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "fundingPeriodInSeconds"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newPaymentIntervalInSeconds"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newLoanAmountInPrincipalTokens"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "originationFeePercent2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newAprWithTwoDecimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "initialCollateralRatioWith2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maintenanceCollateralRatioWith2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lateInterestFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "latePrincipalFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expiryInfo"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "loanTypeInfo"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "lenderAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "borrowerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newCollateralToken"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newPrincipalToken"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feesManagerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "priceOracleAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feesCollectorAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "categoryFeesAdress"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "allowSeizeCollateral"; readonly type: "bool"; }]; readonly internalType: "struct LoanDeploymentParams"; readonly name: "loanParams"; readonly type: "tuple"; }]; readonly name: "deployLoan"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; 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 name: "depositsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "emergencyWithdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesCollector"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }]; readonly name: "fundLoan"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getBurnableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getClaimableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getInitializedVersion"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getRequirementByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getScheduledTransactionsByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalTransactions"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "executionEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalLoansDeployed"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWithdrawalEpoch"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLoansAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "erc20Decimals"; readonly type: "uint8"; }, { readonly internalType: "string"; readonly name: "erc20Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "erc20Name"; readonly type: "string"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lagDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }]; readonly name: "liquidate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "liquidationHour"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "loansDeployed"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "loansDeployerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "loansOperator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxDepositAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxWithdrawalAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; readonly name: "mint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "notifyLoanClosed"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "notifyLoanMatured"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "effectiveLoanAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalRepaid"; readonly type: "uint256"; }]; readonly name: "notifyPrincipalRepayment"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; 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 internalType: "bool"; readonly name: "bPauseDeposits"; readonly type: "bool"; }, { readonly internalType: "bool"; readonly name: "bPauseWithdrawals"; readonly type: "bool"; }]; readonly name: "pauseDepositsAndWithdrawals"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxLimit"; readonly type: "uint256"; }]; readonly name: "processAllClaimsByDate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "newAprWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "proposeNewApr"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "redeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "requestRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "scheduledCallerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalCollectableFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; 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 internalType: "address"; readonly name: "newFeeCollectorAddr"; readonly type: "address"; }]; readonly name: "updateFeeCollector"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }]; readonly name: "updateIssuanceLimits"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "updateTimelockDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newWithdrawalFee"; readonly type: "uint256"; }]; readonly name: "updateWithdrawalFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_LENDING_POOL_V3: readonly [{ readonly inputs: readonly []; readonly name: "AccountNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AddressBlacklisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AmountExceedsAllowance"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AmountExceedsSenderBalance"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AssetsAmountRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "BalanceCheckFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "BurnAmountExceedsBalance"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CannotBlacklistOwner"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CollectorRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InsufficientAllowance"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InsufficientBalance"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InsufficientShares"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDepositLimit"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidExternalAssets"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidHolder"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidMaxSupply"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOwner"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidPercentage"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTimestamp"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidWithdrawalLimit"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LimitRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxAllowedChangeReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxMintReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxSupplyLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NoSharesForReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NonZeroAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NonZeroAmountRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NothingToProcess"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OperatorOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "PoolAlreadyConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "PoolNotConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "PoolOwnerRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SettlementAccountNotSet"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SharesAmountRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooEarly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TotalAssetsError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalRequestRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalsPaused"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "bDepositsPaused"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "bWithdrawalsPaused"; readonly type: "bool"; }]; readonly name: "DepositWithdrawalStatusChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "newFeeCollectorAddr"; readonly type: "address"; }]; readonly name: "FeeCollectorUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "FeesCollected"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "managementFeeAmount"; readonly type: "uint256"; }]; readonly name: "ManagementFeeCharged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "ManagementFeeUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "MaxChangePercentUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "OnAccountConfigured"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "withdrawalAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "OnEmergencyWithdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "prevValue"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "OnMaxSupplyChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "newAddr"; readonly type: "address"; }]; readonly name: "OperatorUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "processedOn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "requestedOn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "wasBlacklisted"; readonly type: "bool"; }]; readonly name: "WithdrawalProcessed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "WithdrawalRequested"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "addToBlacklist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "arr"; readonly type: "address[]"; }]; readonly name: "addWhitelistedSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spenderAddr"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "assetsUpdatedOn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "chargeManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "claim"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newLagDuration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxChangePercent"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "newUnderlyingAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newFeesCollectorAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newScheduledCallerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newOperatorAddress"; readonly type: "address"; }]; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "convertToAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "convertToShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; 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: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "depositToSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "depositsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "emergencyWithdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "externalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesCollector"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesTimestamp"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getBurnableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "getChangePercentage"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getClaimableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getInitializedVersion"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMaxAllowedChange"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getRequirementByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getScheduledTransactionsByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalTransactions"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "executionEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWithdrawalEpoch"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "erc20Decimals"; readonly type: "uint8"; }, { readonly internalType: "string"; readonly name: "erc20Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "erc20Name"; readonly type: "string"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "instantRedeem"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "instantRedemptionFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "isBlacklisted"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lagDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "managementFeePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxChangePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxDepositAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxWithdrawalAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; readonly name: "mint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; 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 internalType: "bool"; readonly name: "bPauseDeposits"; readonly type: "bool"; }, { readonly internalType: "bool"; readonly name: "bPauseWithdrawals"; readonly type: "bool"; }]; readonly name: "pauseDepositsAndWithdrawals"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewInstantRedemption"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxLimit"; readonly type: "uint256"; }]; readonly name: "processAllClaimsByDate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "redeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "removeFromBlacklist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "arr"; readonly type: "address[]"; }]; readonly name: "removeWhitelistedSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "requestRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "scheduledCallerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "settlementAccount"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalCollectableFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalWhitelistedSubAccounts"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; 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 internalType: "address"; readonly name: "newFeeCollectorAddr"; readonly type: "address"; }]; readonly name: "updateFeeCollector"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newFee"; readonly type: "uint256"; }]; readonly name: "updateInstantRedemptionFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }]; readonly name: "updateIssuanceLimits"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "updateManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "updateMaxChangePercent"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "updateOperator"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "updateSettlementAccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "updateTimelockDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "updateTotalAssets"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newWithdrawalFee"; readonly type: "uint256"; }]; readonly name: "updateWithdrawalFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "whitelistedSubAccounts"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "withdrawFromSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_LENDING_POOLS: readonly [{ readonly inputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "bDepositsPaused"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "bWithdrawalsPaused"; readonly type: "bool"; }]; readonly name: "DepositWithdrawalStatusChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "aprWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "NewLoanDeployedByPool"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "withdrawalAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "OnEmergencyWithdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "prevValue"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "OnMaxSupplyChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "processedOn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "requestedOn"; readonly type: "uint256"; }]; readonly name: "WithdrawalProcessed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "WithdrawalRequested"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spenderAddr"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "callbackPeriodInHours"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "gracePeriodInHours"; readonly type: "uint256"; }]; readonly name: "callLoan"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "lateInterestFeeWithTwoDecimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "latePrincipalFeeWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "changeLateFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "maintenanceCollateralRatioWith2Decimals"; readonly type: "uint256"; }]; readonly name: "changeMaintenanceCollateralRatio"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "claim"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newLagDuration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "newUnderlyingAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newLoansOperator"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newLoansDeployerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newFeesCollectorAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newScheduledCallerAddress"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "newProcessingHour"; readonly type: "uint8"; }]; readonly name: "configurePool"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "convertToAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "convertToShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "fundingPeriodInSeconds"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newPaymentIntervalInSeconds"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newLoanAmountInPrincipalTokens"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "originationFeePercent2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newAprWithTwoDecimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "initialCollateralRatioWith2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maintenanceCollateralRatioWith2Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lateInterestFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "latePrincipalFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "expiryInfo"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "loanTypeInfo"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "lenderAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "borrowerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newCollateralToken"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "newPrincipalToken"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feesManagerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "priceOracleAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feesCollectorAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "categoryFeesAdress"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "allowSeizeCollateral"; readonly type: "bool"; }]; readonly internalType: "struct LoanDeploymentParams"; readonly name: "loanParams"; readonly type: "tuple"; }]; readonly name: "deployLoan"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; 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 name: "depositsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "destinationAddr"; readonly type: "address"; }]; readonly name: "emergencyWithdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesCollector"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }]; readonly name: "fundLoan"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getBurnableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getClaimableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getInitializedVersion"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getRequirementByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getScheduledTransactionsByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalTransactions"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "executionEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalLoansDeployed"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWithdrawalEpoch"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLoansAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "erc20Decimals"; readonly type: "uint8"; }, { readonly internalType: "string"; readonly name: "erc20Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "erc20Name"; readonly type: "string"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lagDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }]; readonly name: "liquidate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "liquidationHour"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "loansDeployed"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "loansDeployerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "loansOperator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxDepositAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "maxWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxWithdrawalAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; readonly name: "mint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "notifyLoanClosed"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "notifyLoanMatured"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "effectiveLoanAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "principalRepaid"; readonly type: "uint256"; }]; readonly name: "notifyPrincipalRepayment"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; 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 internalType: "bool"; readonly name: "bPauseDeposits"; readonly type: "bool"; }, { readonly internalType: "bool"; readonly name: "bPauseWithdrawals"; readonly type: "bool"; }]; readonly name: "pauseDepositsAndWithdrawals"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "previewRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }]; readonly name: "previewWithdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxLimit"; readonly type: "uint256"; }]; readonly name: "processAllClaimsByDate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "loanAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "newAprWithTwoDecimals"; readonly type: "uint256"; }]; readonly name: "proposeNewApr"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "redeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "requestRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "scheduledCallerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalCollectableFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; 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 internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxTokenSupply"; readonly type: "uint256"; }]; readonly name: "updateIssuanceLimits"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "updateTimelockDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newWithdrawalFee"; readonly type: "uint256"; }]; readonly name: "updateWithdrawalFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_LOAN: readonly [{ readonly type: "function"; readonly name: "LIQUIDATE_LOAN_COLLATERAL_CATEGORY"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "REPAY_INTERESTS_CATEGORY"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "acceptApr"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "aprUpdatedOn"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "borrower"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "borrowerCommitment"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "callLoan"; readonly inputs: readonly [{ readonly name: "callbackPeriodInSeconds"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "gracePeriodInSeconds"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "callbackDeadline"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "canSeizeCollateral"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "changeLateFees"; readonly inputs: readonly [{ readonly name: "lateInterestFeeWithTwoDecimals"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "latePrincipalFeeWithTwoDecimals"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "changeMaintenanceCollateralRatio"; readonly inputs: readonly [{ readonly name: "newRatioWith2Decimals"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "changeOracle"; readonly inputs: readonly [{ readonly name: "newOracleAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "claimCollateral"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "collateralAmountSeized"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "collateralToken"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "currentApr"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "cycleInterestsRepaid"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "deployedBy"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "effectiveLoanAmount"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "expiryInfo"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "feesCollector"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "feesOracle"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "fromTokenToToken"; readonly inputs: readonly [{ readonly name: "principalPrice"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "principalQty"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "collateralPrice"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "collateralDecimals"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "pure"; }, { readonly type: "function"; readonly name: "fundLoan"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "fundedOn"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "fundingDeadline"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "fundingPeriod"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getCollateralRequirements"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "initialCollateralAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maintenanceCollateralAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getDebt"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "currentBillingCycle"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "cyclesSinceLastAprUpdate"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "interestOwed"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "applicableLateFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minPaymentAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxPaymentAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getNextPaymentDate"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getUpcomingAmountAfterFees"; readonly inputs: readonly [{ readonly name: "paymentAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "upcomingPaymentAmountAfterFees"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "upcomingNetDebtAfterFees"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "initialCollateralRatio"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "lateInterestFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "latePrincipalFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "lender"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "liquidate"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "loanAmountInPrincipalTokens"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "loanState"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint8"; readonly internalType: "uint8"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "loanTypeInfo"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; readonly internalType: "string"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "maintenanceCollateralRatio"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "manager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "minInterestAmount"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "paymentIntervalInSeconds"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "priceOracle"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "principalAmount"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "principalRepaid"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "principalToken"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "proposeNewApr"; readonly inputs: readonly [{ readonly name: "newAprWithTwoDecimals"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "proposedApr"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "repay"; readonly inputs: readonly [{ readonly name: "paymentAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "repayInterests"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "repayPrincipal"; readonly inputs: readonly [{ readonly name: "paymentAmountInTokens"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "returnCollateral"; readonly inputs: readonly [{ readonly name: "depositAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "seizeCollateral"; readonly inputs: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setFeesCollector"; readonly inputs: readonly [{ readonly name: "newFeesCollector"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setFeesOracle"; readonly inputs: readonly [{ readonly name: "newFeesOracle"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "totalInterestPaymentFees"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "totalInterestRepaid"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "updateInfo"; readonly inputs: readonly [{ readonly name: "newExpiryInfo"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "newLoanTypeInfo"; readonly type: "string"; readonly internalType: "string"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "event"; readonly name: "OnAprAcceptedByBorrower"; readonly inputs: readonly [{ readonly name: "oldApr"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newApr"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnBorrowerCommitment"; readonly inputs: readonly []; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnBorrowerWithdrawal"; readonly inputs: readonly [{ readonly name: "numberOfTokens"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnCollateralCaptured"; readonly inputs: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnCollateralClaimed"; readonly inputs: readonly [{ readonly name: "collateralClaimed"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnCollateralRatioChanged"; readonly inputs: readonly [{ readonly name: "prevValue"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newValue"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnCollateralRedeposited"; readonly inputs: readonly [{ readonly name: "depositAmount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnFeeProcessed"; readonly inputs: readonly [{ readonly name: "feePercent"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "feeAmount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "from"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "to"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnInterestsRepayment"; readonly inputs: readonly [{ readonly name: "paymentAmountTokens"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnLateFeesChanged"; readonly inputs: readonly [{ readonly name: "prevLateInterestFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLateInterestFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "prevLatePrincipalFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newLatePrincipalFee"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnLoanCalled"; readonly inputs: readonly [{ readonly name: "callbackPeriodInHours"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "gracePeriodInHours"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnLoanClosed"; readonly inputs: readonly []; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnLoanFunded"; readonly inputs: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnLoanMatured"; readonly inputs: readonly []; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnNewAprProposed"; readonly inputs: readonly [{ readonly name: "oldApr"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "newApr"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnPriceOracleChanged"; readonly inputs: readonly [{ readonly name: "prevAddress"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "newAddress"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnPrincipalRepayment"; readonly inputs: readonly [{ readonly name: "paymentAmountTokens"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }]; export declare const ABI_MULTI_ASSET_NATIVE_DEPOSIT_WRAPPER: readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "ownerAddr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_wrappedToken"; readonly type: "address"; readonly internalType: "contract IWETH"; }, { readonly name: "_vault"; readonly type: "address"; readonly internalType: "contract IOraclizedMultiAssetVault"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "depositNative"; readonly inputs: readonly [{ readonly name: "receiver"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "payable"; }, { readonly type: "function"; readonly name: "depositNative"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "payable"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "vault"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract IOraclizedMultiAssetVault"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "wrappedToken"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract IWETH"; }]; readonly stateMutability: "view"; }, { readonly type: "event"; readonly name: "DepositNative"; readonly inputs: readonly [{ readonly name: "caller"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "receiver"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "amountInNative"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "sharesOut"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "error"; readonly name: "OwnerAddressRequired"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "OwnerOnly"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ReentrancyGuardReentrantCall"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ZeroAmount"; readonly inputs: readonly []; }]; /** * Multi-asset vault previewDeposit ABI. * Uses `previewDeposit(address, uint256)` instead of standard ERC4626's * `previewDeposit(uint256)` to specify which asset is being deposited. */ export declare const ABI_MULTI_ASSET_PREVIEW_DEPOSIT: readonly [{ readonly type: "function"; readonly name: "previewDeposit"; readonly inputs: readonly [{ readonly name: "assetIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amountIn"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }]; /** * Multi-asset vault previewRedemption ABI. * Uses `previewRedemption(uint256, bool)` to preview redeem output * with an `isInstant` flag. */ export declare const ABI_MULTI_ASSET_PREVIEW_REDEEM: readonly [{ readonly type: "function"; readonly name: "previewRedemption"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "isInstant"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly [{ readonly name: "assetsAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "assetsAfterFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }]; export declare const ABI_MULTICALL3: readonly [{ readonly inputs: readonly [{ readonly components: readonly [{ readonly name: "target"; readonly type: "address"; }, { readonly name: "allowFailure"; readonly type: "bool"; }, { readonly name: "callData"; readonly type: "bytes"; }]; readonly name: "calls"; readonly type: "tuple[]"; }]; readonly name: "aggregate3"; readonly outputs: readonly [{ readonly components: readonly [{ readonly name: "success"; readonly type: "bool"; }, { readonly name: "returnData"; readonly type: "bytes"; }]; readonly name: "returnData"; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_POOL_ADAPTER: readonly [{ readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountOut"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "srcToken"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "dstToken"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "bridgeId"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "quoteData"; readonly type: "bytes"; }]; readonly internalType: "struct PoolAdapter.SwapAndDepositParams"; readonly name: "params"; readonly type: "tuple"; }]; readonly name: "swapAndDeposit"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; export declare const ABI_REWARD_DISTRIBUTOR: readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "ownerAddr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "_rewardsPerSecond"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "_stakingToken"; readonly type: "address"; readonly internalType: "contract IERC20"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "receive"; readonly stateMutability: "payable"; }, { readonly type: "function"; readonly name: "balanceOf"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "earned"; readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getReward"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "lastUpdateTime"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "rewardPerTokenStored"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "rewards"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "rewardsPerSecond"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "setRewardRate"; readonly inputs: readonly [{ readonly name: "_rewardsPerSecond"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "stake"; readonly inputs: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "stakingToken"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract IERC20"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "totalStaked"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "userRewardPerTokenPaid"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "withdraw"; readonly inputs: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Received"; readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "value"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RewardPaid"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "reward"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RewardRateUpdated"; readonly inputs: readonly [{ readonly name: "newRate"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Staked"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "amount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Withdrawn"; readonly inputs: readonly [{ readonly name: "user"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "amount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }]; /* Excluded from this release type: ABI_SMART_ACCOUNT */ /** * Standard ERC4626 previewRedeem ABI. */ export declare const ABI_STANDARD_PREVIEW_REDEEM: readonly [{ readonly type: "function"; readonly name: "previewRedeem"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; }]; /** ABI for the August `SwapRouter` periphery contract. */ export declare const ABI_SWAP_ROUTER: readonly [{ readonly inputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AlreadyConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AssetNotAcceptedByVault"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ContractIsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ContractNotPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "EmptySwapParams"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "errorCode"; readonly type: "uint256"; }]; readonly name: "FailedToAcquireLpTokenAddressErrorCode"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "lowLevelData"; readonly type: "bytes"; }]; readonly name: "FailedToAcquireLpTokenAddressLowLevelError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "reason"; readonly type: "string"; }]; readonly name: "FailedToAcquireLpTokenAddressStringError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "errorCode"; readonly type: "uint256"; }]; readonly name: "FailedToAcquireLpTokenDecimalsErrorCode"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "lowLevelData"; readonly type: "bytes"; }]; readonly name: "FailedToAcquireLpTokenDecimalsLowLevelError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "reason"; readonly type: "string"; }]; readonly name: "FailedToAcquireLpTokenDecimalsStringError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeeCollectorNotSet"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeesCollectorNoOp"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "InputTokenNotSwapped"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "InputTokenNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidErc20Token"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidFeeCollector"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidLpTokenDecimals"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOrigin"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidPair"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidPayload"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidRouter"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "tokenApprovalAddr"; readonly type: "address"; }]; readonly name: "InvalidRouterPath"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidVault"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidVaultType"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MissingSlippageProtection"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NativeReferenceAssetNotSupported"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NativeSwapFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NativeTokenTransferFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NotConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OriginAlreadyExists"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OriginFeeTooHigh"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OriginFeeTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OutputTokenCannotBeNativeToken"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "OutputTokenNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }]; readonly name: "RouterPathAlreadyDisabled"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SelectorRequired"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountOut"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountOut"; readonly type: "uint256"; }]; readonly name: "SlippageError"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "returnData"; readonly type: "bytes"; }]; readonly name: "SwapFailed"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SwapFeeAmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SwapFeeTooHigh"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokenAlreadyDisabled"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokenAlreadyEnabled"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooManySwaps"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WrappedNativeTokenAddressNotDefined"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAmount"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroSharesReceived"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "ContractConfigured"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "ContractPaused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "ContractResumed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "newAddr"; readonly type: "address"; }]; readonly name: "FeesCollectorUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "originFee"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "originFeeCollector"; readonly type: "address"; }]; readonly name: "OriginAdded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "consumableAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "feeAmount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }]; readonly name: "OriginFeeApplied"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }]; readonly name: "OriginRevoked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "originFee"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "originFeeCollector"; readonly type: "address"; }]; readonly name: "OriginUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "ResidualBalanceSwept"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "ResidualRefund"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }]; readonly name: "RouterPathDisabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "tokenApprovalAddr"; readonly type: "address"; }]; readonly name: "RouterPathEnabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "tokenOutAddress"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "swapAmountOut"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "feeAmount"; readonly type: "uint256"; }]; readonly name: "SwapFeeApplied"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "TokenDisabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "TokenEnabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }]; readonly name: "VaultDisabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }]; readonly name: "VaultEnabled"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "BPS_DENOMINATOR"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MAX_ORIGIN_FEE_BPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MAX_SWAPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MAX_SWAP_FEE_BPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "NATIVE_TOKEN_ADDRESS"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "VAULT_TYPE_ERC4626"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "VAULT_TYPE_TOKENIZED_VAULT_V2"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "originFee"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "originFeeCollector"; readonly type: "address"; }]; readonly name: "addOrigin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newFeesCollectorAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "wrappedNativeTokenAddr"; readonly type: "address"; }]; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; 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: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "depositNativeToken"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }, { readonly internalType: "bytes4"; readonly name: "authorizedSelector"; readonly type: "bytes4"; }]; readonly name: "disableRouter"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }]; readonly name: "disableToken"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }]; readonly name: "disableVault"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "tokenApprovalAddr"; readonly type: "address"; }, { readonly internalType: "bytes4"; readonly name: "authorizedSelector"; readonly type: "bytes4"; }]; readonly name: "enableRouter"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "contract IERC20Metadata"; readonly name: "token"; readonly type: "address"; }]; readonly name: "enableToken"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "vaultType"; readonly type: "uint8"; }, { readonly internalType: "uint256"; readonly name: "swapFee"; readonly type: "uint256"; }]; readonly name: "enableVault"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesCollector"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "routerAddr"; readonly type: "address"; }, { readonly internalType: "bytes4"; readonly name: "selector"; readonly type: "bytes4"; }]; readonly name: "isAuthorizedSelector"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "isConfigured"; 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: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly name: "origins"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "originFee"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "originFeeCollector"; readonly type: "address"; }]; readonly stateMutability: "view"; 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: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }]; readonly name: "revokeOrigin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly components: readonly [{ readonly internalType: "address"; readonly name: "tokenIn"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "tokenOut"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountOut"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "router"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "payload"; readonly type: "bytes"; }]; readonly internalType: "struct ISwapRouter.SwapParams[]"; readonly name: "swapParams"; readonly type: "tuple[]"; }]; readonly name: "swapAndDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "swapAndDepositNativeToken"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "tokenTransferProxies"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "newFeesCollectorAddr"; readonly type: "address"; }]; readonly name: "updateFeesCollector"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "originCode"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "originFee"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "originFeeCollector"; readonly type: "address"; }]; readonly name: "updateOrigin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "vaultInfo"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "swapFee"; readonly type: "uint256"; }, { readonly internalType: "uint8"; readonly name: "vaultType"; readonly type: "uint8"; }, { readonly internalType: "address"; readonly name: "referenceAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "lpTokenAddress"; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "whitelistedTokens"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "wrappedNativeTokenAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_TEXT_RESOLVER: readonly [{ readonly name: "text"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "name"; readonly type: "bytes32"; }, { readonly name: "key"; readonly type: "string"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "string"; }]; }]; export declare const ABI_TOKENIZED_VAULT_V2: readonly [{ readonly type: "function"; readonly name: "depositCap"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly inputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AccountNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AlreadyConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AssetNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "remaining"; readonly type: "uint256"; }]; readonly name: "CollectableFeesExceeded"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeeAmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeesMustSum100"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "HighWatermarkDurationError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "HighWatermarkViolation"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InsufficientShares"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAccountType"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAmount"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidExternalAssets"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidLagDuration"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTimestamp"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LimitRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxAllowedChangeReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxDepositAmountReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MissingFeeCollectors"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NoSharesForReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NotConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NothingToProcess"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OnlyOwnerOrOperator"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OperatorOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReferenceAssetMismatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SenderNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokenDecimalsMismatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooEarly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Unauthorized"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "VaultNotTimelocked"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WhitelistLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddressError"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "ContractConfigured"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "senderAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "bDepositsPaused"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "bWithdrawalsPaused"; readonly type: "bool"; }]; readonly name: "DepositWithdrawalStatusChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "FeesCollected"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "managementFeeAmount"; readonly type: "uint256"; }]; readonly name: "ManagementFeeCharged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "ManagementFeeUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "MaxChangePercentUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "OnEmergencyWithdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferStarted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: false; readonly internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "SendersWhitelistUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "SubAccountDisabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "SubAccountEnabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "WithdrawalProcessed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "WithdrawalRequested"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "acceptOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "assetsUpdatedOn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "assetsWhitelistAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "chargeManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "chargePerformanceFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "claim"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "maxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "instantRedemptionFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lagDuration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "withdrawalFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "watermarkTimeWindow"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxChangePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "managementFeePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "performanceFeeRate"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "sendersWhitelistAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "operatorAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "scheduledCallerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "lpTokenAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "referenceAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "futureOwnerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "assetsWhitelistAddress"; readonly type: "address"; }]; readonly internalType: "struct ITokenizedVault.ConfigInfo"; readonly name: "newConfig"; readonly type: "tuple"; }]; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "inputAssetAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "depositToSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "depositsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "disableSubAccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "emergencyWithdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "accountType"; readonly type: "uint8"; }]; readonly name: "enableSubAccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "externalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "feeCollectors"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesTimestamp"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getBurnableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "getChangePercentage"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getFeeCollectors"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMaxAllowedChange"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPerformanceFeeRecipients"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getRequirementByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getScheduledTransactionsByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalTransactions"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "executionEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getSharePrice"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWithdrawalEpoch"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "highWatermark"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "instantRedeem"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "instantRedemptionFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lagDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lpTokenAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "managementFeePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxChangePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxDepositAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxWithdrawalAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operatorAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; 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 internalType: "bool"; readonly name: "bPauseDeposits"; readonly type: "bool"; }, { readonly internalType: "bool"; readonly name: "bPauseWithdrawals"; readonly type: "bool"; }]; readonly name: "pauseDepositsAndWithdrawals"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pendingOwner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "performanceFeeRate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "performanceFeeRecipients"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "bool"; readonly name: "isInstant"; readonly type: "bool"; }]; readonly name: "previewRedemption"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "assetsAfterFee"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxLimit"; readonly type: "uint256"; }]; readonly name: "processAllClaimsByDate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "requestRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "scheduledCallerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "sendersWhitelistAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalCollectableFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "updateAssetsWhitelist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: "collectors"; readonly type: "tuple[]"; }]; readonly name: "updateFeeCollectors"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "updateManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "updateMaxChangePercent"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: "collectors"; readonly type: "tuple[]"; }]; readonly name: "updatePerformanceFeeCollectors"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "updateSendersWhitelist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "updateTimelockDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "updateTotalAssets"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "watermarkTimeWindow"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "watermarkUpdatedOn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "whitelistedSubAccounts"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "inputAssetAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "withdrawFromSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_TOKENIZED_VAULT_V2_DEPOSIT_WITH_PERMIT: readonly [{ readonly type: "constructor"; readonly inputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "acceptOwnership"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "asset"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "assetsUpdatedOn"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "assetsWhitelistAddress"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "chargeManagementFee"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "chargePerformanceFees"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "claim"; readonly inputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "collectFees"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "configure"; readonly inputs: readonly [{ readonly name: "newConfig"; readonly type: "tuple"; readonly internalType: "struct ITokenizedVault.ConfigInfo"; readonly components: readonly [{ readonly name: "maxDepositAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxWithdrawalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "instantRedemptionFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "lagDuration"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "withdrawalFee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "watermarkTimeWindow"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxChangePercent"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "managementFeePercent"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "performanceFeeRate"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "sendersWhitelistAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "operatorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "scheduledCallerAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "lpTokenAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "referenceAsset"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "futureOwnerAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "assetsWhitelistAddress"; readonly type: "address"; readonly internalType: "address"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "deposit"; readonly inputs: readonly [{ readonly name: "assetIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amountIn"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "depositCap"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "depositToSubaccount"; readonly inputs: readonly [{ readonly name: "inputAssetAddr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "depositAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "subAccountAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "depositWithPermit"; readonly inputs: readonly [{ readonly name: "assetIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amountIn"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "deadline"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "r"; readonly type: "bytes32"; readonly internalType: "bytes32"; }, { readonly name: "s"; readonly type: "bytes32"; readonly internalType: "bytes32"; }, { readonly name: "v"; readonly type: "uint8"; readonly internalType: "uint8"; }]; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "depositsPaused"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "disableSubAccount"; readonly inputs: readonly [{ readonly name: "addr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "emergencyWithdraw"; readonly inputs: readonly [{ readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "enableSubAccount"; readonly inputs: readonly [{ readonly name: "addr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "accountType"; readonly type: "uint8"; readonly internalType: "uint8"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "externalAssets"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "feeCollectors"; readonly inputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "feesTimestamp"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getBurnableAmountByReceiver"; readonly inputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getChangePercentage"; readonly inputs: readonly [{ readonly name: "externalAssetsAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getFeeCollectors"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple[]"; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly components: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getMaxAllowedChange"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getPerformanceFeeRecipients"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple[]"; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly components: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getRequirementByDate"; readonly inputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getScheduledTransactionsByDate"; readonly inputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "totalTransactions"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "executionEpoch"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getSharePrice"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getTotalAssets"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getWithdrawalEpoch"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimableEpoch"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "globalLiabilityShares"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "highWatermark"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "initialize"; readonly inputs: readonly [{ readonly name: "ownerAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "instantRedeem"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "instantRedemptionFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "keepFeeInVault"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "lagDuration"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "lpTokenAddress"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "managementFeePercent"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "maxChangePercent"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "maxDepositAmount"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "maxWithdrawalAmount"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "operatorAddress"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "pauseDepositsAndWithdrawals"; readonly inputs: readonly [{ readonly name: "bPauseDeposits"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "bPauseWithdrawals"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "pendingOwner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "performanceFeeRate"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "performanceFeeRecipients"; readonly inputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "previewDeposit"; readonly inputs: readonly [{ readonly name: "assetIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amountIn"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "previewRedemption"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "isInstant"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly [{ readonly name: "assetsAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "assetsAfterFee"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "processAllClaimsByDate"; readonly inputs: readonly [{ readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "maxLimit"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "requestRedeem"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: "claimableEpoch"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "year"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "month"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "day"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "scheduledCallerAddress"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "sendersWhitelistAddress"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "totalCollectableFees"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateAssetsWhitelist"; readonly inputs: readonly [{ readonly name: "newWhitelistAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateFeeCollectors"; readonly inputs: readonly [{ readonly name: "collectors"; readonly type: "tuple[]"; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly components: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateInstantRedemptionFee"; readonly inputs: readonly [{ readonly name: "newValue"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "pKeepFeeInVault"; readonly type: "bool"; readonly internalType: "bool"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateLimits"; readonly inputs: readonly [{ readonly name: "newMaxDepositAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "newDepositCap"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateManagementFee"; readonly inputs: readonly [{ readonly name: "newManagementFeePercent"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateMaxChangePercent"; readonly inputs: readonly [{ readonly name: "newValue"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updatePerformanceFeeCollectors"; readonly inputs: readonly [{ readonly name: "collectors"; readonly type: "tuple[]"; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly components: readonly [{ readonly name: "collectorAddress"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "percentage"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateSendersWhitelist"; readonly inputs: readonly [{ readonly name: "newWhitelistAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateTimelockDuration"; readonly inputs: readonly [{ readonly name: "newDuration"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "updateTotalAssets"; readonly inputs: readonly [{ readonly name: "externalAssetsAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "watermarkTimeWindow"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "watermarkUpdatedOn"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "whitelistedSubAccounts"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint8"; readonly internalType: "uint8"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "withdrawFromSubaccount"; readonly inputs: readonly [{ readonly name: "inputAssetAddr"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "subAccountAddr"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "withdrawalFee"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "withdrawalsPaused"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "event"; readonly name: "ContractConfigured"; readonly inputs: readonly []; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Deposit"; readonly inputs: readonly [{ readonly name: "assetIn"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }, { readonly name: "amountIn"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "shares"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "senderAddr"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "DepositWithdrawalStatusChanged"; readonly inputs: readonly [{ readonly name: "bDepositsPaused"; readonly type: "bool"; readonly indexed: false; readonly internalType: "bool"; }, { readonly name: "bWithdrawalsPaused"; readonly type: "bool"; readonly indexed: false; readonly internalType: "bool"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "FeesCollected"; readonly inputs: readonly []; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Initialized"; readonly inputs: readonly [{ readonly name: "version"; readonly type: "uint8"; readonly indexed: false; readonly internalType: "uint8"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ManagementFeeCharged"; readonly inputs: readonly [{ readonly name: "managementFeeAmount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "ManagementFeeUpdated"; readonly inputs: readonly [{ readonly name: "newManagementFeePercent"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "MaxChangePercentUpdated"; readonly inputs: readonly [{ readonly name: "newValue"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OnEmergencyWithdraw"; readonly inputs: readonly [{ readonly name: "receiverAddr"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OwnershipTransferStarted"; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "SendersWhitelistUpdated"; readonly inputs: readonly [{ readonly name: "newWhitelistAddr"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "SubAccountDisabled"; readonly inputs: readonly [{ readonly name: "subAccountAddr"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "SubAccountEnabled"; readonly inputs: readonly [{ readonly name: "subAccountAddr"; readonly type: "address"; readonly indexed: false; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "Withdraw"; readonly inputs: readonly [{ readonly name: "sender"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "receiver"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "owner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "assets"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "shares"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WithdrawalProcessed"; readonly inputs: readonly [{ readonly name: "assetsAmount"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "WithdrawalRequested"; readonly inputs: readonly [{ readonly name: "shares"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }, { readonly name: "holderAddr"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "receiverAddr"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "error"; readonly name: "AccountNotWhitelisted"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "AlreadyConfigured"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "AmountTooLow"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "AssetNotWhitelisted"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "CollectableFeesExceeded"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "remaining"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly type: "error"; readonly name: "DepositCapReached"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "DepositsPaused"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "FeeAmountTooLow"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "FeesMustSum100"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "HighWatermarkDurationError"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "HighWatermarkViolation"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InsufficientShares"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidAccountType"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidAddress"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidAmount"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidDepositLimit"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidExternalAssets"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidLagDuration"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidReceiver"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidTimestamp"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "InvalidWithdrawalLimit"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "LimitRequired"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MaxAllowedChangeReached"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MaxDepositAmountReached"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "MissingFeeCollectors"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "NoSharesForReceiver"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "NotConfigured"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "NothingToProcess"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "OnlyOwnerOrOperator"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "OperatorOnly"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "OwnerAddressRequired"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "OwnerOnly"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ReentrancyGuardReentrantCall"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ReferenceAssetMismatch"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "SenderNotWhitelisted"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TokenDecimalsMismatch"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "TooEarly"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "Unauthorized"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "VaultNotTimelocked"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "WhitelistLimitReached"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "WithdrawalLimitReached"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "WithdrawalsPaused"; readonly inputs: readonly []; }, { readonly type: "error"; readonly name: "ZeroAddressError"; readonly inputs: readonly []; }]; export declare const ABI_TOKENIZED_VAULT_V2_RECEIPT: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_lzEndpoint"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AlreadyConfigured"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "allowance"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "needed"; readonly type: "uint256"; }]; readonly name: "ERC20InsufficientAllowance"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "balance"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "needed"; readonly type: "uint256"; }]; readonly name: "ERC20InsufficientBalance"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "approver"; readonly type: "address"; }]; readonly name: "ERC20InvalidApprover"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }]; readonly name: "ERC20InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "ERC20InvalidSender"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }]; readonly name: "ERC20InvalidSpender"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ExpiredDeadline"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDelegate"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDomainSeparator"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidEndpointCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidEpoch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidInitialization"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidLocalDecimals"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "options"; readonly type: "bytes"; }]; readonly name: "InvalidOptions"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidSignature"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidSignatureComponentS"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidSigner"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LzTokenUnavailable"; 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 name: "NotConfigured"; 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 name: "NotInitializing"; 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 name: "OnlySelf"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }]; readonly name: "OwnableInvalidOwner"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "OwnableUnauthorizedAccount"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrantCall"; 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 internalType: "bytes"; readonly name: "result"; readonly type: "bytes"; }]; readonly name: "SimulationResult"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amountLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountLD"; readonly type: "uint256"; }]; readonly name: "SlippageExceeded"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokensLocked"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Unauthorized"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "UnauthorizedBurner"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "UnauthorizedMinter"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddress"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "EIP712DomainChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint32"; readonly name: "eid"; readonly type: "uint32"; }, { readonly internalType: "uint16"; readonly name: "msgType"; readonly type: "uint16"; }, { readonly internalType: "bytes"; readonly name: "options"; readonly type: "bytes"; }]; readonly indexed: false; readonly internalType: "struct EnforcedOptionParam[]"; readonly name: "_enforcedOptions"; readonly type: "tuple[]"; }]; readonly name: "EnforcedOptionSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint64"; readonly name: "version"; readonly type: "uint64"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "inspector"; readonly type: "address"; }]; readonly name: "MsgInspectorSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "guid"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint32"; readonly name: "srcEid"; readonly type: "uint32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "toAddress"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amountReceivedLD"; readonly type: "uint256"; }]; readonly name: "OFTReceived"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "guid"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "uint32"; readonly name: "dstEid"; readonly type: "uint32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "fromAddress"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amountSentLD"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amountReceivedLD"; readonly type: "uint256"; }]; readonly name: "OFTSent"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "untilEpoch"; readonly type: "uint256"; }]; readonly name: "OnTokensLocked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "OnTokensUnLocked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferStarted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 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 indexed: false; readonly internalType: "address"; readonly name: "preCrimeAddress"; readonly type: "address"; }]; readonly name: "PreCrimeSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "DOMAIN_SEPARATOR"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "PERMIT_TYPEHASH"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "SEND"; readonly outputs: readonly [{ readonly internalType: "uint16"; readonly name: ""; readonly type: "uint16"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "SEND_AND_CALL"; readonly outputs: readonly [{ readonly internalType: "uint16"; readonly name: ""; readonly type: "uint16"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "acceptOwnership"; 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: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "approvalRequired"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "burn"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "burners"; 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: "_eid"; readonly type: "uint32"; }, { readonly internalType: "uint16"; readonly name: "_msgType"; readonly type: "uint16"; }, { readonly internalType: "bytes"; readonly name: "_extraOptions"; readonly type: "bytes"; }]; readonly name: "combineOptions"; readonly outputs: readonly [{ readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "newMinters"; readonly type: "address[]"; }, { readonly internalType: "address[]"; readonly name: "newBurners"; readonly type: "address[]"; }]; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimalConversionRate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "eip712Domain"; readonly outputs: readonly [{ readonly internalType: "bytes1"; readonly name: "fields"; readonly type: "bytes1"; }, { readonly internalType: "string"; readonly name: "domainName"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "domainVersion"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "chainId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "verifyingContract"; readonly type: "address"; }, { readonly internalType: "bytes32"; readonly name: "salt"; readonly type: "bytes32"; }, { readonly internalType: "uint256[]"; readonly name: "extensions"; readonly type: "uint256[]"; }]; readonly stateMutability: "view"; 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 internalType: "uint32"; readonly name: "_eid"; readonly type: "uint32"; }, { readonly internalType: "uint16"; readonly name: "_msgType"; readonly type: "uint16"; }]; readonly name: "enforcedOptions"; readonly outputs: readonly [{ readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwnerAddr"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "erc20Decimals"; readonly type: "uint8"; }, { readonly internalType: "string"; readonly name: "erc20Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "erc20Name"; readonly type: "string"; }]; readonly name: "initialize"; 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: ""; 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 internalType: "uint32"; readonly name: "_eid"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "_peer"; readonly type: "bytes32"; }]; readonly name: "isPeer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "untilEpoch"; readonly type: "uint256"; }]; readonly name: "lockTokens"; 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 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 components: 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: "uint32"; readonly name: "dstEid"; readonly type: "uint32"; }, { readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly internalType: "bytes32"; readonly name: "guid"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "executor"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "message"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "extraData"; readonly type: "bytes"; }]; readonly internalType: "struct InboundPacket[]"; readonly name: "_packets"; readonly type: "tuple[]"; }]; readonly name: "lzReceiveAndRevert"; readonly outputs: readonly []; readonly stateMutability: "payable"; 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: "lzReceiveSimulate"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "mint"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "minters"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "msgInspector"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "nonces"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "oApp"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; 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: "oftVersion"; readonly outputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }, { readonly internalType: "uint64"; readonly name: "version"; 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 internalType: "uint32"; readonly name: "_eid"; readonly type: "uint32"; }]; readonly name: "peers"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pendingOwner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spenderAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "value"; 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: "permit"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "preCrime"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint32"; readonly name: "dstEid"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "to"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "amountLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountLD"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "extraOptions"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "composeMsg"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "oftCmd"; readonly type: "bytes"; }]; readonly internalType: "struct SendParam"; readonly name: "_sendParam"; readonly type: "tuple"; }]; readonly name: "quoteOFT"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "minAmountLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxAmountLD"; readonly type: "uint256"; }]; readonly internalType: "struct OFTLimit"; readonly name: "oftLimit"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "int256"; readonly name: "feeAmountLD"; readonly type: "int256"; }, { readonly internalType: "string"; readonly name: "description"; readonly type: "string"; }]; readonly internalType: "struct OFTFeeDetail[]"; readonly name: "oftFeeDetails"; readonly type: "tuple[]"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "amountSentLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amountReceivedLD"; readonly type: "uint256"; }]; readonly internalType: "struct OFTReceipt"; readonly name: "oftReceipt"; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint32"; readonly name: "dstEid"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "to"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "amountLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountLD"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "extraOptions"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "composeMsg"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "oftCmd"; readonly type: "bytes"; }]; readonly internalType: "struct SendParam"; readonly name: "_sendParam"; readonly type: "tuple"; }, { readonly internalType: "bool"; readonly name: "_payInLzToken"; readonly type: "bool"; }]; readonly name: "quoteSend"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "nativeFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lzTokenFee"; readonly type: "uint256"; }]; readonly internalType: "struct MessagingFee"; readonly name: "msgFee"; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint32"; readonly name: "dstEid"; readonly type: "uint32"; }, { readonly internalType: "bytes32"; readonly name: "to"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "amountLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minAmountLD"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "extraOptions"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "composeMsg"; readonly type: "bytes"; }, { readonly internalType: "bytes"; readonly name: "oftCmd"; readonly type: "bytes"; }]; readonly internalType: "struct SendParam"; readonly name: "_sendParam"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "nativeFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lzTokenFee"; readonly type: "uint256"; }]; readonly internalType: "struct MessagingFee"; readonly name: "_fee"; readonly type: "tuple"; }, { readonly internalType: "address"; readonly name: "_refundAddress"; readonly type: "address"; }]; readonly name: "send"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "bytes32"; readonly name: "guid"; readonly type: "bytes32"; }, { readonly internalType: "uint64"; readonly name: "nonce"; readonly type: "uint64"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "nativeFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lzTokenFee"; readonly type: "uint256"; }]; readonly internalType: "struct MessagingFee"; readonly name: "fee"; readonly type: "tuple"; }]; readonly internalType: "struct MessagingReceipt"; readonly name: "msgReceipt"; readonly type: "tuple"; }, { readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "amountSentLD"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amountReceivedLD"; readonly type: "uint256"; }]; readonly internalType: "struct OFTReceipt"; readonly name: "oftReceipt"; readonly type: "tuple"; }]; readonly stateMutability: "payable"; 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 components: readonly [{ readonly internalType: "uint32"; readonly name: "eid"; readonly type: "uint32"; }, { readonly internalType: "uint16"; readonly name: "msgType"; readonly type: "uint16"; }, { readonly internalType: "bytes"; readonly name: "options"; readonly type: "bytes"; }]; readonly internalType: "struct EnforcedOptionParam[]"; readonly name: "_enforcedOptions"; readonly type: "tuple[]"; }]; readonly name: "setEnforcedOptions"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_msgInspector"; readonly type: "address"; }]; readonly name: "setMsgInspector"; 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: "address"; readonly name: "_preCrime"; readonly type: "address"; }]; readonly name: "setPreCrime"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "sharedDecimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "token"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; 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 internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }]; readonly name: "unlockTokens"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; export declare const ABI_TOKENIZED_VAULT_V2_SENDER_ALLOCATION_WHITELIST: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "attempted"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "limit"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "alreadyDeposited"; readonly type: "uint256"; }]; readonly name: "AllocationExceeded"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ArrayLengthMismatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "BatchSizeExceeded"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "EmptyBatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidBps"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReceiverNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "UnauthorizedRecorder"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "oldBps"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newBps"; readonly type: "uint256"; }]; readonly name: "AllocationSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "recorder"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "authorized"; readonly type: "bool"; }]; readonly name: "AuthorizedRecorderSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newDeposited"; readonly type: "uint256"; }]; readonly name: "DepositRecorded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "oldAmount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newAmount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "admin"; readonly type: "address"; }]; readonly name: "DepositedSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: true; readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newDeposited"; readonly type: "uint256"; }]; readonly name: "WithdrawalRecorded"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "MAX_BATCH_SIZE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MAX_BPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "allocationBps"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "authorizedRecorders"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "checkAndRecordDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDeposited"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "deposited"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "disableSender"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "enableSender"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "getAllocationBps"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getAuthorizedRecorders"; readonly outputs: readonly [{ readonly internalType: "address[]"; readonly name: ""; readonly type: "address[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "getDeposited"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositCapAmount"; readonly type: "uint256"; }]; readonly name: "getRemainingAllocation"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "isWhitelisted"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "recordWithdrawal"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "bps"; readonly type: "uint256"; }]; readonly name: "setAllocation"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "addrs"; readonly type: "address[]"; }, { readonly internalType: "uint256[]"; readonly name: "bpsValues"; readonly type: "uint256[]"; }]; readonly name: "setAllocationBatch"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "recorder"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "authorized"; readonly type: "bool"; }]; readonly name: "setAuthorizedRecorder"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "setDeposited"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "addrs"; readonly type: "address[]"; }, { readonly internalType: "uint256[]"; readonly name: "amounts"; readonly type: "uint256[]"; }]; readonly name: "setDepositedBatch"; 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"; }]; export declare const ABI_TOKENIZED_VAULT_V2_WHITELISTED_ALLOCATION: readonly [{ readonly inputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AccountNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AlreadyConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "AssetNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "remaining"; readonly type: "uint256"; }]; readonly name: "CollectableFeesExceeded"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositCapReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeeAmountTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "FeesMustSum100"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "HighWatermarkDurationError"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "HighWatermarkViolation"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InsufficientShares"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAccountType"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAmount"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDepositLimit"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidExternalAssets"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidLagDuration"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTimestamp"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidWithdrawalLimit"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "LimitRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxAllowedChangeReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MaxDepositAmountReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "MissingFeeCollectors"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NoSharesForReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NotConfigured"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "NothingToProcess"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OnlyOwnerOrOperator"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OperatorOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReferenceAssetMismatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SenderNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TokenDecimalsMismatch"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "TooEarly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "Unauthorized"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "VaultNotTimelocked"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WhitelistLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WithdrawalsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddressError"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "ContractConfigured"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "senderAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "bDepositsPaused"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "bWithdrawalsPaused"; readonly type: "bool"; }]; readonly name: "DepositWithdrawalStatusChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly []; readonly name: "FeesCollected"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint8"; readonly name: "version"; readonly type: "uint8"; }]; readonly name: "Initialized"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "managementFeeAmount"; readonly type: "uint256"; }]; readonly name: "ManagementFeeCharged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "ManagementFeeUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "MaxChangePercentUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "OnEmergencyWithdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferStarted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; 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 indexed: false; readonly internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "SendersWhitelistUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "SubAccountDisabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "SubAccountEnabled"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiver"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assets"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "WithdrawalProcessed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "holderAddr"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "WithdrawalRequested"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "acceptOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "asset"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "assetsUpdatedOn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "assetsWhitelistAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "chargeManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "chargePerformanceFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "claim"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "maxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "instantRedemptionFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "lagDuration"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "withdrawalFee"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "watermarkTimeWindow"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxChangePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "managementFeePercent"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "performanceFeeRate"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "sendersWhitelistAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "operatorAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "scheduledCallerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "lpTokenAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "referenceAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "futureOwnerAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "assetsWhitelistAddress"; readonly type: "address"; }]; readonly internalType: "struct ITokenizedVault.ConfigInfo"; readonly name: "newConfig"; readonly type: "tuple"; }]; readonly name: "configure"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; 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 name: "depositCap"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "inputAssetAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "depositToSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "deadline"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "r"; readonly type: "bytes32"; }, { readonly internalType: "bytes32"; readonly name: "s"; readonly type: "bytes32"; }, { readonly internalType: "uint8"; readonly name: "v"; readonly type: "uint8"; }]; 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: "depositsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }]; readonly name: "disableSubAccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "emergencyWithdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "addr"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "accountType"; readonly type: "uint8"; }]; readonly name: "enableSubAccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "externalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "feeCollectors"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feesTimestamp"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "getBurnableAmountByReceiver"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "getChangePercentage"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getFeeCollectors"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getMaxAllowedChange"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPerformanceFeeRecipients"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getRequirementByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly name: "getScheduledTransactionsByDate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalTransactions"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "executionEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getSharePrice"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalAssets"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWithdrawalEpoch"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "globalLiabilityShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "highWatermark"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "instantRedeem"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "instantRedemptionFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "keepFeeInVault"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lagDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "lpTokenAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "managementFeePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxChangePercent"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxDepositAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxWithdrawalAmount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "operatorAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; 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 internalType: "bool"; readonly name: "bPauseDeposits"; readonly type: "bool"; }, { readonly internalType: "bool"; readonly name: "bPauseWithdrawals"; readonly type: "bool"; }]; readonly name: "pauseDepositsAndWithdrawals"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pendingOwner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "performanceFeeRate"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "performanceFeeRecipients"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetIn"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }]; readonly name: "previewDeposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "bool"; readonly name: "isInstant"; readonly type: "bool"; }]; readonly name: "previewRedemption"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "assetsAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "assetsAfterFee"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxLimit"; readonly type: "uint256"; }]; readonly name: "processAllClaimsByDate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "receiverAddr"; readonly type: "address"; }]; readonly name: "requestRedeem"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "claimableEpoch"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "year"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "month"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "day"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "scheduledCallerAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "sendersWhitelistAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalCollectableFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "updateAssetsWhitelist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: "collectors"; readonly type: "tuple[]"; }]; readonly name: "updateFeeCollectors"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }, { readonly internalType: "bool"; readonly name: "pKeepFeeInVault"; readonly type: "bool"; }]; readonly name: "updateInstantRedemptionFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newMaxDepositAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newMaxWithdrawalAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "newDepositCap"; readonly type: "uint256"; }]; readonly name: "updateLimits"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newManagementFeePercent"; readonly type: "uint256"; }]; readonly name: "updateManagementFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "updateMaxChangePercent"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newValue"; readonly type: "uint256"; }]; readonly name: "updatePerformanceFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "collectorAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "percentage"; readonly type: "uint256"; }]; readonly internalType: "struct IFeeCollectorsAware.CollectorDefinition[]"; readonly name: "collectors"; readonly type: "tuple[]"; }]; readonly name: "updatePerformanceFeeCollectors"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newWhitelistAddr"; readonly type: "address"; }]; readonly name: "updateSendersWhitelist"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newDuration"; readonly type: "uint256"; }]; readonly name: "updateTimelockDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssetsAmount"; readonly type: "uint256"; }]; readonly name: "updateTotalAssets"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "watermarkTimeWindow"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "watermarkUpdatedOn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "whitelistedSubAccounts"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "inputAssetAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "subAccountAddr"; readonly type: "address"; }]; readonly name: "withdrawFromSubaccount"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalFee"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "withdrawalsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; export declare const ABI_TOKENIZED_VAULT_V2_WHITELISTED_ASSETS: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "ownerAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "referenceAssetAddr"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AssetAlreadyEnabled"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidDecimalPlaces"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOraclePrice"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOracleTimestamp"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTimePeriod"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerAddressRequired"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OwnerOnly"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReentrancyGuardReentrantCall"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ReferenceAssetNotPermitted"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "RoundNotComplete"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "StalePrice"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "WhitelistLimitReached"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddressError"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "REFERENCE_ASSET"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "REFERENCE_ASSET_DECIMALS"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "lpTokenAddress"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "assetInAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "vaultAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "assetInAmount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "externalAssets"; readonly type: "uint256"; }]; readonly name: "convertToShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amountInReferenceTokens"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "oracleAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "newOracleDuration"; readonly type: "uint256"; }]; readonly name: "enableAsset"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "fromInputAssetToReferenceAsset"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }]; readonly name: "getOracleAddress"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "externalAssets"; readonly type: "uint256"; }]; readonly name: "getTotalAssetsValuation"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getWhitelistedAssets"; readonly outputs: readonly [{ readonly internalType: "address[]"; readonly name: ""; readonly type: "address[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }]; readonly name: "isWhitelisted"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "maxOracleUpdatesDuration"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; 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 internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "newMaxOracleUpdatesDuration"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "assetAddr"; readonly type: "address"; }]; readonly name: "updateOracleLagDuration"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; export declare const ABI_UNIVERSAL_RESOLVER_RESOLVE: readonly [{ readonly inputs: readonly [{ readonly components: readonly [{ readonly name: "target"; readonly type: "address"; }, { readonly name: "allowFailure"; readonly type: "bool"; }, { readonly name: "callData"; readonly type: "bytes"; }]; readonly name: "calls"; readonly type: "tuple[]"; }]; readonly name: "aggregate3"; readonly outputs: readonly [{ readonly components: readonly [{ readonly name: "success"; readonly type: "bool"; }, { readonly name: "returnData"; readonly type: "bytes"; }]; readonly name: "returnData"; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly name: "resolve"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "name"; readonly type: "bytes"; }, { readonly name: "data"; readonly type: "bytes"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; }, { readonly name: "address"; readonly type: "address"; }]; }, { readonly name: "resolve"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "name"; readonly type: "bytes"; }, { readonly name: "data"; readonly type: "bytes"; }, { readonly name: "gateways"; readonly type: "string[]"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes"; }, { readonly name: "address"; readonly type: "address"; }]; }]; export declare const ABI_UNIVERSAL_SIGNATURE_VALIDATOR: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_signer"; readonly type: "address"; }, { readonly internalType: "bytes32"; readonly name: "_hash"; readonly type: "bytes32"; }, { readonly internalType: "bytes"; readonly name: "_signature"; readonly type: "bytes"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }]; export declare const ABI_WRAPPER_ADAPTER: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "depositETH"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "depositWETH"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "getRSETHWithETH"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "referralId"; readonly type: "string"; }]; readonly name: "getRSETHWithERC20"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }]; readonly name: "getRsETHAmountToMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "rsETHAmount"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; /** * Adapter ABIs for wrapper contracts */ export declare const ADAPTER_ABIS: { readonly NATIVE_DEPOSIT_AVAX: readonly [{ readonly inputs: readonly []; readonly name: "depositETH"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }]; readonly NATIVE_DEPOSIT_ETH_WITH_REFERRAL: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "depositETH"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "depositWETH"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; readonly KELP_RSETH_ADAPTER: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "referralId"; readonly type: "address"; }]; readonly name: "getRSETHWithETH"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "referralId"; readonly type: "string"; }]; readonly name: "getRSETHWithERC20"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "depositAmount"; readonly type: "uint256"; }]; readonly name: "getRsETHAmountToMint"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "rsETHAmount"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; }; /** * Read the ERC-20 allowance an `owner` has granted to a vault (the spender). * If `asset` is omitted, the vault's underlying asset is resolved via * `IERC4626.asset()` and used as the token. * * Returns a raw `bigint` to keep BigInt math precise — call * {@link toNormalizedBn} if you need a UI-shaped {@link INormalizedNumber}. * * @returns Allowance in raw on-chain units of `asset`. * @throws AugustValidationError on invalid addresses. * @throws AugustSDKError when the underlying contract call fails. * * @example * ```ts * const raw = await augustSdk.evm.allowance({ * vault: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32', * owner: walletAddress, * }); * if (raw < requiredAmount) { * await augustSdk.evm.vaultApprove({ * target: vault, * wallet: walletAddress, * amount: requiredAmount.toString(), * }); * } * ``` */ export declare function allowance(signer: IContractRunner, options: IAllowanceOptions): Promise; /** * Append the active attribution suffix to calldata. * * No-ops (returns `data` unchanged) when attribution is off, the chain is * not attributed (including an unknown chain under a `chains` restriction), * `data` is empty/absent (plain value transfers are never * attributed), or `data` already ends with the ERC-8021 marker (guards * against double-appending when an upstream layer — e.g. a wagmi config * `dataSuffix` — already attributed the transaction). * * @param data `0x`-prefixed calldata of the outgoing transaction. * @param chainId EVM chain ID of the transaction, when known. * @returns Calldata with the suffix appended, or the input unchanged. */ export declare function appendAttributionSuffix(data: string | undefined | null, chainId?: number): string | undefined | null; /** * Same approval logic as {@link vaultApprove} but returns a discriminated * union so callers can tell `sent` apart from `sufficient` and `native` * without re-reading on-chain state. Preferred shape for new integrations. * * @example * ```ts * const r = await augustSdk.evm.approve({ * target: vaultAddress, * wallet: walletAddress, * amount: '100', * wait: true, * }); * switch (r.kind) { * case 'sent': * showToast('Approval submitted', r.hash); * break; * case 'sufficient': * // r.existing is the existing on-chain allowance (raw bigint) * break; * case 'native': * // No allowance needed; native token will travel as msg.value * break; * } * ``` * * @throws AugustValidationError on invalid wallet/target/amount. * @throws AugustValidationError when `attribution.strictOrigin` is set and the * configured origin code is not registered on the SwapRouter (the spender * follows {@link getDepositRoute}). * @throws AugustSDKError when the approval submission fails. */ export declare function approve(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * Execute a token approval for a cross-chain operation. * * @param chainId Chain the approval is sent on, used to gate ERC-8021 * attribution. Omitted means unattributed under a `chains` restriction — * the suffix would lengthen `approve` calldata past its ABI encoding and * break Ledger clear-signing. * @returns Transaction hash of the approval */ export declare function approveCrossChain(tokenAddress: IAddress, spenderAddress: IAddress, amount: bigint, walletClient: { account: { address: string; } | undefined; writeContract: (args: unknown) => Promise; }, publicClient: { waitForTransactionReceipt: (args: { hash: string; }) => Promise<{ status: string; }>; }, chainId?: number): Promise; /** * Discriminated union returned by {@link approve}. Lets callers tell apart * "we sent a tx" / "existing allowance already covers it" / "native token, no * allowance applies" without re-reading on-chain state. */ export declare type ApproveResult = /** An `approve` transaction was sent. `hash` is the tx hash. */ { kind: 'sent'; hash: string; } /** * Existing allowance already covers `amount`; no tx sent. `existing` is * the on-chain allowance (raw bigint, in deposit-token units). */ | { kind: 'sufficient'; existing: bigint; } /** * The resolved deposit asset is the native token — it travels as * `msg.value`, so no ERC-20 allowance applies. No tx sent. */ | { kind: 'native'; }; /** * Whether an alert would be sent right now. * * Quiet by default outside production, mirroring `analytics`: a partner's Jest * suite or `next dev` session exercising a failing redeem must not page a real * curator. Two gates are needed for that, because they cover different * runtimes — `NODE_ENV` is the Node one, and bundlers strip or stub * `process.env` in the browser, so a locally-served app is recognised by its * hostname instead (CLAUDE.md §5). Without that gate, a browser app run * against mainnet from any loopback or private origin — `localhost`, a * container on `172.20.0.0/16`, `[::1]` — pages a real curator on every * failed redeem. `isLocalhost` in `core/analytics/env` lists the ranges. * * `enabled: true` overrides both — it is the documented way to exercise the * path deliberately, and the SDK's own suite relies on it. * * The env var is read per call (not once at module load) so a consumer that * sets it after import is still honoured, and a test can set and unset it * without re-importing. It deliberately outranks an explicit `enabled: true`: * it is the kill switch, and an operator setting it should not have to find * and edit the construction site to be obeyed. */ export declare function areCuratorAlertsEnabled(): boolean; declare type AsArray = T extends readonly unknown[] ? T : never; /** * Throw when a known EVM `chainId` has no RPC URL configured on the SDK. * * Non-EVM chain IDs are exempt: Solana, Stellar and Sui vaults route through * their adapters and never read from the `providers` map, so a missing entry * is expected rather than a misconfiguration. * * @param chainId - Chain ID supplied by the caller. `undefined` is a no-op. * @param providers - The SDK's configured `chainId → RPC URL` map. * @param method - Public method name, used to make the message actionable. * @throws {@link AugustValidationError} with code `INVALID_CHAIN` when * `chainId` is an EVM chain with no configured provider. * @example * ```ts * assertEvmProviderConfigured(143, {}, 'getVault'); * // AugustValidationError: getVault: no RPC URL configured for chainId 143 (Monad). * ``` */ export declare function assertEvmProviderConfigured(chainId: number | undefined, providers: Partial> | undefined, method: string): void; /** * Throw when `chainId` is not a chain the SDK recognises. * * Called at public vault entry points so an unroutable ID surfaces as one * typed error instead of an opaque downstream RPC failure. * * @param chainId - Chain ID supplied by the caller. `undefined` is a no-op — * omitting the chain is valid and falls back to the SDK's active network. * @param providers - The SDK's configured `chainId → RPC URL` map. A chain * with a caller-configured provider is routable even if it is missing from * {@link NETWORKS} (the SDK ships fallback RPCs/oracles for some EVM chains * ahead of adding them to `NETWORKS`), so it is accepted here too. * @param method - Public method name, used to make the message actionable. * @throws {@link AugustValidationError} with code `INVALID_CHAIN` when the ID * is not in {@link NETWORKS} or {@link NON_EVM_CHAIN_IDS}, and has no * caller-configured provider. * @example * ```ts * assertKnownChainId(-2, undefined, 'getVault'); * // AugustValidationError: getVault: unknown chainId -2. * ``` */ export declare function assertKnownChainId(chainId: number | undefined, providers: Partial> | undefined, method: string): void; /** * Throw if the given address is a Stellar address. * Used as a guard in vault operations that don't yet support Stellar. */ declare function assertNotStellar(address: string, operation: string): void; /** * Guard against lifetime-PnL over-inflation when the deposit history fails to load. * * Lifetime PnL is `currentPosition + totalWithdrawn - totalDeposited`. When the * deposit/withdrawal history fails to load it collapses to empty, so both * `totalDeposited` and `totalWithdrawn` read as zero. If the wallet still holds * a live on-chain position, the formula degenerates to reporting the entire * position as pure profit — a plausible-looking but wrong number. * * This guard rejects exactly that state: a non-zero position with no recorded * deposits, no shares received by transfer *and* no recorded withdrawals. It * also rejects a non-zero position with no recorded deposits when a share mint * to the wallet has no matching deposit (`mintsMatchHistory: false`): the mint * proves a deposit the history failed to return, so neither a peer transfer * nor a withdrawal makes the cost basis complete. Otherwise, any of the * following is treated as consistent and passes: * - deposits are present (the normal, computable case); * - shares were received by transfer and priced (see {@link transferCostBasis}); * - withdrawals are present (a fully-exited-then-re-entered position is still * computable — the withdrawal records prove history loaded); * - the current position is zero (the wallet never interacted or fully exited, * so a zero PnL is correct, not inflated). * * Pure and synchronous — no RPC, no I/O — so it is safe to call inside the hot * path with no added latency. * * Shares received by a direct token transfer (never deposited, never withdrew) * reach this guard as `receivedByTransferRaw`: {@link getVaultUserLifetimePnl} * prices them with {@link transferCostBasis} first. The guard still throws for * such a wallet when its transfers cannot be read or priced, or when a share * mint to it has no indexed deposit. * * @param params - See {@link PnlHistoryConsistencyParams}. * @returns `void` when the history is consistent. * @throws {@link AugustHistoryUnavailableError} with code `HISTORY_UNAVAILABLE` * and `context: { vault, wallet }` when a non-zero position has no deposits * recorded and either a share mint without a matching deposit or neither * received shares nor withdrawals. The message carries the * `#getVaultUserLifetimePnl::::` prefix so it groups with the * other errors leaving the getter. * @example * ```ts * assertPnlHistoryConsistent({ * vault, * wallet, * hasDeposits: depositsByAsset.size > 0, * mintsMatchHistory, * receivedByTransferRaw: costBasis.receivedByTransferRaw, * totalWithdrawnRaw, * currentPositionRaw: currentPositionValue.raw, * }); * ``` */ export declare function assertPnlHistoryConsistent({ vault, wallet, hasDeposits, mintsMatchHistory, receivedByTransferRaw, totalWithdrawnRaw, currentPositionRaw, }: PnlHistoryConsistencyParams): void; /** * Guard against converting lifetime PnL to USD with a fabricated price. * * Every USD field `getVaultUserLifetimePnl` returns is a native amount times * the underlying asset's USD price. When the price server has no price, the * only honest outcome is "no USD value" — substituting a stand-in (the getter * previously used `1`) reports a non-dollar vault's position at $1 per asset, * a plausible-looking but wrong number that callers cannot detect. * * Pure and synchronous — no RPC, no I/O. * * @param params - See {@link PnlTokenPriceParams}. * @returns `tokenPriceUsd`, unchanged, when it is a finite number above zero. * @throws {@link AugustPriceUnavailableError} with code `PRICE_UNAVAILABLE` * and `context: { vault, wallet, asset }` when the price is zero, negative, * or not finite. The message carries the * `#getVaultUserLifetimePnl::::` prefix so it groups with the * other errors leaving the getter. * @example * ```ts * const price = assertPnlTokenPrice({ * vault, * wallet, * asset: underlyingAssetAddress, * tokenPriceUsd: await pricePromise, * }); * ``` */ export declare function assertPnlTokenPrice({ vault, wallet, asset, tokenPriceUsd, }: PnlTokenPriceParams): number; /** * Read-only client for August backend REST endpoints that have no on-chain * equivalent: the unrealized-PnL series, the transparency dashboard * (position snapshot, backing series, smoothed APY, allocations, fee config, * governance), plus authenticated loan-book / risk / OTC reads. * * Every public method makes exactly one HTTPS request to the August API and * zero RPC calls. Responses are not cached by the SDK: this is time-sensitive * state where staleness is worse than a request. Accessible as * `sdk.apiModule`; only the unrealized-PnL methods are also mirrored on the * root `AugustSDK` class. */ export declare class AugustApi extends AugustBase { private headers; constructor(baseConfig: IAugustBase); /** * Retrieve the global loan-book aggregate across every active client * subaccount — one {@link ILoanBookInfo} entry per loan, with principal / * interest amounts, APRs, state, and the next upcoming payment. * * Backed by the admin-only `GET /dashboard/loans` backend endpoint (60-second * server-side cache), so the August API key configured on the SDK must * belong to an admin user. Makes exactly one HTTP request and no RPC calls. * * @returns Array of loan-book entries; empty when there are no active loans. * @throws AugustAuthError When the API key is missing or not admin-scoped. * @throws AugustServerError When the API responds with a non-2xx status. * @example * const loans = await sdk.apiModule.getDashboardLoans(); * const active = loans.filter((l) => l.state === 'ACTIVE'); */ getDashboardLoans(): Promise; /** * Retrieve every token discount-factor ladder the risk engine applies when * valuing collateral. * * Backed by `GET /risk/discount_factors` (60-second server-side cache), * which requires an authenticated August user; an admin-scoped API key * works. Makes exactly one HTTP request and no RPC calls. * * @returns Array of {@link IDiscountFactorLadder}, one per whitelisted token that has a configured ladder. * @throws AugustAuthError When the API key is missing or not authorized. * @throws AugustServerError When the API responds with a non-2xx status. * @example * const ladders = await sdk.apiModule.getDiscountFactors(); * console.log(ladders.map((d) => `${d.address}@${d.chain}`)); */ getDiscountFactors(): Promise; /** * Compute how much collateral a subaccount has in excess of — or is short * of — what it needs to hold a target health factor, for one collateral * token. * * Backed by `GET /risk/collateral_excess_or_deficit` (60-second server-side * cache), which resolves the subaccount and reads its current health factor. * The backend serves this route to anonymous callers today, so no August API * key is needed; pass one if you get `AUTH_UNAUTHORIZED`. Makes exactly one * HTTP request and no RPC calls. * * @param params.subaccount Subaccount (smart-contract wallet) address. * @param params.tokenAddress Collateral token address to evaluate. * @param params.tokenChain Numeric August chain id of the token (e.g. `1` for Ethereum mainnet). * @param params.targetHealthFactor Health factor to solve for. Defaults server-side to the minimum healthy factor (1.2); when supplied must be a finite number greater than 0. * @returns The signed excess (positive) or deficit (negative) in USD and token units. Zeroes when the subaccount has no debt. * @throws AugustValidationError When an address is invalid, `tokenChain` is not an integer, or `targetHealthFactor` is out of range. * @throws AugustServerError When the token has no discount factor (backend 404) or the API otherwise responds non-2xx. * @example * const r = await sdk.apiModule.getCollateralExcessOrDeficit({ * subaccount: '0xabc…', * tokenAddress: '0xdef…', * tokenChain: 1, * }); * console.log(r.amount_usd > 0 ? 'excess' : 'deficit'); */ getCollateralExcessOrDeficit(params: { subaccount: string; tokenAddress: string; tokenChain: number; targetHealthFactor?: number; }): Promise; /** * Simulate the collateral required to open a hypothetical loan against a * chosen basket of collateral tokens. * * This is a pure, read-only simulation: the backend `POST * /risk/collateral_simulation` endpoint (60-second server-side cache) * computes required collateral and effective discount factors and changes * no state. The route is public, so no August API key is needed. Makes * exactly one HTTP request and no RPC calls. * * @param input Simulation parameters — see {@link ICollateralSimulationInput}. `collateral_tokens` and `collateral_token_allocation` must be non-empty and equal length; when `on_platform` is `true`, both `loan_redeployed_token_*` fields are required. * @returns The simulated {@link ICollateralSimulationResults}: total debt, required collateral, resulting health factor, and a per-token breakdown. * @throws AugustValidationError When addresses are invalid, `loan_amount` is not a finite non-negative number, the collateral arrays are empty / mismatched, or `on_platform` is set without redeployed-token details. * @throws AugustServerError When the API responds with a non-2xx status (e.g. a token missing a discount factor). * @example * const sim = await sdk.apiModule.simulateCollateral({ * loan_token_chain: 1, * loan_token_address: '0xloan…', * loan_amount: 1_000_000, * collateral_tokens: [[1, '0xcol…']], * collateral_token_allocation: [1], * }); * console.log(sim.total_required_collateral_usd); */ simulateCollateral(input: ICollateralSimulationInput): Promise; /** * Fetch the decoded revert reason(s) for a transaction — error messages, * revert strings, and recognized universal-subaccount errors extracted from * a `debug_traceTransaction` call tree. * * Backed by the public (unauthenticated) `GET /revert_reason` endpoint; no * API key required. The backend relies on the target chain's RPC supporting * `debug_trace*`; on chains/RPCs without it the backend returns a 5xx whose * detail explains why, surfaced here as an {@link AugustServerError}. Makes * exactly one HTTP request and no RPC calls from the SDK itself. * * @param txHash Transaction hash to trace. * @param chain Numeric August chain id the transaction is on (e.g. `1` for Ethereum mainnet). * @returns The decoded {@link IRevertReason}; all arrays empty when the trace yielded no matching signal. * @throws AugustValidationError When `txHash` is empty or `chain` is not an integer. * @throws AugustServerError When the chain/RPC does not support tracing, or the API otherwise responds non-2xx. * @example * const r = await sdk.apiModule.getRevertReason('0xabc…', 1); * console.log(r.revert_reasons); */ getRevertReason(txHash: string, chain: number): Promise; /** * Retrieve every tracked OTC position. * * Backed by the admin-only `GET /otc/position` backend endpoint, so the * configured August API key must belong to an admin user. Makes exactly one * HTTP request and no RPC calls. * * @returns Array of {@link IOtcPositionRead}; empty when there are no OTC positions. * @throws AugustAuthError When the API key is missing or not admin-scoped. * @throws AugustServerError When the API responds with a non-2xx status. * @example * const positions = await sdk.apiModule.getOtcPositions(); */ getOtcPositions(): Promise; /** * Retrieve OTC margin requirements, optionally filtered by counterparty * and/or payer. * * Backed by the admin-only `GET /otc/margin_requirement` backend endpoint, * so the configured August API key must belong to an admin user. Makes * exactly one HTTP request and no RPC calls. * * @param options - Optional filters * @param options.otcCounterpartyId - Restrict to a single counterparty (UUID) * @param options.payer - Restrict to a single payer address * @returns Array of {@link IOtcMarginRequirement} matching the filters (all when none given). * @throws AugustAuthError When the API key is missing or not admin-scoped. * @throws AugustServerError When the API responds with a non-2xx status. * @example * const reqs = await sdk.apiModule.getOtcMarginRequirements({ payer: '0xabc…' }); */ getOtcMarginRequirements(options?: { otcCounterpartyId?: string; payer?: string; }): Promise; /** * List the subaccounts linked to a vault (curator surface). * * Backed by the curator-or-admin `GET * /curator/vaults/{vault_address}/subaccounts` backend endpoint, so the * configured August API key must belong to the vault's curator or an admin. * Makes exactly one HTTP request and no RPC calls. * * @param vaultAddress - The vault address (EVM `0x…`, Solana, or Stellar) * @returns Array of subaccount records linked to the vault (same shape as the subaccount directory); empty when none are linked. * @throws AugustValidationError When `vaultAddress` is not a valid address. * @throws AugustAuthError When the API key is missing or not curator/admin for the vault. * @throws AugustServerError When the API responds with a non-2xx status. * @example * const subs = await sdk.apiModule.getCuratorVaultSubaccounts('0xvault…'); */ getCuratorVaultSubaccounts(vaultAddress: string): Promise; /** * Get on-chain whitelist status for every subaccount linked to a vault * (curator surface). * * Backed by the curator-or-admin `GET * /curator/vaults/{vault_address}/whitelist` backend endpoint. EVM vaults * only — non-EVM vaults manage access internally and the backend returns a * 400 (surfaced as {@link AugustServerError}). Makes exactly one HTTP * request and no RPC calls from the SDK. * * @param vaultAddress - The EVM vault address (`0x…`) * @returns Array of {@link ICuratorWhitelistStatus}, one per linked subaccount; empty when the vault has no subaccounts. * @throws AugustValidationError When `vaultAddress` is not a valid address. * @throws AugustAuthError When the API key is missing or not curator/admin for the vault. * @throws AugustServerError When the vault is non-EVM (backend 400) or the API otherwise responds non-2xx. * @example * const status = await sdk.apiModule.getCuratorVaultWhitelist('0xvault…'); * console.log(status.filter((s) => !s.is_whitelisted)); */ getCuratorVaultWhitelist(vaultAddress: string): Promise; /** * List timelock (governance) requests for a vault on a chain, optionally * filtered by status. * * Backed by the `GET /timelock-requests` backend endpoint. Makes exactly one * HTTP request and no RPC calls. * * @param params.vaultAddress The vault address the requests target. * @param params.chainId Numeric August chain id (must be a positive integer). * @param params.status Status filter: `"scheduled"` (backend default), `"executed"`, `"cancelled"`, or `"all"`. Omit to use the backend default. * @returns Array of {@link ITimelockRequest}; empty when the vault has no matching requests. * @throws AugustValidationError When `vaultAddress` is invalid or `chainId` is not a positive integer. * @throws AugustServerError When the API responds with a non-2xx status (e.g. an invalid status filter). * @example * const reqs = await sdk.apiModule.getTimelockRequests({ vaultAddress: '0xvault…', chainId: 1 }); */ getTimelockRequests(params: { vaultAddress: string; chainId: number; status?: string; }): Promise; /** * Compute a vault's performance fees over a period (backend-computed from * its snapshot history). * * Backed by `GET /metrics/vault_performance_fees`. The backend runs pandas * over the vault's full snapshot history, so the first call is slow; results * are cached server-side for 20 minutes. Makes exactly one HTTP request and * no RPC calls. * * @param params.vault The vault address (EVM `0x…`, Solana, or Stellar). * @param params.annualizedFeesPct Annualized performance-fee percentage. Defaults to 20. * @param params.nativeDenominated Whether to denominate in the vault's native token. Defaults to `true`. * @param params.calculationPeriod Period preset — `"YearToDate"` (default) or `"MonthToDate"`. Ignored by the backend when a custom `startDate`/`endDate` range is supplied. * @param params.startDate ISO-8601 datetime range start. Must be supplied together with `endDate`. * @param params.endDate ISO-8601 datetime range end. Must be supplied together with `startDate`. * @returns The vault's {@link IVaultPerformanceFees} computation. * @throws AugustValidationError When `vault` is invalid, or exactly one of `startDate`/`endDate` is supplied. * @throws AugustServerError When there is insufficient snapshot data for the period, or the API otherwise responds non-2xx. * @example * const fees = await sdk.apiModule.getVaultPerformanceFees({ vault: '0xvault…' }); * console.log(fees.total_perf_fees_asset); */ getVaultPerformanceFees(params: { vault: string; annualizedFeesPct?: number; nativeDenominated?: boolean; calculationPeriod?: string; startDate?: string; endDate?: string; }): Promise; /** * Fetch a vault's NAV-oracle classification table — how each position/token * is priced (Primary / Secondary Market / CeFi) and its USD value, plus * warnings for tokens that could not be resolved. * * Backed by the public (unauthenticated) `GET * /upshift/oracle_classification/{vault_address}` endpoint; no API key * required. Reads the newest daily snapshot. Makes exactly one HTTP request * and no RPC calls from the SDK. * * @param vault The vault address (EVM `0x…`, Solana, or Stellar). * @param chainId Numeric August chain id the vault lives on. * @returns The vault's {@link IOracleClassification}. * @throws AugustValidationError When `vault` is invalid or `chainId` is not an integer. * @throws AugustServerError When the vault or its snapshot is not found, or the API otherwise responds non-2xx. * @example * const cls = await sdk.apiModule.getVaultOracleClassification('0xvault…', 1); * console.log(cls.warnings); */ getVaultOracleClassification(vault: string, chainId: number): Promise; /** * Fetch the latest position snapshot for a vault, grouped per wallet — the * data behind the transparency Overview tab (strategy breakdown, backing * composition, vault buffer, per-wallet table, headline TVL). * * Public `GET /upshift/positions/{vault_address}`; no API key. One HTTPS * request, no RPC. Snapshots land hourly; every field is from the single * `snapshot_at` instant. Vault buffer = `total_nav − Σ subaccounts[].total_usd`; * `reported_tvl` is the vault-contract-reported total assets from the same snapshot. * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id the vault lives on. * @returns {@link ITransparencyPositions}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const p = await sdk.apiModule.getVaultPositionSnapshot({ vault: '0x36eDbF0C834591BFdfCaC0Ef9605528c75c406aA', chainId: 143 }); * const buffer = p.total_nav - p.subaccounts.reduce((a, s) => a + s.total_usd, 0); * ``` */ getVaultPositionSnapshot(params: { vault: string; chainId: number; }): Promise; /** * Fetch the backing / supply / collateral-ratio time series behind the * Performance tab's "Backing vs Supply" and "Collateral Ratio" charts, and * the Overview sidebar's 7-day deltas. * * Public `GET /upshift/unrealized_pnl?fields=ratio`; no API key. One HTTPS * request, no RPC. Points are hourly, returned newest-first — sort before * charting. `actual_tvl` = backing (mark-to-market), `tvl_on_vault` = supply * (vault-reported), `adjusted_redeem_ratio` = collateral ratio. * * Unlike the chain-scoped transparency endpoints (positions, fees, * governance…), this one is keyed by vault address only and accepts * non-EVM (Solana / Stellar) vaults — same contract as * {@link AugustApi.getVaultUnrealizedPnlHistory}, which it shares a route with. * * @param params.vault Vault address (EVM, Solana, or Stellar). * @param params.startDate Optional inclusive lower bound, `YYYY-MM-DD`. * @param params.endDate Optional inclusive upper bound, `YYYY-MM-DD`. * @param params.limit Optional max points. * @returns Array of {@link ITransparencyRatioPoint}; empty when no history. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const pts = await sdk.apiModule.getVaultBackingSeries({ vault, startDate: '2026-08-01' }); * const ratio = pts.map((p) => p.adjusted_redeem_ratio * 100); // percent * ``` */ getVaultBackingSeries(params: { vault: string; startDate?: string; endDate?: string; limit?: number; }): Promise; /** * Fetch the smoothed 7-day APY series — the exact series the Upshift app * charts (Overview "APY last 30 days" and Performance "APY Over Time"). * * Public `GET /upshift/historical_apy/chart`; no API key. One HTTPS request, * no RPC. The backend marks this route deprecated in its OpenAPI spec but it * remains the series the Upshift app itself charts; this wrapper tracks it. * The backend applies a rolling-median/mean smoothing filter server-side * when `applySmoothing` is true (the app default); computing APY locally from * raw share ratios will NOT match the published figures. * * Unlike the chain-scoped transparency endpoints (positions, fees, * governance…), this one is keyed by vault address only and accepts * non-EVM (Solana / Stellar) vaults. * * @param params.vault Vault address (EVM, Solana, or Stellar). * @param params.daysAgo Window length in days; pass `-1` for the full history since inception. Default 30. * @param params.averagingPeriodDays Rolling window for the annualized return; must be ≥ 2. Default 7 (the app's "7D APY"). * @param params.applySmoothing Apply the backend smoothing filter. Default true. * @returns {@link ITransparencyApySeries} — `labels` are `M/D/YYYY`, `values` are decimal fractions (0.0245 = 2.45%). Empty arrays when the vault has no data. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const apy = await sdk.apiModule.getVaultSmoothedApy({ vault, daysAgo: 30 }); * console.log(apy.values.at(-1)); // latest 7D APY as a fraction * ``` */ getVaultSmoothedApy(params: { vault: string; daysAgo?: number; averagingPeriodDays?: number; applySmoothing?: boolean; }): Promise; /** * Fetch daily allocation history per protocol — the Performance tab's * "Allocation Over Time" chart. * * Public `GET /upshift/historical_allocations/{vault_address}`; no API key. * One HTTPS request, no RPC. * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @param params.startDate Optional inclusive lower bound, `YYYY-MM-DD`. * @param params.endDate Optional inclusive upper bound, `YYYY-MM-DD`. * @returns {@link ITransparencyHistoricalAllocations}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const h = await sdk.apiModule.getVaultHistoricalAllocations({ vault, chainId: 143, startDate: '2026-08-01' }); * const byDate = Map.groupBy(h.points, (p) => p.date); * ``` */ getVaultHistoricalAllocations(params: { vault: string; chainId: number; startDate?: string; endDate?: string; }): Promise; /** * Fetch a vault's fee configuration — the Performance tab's fee card. * * Public `GET /upshift/fees/{vault_address}`; no API key. One HTTPS * request, no RPC. Percent fields are already scaled (`management_fee_pct` * of `1.5` means 1.5%). * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @returns {@link ITransparencyFees}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const fees = await sdk.apiModule.getVaultFeeConfig({ vault, chainId: 143 }); * console.log(`${fees.management_fee_pct}% mgmt / ${fees.performance_fee_pct}% perf`); * ``` */ getVaultFeeConfig(params: { vault: string; chainId: number; }): Promise; /** * Fetch the vault's privileged addresses (owner / operators) with custody * enrichment — the Governance tab's "Vault Roles" card. * * Public `GET /upshift/governance/{vault_address}/roles`; no API key. One * HTTPS request from the SDK (the backend performs the on-chain reads). * Third-party enrichment failures (Safe / Fordefi) degrade rows and append * to `warnings` rather than failing. * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @returns {@link ITransparencyGovernanceRoles}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const { roles, warnings } = await sdk.apiModule.getVaultGovernanceRoles({ vault, chainId: 143 }); * const owner = roles.find((r) => r.role === 'owner'); // owner?.is_safe → Safe threshold in safe_threshold * ``` */ getVaultGovernanceRoles(params: { vault: string; chainId: number; }): Promise; /** * Fetch the integrations each vault wallet is whitelisted to operate — * the Governance tab's "Vault Permissions" table. * * Public `GET /upshift/governance/{vault_address}/permissions`; no API key. * One HTTPS request, no RPC. * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @returns {@link ITransparencyGovernancePermissions}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const { permissions } = await sdk.apiModule.getVaultGovernancePermissions({ vault, chainId: 143 }); * for (const p of permissions) console.log(p.integration, p.functions.join(',')); * ``` */ getVaultGovernancePermissions(params: { vault: string; chainId: number; }): Promise; /** * Fetch the vault's timelock queue — the Governance tab's "Pending * Timelocks" table. Defaults to pending (`scheduled`) requests. * * Public `GET /upshift/governance/{vault_address}/timelocks`; no API key. * `executable_at` is `scheduled_at + TIMELOCK_DURATION()` read live from * the timelock contract; null (plus a warning) when that read failed. * The default filter is pending only — the list is often empty; pass * `status: 'all'` for history. `getTimelockRequests` returns the raw * backend rows; this returns the dashboard view (labels, `executable_at`, * warnings). * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @param params.status Filter: a single {@link ITransparencyTimelockStatus} or `'all'`. Default `'scheduled'`. Any other string is rejected with `AugustValidationError` before a request is made. * @returns {@link ITransparencyTimelocks}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * const { timelocks } = await sdk.apiModule.getVaultGovernanceTimelocks({ vault, chainId: 1 }); // pending only * const ready = timelocks.filter((t) => t.executable_at && Date.parse(`${t.executable_at}Z`) <= Date.now()); * ``` */ getVaultGovernanceTimelocks(params: { vault: string; chainId: number; status?: ITransparencyTimelockStatus | 'all'; }): Promise; /** * Fetch one page of the vault's governance audit log, newest first — the * Governance tab's "Audit Log" timeline. Merges live timelock events with * manually recorded entries (attestations, permission changes). * * Public `GET /upshift/governance/{vault_address}/audit_log`; no API key. * Paginate with `before` = the last returned entry's `timestamp` while * `has_more` is true (exclusive cursor; ties at the exact boundary * timestamp are skipped, never duplicated). * * @param params.vault EVM vault address. * @param params.chainId Numeric chain id. * @param params.category Optional {@link ITransparencyAuditCategory} filter. Any other string is rejected with `AugustValidationError` before a request is made. * @param params.before Optional exclusive cursor — pass the previous page's last `entry.timestamp` back verbatim (naive-UTC, no offset). * @param params.limit Page size, 1–200. Backend default 50. * @returns {@link ITransparencyAuditLog}. * @throws AugustValidationError When arguments fail validation (no request is made). * @throws AugustServerError When the API responds non-2xx (e.g. unknown vault 404, non-EVM vault 422). * @throws AugustServerError (status 200) When the body is not the documented shape — backend contract drift. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * ```ts * // Walk the whole log, newest first. * let before: string | undefined; * do { * const page = await sdk.apiModule.getVaultGovernanceAuditLog({ vault, chainId: 1, before, limit: 50 }); * for (const e of page.entries) console.log(e.timestamp, e.type, e.summary); * before = page.has_more ? page.entries.at(-1)?.timestamp : undefined; * } while (before); * ``` */ getVaultGovernanceAuditLog(params: { vault: string; chainId: number; category?: ITransparencyAuditCategory; before?: string; limit?: number; }): Promise; /** * Fetch the historical unrealized-PnL series for a vault, newest first, * as computed by the August backend from periodic vault snapshots. * * Makes one HTTPS request to the public August API; no RPC calls. * * @param params.vault Vault address (EVM `0x…`, Solana, or Stellar). * @param params.limit Maximum number of snapshots to return (1–1000). Backend default applies when omitted. * @returns Array of {@link IUnrealizedPnlSnapshot}; empty when the backend has no history for the vault. * @throws AugustValidationError When `vault` is not a valid address or `limit` is out of range. * @throws AugustServerError When the API responds with a 5xx, or returns a body that is not a snapshot array. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * const series = await sdk.getVaultUnrealizedPnlHistory({ vault: '0x36eDbF0C834591BFdfCaC0Ef9605528c75c406aA', limit: 30 }); * console.log(series[0]?.unrealizedPnlInAsset); */ getVaultUnrealizedPnlHistory(params: { vault: string; limit?: number; }): Promise; /** * Fetch the latest unrealized-PnL snapshot for every vault the backend * tracks — one entry per vault. * * Makes one HTTPS request to the public August API; no RPC calls. * * @returns Array of {@link IUnrealizedPnlSnapshot}, one per tracked vault. * @throws AugustServerError When the API responds with a 5xx, or returns a body that is not a snapshot array. * @throws AugustRateLimitError When the API responds 429. * @throws AugustTimeoutError When the request exceeds the SDK request timeout. * @example * const all = await sdk.getLatestUnrealizedPnl(); * const losing = all.filter((s) => s.unrealizedPnl < 0); */ getLatestUnrealizedPnl(): Promise; } /** Authentication/authorization failure: missing key, invalid key, forbidden. */ export declare class AugustAuthError extends AugustSDKError { constructor(code: Extract, message: string, options?: AugustErrorOptions); } /** * Base class providing core SDK functionality including provider management, * network switching, and authentication state. */ export declare class AugustBase { keys: IKeys; monitoring: IMonitoring; authorized: boolean; activeNetwork?: IActiveNetwork; providers: IProvidersConfig; /** Validated app-name slug from the constructor. */ appName: string; /** * Initialize base SDK with provider configuration and API keys. * Sets up the first provider as the active network by default. * * @throws AugustValidationError if `appName` is missing, malformed, or * out of the allowed length range — see {@link IAugustBase.appName}. */ constructor({ appName, providers, keys, monitoring, analytics, versionCheck, timeoutMs, publicApiBaseUrl, attribution, }: IAugustBase); /** * Verify the configured August API key and mark this instance as authorized. * Only for SDKs built with `keys.august`; a keyless SDK skips `init()`. * @throws Error when `keys.august` is missing or rejected by the API. */ init(): Promise; /** * Return the active network or throw a clear error. * Use this in methods that require an EVM provider. */ protected requireActiveNetwork(): IActiveNetwork; /** * Switch the active blockchain network. * Updates both chain ID and RPC URL for subsequent operations. */ switchNetwork(chainId: IChainId): void; /** * Set active wallet address and update monitoring headers. * Preserves existing environment setting. */ updateWallet(address: IAddress): void; /** * Remove wallet address from SDK state and monitoring headers. */ clearWallet(): void; } /** * Error class hierarchy for the SDK. All subclasses extend `AugustSDKError`, * which extends the native `Error`. * * ```ts * import { AugustAuthError, AugustTimeoutError } from '@augustdigital/sdk'; * * try { * await sdk.getVault(...); * } catch (err) { * if (err instanceof AugustAuthError) refreshKey(); * else if (err instanceof AugustTimeoutError) retry(); * else throw err; * } * ``` */ /** Stable error codes attached to SDK errors. */ export declare type AugustErrorCode = 'AUTH_MISSING_KEY' | 'AUTH_INVALID_KEY' | 'AUTH_FORBIDDEN' | 'AUTH_UNAUTHORIZED' | 'INVALID_URL' | 'INVALID_INPUT' | 'INVALID_CHAIN' | 'INVALID_ADDRESS' | 'ACCOUNT_NOT_FUNDED' | 'NETWORK_ERROR' | 'TIMEOUT' | 'RATE_LIMITED' | 'SERVER_ERROR' | 'TRANSACTION_UNCONFIRMED' | 'HISTORY_UNAVAILABLE' | 'PRICE_UNAVAILABLE' | 'UNKNOWN'; /** Options accepted by every SDK error constructor. */ export declare interface AugustErrorOptions { /** Original error preserved for stack-trace chaining. */ cause?: unknown; /** Set from the response `x-correlation-id` header when available. */ correlationId?: string; /** Structured context attached to the error for logging. */ context?: Record; } /** * Transaction/position history required to compute a value could not be * retrieved or was empty, so the computed result would be wrong rather than * merely missing. * * Motivation — the 2026-07-09 lifetime-PnL over-inflation incident. Lifetime * PnL is `currentPosition + totalWithdrawn - totalDeposited`. Every * history-fetch failure (deleted subgraph, subgraph deployed against the wrong * ABI, missing archive backfill, deposits indexed on a different * chain/contract) collapses the deposit/withdrawal history to empty. With * `deposited = 0` and `withdrawn = 0` but a live on-chain `position > 0`, the * formula degenerates to reporting the entire position as profit. Throwing this * typed error makes that unrecoverable state fail loudly instead of returning * an inflated number that looks plausible. * * @example * ```ts * try { * await sdk.vaults.getVaultUserLifetimePnl({ vault, wallet, options }); * } catch (err) { * if (err instanceof AugustHistoryUnavailableError) { * // History backfill is broken — surface "temporarily unavailable", * // never a fabricated PnL number. * showUnavailable(err.context); * } else throw err; * } * ``` */ export declare class AugustHistoryUnavailableError extends AugustSDKError { /** * @param message - Human-readable description of the missing history. Callers * pass the same `#::::` prefix the surrounding getter * uses so log grouping stays consistent. * @param options - Standard SDK error options. `context` should carry the * `{ vault, wallet }` (or equivalent) identifiers that scope the failure. */ constructor(message: string, options?: AugustErrorOptions); } /** Network-level failure: connection refused, DNS, fetch failed. */ export declare class AugustNetworkError extends AugustSDKError { constructor(message: string, options?: AugustErrorOptions); } /** * The USD price needed to convert a computed value could not be resolved, so * any USD figure derived from it would be fabricated rather than merely * missing. * * Motivation — `getVaultUserLifetimePnl` used to substitute a price of `1` * whenever the price server returned nothing, which reported every * USD field of a non-dollar vault (lsETH, tETH, BTC) at $1 per asset: a * position worth ~$40k read as ~$13, indistinguishable from a real result. * Throwing this typed error makes a missing price explicit so callers can hide * the USD value instead of displaying a wrong one. * * @example * ```ts * try { * await sdk.getVaultUserLifetimePnl({ vault, wallet, chainId }); * } catch (err) { * if (err instanceof AugustPriceUnavailableError) { * // No USD price for the vault asset — hide the USD figures rather than * // show a fabricated one. * hideUsd(err.context); * } else throw err; * } * ``` */ export declare class AugustPriceUnavailableError extends AugustSDKError { /** * @param message - Human-readable description of the missing price. Callers * pass the same `#::::` prefix the surrounding getter * uses so log grouping stays consistent. * @param options - Standard SDK error options. `context` should carry the * identifiers that scope the failure (e.g. `{ vault, wallet, asset }`). */ constructor(message: string, options?: AugustErrorOptions); } /** Backend rate-limited the request (HTTP 429 or equivalent). */ export declare class AugustRateLimitError extends AugustSDKError { /** Suggested wait before retrying, in milliseconds. */ readonly retryAfterMs?: number; constructor(message: string, options?: AugustErrorOptions & { retryAfterMs?: number; }); toJSON(): Record; } /** * Main SDK class for interacting with August Digital vaults and services. * Provides unified access to EVM, Solana, Sui, and Stellar blockchain adapters. */ declare class AugustSDK extends AugustBase { private vaults; private subaccounts; private api; solana: SolanaAdapter; sui: SuiAdapter; stellar: StellarAdapter; evm: EVMAdapter; /** * Initialize the August SDK with provider configuration. * Automatically sets up EVM adapter and optionally initializes Solana if RPC URL is provided. */ constructor(baseConfig: IAugustBase); /** * Get the Sub-Accounts module instance. */ get subAccountsModule(): AugustSubAccounts; /** * Get the Vaults module instance. */ get vaultsModule(): AugustVaults; /** * Get the backend API module instance ({@link AugustApi}) — read-only * access to backend-computed data with no on-chain equivalent: the * unrealized-PnL series and the transparency dashboard (position snapshot, * backing series, smoothed APY, allocations, fee config, governance). */ get apiModule(): AugustApi; /** * Switch the active network for vault operations. * Updates the SDK's active chain and RPC provider. */ switchNetwork(chainId: IChainId): void; /** * Set the active wallet address for tracking user-specific vault data. * Updates monitoring headers with the wallet address. */ updateWallet(address: IAddress): void; /** * Clear the active wallet address from the SDK state and monitoring headers. */ clearWallet(): void; /** * Pricing and Market Data */ /** * Get the current USD price of a token by symbol or contract address. * Falls back to CoinGecko if primary price source fails. * * @param symbol - Token symbol or contract address * @returns Current price in USD */ getPrice(symbol: string): Promise; /** * Vault Data and Operations */ /** * Fetch all available vaults across configured networks. * Optionally filter by chain IDs and include loan/allocation data. * @param options - Configuration for filtering and enriching vault data — * see {@link IGetVaultsOptions} for the full surface (`includeClosed` * portfolio mode, `maxRetries`/`baseDelay` retry tuning) * @returns Array of vault objects with metadata and optional position data */ getVaults(options?: IGetVaultsOptions): Promise; getTotalDeposited(options?: { loadSubaccounts?: boolean; loadSnapshots?: boolean; }): Promise; /** * Deposit into a vault with an explicit signer. When `depositAsset` differs * from the vault's underlying asset the deposit goes through the vault's * multi-asset `deposit`, permit path, or configured adapter. It never swaps * (use `evm.swapRouterDeposit` for that); with `attribution.originCode` set, * eligible deposits go through the SwapRouter (see `evm.getDepositRoute`). * @param signer - ethers Signer or Wallet that sends the transaction * @param options - Vault address (`target`), depositor `wallet`, `amount`, and optional `depositAsset`, `wait`, `isDepositWithPermit` * @returns Deposit transaction hash */ vaultDeposit(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * Fetch detailed information for a specific vault. * @param props - Vault address, chain ID, and optional enrichment options * @returns Single vault object with full metadata */ getVault(props: { vault: IAddress; chainId?: IChainId; options?: IVaultCustomOptions; loadSubaccounts?: boolean; loadSnapshots?: boolean; }): Promise; /** * Get active loans deployed from a vault. * @param props - Vault address and chain ID * @returns Array of loan details including borrower, principal, APR */ getVaultLoans(props: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Get vault asset allocations across DeFi protocols, CeFi, and OTC positions. * * This is the data behind the "Vault Exposure" section of the Upshift app — * a partner rendering that section in their own frontend needs only this * call. Read `exposurePerCategory` for the pre-bucketed view the UI renders * (`supplying` / `borrowing` / `wallet` / `lending` legs plus per-category * USD totals) and `netValue` for the headline figure; the raw `defi` / * `cefi` / `otc` arrays back the drill-downs. See the "Rendering the Vault * Exposure section" guide in the vaults docs for a faithful reproduction. * * Stellar vaults resolve their DeFi exposure through the Untangled portfolio * API instead of DeBank — one extra HTTP call, covering the idle buffer, * Stellar protocol positions, custody wallets and bridged capital. If that * call fails the exposure legs come back empty rather than throwing, so CeFi, * OTC and loan allocations still resolve. * * @param props - Vault address and chain ID * @returns Detailed breakdown of vault allocations by category * @example * ```ts * const { exposurePerCategory, netValue } = await sdk.getVaultAllocations({ * vault: '0xcd69123b3FBBfC666E1f6a501da27B564C00De54', * chainId: 1, * }); * for (const item of exposurePerCategory?.supplying ?? []) { * console.log(item.protocol, item.symbol, item.amount); * } * ``` */ getVaultAllocations(props: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Get current or historical APY for a vault. * * @deprecated use getVaultHistoricalTimeseries instead * * @param props - Vault address and optional historical lookback period * @returns APY data including rewards breakdown */ getVaultApy(props: { vault: IAddress; historical?: { daysAgo?: number; }; }): Promise<{ value: number; timestamp: string; }[]>; /** * Get current or historical TVL for a vault. * @param props - Vault address and optional historical parameters * @returns TVL in vault's base asset units */ getVaultTvl(props: { vault: IAddress; historical?: IVaultHistoricalParams; chainId?: IChainId; }): Promise<{ value: INormalizedNumber; timestamp: string; }[]>; /** * Get historical timeseries data for a vault. * @param props - Vault address and optional number of days * @returns Historical timeseries data with TVL, APY, PnL, share price, and other metrics */ getVaultHistoricalTimeseries(props: { vault: IAddress; nDays?: number; }): Promise; /** * Get the timestamp when yield was last realized for a vault. * @param props - Vault address and optional chain ID * @returns Timestamp (Unix timestamp in seconds) when yield was last realized */ getYieldLastRealizedOn(props: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Get redemption requests that are ready to be claimed. * * For a Solana vault, `wallet` is the holder's base58 address and the result * lists their withdrawal-queue requests: waiting (`AWAITING_COOLDOWN`) and * past-window (`EXPIRED`, cancel-only) ones in `availableRedemptions`, and * claimable ones (`READY_TO_CLAIM`) in `pendingRedemptions`, each with * `estimatedAssets`, the net payout at the current share price. Without a * Solana wallet, or for a vault with no queue, both lists are empty. Solana * RPC: the vault state, one `getAccountInfo` for the queue, and, when it * exists, one `getProgramAccounts` and one `getMultipleAccountsInfo` (the * vault state, share mint and payout accounts, read together). * * @param props - Vault address, chain ID, and optional wallet filter * @returns Array of available redemption requests with amounts and timestamps * @example * ```ts * const { availableRedemptions, pendingRedemptions } = * await sdk.getVaultAvailableRedemptions({ vault: solanaVault, wallet: holder }); * ``` */ getVaultAvailableRedemptions(props: { vault: IAddress; chainId?: IChainId; wallet?: IAddress; verbose?: boolean; }): Promise<{ processedWithdrawals: ISubgraphWithdrawProccessed[]; requestedWithdrawals: ISubgraphWithdrawRequest[]; availableRedemptions: IVaultAvailableRedemption[]; pendingRedemptions: IVaultAvailableRedemption[]; }>; /** * Get historical redemption requests for a vault (settled, cancelled, * pending-but-out-of-window), optionally filtered to one wallet. * * @param props - Vault address, chain ID, optional wallet, and an * optional `lookbackBlocks` for how far back to scan. * @returns Historical redemption records, newest first. */ getVaultRedemptionHistory(props: { vault: IAddress; chainId?: IChainId; wallet?: IAddress; lookbackBlocks?: number; }): Promise; /** * Get user positions across vaults including shares and claimable redemptions. * Supports both EVM and Solana vaults. * @param props - Wallet address, chain ID, and optional vault filter * @returns Array of positions with balances and pending redemptions */ getVaultPositions(props: { vault?: IAddress; wallet?: IAddress; chainId?: IChainId; showAllVaults?: boolean; solanaWallet?: string; stellarWallet?: string; options?: IVaultBaseOptions; }): Promise; /** * Get user's historical vault interactions including deposits and withdrawals. * @param props - Wallet address and optional vault/chain filters * @returns Array of historical transactions with amounts and timestamps */ getVaultUserHistory(props: { wallet: IAddress; chainId?: IChainId; vault?: IAddress; options?: IVaultBaseOptions; }): Promise; /** * Get user's vault share transfer history from subgraph. * @param props - Wallet address and optional vault/chain filters * @returns Array of transfer events */ getVaultUserTransfers(props: { wallet: IAddress; chainId?: IChainId; vault?: IAddress; options?: IVaultBaseOptions; }): Promise<{ id: string; value: string; to: string; from: string; pool: string; block: number; timestamp: number; transactionHash: string; }[]>; /** * Get a vault's deposit/withdrawal activity across every participant. * * The vault-wide counterpart to {@link AugustSDK.getVaultUserHistory} — use * it to answer flow questions ("how many deposits in the last 7 days", "net * flow this week") that point-in-time TVL cannot. Reads from the Goldsky * subgraph, paginated so busy vaults are not truncated; a `sinceTs` window * keeps short lookbacks cheap. * @param props - Vault address, optional chain id, optional `sinceTs`/`untilTs` * Unix-second bounds, and an optional `types` filter. * @returns Array of activity items (oldest-first) with normalized amounts, * actor addresses, event type, and transaction hashes. * @throws If `vault` is not a valid address or no chain id can be resolved. * @example * ```ts * const weekAgo = Math.floor(Date.now() / 1000) - 7 * 86_400; * const items = await sdk.getVaultActivity({ vault, chainId: 143, sinceTs: weekAgo }); * ``` */ getVaultActivity(props: { vault: IAddress; chainId?: IChainId; sinceTs?: number; untilTs?: number; types?: ('withdraw-request' | 'deposit' | 'withdraw-processed' | 'redeem')[]; }): Promise; /** * Resolve the ERC-20 tokens currently whitelisted for the `SwapRouter` on a * chain — the any-token set a deposit UI can offer as swap-and-deposit inputs. * * Delegates to {@link AugustVaults.getSwapRouterWhitelistedTokens}, which * reconstructs the set from the router's `TokenEnabled` events and verifies * each against the on-chain `whitelistedTokens` mapping (not enumerable). * Returns `[]` when no router is deployed on `chainId` or no provider is * configured for it. * * @param chainId - EVM chain ID to resolve the allowlist for. * @param options - Optional `fromBlock` to override the deploy-block scan floor. * @returns Checksummed whitelisted token addresses; `[]` when unavailable. * @throws AugustSDKError when an `eth_getLogs` scan chunk fails. * @example * ```ts * const tokens = await augustSdk.getSwapRouterWhitelistedTokens(1); * ``` */ getSwapRouterWhitelistedTokens(chainId: number, options?: { fromBlock?: number; }): Promise; /** * Resolve the vaults currently eligible for the any-token `SwapRouter` * deposit surface on a chain — every vault the router has `enableVault`-ed * whose on-chain registration is still live. * * Delegates to {@link AugustVaults.getSwapRouterEligibleVaults}, which * reconstructs the set from the router's `VaultEnabled` events and verifies * each vault's current `vaultInfo` registration (not enumerable). Returns * `[]` when no router is deployed on `chainId` or no provider is configured * for it. On-chain eligibility only — app-level policy (e.g. OVault * exclusions) remains the caller's responsibility. * * @param chainId - EVM chain ID to resolve eligible vaults for. * @param options - Optional `fromBlock` to override the deploy-block scan floor. * @returns Checksummed eligible vault addresses; `[]` when unavailable. * @throws AugustSDKError when an `eth_getLogs` scan chunk fails. * @example * ```ts * const vaults = await augustSdk.getSwapRouterEligibleVaults(1); * ``` */ getSwapRouterEligibleVaults(chainId: number, options?: { fromBlock?: number; }): Promise; /** * Read a SwapRouter origin code's on-chain registration (registered, fee in * bps, collector). Delegates to {@link AugustVaults.getOriginInfo}. * @param options - `chainId` and the `bytes32` `originCode` to look up. * @returns `{ registered, originFeeBps, collector }`. * @throws AugustValidationError when no provider is configured for `chainId` * or `originCode` is malformed. * @example * ```ts * const { registered } = await augustSdk.getOriginInfo({ chainId: 1, originCode }); * ``` */ getOriginInfo(options: { chainId: number; originCode: `0x${string}`; }): Promise; /** * Get lifetime PnL for a user in a specific vault. * Calculates realized and unrealized PnL based on deposit/withdrawal history and current position. * @param props - Vault address, wallet address, and optional chain ID * @returns Lifetime PnL data including realized and unrealized PnL in both native token and USD * @throws {@link AugustHistoryUnavailableError} (`HISTORY_UNAVAILABLE`) when a * live position has no indexed deposits, withdrawals or priceable share * transfers. * @throws {@link AugustPriceUnavailableError} (`PRICE_UNAVAILABLE`) when the * vault's underlying asset has no USD price — the USD fields are never * computed from a stand-in price. */ getVaultUserLifetimePnl(props: { vault: IAddress; wallet: IAddress; chainId?: IChainId; }): Promise; /** * Get PnL for a vault (vault-level, not user-specific). * Returns the vault's overall profit and loss across all users. * @param props - Vault address and optional chain ID * @returns Vault PnL in USD and notional value */ getVaultPnl(props: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Get user's staking positions for vault receipt tokens. * @param props - Wallet address and optional chain ID * @returns Array of staking positions with rewards */ getVaultStakingPositions(props: { wallet?: IAddress; chainId?: IChainId; }): Promise; /** * Get the borrower's health factor by vault. * * Pass `vault` whenever the caller knows which pool it cares about — it * skips the all-vaults cross-chain fanout and only reads the loans for * that one pool. The response map is keyed by **lowercased** vault * address; look entries up with `address.toLowerCase()`. * * @param props.chainId Optional chain to scope the read to. * @param props.vault Optional vault address. When provided alongside * `chainId`, only that vault's borrower-health-factor data is fetched. * @returns Object containing the borrower's health factor by vault. */ getVaultBorrowerHealthFactor(props?: { chainId?: IChainId; vault?: IAddress; }): Promise | Record[]>; /** * Get user points from the backend API. * This fetches processed points data directly from the backend, * removing the need for client-side points calculation. * @param userAddress - User wallet address * @returns Points data from the backend API */ getUserPoints(userAddress: IAddress): Promise; /** * Register a user for the points program, authenticated by a wallet signature. * * The caller produces a personal_sign signature over a canonical message * containing the user address, referrer (or `"none"`), chain, nonce, and * expiry — see `AugustVaults.registerUserForPoints` for the exact template. * * @param userAddress - EVM wallet address being registered. * @param referrerAddress - Optional EVM referrer address. * @param chainId - Chain on which the wallet signed; powers the EIP-1271 * fallback for smart-contract wallets and pins the signature cross-chain. * @param signature - 0x-prefixed personal_sign signature over the canonical message. * @param nonce - Single-use random string (8–128 chars). * @param expiry - Unix seconds; must be in the future, within the backend's TTL. * @returns Raw `Response` from the backend. */ registerUserForPoints(userAddress: IAddress, referrerAddress: IAddress | undefined, chainId: number, signature: string, nonce: string, expiry: number): Promise; /** * Fetch the points leaderboard data. * @param params - Optional parameters for pagination and sorting * @returns Leaderboard response data */ fetchPointsLeaderboard(params?: { page?: number; perPage?: number; sortBy?: 'streakDays' | 'totalPoints'; }): Promise; /** * Fetch the historical unrealized-PnL series for a vault, newest first. * Delegates to {@link AugustApi.getVaultUnrealizedPnlHistory} — see it for * parameter semantics and thrown errors. */ getVaultUnrealizedPnlHistory(params: { vault: string; limit?: number; }): Promise; /** * Fetch the latest unrealized-PnL snapshot for every tracked vault. * Delegates to {@link AugustApi.getLatestUnrealizedPnl} — see it for * return shape and thrown errors. */ getLatestUnrealizedPnl(): Promise; /** * Get annualized APY metrics for a vault. * * Supported Vaults: cUSDO, tETH, wstETH, rsETH * * @deprecated The `hgETH30dLiquidAPY` and `hgETH7dLiquidAPY` response fields are deprecated. * These fields will be removed in the next major release. * Use `liquidAPY30Day` and `liquidAPY7Day` fields instead. * * @param props - Vault address * @returns Annualized APY data including liquidity APY */ getVaultAnnualizedApy(props: { vault: IAddress; }): Promise; /** * Get summary data for a vault (name, type, chain, recent returns). * @param props - Vault address * @returns Vault summary data */ getVaultSummary(props: { vault: IAddress; }): Promise; /** * Get withdrawal summary and pending queue for a vault. * @param props - Vault address and optional chain ID * @returns Withdrawal summary and pending queue */ getVaultWithdrawals(props: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Preview the amount of assets that would be received for redeeming shares (queued redemption). * @param props - Vault contract address, shares amount, and optional chain ID * @returns The amount of assets as {@link INormalizedNumber} */ previewRedemption(props: { vault: IAddress; sharesAmount: string | bigint | number; chainId?: IChainId; }): Promise; /** * Query LayerZero USDC deposits from the august-layerzero subgraphs. * Returns all deposits or filters by sender wallet address if provided. * * **Important Notes:** * - Only deposit transactions are tracked (not withdrawals or other operations) * - Sender and recipient addresses are stored in bytes32 format in the subgraph * - Timestamps are available from the subgraph * * **Supported Vaults:** * - `upusdc`: 0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42 * - `coreusdc`: 0xE9B725010A9E419412ed67d0fA5f3A5f40159D32 * - `earnausd`: 0x36eDbF0C834591BFdfCaC0Ef9605528c75c406aA * * @param props - Receipt token type ('upusdc', 'coreusdc', or 'earnausd') and optional wallet address to filter by sender * @returns Array of deposit events with the following structure: * - `assetAmt`: Amount of assets deposited (as string) * - `shareAmt`: Amount of shares received (as string) * - `sender`: Sender address in bytes32 format * - `recipient`: Recipient address in bytes32 format * - `dstEid`: Destination endpoint ID (LayerZero chain identifier) * - `transactionHash_`: Transaction hash * * @throws Error if receipt token is invalid or GraphQL request fails * * @example * ```typescript * // Get all coreUSDC deposits * const allDeposits = await sdk.getLayerZeroDeposits({ * receiptToken: 'coreusdc' * }); * * // Get deposits for a specific wallet * const userDeposits = await sdk.getLayerZeroDeposits({ * receiptToken: 'upusdc', * wallet: '0xb0280B58F541131b29D1B33319CD440a99eA0305' * }); * ``` */ getLayerZeroDeposits(props: { receiptToken: 'upusdc' | 'coreusdc' | 'earnausd'; wallet?: IAddress; }): Promise; /** * Get LayerZero redeems for earnAUSD vault * * @example * ```typescript * // Get all earnAUSD redeems * const allRedeems = await sdk.getLayerZeroRedeems(); * * // Get redeems for a specific wallet * const userRedeems = await sdk.getLayerZeroRedeems({ * wallet: '0x2de1DCB8EaAd40fAd327fa3eE3F48774b8e20649' * }); * ``` */ getLayerZeroRedeems(props?: { wallet?: IAddress; }): Promise; } export default AugustSDK; /** Base class for all SDK errors. */ export declare class AugustSDKError extends Error { readonly code: AugustErrorCode; readonly correlationId?: string; readonly context?: Record; constructor(code: AugustErrorCode, message: string, options?: AugustErrorOptions); /** * Serialize own properties to a plain object. Native `Error` enumerates * nothing, so `JSON.stringify(err)` returns `"{}"` without this. */ toJSON(): Record; } /** Backend returned a non-OK status that isn't auth, rate-limit, or timeout. */ export declare class AugustServerError extends AugustSDKError { /** HTTP status code returned by the backend. */ readonly status: number; constructor(status: number, message: string, options?: AugustErrorOptions); toJSON(): Record; } /** * Subaccount operation class interacting with August Subaccounts * Subaccount is a smart contract wallet that serves as the fundamental infrastructure for August's platform. * It functions as a cross-margin account designed for optimal capital efficiency. * * `getSubaccountSummary`, `getSubaccountHealthFactor`, `getSubaccountLoans`, * `getSubaccountCefiPositions` and `getSubaccountOtcPositions` work without an * August API key for subaccounts linked to a vault; `getSubaccountDebank` is * public. `getSubaccountTransactions` needs a key authorized for the * subaccount, and `getAllSubaccounts` and `getSubaccountLoanByAddress` need an * admin key. */ export declare class AugustSubAccounts extends AugustBase { private headers; constructor(baseConfig: IAugustBase); /** * Retrieves one page of the directory of all August subaccounts. * * Backed by the admin-only `GET /subaccount` backend endpoint, so the * August API key configured on the SDK must belong to an admin user — * non-admin keys are rejected with an auth error by the backend. Makes * exactly one HTTP request and no RPC calls. * * @param options - Pagination window over the subaccount directory * @param options.offset - Number of records to skip. Defaults to 0; must be a non-negative integer. * @param options.limit - Page size. Defaults to 100; must be an integer between 1 and 1000 (backend maximum). * @returns The page of subaccount records (address, internal/friendly names, status, type, linked chains, risk metadata). An empty array means the offset is past the end of the directory. * @throws AugustValidationError when `offset` or `limit` is out of range * @throws AugustAuthError when the API key is missing or not admin-scoped * @example * const page = await augustSdk.subAccountsModule.getAllSubaccounts({ * offset: 0, * limit: 200, * }); * console.log(page.map((s) => `${s.internal_name}: ${s.address}`)); */ getAllSubaccounts(options?: { offset?: number; limit?: number; }): Promise; /** * Retrieves the health factor for a subaccount. * @param subaccountAddress - The address of the subaccount to query * @returns The health factor data including collateral value, loan value, and health factor ratio */ getSubaccountHealthFactor(subaccountAddress: IAddress): Promise<{ id: `0x${string}`; dateTime: string; healthFactor: number; totalCollateral: number; totalLoan: number; }>; /** * Retrieves loan positions for a subaccount. * @param subaccountAddress - The address of the subaccount to query * @param side - Filter by loan side: 'BOTH' for all loans, 'LENDER' for lent positions, 'BORROWER' for borrowed positions * @param active - When true, returns only active loans; when false, returns all loans including closed ones * @returns List of loan positions matching the specified filters */ getSubaccountLoans(subaccountAddress: IAddress, side: 'BOTH' | 'LENDER' | 'BORROWER', active: boolean): Promise; /** * Retrieves CeFi (Centralized Finance) positions for a subaccount. * @param subaccountAddress - The address of the subaccount to query * @returns List of CeFi positions held by the subaccount */ getSubaccountCefiPositions(subaccountAddress: IAddress): Promise; /** * Retrieves OTC (Over-The-Counter) positions for a subaccount. * @param subaccountAddress - The address of the subaccount to query * @returns List of OTC positions held by the subaccount */ getSubaccountOtcPositions(subaccountAddress: IAddress): Promise; /** * Retrieves the summary view for a subaccount or EOA operator. * @param subaccountAddress - The address of the subaccount to query * @returns The full summary including portfolio, loanbook, tokens, and account values */ getSubaccountSummary(subaccountAddress: IAddress): Promise<{ address: `0x${string}`; name: string; type: "eoa" | "subaccount"; portfolio: { tokens: { value: number; balance: number; token: { type: string; name: string; address: string; chain: number; symbol: string; decimals: number; imgUrl: string; }; }[]; marginBalances: unknown[]; collateralBalances: unknown[]; cefiPositions: unknown[]; defiPositions: unknown[]; trsPositions: unknown[]; strategyContractPositions: unknown[]; legacyHedgerPositions: unknown[]; otcPositions: unknown[]; totalValue: number; discountedValue: number; }; loanbook: { loans: { subaccountAddress: `0x${string}`; book: { address: `0x${string}`; lender: `0x${string}`; borrower: `0x${string}`; state: string; totalRepaid: number; principalToken: { type: string; name: string; address: string; chain: number; symbol: string; decimals: number; imgUrl: string; tokenType: number; discountFactor: number; price: number; }; principalAmount: number; interestAmount: number; upcomingPayment: { amount: number; dueDate: string; }; apr: number; initialPrincipalAmount: number; deployedDate: string; paymentInterval: number; totalInterestPaymentFees: number; }; isBorrow: boolean; debtInfo: { interestOwed: number; principalDebtOwed: number; interestRepaid: number; }; creditInfo: { netInterestOwed: number; principalDebtOwed: number; netInterestRepaid: number; }; }[]; totalDebt: number; totalCredit: number; aggregatesByToken: unknown[]; }; chains: { name: string; chainId: number; }[]; tokens: { type: string; name: string; address: string; chain: number; symbol: string; decimals: number; imgUrl: string; price: number; rawBalance: number; balance: number; value: number; }[]; totalAccountValue: number; totalCollateralValue: number; totalLoanValue: number; healthFactor: number; netAccountValue: number; totalEquityValue: number; }>; /** * Retrieves a subaccount's on-chain transaction history, newest first, * optionally windowed by a time range. * * Backed by the authenticated `GET /transactions/v2` backend endpoint, * which resolves and authorizes the subaccount, so the configured August * API key must be authorized for it (an admin-scoped key always is). Makes * exactly one HTTP request and no RPC calls. * * @param subaccountAddress - The address of the subaccount to query * @param options - Optional time window * @param options.startTime - ISO-8601 datetime lower bound (inclusive); omit for no lower bound * @param options.endTime - ISO-8601 datetime upper bound (inclusive); omit for no upper bound * @returns The subaccount's transactions with decoded logs, transfers, and function names * @throws AugustValidationError When `subaccountAddress` is not a valid EVM address * @throws AugustAuthError When the API key is missing or not authorized for the subaccount * @throws AugustServerError When the API responds with a non-2xx status * @example * const txs = await augustSdk.subAccountsModule.getSubaccountTransactions( * '0xabc…', * { startTime: '2026-01-01T00:00:00Z' }, * ); */ getSubaccountTransactions(subaccountAddress: IAddress, options?: { startTime?: string; endTime?: string; }): Promise; /** * Retrieves the full loan-book detail for a single loan by its address and * chain. * * Backed by the admin-only `GET /subaccount/loans/{loan_address}` backend * endpoint (60-second server-side cache), so the configured August API key * must belong to an admin user. Makes exactly one HTTP request and no RPC * calls. * * @param loanAddress - The loan contract address * @param chainId - Numeric August chain id the loan lives on (e.g. `1` for Ethereum mainnet) * @returns The loan's {@link ILoanBookInfo} detail * @throws AugustValidationError When `chainId` is not an integer * @throws AugustAuthError When the API key is missing or not admin-scoped * @throws AugustServerError When the loan or chain is not found, or the API otherwise responds non-2xx * @example * const loan = await augustSdk.subAccountsModule.getSubaccountLoanByAddress( * '0xloan…', * 1, * ); */ getSubaccountLoanByAddress(loanAddress: string, chainId: number): Promise; /** * Retrieves cross-chain DeBank protocol positions and token balances for a * subaccount and its associated strategies. * * Backed by `GET /subaccount/{subaccount_address}/debank` (300-second * server-side cache). This is a slow endpoint — it fans out to DeBank * across every supported chain — so expect higher latency than other * subaccount reads. Makes exactly one HTTP request and no RPC calls. * * @param subaccountAddress - The address of the subaccount to query * @returns The subaccount's DeBank positions/tokens plus per-strategy breakdowns * @throws AugustValidationError When `subaccountAddress` is not a valid EVM address * @throws AugustServerError When the API responds with a non-2xx status * @example * const debank = await augustSdk.subAccountsModule.getSubaccountDebank('0xabc…'); * console.log(debank.subaccount.positions.length); */ getSubaccountDebank(subaccountAddress: IAddress): Promise; } /** Request exceeded its deadline. */ export declare class AugustTimeoutError extends AugustSDKError { /** Time elapsed (ms) before the request was aborted. */ readonly timeoutMs: number; constructor(message: string, timeoutMs: number, options?: AugustErrorOptions); toJSON(): Record; } /** * A transaction was sent but its outcome could not be established * (`TRANSACTION_UNCONFIRMED`). It may have landed: check {@link signature} * before resubmitting, or a deposit or redeem can execute twice. * `context.reason` says what was seen (e.g. `expired_not_found`: the blockhash * expired and no lookup found it, so it very likely never landed). * * @example * ```ts * try { * await sdk.solana.vaultDeposit(programId, idl, wallet, amount, undefined, vault); * } catch (err) { * if (err instanceof AugustTransactionError) showPending(err.signature); * else throw err; * } * ``` */ export declare class AugustTransactionError extends AugustSDKError { /** Signature of the transaction that was sent. */ readonly signature: string; /** * @param message - Human-readable description, naming the signature. * @param signature - Signature of the transaction that was sent. * @param options - Standard SDK error options. */ constructor(message: string, signature: string, options?: AugustErrorOptions); toJSON(): Record; } /** Caller-side input failed validation. */ export declare class AugustValidationError extends AugustSDKError { constructor(code: Extract, message: string, options?: AugustErrorOptions); } /** * Vault operations class handling multi-chain vault queries and user positions. * Supports both EVM and Solana vaults with unified interface. */ export declare class AugustVaults extends AugustBase { private solanaService; private suiService; private headers; /** * Consumer-supplied Soroban RPC override for Stellar vault reads, with the * network it was configured for so it's only applied to matching-network * vaults (see `IVaultBaseOptions.stellarRpc`). */ private _stellarRpc?; constructor(baseConfig: IAugustBase, solana: SolanaAdapter, sui: SuiAdapter); /** * @description deposit underlying token into the specified pool with adapter support. This is for when we cannot pass in a signer in sdk and need to do so as an arg * @param signer signer / wallet object * @param options object including pool contract address, user wallet address, string amount, and optional depositAsset * @returns deposit tx hash */ vaultDeposit(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * @description deposit native token (ETH/AVAX/etc) into a vault using MultiAssetNativeDepositWrapper * @param signer signer / wallet object * @param options object including wrapper contract address, receiver address (optional), and amount * @returns deposit tx hash */ depositNative(signer: Signer | Wallet, options: INativeDepositOptions): Promise; /** * Fetch all vaults across configured networks with optional enrichment. * Automatically filters by available providers and optionally by chain IDs. * Includes closed vaults that are still visible (`status: 'closed'`, * `is_visible: true`) so consumers can render positions held in closed * vaults; closed vaults with `is_visible: false` are excluded. * * RPC volume (worst case, wallet enrichment path): the per-vault * `balanceOf`/`lagDuration` reads are aggregated into chunked Multicall3 * `aggregate3` batches per chain (10 calls per chunk) on chains where the * canonical Multicall3 deployment is verified; other chains (e.g. Citrea * 4114) keep one `eth_call` per read. Measured on a * cold cache for a wallet with 62 * vaults across Ethereum + Avalanche: 83 RPC HTTP requests before batching, * 54 after (~35% fewer; 124 per-vault `eth_call`s collapse into ~13 * `aggregate3` calls — the remaining requests are the per-vault cached * decimals/receipt-token reads on a cold cache). * @param options Filtering and enrichment configuration * @returns Array of vault objects with optional loans/allocations/positions */ getVaults(options?: IGetVaultsOptions): Promise; /** * Calculate total deposited across all tokenized vaults by summing latest_reported_tvl. * Uses the /tokenized_vault endpoint which returns latest_reported_tvl in USD. * Wrapper vaults (non-null `underlying_vault_address`) are skipped: their * deposits sit in the underlying vault as LP and are already counted there. * @param options Optional configuration for loading vaults * @returns Total deposited amount in USD (sum of all latest_reported_tvl values) */ getTotalDeposited(options?: { loadSubaccounts?: boolean; loadSnapshots?: boolean; }): Promise; /** * Fetch detailed data for a single vault with optional enrichment. * Automatically includes loans and allocations unless explicitly disabled. * @param vault Vault contract address * @param chainId Optional chain ID (uses active network if not provided) * @param options Enrichment and wallet options * @returns Single vault object with optional position data * @throws {@link AugustValidationError} (`INVALID_CHAIN`) when `chainId` is * not a chain the SDK recognises, or is a supported EVM chain with no RPC * URL configured on this SDK instance. */ getVault({ vault, chainId, options, loadSubaccounts, loadSnapshots, }: { vault: IAddress; chainId?: IChainId; options?: IVaultCustomOptions; loadSubaccounts?: boolean; loadSnapshots?: boolean; }): Promise; /** * Fetch the active loans issued by a vault. * @param vault Vault contract address * @param chainId Optional chain ID (uses active network if not provided) * @returns Loan data for the vault * @throws {@link AugustValidationError} (`INVALID_CHAIN`) when `chainId` is * not a chain the SDK recognises, or is a supported EVM chain with no RPC * URL configured on this SDK instance. */ getVaultLoans({ vault, chainId, }: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Fetch a vault's loans broken down by sub-account. * @param vault Vault contract address * @param chainId Optional chain ID (uses active network if not provided) * @returns Sub-account loan data for the vault * @throws {@link AugustValidationError} (`INVALID_CHAIN`) when `chainId` is * not a chain the SDK recognises, or is a supported EVM chain with no RPC * URL configured on this SDK instance. */ getVaultSubaccountLoans({ vault, chainId, }: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Fetch a vault's DeFi / CeFi / OTC allocation breakdown. * @param vault Vault contract address * @param chainId Optional chain ID (uses active network if not provided) * @returns Allocation data for the vault * @throws {@link AugustValidationError} (`INVALID_CHAIN`) when `chainId` is * not a chain the SDK recognises, or is a supported EVM chain with no RPC * URL configured on this SDK instance. */ getVaultAllocations({ vault, chainId, }: { vault: IAddress; chainId?: IChainId; }): Promise; /** * @deprecated use getVaultHistoricalTimeseries instead * @function getVaultApy gets the vault/pool APR, both current and historical * @param vault pool/vault contract address * @param historical (optional) When passed, returns the historical records of the pool/vault APR * @returns a value or array of objects containing the APR and timestamp */ getVaultApy({ vault, historical, }: { vault: IAddress; historical?: Partial; }): Promise<{ value: number; timestamp: string; }[]>; /** * @function getVaultHistoricalTimeseries gets historical timeseries data for a vault * @param vault Vault contract address * @param nDays Number of days of historical data (default 30, min 1) * @returns Historical timeseries data with TVL, APY, PnL, share price, and other metrics */ getVaultHistoricalTimeseries({ vault, nDays, }: { vault: IAddress; nDays?: number; }): Promise; /** * A wallet's redemption requests on one vault, split into * `availableRedemptions` and `pendingRedemptions`. EVM, Stellar and Solana * vault addresses are accepted; see `AugustSDK.getVaultAvailableRedemptions` * for what each list holds on Solana. * * @param props - `vault`, the vault address; `chainId`, the EVM chain whose * RPC to use (the active network when omitted); `wallet`, the holder, * required for Solana, where it is base58; `verbose`, to also return the * processed and requested withdrawal lists (always empty for Solana). * @returns `{ availableRedemptions, pendingRedemptions }`, plus the verbose lists. * @throws Error when unauthorized, or when `vault` is missing or not an address. */ getVaultAvailableRedemptions({ vault, chainId, wallet, verbose, }: { vault: IAddress; chainId?: number; wallet?: IAddress; verbose?: boolean; }): Promise<{ processedWithdrawals: ISubgraphWithdrawProccessed[]; requestedWithdrawals: ISubgraphWithdrawRequest[]; availableRedemptions: IVaultAvailableRedemption[]; pendingRedemptions: IVaultAvailableRedemption[]; }>; /** * Historical redemption requests for a vault (settled, cancelled, and * pending-but-out-of-window). Filterable by wallet. * * Stellar vaults return `[]` — on-chain redemption history is not yet * indexed for that adapter. * * @param vault - Vault address (EVM or Stellar). Stellar input is * accepted but always resolves to an empty array for now. * @param chainId - Chain id to resolve the RPC URL against. Falls * back to the active network. * @param wallet - Optional EVM wallet filter; when omitted the * response includes every wallet that has ever redeemed against * the vault. * @param lookbackBlocks - How far back to scan for redemption logs. * Defaults to the SDK's internal lookback when omitted. * @returns The same array shape `getVaultRedemptionHistory` returns * at the module level — historical redemption records, newest * first. * * @example * ```ts * const history = await sdk.vaultsModule.getVaultRedemptionHistory({ * vault: '0xVault', * chainId: 8453, * wallet: '0xWallet', * }); * ``` */ getVaultRedemptionHistory({ vault, chainId, wallet, lookbackBlocks, }: { vault: IAddress; chainId?: IChainId; wallet?: IAddress; lookbackBlocks?: number; }): Promise; /** * Fetch the wallet's positions across vaults — a single vault, one chain, * or every chain with a configured provider. * * RPC volume (worst case, multi-vault paths): the two non-cacheable * per-vault reads (`balanceOf`, `lagDuration`) are aggregated into chunked * Multicall3 `aggregate3` batches per chain (10 calls per chunk) on chains * where the canonical deployment is verified; unverified chains (e.g. * Citrea 4114) and non-EVM vaults keep one `eth_call` per read. Measured * on a cold cache for a wallet with 62 * vaults across Ethereum + Avalanche: 83 RPC HTTP requests before batching, * 54 after (~35% fewer). A vault whose batched read fails (e.g. paused) * falls back to its own per-vault reads — never to a zeroed balance. */ getVaultPositions({ vault, wallet, chainId, showAllVaults, solanaWallet, stellarWallet, options, }: { vault?: IAddress; wallet?: IAddress; chainId?: IChainId; showAllVaults?: boolean; solanaWallet?: string; stellarWallet?: string; options?: IVaultBaseOptions; }): Promise; /** * */ getUserHistory({ wallet, chainId, vault, }: { wallet: IAddress; chainId?: IChainId; vault?: IAddress; options?: IVaultBaseOptions; }): Promise; /** * Get lifetime PnL for a user in a specific vault. * @param props Vault address, wallet address, and optional chain ID * @returns Lifetime PnL data including realized and unrealized PnL * @throws {@link AugustHistoryUnavailableError} (`HISTORY_UNAVAILABLE`) when a * live position has no indexed deposits, withdrawals or priceable share * transfers. * @throws {@link AugustPriceUnavailableError} (`PRICE_UNAVAILABLE`) when the * vault's underlying asset has no USD price. */ getVaultUserLifetimePnl({ vault, wallet, chainId, }: { vault: IAddress; wallet: IAddress; chainId?: IChainId; }): Promise; /** * Get PnL for a vault (vault-level, not user-specific). * Returns the vault's overall profit and loss across all users. * @param props Vault address and optional chain ID * @returns Vault PnL in USD and notional value */ getVaultPnl({ vault, chainId, }: { vault: IAddress; chainId?: IChainId; }): Promise; /** * */ getUserTransfers({ wallet, chainId, vault, options, }: { wallet: IAddress; chainId?: IChainId; vault?: IAddress; options?: IVaultBaseOptions; }): Promise<{ id: string; value: string; to: string; from: string; pool: string; block: number; timestamp: number; transactionHash: string; }[]>; /** * Fetch a vault's deposit/withdrawal activity across every participant. * * This is the vault-wide counterpart to {@link getUserHistory}: instead of * filtering the subgraph to one wallet, it returns every deposit, * withdrawal-request, and processed-withdrawal event for the pool. Use it to * answer flow questions ("how many deposits in the last 7 days", "net flow * this week") that point-in-time TVL cannot. * * Rows are read from the Goldsky subgraph, paginated internally so busy * vaults are not truncated at the 1000-row page cap. When `sinceTs` is * supplied the reader stops paging once it passes the window boundary, so a * short lookback stays cheap even on high-volume vaults. * * @param params - Query parameters. * @param params.vault - Vault (pool) address to read activity for. * @param params.chainId - Chain id of the vault; falls back to the active * network when omitted. Required for the subgraph lookup. * @param params.sinceTs - Lower bound (inclusive) as a Unix timestamp in * seconds. Events at or after this time are returned. * @param params.untilTs - Upper bound (inclusive) as a Unix timestamp in * seconds. Events at or before this time are returned. * @param params.types - Restrict to a subset of event types (e.g. * `['deposit']`). Returns all types when omitted. * @returns Activity items sorted oldest-first, each with a normalized * `amount`, actor `address`, `type`, and `transactionHash`. * @throws If `vault` is not a valid address, or no chain id can be resolved. * @example * ```ts * const weekAgo = Math.floor(Date.now() / 1000) - 7 * 86_400; * const deposits = await sdk.getVaultActivity({ * vault: '0x36eDbF0C834591BFdfCaC0Ef9605528c75c406aA', * chainId: 143, * sinceTs: weekAgo, * types: ['deposit'], * }); * console.log(`${deposits.length} deposits in the last 7 days`); * ``` */ getVaultActivity({ vault, chainId, sinceTs, untilTs, types, }: { vault: IAddress; chainId?: IChainId; sinceTs?: number; untilTs?: number; types?: IVaultUserHistoryItem['type'][]; }): Promise; /** * Resolve the ERC-20 tokens currently whitelisted for the `SwapRouter` on a * chain — the any-token set a deposit UI can offer as swap-and-deposit inputs, * each verified `true` against the router's on-chain allowlist. * * Reconstructs the set from the router's `TokenEnabled` event history and * re-checks `whitelistedTokens(token)` for each (the mapping is not * enumerable). See {@link getSwapRouterWhitelistedTokens} for the full * two-stage behavior and RPC cost. Uses this instance's configured provider * for `chainId`; returns `[]` (no RPC) when no router is deployed there or no * provider is configured. * * @param chainId - EVM chain ID to resolve the allowlist for. * @param options - Optional `fromBlock` to override the deploy-block scan floor. * @returns Checksummed whitelisted token addresses; `[]` when unavailable. * Callers still exclude a target vault's natively-accepted assets (those * deposit without a swap). * @throws AugustSDKError when an `eth_getLogs` scan chunk fails. * @example * ```ts * const tokens = await augustSdk.getSwapRouterWhitelistedTokens(1); * ``` */ getSwapRouterWhitelistedTokens(chainId: number, options?: { fromBlock?: number; }): Promise; /** * Resolve the vaults currently eligible for the any-token `SwapRouter` * deposit surface on a chain — every vault the router has `enableVault`-ed * whose on-chain registration is still live. * * Reconstructs the set from the router's `VaultEnabled` event history and * re-checks `vaultInfo(vault).referenceAsset != 0` for each (the mapping is * not enumerable). See {@link getSwapRouterEligibleVaults} for the full * two-stage behavior and RPC cost. Uses this instance's configured provider * for `chainId`; returns `[]` (no RPC) when no router is deployed there or no * provider is configured. * * On-chain eligibility only — app-level policy (e.g. excluding vaults with * their own OVault deposit flow) remains the caller's responsibility. * * @param chainId - EVM chain ID to resolve eligible vaults for. * @param options - Optional `fromBlock` to override the deploy-block scan floor. * @returns Checksummed eligible vault addresses; `[]` when unavailable. * @throws AugustSDKError when an `eth_getLogs` scan chunk fails. * @example * ```ts * const vaults = await augustSdk.getSwapRouterEligibleVaults(1); * ``` */ getSwapRouterEligibleVaults(chainId: number, options?: { fromBlock?: number; }): Promise; /** * Read a SwapRouter origin code's on-chain registration through this * instance's provider for `chainId`. See {@link getOriginInfo} for the * registration rule and caching. * * @param options - `chainId` and the `bytes32` `originCode` to look up. * @returns {@link IOriginInfo}. * @throws AugustValidationError (`INVALID_CHAIN`) when no provider is * configured for `chainId`; (`INVALID_INPUT`) for a malformed code. * @throws AugustSDKError when the `origins(bytes32)` read fails. * @worstCaseRpcCalls 1 — one `origins(bytes32)` read, cached for 5 minutes. * @example * ```ts * const info = await augustSdk.getOriginInfo({ chainId: 1, originCode }); * ``` */ getOriginInfo(options: Omit): Promise; /** * @function getStakingPositions gets all available reward staking positions * @param wallet optionally passed user wallet address * @param chainId optionally passed chainId * @returns all available staking positions for connected or passed network(s) */ getStakingPositions(wallet?: IAddress, chainId?: IChainId): Promise; /** * @function getVaultTvl gets the vault/pool TVL, both current and historical * @param vault pool/vault contract address * @param historical (optional) When passed, returns the historical records of the pool/vault TVL * @returns an object or array of objects containing the TVL and timestamp */ getVaultTvl({ vault, chainId, historical, }: { vault: IAddress; chainId?: IChainId; historical?: IVaultHistoricalParams; }): Promise<{ value: INormalizedNumber; timestamp: string; }[]>; /** * @function getYieldLastRealizedOn gets the timestamp when yield was last realized for a vault * @param vault Vault contract address * @param chainId Optional chain ID (uses active network if not provided) * @returns Timestamp (Unix timestamp in seconds) when yield was last realized */ getYieldLastRealizedOn({ vault, chainId, }: { vault: IAddress; chainId?: IChainId; }): Promise; /** * Gets borrower health-factor data for vaults on a chain, optionally * scoped to a single vault. * * Pass `vault` whenever the caller knows which pool it cares about — * this skips the all-vaults cross-chain fanout and only reads the loans * for that one pool. The response map is keyed by **lowercased** vault * address; look entries up with `address.toLowerCase()`. * * Individual loan failures (bad/test loan contracts, unrecognized * borrowers) are isolated and logged rather than rejecting the batch. * * @param chainId Optional chain to scope the read to. When omitted, * iterates the SDK's configured providers and returns the flattened * list (legacy shape — prefer passing a chain). * @param vault Optional vault address. When provided alongside * `chainId`, only that vault's data is fetched. * @returns When `chainId` is set, an object map of lowercased vault * address → array of borrower-health-factor rows. When `chainId` is * omitted, a flat array (legacy behavior, kept for backward compat). */ getVaultBorrowerHealthFactor(chainId?: IChainId, vault?: IAddress): Promise | Record[]>; /** * @function getUserPoints fetches user points from the backend API * @param userAddress User wallet address * @returns Points data from the backend API */ getUserPoints(userAddress: IAddress): Promise; /** * Register a user for the points program, authenticated by a wallet signature. * * The caller produces a personal_sign signature over a canonical message * built from these primitives — see `registerUserForPoints` in * `./getters` for the exact template and a worked example. * * @param userAddress EVM wallet address being registered. * @param referrerAddress Optional referrer EVM address. * @param chainId Chain on which the wallet signed; powers the EIP-1271 * fallback for smart-contract wallets and pins the signature cross-chain. * @param signature 0x-prefixed hex personal_sign signature over the canonical message. * @param nonce Single-use random string (8–128 chars). * @param expiry Unix seconds; must be in the future, within the backend's TTL. * @returns Raw `Response` from the backend. */ registerUserForPoints(userAddress: IAddress, referrerAddress: IAddress | undefined, chainId: number, signature: string, nonce: string, expiry: number): Promise; /** * @function fetchPointsLeaderboard fetches the points leaderboard data * @param params Optional parameters for pagination and sorting * @returns Leaderboard response data */ fetchPointsLeaderboard(params?: { page?: number; perPage?: number; sortBy?: 'streakDays' | 'totalPoints'; }): Promise; /** * Get annualized APY metrics for a vault. * * Supported Vaults: cUSDO, tETH, wstETH, rsETH * * @deprecated The `hgETH30dLiquidAPY` and `hgETH7dLiquidAPY` response fields are deprecated. * These fields will be removed in the next major release. * Use `liquidAPY30Day` and `liquidAPY7Day` fields instead. * * @param vault Vault address * @returns Annualized APY data including liquidity APY */ getVaultAnnualizedApy(vault: IAddress): Promise; /** * Get summary data for a vault (name, type, chain, recent returns). * @param vault Vault address * @returns Vault summary data */ getVaultSummary(vault: IAddress): Promise; /** * Get withdrawal summary and pending queue for a vault. * @param vault Vault address * @param chainId Chain ID (will be converted to chain name) * @returns Withdrawal summary and pending queue */ getVaultWithdrawals(vault: IAddress, chainId?: number): Promise; /** * Fetch pending redemptions for a vault with liquidity analysis. * @param vault - Vault contract address * @param pastDays - Number of past days to include (default 7, min 1, max 30) * @param futureDays - Number of future days to include (default 14, min 1, max 30) * @returns Pending redemptions grouped by date with liquidity summary */ getVaultPendingRedemptions({ vault, pastDays, futureDays, }: { vault: IAddress; pastDays?: number; futureDays?: number; }): Promise; /** * Preview the amount of assets that would be received for redeeming shares (queued redemption). * @param vault Vault contract address * @param sharesAmount Amount of shares to redeem (human-readable, raw bigint, or string) * @param chainId Optional chain ID (uses active network if not provided) * @returns The amount of assets as INormalizedNumber { normalized, raw } */ previewRedemption({ vault, sharesAmount, chainId, }: { vault: IAddress; sharesAmount: string | bigint | number; chainId?: IChainId; }): Promise; /** * Get all withdrawal requests for a vault with deterministic status tracking. * * Matches requests to processed events by `(receiver, claimableDate)` tuple. * * **Status values:** * - `'processed'` — Matching `WithdrawalProcessed` event found on-chain. * - `'ready_to_claim'` — Claimable date has passed, no processed event found yet. * - `'pending'` — Claimable date is still in the future. * * **Lookback window:** Processed events are fetched from on-chain logs, which * only cover a finite block range. Requests whose claimable date is older than * this window with no matching processed event are excluded (assumed already * processed). Use `lookbackBlocks` to widen or narrow the scan range. * * @param vault - Vault contract address * @param receiver - Optional receiver address to filter by * @param lookbackBlocks - Optional on-chain log lookback window in blocks. * Defaults to chain-specific value (e.g. 150,000 for Ethereum, 3,456,000 for Monad). * @param chainId - Optional chain id for the vault address * @returns Array of withdrawal requests with status and claimable dates */ getWithdrawalRequestsWithStatus(vault: IAddress, receiver?: IAddress, lookbackBlocks?: number, chainId?: number): Promise; /** * Redeem vault shares for an underlying asset via instant redemption (RWA subaccount). * Resolves the vault address to the RwaRedeemSubaccount internally. * Handles vault share approval automatically. * @param signer - Signer / wallet object * @param vault - Vault contract address * @param asset - Redeemable asset address (e.g. USDC, USDT) * @param amount - Amount of vault shares to redeem * @param minOut - Minimum output amount in output asset units (slippage protection) * @param chainId - Optional chain ID (uses active network if not provided) * @param wait - Wait for transaction confirmation * @returns transaction hash */ rwaRedeemAsset(signer: Signer | Wallet, { vault, asset, amount, minOut, chainId, wait, }: { vault: IAddress; asset: IAddress; amount: string | bigint | number; minOut: string | bigint | number; chainId?: IChainId; wait?: boolean; }): Promise; /** * Preview the output amount for an RWA instant redemption. * Resolves the vault address to the RwaRedeemSubaccount internally. * @param vault - Vault contract address * @param asset - Redeemable asset address (e.g. USDC, USDT) * @param amount - Amount of vault shares to preview * @param chainId - Optional chain ID (uses active network if not provided) * @returns normalized number of the expected output amount (in output asset decimals) */ previewRwaRedemption({ vault, asset, amount, chainId, }: { vault: IAddress; asset: IAddress; amount: string | bigint | number; chainId?: IChainId; }): Promise; } export declare const AVAILABLE_CHAINS: IChainId[]; export declare const AVAX_PRICE_FEED_ADDRESS: (chainId: number) => "0x" | "0xFF3EEb22B5E3dE6e705b44749C2559d704923FD7"; /** * Convert a backend-reported TVL (whole token units) to a NormalizedBn. * Handles null, undefined, and non-finite values (NaN, Infinity) safely, defaulting to 0. * Shared between non-EVM adapters (Solana, Stellar) and the module-level getVaultTvl handler. */ export declare function backendTvlToNormalizedBn(tvl: number | null | undefined, decimals: number): INormalizedNumber; /** * Read an ERC-20 balance directly. Returns the raw on-chain value as * `bigint`; call {@link toNormalizedBn} if you need a {@link INormalizedNumber}. * * @returns Balance in raw on-chain units of `asset`. * @throws AugustValidationError on invalid asset / owner addresses. * @throws AugustSDKError when the underlying contract call fails. * * @example * ```ts * const raw = await augustSdk.evm.balanceOf({ * asset: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC * owner: walletAddress, * }); * ``` */ export declare function balanceOf(signer: IContractRunner, options: IBalanceOfOptions): Promise; /** * `AnchorProvider` whose `sendAndConfirm` — what `program.methods…rpc()` calls — * confirms with {@link confirmByBlockhash} instead of Anchor's signature-only * WebSocket wait. Signing and Anchor's error translation are unchanged. */ declare class BlockhashConfirmingProvider extends AnchorProvider { /** * Sign, send and confirm a transaction. * * @param tx - Transaction to send. Its blockhash (and fee payer, if unset) * are set here. A `VersionedTransaction` already carries a blockhash this * cannot learn the expiry of, so it takes Anchor's default path. * @param signers - Extra signers besides the wallet. * @param opts - Defaults to the provider's options. * @returns The transaction signature. * @throws See {@link confirmByBlockhash}; also whatever the wallet or * `sendRawTransaction` throws (user rejection, preflight failure). * @remarks **RPC cost.** `getLatestBlockhash` + `sendRawTransaction`, then * the confirmation polls described on {@link confirmByBlockhash}. */ sendAndConfirm(tx: Transaction | VersionedTransaction, signers?: Signer_2[], opts?: ConfirmOptions): Promise; } /** * Build an ERC-8021 schema-0 attribution suffix from builder codes. * * Layout (appended to calldata, read back-to-front by parsers): * `ascii(codes.join(','))` ∥ codesLength (1 byte) ∥ schemaId `0x00` ∥ * 16-byte marker `0x80218021802180218021802180218021`. * * @param codes Builder codes as printable-ASCII strings (e.g. `bc_abc123`), * each 1–64 chars, no commas; the comma-joined list must be ≤ 255 bytes. * @returns `0x`-prefixed hex suffix ready to concatenate onto calldata. * @throws Error when `codes` is empty, a code contains a comma or * non-printable/non-ASCII characters, or the joined list exceeds 255 bytes. * @example * ```typescript * buildAttributionSuffix(['baseapp', 'morpho']); * // '0x626173656170702c6d6f7270686f0e0080218021802180218021802180218021' * ``` */ export declare function buildAttributionSuffix(codes: string[]): string; /** * Build a base IVault from backend data, shared across non-EVM adapters (Solana, Stellar). * Chain-specific fields (chainId, version, name, totalAssets, totalSupply, depositAssets, receipt) * must be provided via the overrides parameter. */ export declare function buildBackendVault(tokenizedVault: ITokenizedVault, overrides: Pick & Pick, 'programId' | 'enabled_historical_price_horizons' | 'defaultApyHorizon' | 'latest_reported_tvl' | 'isDepositPaused' | 'isWithdrawalPaused'>): IVault; /** * Build LayerZero OVault transaction inputs for cross-chain deposits and * redemptions. Does NOT execute the transaction. * * Overridable defaults on `props`: `slippageBps` = 100 (range 1–10000), * `feeBufferPercent` = 50% (added to LZ `nativeFee`), * `hubLzComposeGasLimit` = 2_000_000n (multi-asset composed messages). * * @returns Transaction inputs or `{ success: false, error }`. */ export declare function buildCrossChainVaultTx(props: ICrossChainBuildRequest): Promise; /** * Build the formatted vault * @param provider - The provider * @param tokenizedVault - The tokenized vault * @param contractCalls - The contract calls * @returns The formatted vault */ export declare function buildFormattedVault(provider: IContractRunner, tokenizedVault: ITokenizedVault, contractCalls: Record): Promise; /** * Process-wide LRU used by core helpers for memoizing RPC / fetch results. * Kept in a leaf module so importers don't pull in the broader `core/fetcher.ts` * graph (which would cycle through `core/helpers/web3.ts`). */ export declare const CACHE: LRUCache; declare let cacheStats: { hits: number; misses: number; sets: number; }; /** * Calculate weighted average for array of objects. * @param data - Array of objects with values * @param valueProperty - Property name containing the value to average * @param weightProperty - Optional property to base weights on * @returns Weighted average */ export declare function calculateWeightedAverage>(data?: T[], valueProperty?: string, weightProperty?: string): number; /** * Calculate weights based on a specific property in array of objects. * @param data - Array of objects to calculate weights for * @param weightProperty - Property name to base weights on * @returns Original data with each item's `weight` added */ export declare function calculateWeights>(data?: T[], weightProperty?: string): Array; /** * Check if a user can deposit from their current chain. */ export declare function canDepositFromChain(config: ICrossChainVaultConfig, userChainId: number): boolean; /** * Check if a user can redeem from their current chain (must be hub). */ export declare function canRedeemFromChain(config: ICrossChainVaultConfig, userChainId: number): boolean; /** * Capture an exception into Sentry with SDK-specific context. Use from * top-level error handlers (CLI, middleware, unhandled rejections) to * report failures that don't flow through the auto-instrumented method * surface. No-ops when analytics is disabled. * * @param error - Thrown value. Non-Error values are wrapped. * @param options - `surface` ('cli' | 'mcp' | 'sdk' | 'react' | string) * overriding the init-time `sdk.surface` tag for this event, extra `tags`, * `extra` data, and a `flushTimeoutMs` to await before resolving (needed * in Node when the process is about to exit). */ export declare function captureSdkException(error: unknown, options?: { surface?: 'cli' | 'mcp' | 'sdk' | 'react' | string; tags?: Record; extra?: Record; flushTimeoutMs?: number; }): Promise; /** * Map a numeric `chainId` to a stable lowercase slug for use as a Sentry tag * value. Resolves both EVM chains ({@link NETWORKS}) and synthetic non-EVM * chain IDs ({@link SPECIAL_CHAINS}); unknown IDs return `'unknown:'`. * * @param chainId - Numeric chain ID, including negative IDs for non-EVM chains. * @returns Slugified chain label (e.g. `'ethereum'`, `'arbitrum-one'`, `'solana'`). */ export declare function chainIdToTagValue(chainId: number | undefined): string; export declare type ChainType = 'evm' | 'solana' | 'sui' | 'stellar'; /** * Validate Ethereum address format and checksum. * @param address Address string to validate * @param logger Optional logger for error messages * @param type Context type for logging * @returns True if address is valid and checksummed */ export declare function checkAddress(address: string, logger?: any, type?: 'wallet' | 'contract'): boolean; /** * Claim a previously-requested queued withdrawal on an EVM-2 (Tokenized * Vault V2) vault, once its withdrawal epoch has passed. * * EVM-2 only — v1/v0 vaults use a different claim path ({@link vaultRedeem}). * The vault's on-chain `claim(year, month, day, receiverAddr)` reverts if the * epoch has not yet elapsed, or if the vault's idle reserve has not been * refilled from subaccounts to cover the queue for that date; neither * condition is checked client-side before sending. * * @param signer ethers Signer / Wallet. * @param options.target EVM-2 vault contract address. * @param options.wallet Wallet initiating the claim; receives the withdrawn assets unless `receiver` is set. * @param options.year Withdrawal-epoch year from `requestRedeem`. * @param options.month Withdrawal-epoch month from `requestRedeem`. * @param options.day Withdrawal-epoch day from `requestRedeem`. * @param options.receiver Address receiving the withdrawn assets. Defaults to `wallet`. * @param options.wait Wait for transaction confirmation. * @returns Claim transaction hash. * @throws AugustValidationError on invalid address input, missing or non-integer date fields, or a non-EVM-2 vault. * @throws AugustSDKError when the on-chain claim call fails. * * @worstCaseRpcCalls 2 — one vault-version lookup, one claim transaction. * * @example * ```ts * const { year, month, day } = await augustSdk.evm.vaultRequestRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: '10', * }); * // ...after the withdrawal epoch has elapsed... * await augustSdk.evm.claimWithdrawal({ * target: vaultAddress, * wallet: walletAddress, * year, * month, * day, * wait: true, * }); * ``` */ export declare function claimWithdrawal(signer: Signer | Wallet, options: IClaimWithdrawalOptions): Promise; /** * Classify a cross-chain contract error into a known error type. */ export declare function classifyCrossChainError(error: unknown): CrossChainErrorType; /** * Clear wallet from user identity. * Called when user disconnects wallet. */ export declare function clearUser(): void; /** * Best-effort version check that nudges integrators when a newer * `@augustdigital/sdk` is available on npm. * * Design constraints (all kept narrow on purpose): * - **No network call in production builds.** Most integrators ship the * SDK to end users in the browser; surprise registry pings on user page * loads are unacceptable. The check only fires when * `NODE_ENV !== 'production'` (i.e. local dev / CI environments). * - **Opt-out is supported in two places.** `AUGUST_SDK_DISABLE_VERSION_CHECK` * env var (set in CI to silence noise) or `versionCheck: { enabled: false }` * on the SDK constructor (programmatic opt-out, e.g. in your own libs * that wrap the SDK). * - **Fire-and-forget; never blocks construction.** The SDK constructor * must return synchronously. We schedule the check on the microtask * queue, abort after 5s, and swallow every error. * - **Once per session.** A module-level guard prevents repeated registry * hits when callers spin up multiple `AugustSDK` instances. * - **No new dependency.** Semver comparison is a tiny hand-rolled helper * rather than pulling in the `semver` package. */ /** * Compare two numeric-dotted version strings. Returns: * - positive integer if `a > b` * - negative integer if `a < b` * - 0 if equal * * Pre-release suffixes (`-beta`, `-rc.1`) are stripped before comparison — * we always treat any pre-release as equal to its base version. That keeps * the comparison logic small and avoids false positives where an integrator * on `4.27.4-beta.0` would otherwise be told to upgrade to the stable * `4.27.3` they pre-released past. */ export declare function compareSemver(a: string, b: string): number; /** * Type that represents either an ethers signer or a viem wallet client */ export declare type CompatibleSigner = Signer | Wallet | any; /** * Compute a value-free structural signature for a list of arguments — used * as the `sdk.argShape` Sentry tag so dashboards can count which overload of * a method partners call without ingesting wallet addresses or other PII. * * Tokens: primitives keep their `typeof` name; 0x-prefixed strings narrow to * `'address'` / `'tx-hash'` / `'hex'`; arrays render as `'array()'`; * objects render as `'options{}'`, capped at 12 keys. * * @param args - The `arguments` array of an instrumented method. * @returns Shape tokens, one per arg, in argument order. * * @example * computeArgShape(['0xabc…ef', { vault: '0x…', chainId: 1 }]) * // → ['address', 'options{chainId,vault}'] */ export declare function computeArgShape(args: unknown[]): string[]; /** * Apply constructor config. Called unconditionally by `AugustBase` so an * instance that omits `curatorAlerts` RESETS to the defaults rather than * inheriting a prior instance's settings — same contract as * `setPublicApiBaseUrl` and `setAttribution`. * * Also the supported opt-out for code that calls the `Stellar` namespace * functions directly without constructing an `AugustSDK` (the testnet flow in * the docs), and the only one that works in a browser, where the env var is * unreadable. * * @param config - `monitoring.curatorAlerts`, or `null` to restore defaults. * @param context - Facts about the reporting instance; omitted entirely by a * caller that only wants to disable reporting. */ export declare function configureCuratorAlerts(config: ICuratorAlertsConfig | null, context?: ICuratorAlertsContext): void; /** * Query the vault's `convert_to_shares` to preview how many shares a deposit * amount would yield. Returns the raw share amount as a string, or null on * failure. * * @param vaultAddress Stellar contract ID (C… address) * @param rawAmount Deposit amount in the deposit token's smallest unit * @param network 'mainnet' | 'testnet' * @param sorobanRpcUrl - Optional override Soroban RPC endpoint (e.g. a keyed * Alchemy URL); becomes the primary with the SDK's public endpoints kept as * failover. Omit to use the public endpoints. */ declare const convertToShares: (vaultAddress: string, rawAmount: string, network?: IStellarNetwork, sorobanRpcUrl?: string) => Promise; /** * Drop withdrawal-request rows the vault logged more than once for a single * request. * * A redemption requested through Kelp's gain adapter makes High Growth ETH emit * `WithdrawalRequested` twice for one share transfer, and the subgraph indexes * both. In a transaction where the share ledger shows the wallet sending shares * to the vault `n` times, at most `n` request rows are kept. A transaction the * ledger shows no such transfer for keeps every row, so a missing ledger leaves * the history unchanged. * * Pure and synchronous. Hashes and addresses compare case-insensitively. * * @param params - See {@link CountWithdrawalRequestsOnceParams}. * @returns The history without the surplus request rows, in input order. * @example * ```ts * const history = countWithdrawalRequestsOnce({ history: userHistory, transfers, wallet, vault }); * ``` */ export declare function countWithdrawalRequestsOnce({ history, transfers, wallet, vault, }: CountWithdrawalRequestsOnceParams): ISubgraphUserHistoryItem[]; /** Inputs {@link countWithdrawalRequestsOnce} reads. */ export declare interface CountWithdrawalRequestsOnceParams { /** The wallet's user history (see `getSubgraphUserHistory`). */ history: ISubgraphUserHistoryItem[]; /** Every share-token transfer touching `wallet`. */ transfers: Pick[]; /** The wallet whose history is being read. */ wallet: IAddress; /** The vault contract address. */ vault: IAddress; } /** * Create ethers contract instance with address validation. * @param provider Web3 provider for contract calls * @param address Contract address (must be checksummed) * @param abi Contract ABI (must be declared with `as const`) * @returns Strongly-typed contract instance or undefined if address invalid */ export declare function createContract({ provider, address, abi, }: { address: string; provider: IContractRunner; abi: TAbi; }): TypedContract | undefined; /** * Helper to create a deadline (current time + offset in seconds) * @param offsetSeconds - Number of seconds from now (default: 20 minutes) * @returns Unix timestamp */ export declare function createDeadline(offsetSeconds?: number): number; /** * Create or reuse a cached JSON-RPC provider. * Passing `chainId` enables ethers' `staticNetwork` to skip the `eth_chainId` * round-trip on first use. * * @param rpcUrl RPC endpoint URL — must be a non-empty string. * @param chainId Optional chain ID — enables staticNetwork * @throws Error with a clear, remediable message when `rpcUrl` is missing or * empty. Without this guard, ethers v6 silently defaults to * `http://localhost:8545` and surfaces a cryptic * `network is not available yet (NETWORK_ERROR)` on the first RPC call. */ export declare const createProvider: (rpcUrl: string, chainId?: number) => JsonRpcProvider; /** * Create a composite user identity for analytics. * * @param apiKey - Optional API key (will be hashed, never stored raw) * @param walletAddress - Optional wallet address * @param environment - Current environment (DEV or PROD) * @returns User identity object */ export declare function createUserIdentity(apiKey?: string, walletAddress?: string, environment?: IEnv): IUserIdentity; /** Default validity window for a cross-chain quote (30s). */ export declare const CROSS_CHAIN_QUOTE_TTL_MS = 30000; /** * August's LayerZero OVault deployments, keyed by lowercase hub-chain vault * address. Resolve entries with {@link getCrossChainVaultConfig} rather than * indexing directly — the helper handles address-casing for you. * * @see {@link getCrossChainVaultConfig} for the typed, case-insensitive lookup. */ export declare const CROSS_CHAIN_VAULT_CONFIGS: Readonly>; /** * Error classification for cross-chain operations. */ export declare type CrossChainErrorType = 'max-deposit' | 'nonce' | 'no-peer' | 'bridge-fee' | 'insufficient-balance' | 'user-rejected' | 'gas' | 'network' | 'unknown'; /** Operation type for cross-chain vault transactions */ export declare type CrossChainOperation = 'DEPOSIT' | 'REDEEM'; /** * Execute a cross-chain deposit via LayerZero OVault. Validates the source * chain, ensures approval, estimates gas with a buffer, and waits for the * on-chain receipt. Defaults: `slippageBps` 100, `feeBufferPercent` 50, * `gasBufferPercent` 150 — all overridable on the request. * * @throws Error on unsupported chain, approval revert, gas-estimation * failure, or on-chain revert. */ export declare function crossChainVaultDeposit(props: ICrossChainDepositRequest): Promise; /** * Execute a cross-chain redemption via LayerZero OVault. User must be on the * hub chain. Defaults: `slippageBps` 100, `feeBufferPercent` 50, * `gasBufferPercent` 200 (compose calls under-estimate on mainnet), * `minGasLimit` 5_000_000n — all overridable on the request. */ export declare function crossChainVaultRedeem(props: ICrossChainRedeemRequest): Promise; /** Env equivalent of `monitoring.curatorAlerts.enabled: false`. Node only. */ export declare const CURATOR_ALERTS_DISABLE_ENV_VAR = "AUGUST_SDK_DISABLE_CURATOR_ALERTS"; /** * Datetime */ export declare function dateToUnix(date: Date): number; export declare function daysAgo(days: number): Date; /** * Decode a raw EVM revert blob into a named error with arguments. * * Pure and offline — no RPC calls, no network. Handles the three revert * shapes the EVM produces: * * 1. `Error(string)` (`0x08c379a0`) — a `require`/`revert` with a message. * 2. `Panic(uint256)` (`0x4e487b71`) — compiler-inserted checks, with the * numeric code translated to its documented meaning (overflow, division by * zero, …). * 3. Custom errors — matched against a built-in corpus of OpenZeppelin * ERC-6093 / SafeERC20 / ERC4626 / Ownable / Pausable errors, LayerZero V2 * OApp/OFT errors, and every `error` fragment in the vault ABIs the SDK * ships (tokenized vaults, SwapRouter, lending pools, …). Callers can * extend the corpus per call via `opts.extraAbis`, which take precedence. * * Truncated input degrades gracefully: when the 4-byte selector matches a * known error but the argument bytes are incomplete (e.g. an alert pipeline * clipped the hex), the result still carries `kind: 'custom'`, `name`, and * `signature`, with `args` omitted and `reason` explaining the truncation. * * @param data - The revert blob as a `0x`-prefixed hex string (the `data` * field of an ethers v6 `CALL_EXCEPTION`). Anything shorter than a 4-byte * selector, or not hex at all, yields `kind: 'unknown'`. * @param opts - Optional settings. * @param opts.extraAbis - Additional ABIs whose `error` fragments are checked * before the built-in corpus. * @returns The decoded revert. Never throws; unrecognized selectors return * `kind: 'unknown'` with the selector preserved so callers can look it up * via {@link lookupSelector}. * * @example * ```ts * const decoded = decodeRevertData('0xe450d38c…'); * // { * // kind: 'custom', * // selector: '0xe450d38c', * // name: 'ERC20InsufficientBalance', * // signature: 'ERC20InsufficientBalance(address,uint256,uint256)', * // args: ['0x9281…', 487711967n, 1261711967n], * // } * ``` */ export declare function decodeRevertData(data: string, opts?: { extraAbis?: InterfaceAbi[]; }): IDecodedRevert; export declare const DEFAULT_FETCH_OPTIONS: { readonly method: "GET"; readonly headers: { readonly Accept: "application/json"; readonly 'Content-Type': "application/json"; }; }; /** * @deprecated Was a hardcoded webhook credential baked into the published * bundle. It now resolves from {@link SLACK_WEBHOOK_ENV_VAR} and is `''` when * unset. Call {@link resolveSlackWebhookUrl} instead — this export exists only * so existing imports keep compiling, and is removed in the next major. */ declare const DEFAULT_SLACK_WEBHOOK_URL = ""; /** * Deposit a native token (ETH / AVAX / etc.) into a vault via the * `MultiAssetNativeDepositWrapper`. The wrapper forwards `msg.value` to * the vault as the deposit underlying — no allowance is required. * * `amount` is the **raw on-chain value in wei-equivalent** (18 decimals * for ETH-family natives). If you have a UI-shaped amount in ether, scale * it first. * * @param signer ethers Signer / Wallet * @param options `wrapperAddress` is the deployed wrapper contract; * `receiver` defaults to the signer's address; `amount` is the native * amount in wei; `wait` waits for the deposit receipt. * @returns Deposit transaction hash. * @throws AugustValidationError on invalid wrapper / receiver / amount. * @throws AugustSDKError when the deposit submission or on-chain call fails. * * @example * ```ts * import { parseEther } from 'ethers'; * * await augustSdk.evm.depositNative({ * wrapperAddress: nativeWrapperAddress, * amount: parseEther('0.5'), // 0.5 ETH in wei * wait: true, * }); * ``` */ export declare function depositNative(signer: Signer | Wallet, options: INativeDepositOptions): Promise; /** * Deposit native ETH (or chain-native equivalent) into a vault via the * SwapRouter. The router wraps `amount` to the chain's wrapped-native token * before depositing — only valid when the vault's reference asset equals * the wrapped-native token. * * **Wrap-only limitation**: the on-chain SwapRouter has no ETH→other-asset * swap leg, so this only ever reaches a WETH-accepting vault (see * {@link SWAP_ROUTER_WRAPPED_NATIVE}). There is no atomic native-ETH deposit * into a non-WETH-reference vault (e.g. a USDC vault) — deposit the wrapped * native token instead (already whitelisted, routes through the swap leg for * a non-reference-asset vault). Use {@link isNativeSwapRouterDepositSupported} * to check eligibility before offering this path in a UI. * * No ERC-20 approval is needed; `amount` travels as `msg.value`. * * @param signer - ethers `Signer` or `Wallet`. * @param options - {@link ISwapRouterNativeDepositOptions}. * @returns The transaction hash of the `depositNativeToken` call. * * @throws {@link AugustValidationError} for unsupported chains, invalid * addresses, zero amount, or an origin code not registered on the router (a * per-call code, or the instance code under `attribution.strictOrigin`), * before any approval; with code `ACCOUNT_NOT_FUNDED` when the account cannot * cover gas. * @throws {@link AugustSDKError} while the SwapRouter is paused (checked before * any approval), or on unrecoverable contract or RPC failure. */ export declare function depositNativeViaSwapRouter(signer: Signer | Wallet, options: ISwapRouterNativeDepositOptions): Promise; /** * Why {@link getDepositRoute} kept a deposit on the vault's native path. * `no-origin-code` is what every SDK without `attribution.originCode` gets. * `router-paused` means the SwapRouter's owner paused it: the deposit goes * straight to the vault, even under `attribution.strictOrigin`, until the * router is unpaused. */ export declare type DepositRouteReason = 'no-origin-code' | 'no-router' | 'chain-not-supported' | 'permit' | 'native-token' | 'adapter' | 'vault-not-registered' | 'asset-not-accepted' | 'router-token-not-whitelisted' | 'router-paused' | 'origin-not-registered'; /** * Deposit a vault's reference asset directly through the SwapRouter — no * swap. Useful when the caller already holds the reference asset but wants * the origin/referral fee accounting that only the SwapRouter path provides. * * @param signer - ethers `Signer` or `Wallet`. * @param options - {@link ISwapRouterDirectDepositOptions}. * @returns The transaction hash of the `deposit` call. * * @throws {@link AugustValidationError} for unsupported chains, invalid * addresses, zero amount, or an origin code not registered on the router (a * per-call code, or the instance code under `attribution.strictOrigin`), * before any approval; with code `ACCOUNT_NOT_FUNDED` when the account cannot * cover gas. * @throws {@link AugustSDKError} while the SwapRouter is paused (checked before * any approval), or on unrecoverable contract or RPC failure. */ export declare function depositViaSwapRouter(signer: Signer | Wallet, options: ISwapRouterDirectDepositOptions): Promise; /** * Extract a human- and machine-readable reason from a thrown Solana/Anchor * error. * * Anchor's {@link https://github.com/coral-xyz/anchor `ProgramError`} calls * `super()` with no argument, so its `.message` is the empty string by * construction — the real reason lives on `.msg`/`.code` (and `.toString()`). * `AnchorError` puts it on `.error.errorMessage` / `.error.errorCode.number`. * Reading `.message` directly (as this file used to) therefore rendered * `"Solana deposit failed: "` for every recognized on-chain revert — dropping * the numeric code the team needs to tell "Vault is paused" from * "Insufficient amount" from an account-constraint violation. * * When no reason can be extracted, returns an actionable, user-facing fallback * rather than an "unknown error" admission — the raw throwable is still * preserved on the wrapped error's `cause` and in telemetry for diagnosis. */ declare function describeSolanaError(e: unknown): string; /** * Get maximum block range for historical queries per chain. * Prevents RPC timeouts by limiting lookback window. * @param chain Chain ID * @returns Maximum number of blocks to query */ export declare const determineBlockCutoff: (chain: number) => 120000 | 3456000 | 150000; /** * Get block interval for paginated historical queries per chain. * Respects RPC eth_getLogs range limits. * @param chain Chain ID * @returns Block interval for pagination */ export declare const determineBlockSkipInternal: (chain: number) => 1000 | 8000 | 10000; /** * Maximum JSON-RPC calls ethers may coalesce into a single batched HTTP * request for a given endpoint. * * Providers advertise wildly different batch limits and reject the whole batch * — not the excess — when exceeded, so one oversized batch fails every call * inside it. dRPC's free tier caps batches at 3, which made every Mezo read * fail with `server response 500 … "Batch of more than 3 requests are not * allowed"` (the single highest-volume SDK error in production). * * Detection is host-based rather than chain-based because the limit is a * property of the endpoint, not the chain: the same chain served by a * self-hosted node has no such cap. * * @param rpcUrl - The RPC endpoint URL. Unparseable values fall back to the * conservative default rather than throwing. * @returns Batch size cap to pass to ethers as `batchMaxCount`. */ export declare const determineRpcBatchMaxCount: (rpcUrl: string) => number; /** * Approximate block time in seconds per chain. * Used to estimate time ranges from block counts. * @param chain - Chain ID * @returns Seconds per block */ export declare const determineSecondsPerBlock: (chain: number) => number; /** * The 16-byte ERC-8021 suffix terminator. The last 16 bytes of an attributed * transaction's calldata are always this marker; parsers read backwards from * it to recover the schema ID and builder codes. */ export declare const ERC8021_MARKER = "80218021802180218021802180218021"; export declare const ERC_20_PERMIT_HASH = "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"; declare function error(options: { title: string; error: string; poolAddress: string; chainId: number; slackWebookUrl: string; address?: string; }): void; /** * Decimal precision of the native gas token on every EVM chain this SDK * supports (ETH, Base, Arbitrum, Avalanche, Polygon, BNB, HyperEVM, Unichain, * Mezo, Monad, Plasma, Ink, Flare, Katana, Citrea, Fluent, Tempo, X Layer — * whose native OKB is also 18 decimals). * * All of them use 18-decimal native tokens, so this is a single constant rather * than a per-chain map. It exists because the native token has no ERC-20 * `decimals()` to read on-chain: when a subgraph row denominates an amount in * the native token it is flagged with a sentinel address ({@link NATIVE_ADDRESS} * or the zero address) instead of a real contract, and callers must substitute * this value rather than attempting (and failing) a `decimals()` read. * * Non-EVM natives differ (SOL is 9, XLM is 7) and are handled by their own * adapters — those chains never flow through the EVM `decimals()` path this * constant serves. */ export declare const EVM_NATIVE_DECIMALS = 18; /** * EVM Adapter for August SDK * Supports both ethers Signer/Wallet and wagmi/viem WalletClient * * @example * To access the EVM adapter instance * ``` * const sdk = new AugustSDK() * sdk.evm.vaultRedeem() * ``` */ declare class EVMAdapter { private signer?; private rawSigner?; constructor(signer?: CompatibleSigner); /** * Set a new signer (supports both ethers and viem/wagmi) * @param signer - Either an ethers Signer/Wallet or viem WalletClient */ setSigner(signer: CompatibleSigner): void; /** * Get the normalized ethers-compatible signer * Converts viem WalletClient to ethers Signer if needed */ private _getSigner; vaultApprove(options: IContractWriteOptions): Promise; /** * Approve a vault to spend a deposit token, returning a discriminated * {@link ApproveResult} so callers can tell `sent` from `sufficient` * (existing allowance covers) and `native` (no allowance applies). * Prefer this over {@link vaultApprove} for new integrations. * * @example * ```ts * const r = await augustSdk.evm.approve({ * target: vaultAddress, * wallet: walletAddress, * amount: '100', * wait: true, * }); * if (r.kind === 'sent') console.log('approve tx', r.hash); * ``` */ approve(options: IContractWriteOptions): Promise; /** * Read the ERC-20 allowance the wallet has granted the vault to spend its * underlying asset, returned as a normalized number. For the newer typed * read that returns a raw `bigint` and accepts an explicit `asset` override, * use {@link EVMAdapter.allowance}. * * Only `target` (vault address) and `wallet` are read from `options`; the * remaining {@link IContractWriteOptions} fields are ignored. * * @param options - `{ target, wallet }` (other fields ignored). * @returns Normalized allowance (`{ raw, normalized }`), or `undefined` when * `target` / `wallet` fail address validation. * * @example * ```ts * const a = await augustSdk.evm.vaultAllowance({ * target: vaultAddress, * wallet: walletAddress, * }); * console.log(a?.normalized); * ``` */ vaultAllowance(options: IContractWriteOptions): Promise; /** * Deposit into an August vault. Routes automatically: V1 single-asset vaults * deposit the underlying directly; V2 multi-asset vaults route through the * adapter for non-underlying `depositAsset`. With `attribution.originCode` * configured, eligible deposits go through the SwapRouter instead (see * {@link EVMAdapter.getDepositRoute}). If allowance is insufficient * the method submits an approve transaction first (the approve step always * waits for confirmation to close a race window, regardless of `wait`). * * @param options - {@link IContractWriteOptions}. `target` and `wallet` are * required; pass `amount`, `depositAsset` (defaults to the vault's * underlying), `chainId`, `poolName`, `wait`, and `isDepositWithPermit` * as needed. * @returns The deposit `TransactionResponse`, or `undefined` if an * approval-only path was taken and no deposit transaction was sent. * @throws AugustValidationError on invalid inputs (bad address, bad amount). * @throws AugustSDKError on RPC / contract revert during the deposit. * * @example * ```ts * const tx = await augustSdk.evm.vaultDeposit({ * target: vaultAddress, * wallet: walletAddress, * amount: '100', * wait: true, * }); * ``` */ vaultDeposit(options: IContractWriteOptions): Promise; /** * Resolve whether a deposit goes through the SwapRouter with the instance * origin code or takes the vault's native path, and the address to approve * (`route.spender`, not necessarily the vault). See {@link getDepositRoute}. * * @param options - {@link IGetDepositRouteOptions}. * @returns `{ via, spender, reason? }` — `reason` explains a native route * (`router-paused` while the SwapRouter is paused). * @throws AugustValidationError on an invalid target, or an unregistered * code under `attribution.strictOrigin` while the router is not paused. * @throws AugustSDKError when a backend, vault or router read fails. * @example * ```ts * const { via, spender } = await augustSdk.evm.getDepositRoute({ target: vault }); * ``` */ getDepositRoute(options: IGetDepositRouteOptions): Promise; /** * Submit a redemption request against a vault. Shares are escrowed and the * underlying assets are released asynchronously by the protocol; callers * collect the matured assets via {@link EVMAdapter.vaultRedeem}, or use the * instant-redeem variant by setting `isInstantRedeem: true`. * * @param options - {@link IContractWriteOptions}. `target`, `wallet`, and * `amount` (in shares) are required. Set `isInstantRedeem: true` to take * the instant-redeem path when the vault supports it. * @returns The request `TransactionResponse`, or `undefined` if the request * could not be built (validation failure). * @throws AugustValidationError on invalid inputs. * @throws AugustSDKError on RPC / contract revert. * * @example * ```ts * const tx = await augustSdk.evm.vaultRequestRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: shareAmount, * wait: true, * }); * ``` */ vaultRequestRedeem(options: IContractWriteOptions): Promise; /** * Deposit the chain's native asset (ETH / AVAX / etc.) into a vault by * routing through the `MultiAssetNativeDepositWrapper`. The wrapper handles * native-to-wrapped conversion and the subsequent vault deposit in a single * transaction. * * @param options - {@link INativeDepositOptions}: `wrapperAddress`, `amount` * (native, scaled by the chain's native decimals), optional `receiver` * (defaults to the signer), and optional `wait`. * @returns The deposit `TransactionResponse`. * @throws AugustValidationError on invalid inputs. * @throws AugustSDKError on RPC / contract revert. * * @example * ```ts * const tx = await augustSdk.evm.depositNative({ * wrapperAddress: nativeWrapperAddress, * amount: parseEther('1'), * wait: true, * }); * ``` */ depositNative(options: INativeDepositOptions): Promise; /** * Swap one or more whitelisted ERC-20s into a vault's reference asset via * the on-chain `SwapRouter` and deposit the proceeds. The router handles * fee accrual, slippage protection, and the v1/v3 vs v2 deposit-interface * branching. Approval is sent automatically for each `swaps[i].tokenIn` * when the caller's allowance against the SwapRouter is below `amountIn`. * * @param options - {@link ISwapAndDepositOptions}. * @returns The transaction hash of the `swapAndDeposit` call. * @throws AugustValidationError on invalid inputs (bad chain, empty swaps). * @throws AugustSDKError while the SwapRouter is paused (checked before any * approval), or on RPC / contract revert. * * @example * ```ts * const quote = await fetchSwapQuote({ * chainId: 1, srcToken: WBTC, srcDecimals: 8, * destToken: USDC, destDecimals: 6, amount: 100_000_000n, * receiver: SWAP_ROUTER_ADDRESSES[1]!, * }); * const hash = await augustSdk.evm.swapAndDeposit({ * chainId: 1, vault, receiver: wallet, * swaps: [{ tokenIn: WBTC, tokenOut: USDC, amountIn: 100_000_000n, * minAmountOut: quote.minAmountOut, router: quote.router, payload: quote.payload }], * }); * ``` */ swapAndDeposit(options: ISwapAndDepositOptions): Promise; /** * Deposit a vault's reference asset through the SwapRouter — no swap. * Use this when the caller already holds the reference asset but wants * the origin/referral fee accounting that the SwapRouter path provides. * * @param options - {@link ISwapRouterDirectDepositOptions}. * @returns The transaction hash of the `deposit` call. * @throws AugustSDKError while the SwapRouter is paused (checked before any * approval), or on RPC / contract revert. */ depositViaSwapRouter(options: ISwapRouterDirectDepositOptions): Promise; /** * Deposit native ETH (or chain-native equivalent) into a vault via the * SwapRouter. Only valid when the vault's reference asset is the chain's * wrapped-native token — the SwapRouter wraps `amount` and deposits. * * @param options - {@link ISwapRouterNativeDepositOptions}. * @returns The transaction hash of the `depositNativeToken` call. * @throws AugustSDKError while the SwapRouter is paused (checked before any * approval), or on RPC / contract revert. */ depositNativeViaSwapRouter(options: ISwapRouterNativeDepositOptions): Promise; /** * Deposit into a vault through the on-chain `SwapRouter`, choosing the router * path from `depositAsset` (direct deposit, native wrap, or a swap to the * reference asset). The explicit, opt-in swap entry point — * {@link vaultDeposit} never swaps — so a native-deposit vault is never * accidentally swapped. * * Reads the vault's reference asset + decimals on-chain, resolves the swap * quote and fail-closes on aggregator/whitelist drift, and sends the ERC-20 * approval to the SwapRouter when allowance is short. * * @param options - {@link ISwapRouterDepositOptions}. * @returns The transaction hash of the router deposit call. * @throws AugustValidationError on unsupported chain, invalid address, zero * amount, a native deposit into a non-wrapped-native vault, or quote drift. * @throws AugustSDKError while the SwapRouter is paused (checked before any * approval), or on RPC / contract revert. * @example * ```ts * const hash = await augustSdk.evm.swapRouterDeposit({ * chainId: 1, vault, depositAsset: USDT, amount: '100', slippageBps: 50, * }); * ``` */ swapRouterDeposit(options: ISwapRouterDepositOptions): Promise; /** * Resolves the real, post-execution outcome of a SwapRouter deposit from * its mined receipt — the actual amount that reached the vault (and shares * minted), decoded from the vault's own `Deposit` event, rather than the * pre-trade quote shown before submission. * * @param options - {@link ISwapRouterDepositResultOptions}. * @returns The decoded {@link ISwapRouterDepositResult}, or `null` if the * receipt isn't found yet or carries no matching `Deposit` log. * @example * ```ts * const hash = await augustSdk.evm.swapRouterDeposit({ ... }); * const result = await augustSdk.evm.getSwapRouterDepositResult({ txHash: hash, vault }); * ``` */ getSwapRouterDepositResult(options: ISwapRouterDepositResultOptions): Promise; /** * Claim assets from a matured redemption request on a dated-redemption * (RWA-style) vault. The `year`, `month`, `day`, and `receiverIndex` tuple * identifies which batch of the user's matured requests to redeem from — * these are emitted at request-time and indexed by the subgraph. * * For non-dated vaults that complete their redemption via `instantRedeem`, * see {@link EVMAdapter.vaultRequestRedeem} with `isInstantRedeem: true`. * * @param options - {@link IContractWriteOptions} plus `year` / `month` / * `day` / `receiverIndex` identifying the matured batch to claim. * @returns The redeem `TransactionResponse`. * @throws AugustValidationError on invalid inputs. * @throws AugustSDKError on RPC / contract revert. * * @example * ```ts * const tx = await augustSdk.evm.vaultRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: shareAmount, * year: '2026', * month: '06', * day: '02', * receiverIndex: '0', * wait: true, * }); * ``` */ vaultRedeem(options: IContractWriteOptions & { year: string; month: string; day: string; receiverIndex: string; }): Promise; /** * Claim a previously-requested queued withdrawal on an EVM-2 (Tokenized * Vault V2) vault, once its withdrawal epoch has passed. EVM-2 only — v1/v0 * vaults use {@link EVMAdapter.vaultRedeem} instead. * * @param options - {@link IClaimWithdrawalOptions}: `target` / `wallet` * plus the `year` / `month` / `day` tuple returned by * `vaultRequestRedeem`. * @returns Claim transaction hash. * @throws AugustValidationError on invalid inputs or a non-EVM-2 vault. * @throws AugustSDKError on RPC / contract revert. * * @example * ```ts * const { year, month, day } = await augustSdk.evm.vaultRequestRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: '10', * }); * await augustSdk.evm.claimWithdrawal({ * target: vaultAddress, * wallet: walletAddress, * year, * month, * day, * wait: true, * }); * ``` */ claimWithdrawal(options: IClaimWithdrawalOptions): Promise; sendersWhitelistAddress(options: { vault: IAddress; }): Promise<`0x${string}`>; isWhitelisted(options: { whitelist: IAddress; wallet: IAddress; }): Promise; getDeposited(options: { whitelist: IAddress; wallet: IAddress; vault: IAddress; }): Promise; getRemainingAllocations(options: { whitelist: IAddress; wallet: IAddress; vault: IAddress; depositCapAmount?: bigint; }): Promise; /** * Preview the share output of a deposit without broadcasting a transaction. * See {@link readPreviewDeposit} for the routing details (EVM-1 vs EVM-2 * multi-asset vaults). * * @returns Shares minted in raw on-chain units (share-token decimals). * * @example * ```ts * const shares = await augustSdk.evm.previewDeposit({ * vault: '0x...', * amount: 1_000_000n, * }); * ``` */ previewDeposit(options: IPreviewDepositOptions): Promise; /** * Preview the assets returned by redeeming a number of shares, without * broadcasting a transaction. * * @returns Assets returned in raw on-chain units (asset decimals). * * @example * ```ts * const assets = await augustSdk.evm.previewRedeem({ * vault: '0x...', * shares: 1_000_000_000_000_000_000n, * }); * ``` */ previewRedeem(options: IPreviewRedeemOptions): Promise; /** * Read the ERC-20 allowance an owner has granted the vault. Defaults to the * vault's underlying asset; pass `asset` to override. * * @returns Allowance as a raw `bigint`. * * @example * ```ts * const raw = await augustSdk.evm.allowance({ vault, owner }); * ``` */ allowance(options: IAllowanceOptions): Promise; /** * Read an ERC-20 token balance. * * @returns Balance as a raw `bigint`. * * @example * ```ts * const raw = await augustSdk.evm.balanceOf({ asset: usdcAddress, owner }); * ``` */ balanceOf(options: IBalanceOfOptions): Promise; /** * Read the maximum deposit accepted by the vault for the supplied * receiver. Useful for "vault is full" gates. * * @returns Max deposit as a raw `bigint`. * * @example * ```ts * const cap = await augustSdk.evm.maxDeposit({ vault }); * ``` */ maxDeposit(options: IMaxDepositOptions): Promise; /** * Read an EVM-2 vault's idle liquidity (`getTotalAssets() - * externalAssets()`) — the balance available to an instant redemption * without a synchronous recall from the settlement module. * * @returns Idle liquidity as a raw `bigint`. * * @example * ```ts * const idle = await augustSdk.evm.getIdleLiquidity({ vault }); * ``` */ getIdleLiquidity(options: IGetIdleLiquidityOptions): Promise; /** * Read an EVM-2 vault's queued-withdrawal lag, in seconds. * * @returns Lag duration as a raw `bigint`. * * @example * ```ts * const seconds = await augustSdk.evm.lagDuration({ vault }); * ``` */ lagDuration(options: ILagDurationOptions): Promise; /** * Read an EVM-2 vault's current withdrawal epoch by named field * (`year`/`month`/`day`/`claimableEpoch`). * * @returns {@link IWithdrawalEpoch}. * * @example * ```ts * const epoch = await augustSdk.evm.getWithdrawalEpoch({ vault }); * ``` */ getWithdrawalEpoch(options: IGetWithdrawalEpochOptions): Promise; /** * Read how much of a withdrawal-epoch date's queue a receiver can * currently claim, before calling {@link EVMAdapter.claimWithdrawal}. * * @returns Claimable amount as a raw `bigint`. * * @example * ```ts * const claimable = await augustSdk.evm.getBurnableAmountByReceiver({ * vault, receiver, year, month, day, * }); * ``` */ getBurnableAmountByReceiver(options: IGetBurnableAmountByReceiverOptions): Promise; /** * Read the total shares required to settle a withdrawal-epoch date's * entire queue. * * @returns Required shares as a raw `bigint`. * * @example * ```ts * const shares = await augustSdk.evm.getRequirementByDate({ vault, year, month, day }); * ``` */ getRequirementByDate(options: IGetRequirementByDateOptions): Promise; /** * Read the scheduled queued-withdrawal volume for a withdrawal-epoch date. * * @returns {@link IScheduledTransactionsByDate}. * * @example * ```ts * const { totalTransactions, executionEpoch } = * await augustSdk.evm.getScheduledTransactionsByDate({ vault, year, month, day }); * ``` */ getScheduledTransactionsByDate(options: IGetScheduledTransactionsByDateOptions): Promise; } /** * Generate a block-explorer URL for an address or transaction hash. * * Returns an empty string when `chain` is falsy or unknown so the return * type stays assignable to `string` — preserves the historical public * shape from before the file split out of `web3.ts`, where the SDK's * `strictNullChecks: false` masked the implicit `undefined` branch and * consumers pinned to `string` via the emitted `.d.ts`. * * @param hex Address or transaction hash * @param chain Chain ID * @param type Explorer view type (`address`, `tx`, `block`) * @returns Full explorer URL, or `''` when `chain` is falsy / unknown. */ export declare const explorerLink: (hex: IAddress, chain: IChainId, type: IExplorerType) => string; /** * Parse an ethers v6 error *string* and recover the machine-readable fields * embedded in it. * * ethers v6 serializes rich error objects into a single message of the shape * `… (action="estimateGas", data="0x…", reason=…, transaction={ "data": * "0x…", "from": "0x…", "to": "0x…" }, …, code=CALL_EXCEPTION, version=…)` — * exactly what error-alert pipelines end up carrying once the original error * object is stringified. This helper regex-extracts the revert `data`, the * `action`, the `code`, and the embedded transaction fields. * * Pure and offline. Tolerant of truncation: alert transports often cap * message length mid-hex, so every field is matched without requiring its * closing quote and the result simply omits whatever did not survive. * * @param text - The error text to parse (an ethers v6 `error.message`, or a * log/alert line that embeds one). * @returns The recovered fields; an empty object when nothing matched. Never * throws. * * @example * ```ts * const ctx = extractRevertFromErrorText(alertErrorLine); * if (ctx.revertData) console.log(decodeRevertData(ctx.revertData)); * ``` */ export declare function extractRevertFromErrorText(text: string): IExtractedRevertContext; export declare const FALLBACK_CHAINID = 42161; /** * Fallbacks */ export declare const FALLBACK_DECIMALS = 18; export declare const FALLBACK_RPC_URLS: Record; declare const fallbackDecimals = 8; declare const fallbackNetwork: ISolanaNetwork; declare const fallbackRpcEndpoints: { readonly devnet: "https://api.devnet.solana.com"; readonly mainnet: "https://api.mainnet-beta.solana.com"; readonly testnet: "https://api.testnet.solana.com"; readonly localnet: "http://127.0.0.1:8899"; }; /** * Fetch one page of the subaccount directory (admin-only backend endpoint) */ export declare const fetchAllSubaccounts: (pagination: { offset?: number; limit?: number; }, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Make unauthenticated requests to August public API endpoints. * Used for fetching vault metadata and public market data. * @param relativeUrl - Endpoint path relative to public API base URL * @param options - Request configuration including method and headers * @returns Response object if successful * @throws Error with correlation ID if request fails */ export declare function fetchAugustPublic(relativeUrl: string, options?: IFetchAugustOptions): Promise; /** * Make authenticated requests using Bearer token authentication. * Typically used for user-specific operations requiring OAuth tokens. * @param bearerToken - OAuth bearer token * @param relativeUrl - Endpoint path relative to base URL * @param options - Request configuration including method and headers * @returns Response object if successful * @throws Error with correlation ID if request fails */ export declare function fetchAugustWithBearer(bearerToken: string, relativeUrl: string, options?: IFetchAugustOptions): Promise; /** * Make requests to August backend services, sending an API key when one is * configured. Many backend routes — vault-linked sub-account reads, the two * collateral risk routes, timelock requests — answer anonymous callers, so a * missing key is not an error here: the request goes out without the * `x-api-key` header and the backend decides. Routes that do require a key * answer `401`, which surfaces as an `AugustAuthError` with code * `AUTH_UNAUTHORIZED`. * Automatically logs errors with correlation IDs for debugging. * @param apiKey - August API key, or `undefined` for an anonymous request * @param relativeUrl - Endpoint path relative to base URL * @param options - Request configuration including method and headers * @returns Response object if successful * @throws Error with correlation ID if request fails */ export declare function fetchAugustWithKey(apiKey: string | undefined, relativeUrl: string, options?: IFetchAugustOptions): Promise; /** * @deprecated Use fetchVaultDebankResponse for vault-level queries. * Fetch DeBank data for a single subaccount address. */ export declare function fetchDebankResponse(address: IAddress, headers?: IWSMonitorHeaders): Promise; /** * Function to fetch instant redemption fee * @param signer - signer / provider object * @param options - object including pool contract address, user wallet address * @returns normalized number object of the instant redemption fee */ export declare function fetchInstantRedemptionFee(signer: IContractRunner, options: IContractWriteOptions): Promise; /** * Fetch the points leaderboard data. * @param params - Optional parameters for pagination and sorting * @param options - Request options including headers * @returns Leaderboard response data */ export declare function fetchPointsLeaderboard({ params, options, }: { params?: { page?: number; perPage?: number; sortBy?: 'streakDays' | 'totalPoints'; }; options?: IVaultBaseOptions; }): Promise; /** * Fetch the subaccount CeFi positions */ export declare const fetchSubaccountCefiPositions: (address: IAddress, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch cross-chain DeBank positions for a subaccount (`GET * /subaccount/{subaccount_address}/debank`). Slow endpoint (300-second * server-side cache) — it fans out across every supported chain. */ export declare const fetchSubaccountDebank: (address: IAddress, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch subaccount health factor for a given subaccount address */ export declare const fetchSubaccountHeathFactor: (address: IAddress, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch a single loan's loan-book detail by loan address + chain * (admin-only `GET /subaccount/loans/{loan_address}`). */ export declare const fetchSubaccountLoanByAddress: (loanAddress: string, chainId: number, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch subaccount loans details */ export declare const fetchSubaccountLoans: (payload: { address: IAddress; side?: "BOTH" | "BORROWER" | "LENDER"; active?: boolean; }, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch the subaccount OTC positions */ export declare const fetchSubaccountOtcPositions: (address: IAddress, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch the subaccount summary view */ export declare const fetchSubaccountSummary: (address: IAddress, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch a subaccount's transaction history (authenticated `GET * /transactions/v2`), optionally windowed by ISO-8601 start/end datetimes. */ export declare const fetchSubaccountTransactions: (payload: { address: IAddress; startTime?: string; endTime?: string; }, augustKey: string, headers?: IFetchAugustOptions["headers"]) => Promise; /** * Fetch a swap quote and the calldata required for the on-chain SwapRouter * to execute it. * * @throws {@link AugustValidationError} on invalid input (slippage out of * range, zero amount, src===dst). * @throws {@link AugustNetworkError} on transport failure. * @throws {@link AugustServerError} on aggregator-side errors. * * @example * ```ts * const quote = await fetchSwapQuote({ * chainId: 1, * srcToken: WBTC, * srcDecimals: 8, * destToken: USDC, * destDecimals: 6, * amount: 100_000_000n, * receiver: SWAP_ROUTER_ADDRESSES[1]!, * }); * // quote.router -> Paraswap augustor * // quote.payload -> calldata * ``` */ export declare function fetchSwapQuote(request: ISwapQuoteRequest): Promise; /** * Fetch tokenized vault configurations from backend API. * Results are cached to reduce API calls. Optionally filter by specific vault address. * @param pool - Optional vault address to filter results * @param headers - Monitoring headers for request tracking * @returns Array of tokenized vault configurations */ export declare function fetchTokenizedVault(pool: VaultAddress, headers?: IWSMonitorHeaders, loadSubaccounts?: boolean, loadSnapshots?: boolean): Promise; /** * Fetch active loans for a specific vault from backend API. * Results are cached per vault and chain to reduce API calls. * @param pool - Vault address * @param chainId - Network chain ID * @param headers - Monitoring headers for request tracking * @returns Array of active loan objects */ export declare function fetchTokenizedVaultLoans(pool: VaultAddress, chainId: number, headers?: IWSMonitorHeaders): Promise; /** * Fetch tokenized vault configurations from backend API. * Results are cached to reduce API calls. Optionally filter by specific vault address. * @param pool - Optional vault address to filter results * @param headers - Monitoring headers for request tracking * @param loadSubaccounts - Optional flag to load subaccounts and EOA operators (defaults to true on API) * @returns Array of tokenized vault configurations */ export declare function fetchTokenizedVaults(pool?: IAddress, headers?: IWSMonitorHeaders, loadSubaccounts?: boolean, loadSnapshots?: boolean): Promise; /** * Fetch subaccount loans for a specific tokenized vault (lending pool). * Retrieves all active subaccount loan data from the backend. * @param pool - Vault address * @param chainId - Network chain ID * @param headers - Monitoring headers for request tracking * @returns Array of active subaccount loan objects */ export declare function fetchTokenizedVaultSubaccountLoans(pool: VaultAddress, chainId: number, headers?: IWSMonitorHeaders): Promise; /** * Fetch current USD price for a token symbol or vault LP token. * For vault LP tokens, calculates share price using totalAssets/totalSupply ratio. * Falls back to CoinGecko if primary source fails. * @param symbol - Token symbol or contract address * @param provider - Optional web3 provider for on-chain price calculations * @param coinGeckoKey - Optional CoinGecko API key for fallback pricing * @param headers - Monitoring headers for request tracking * @returns Token price in USD */ export declare function fetchTokenPrice(symbol: string, provider?: IContractRunner, coinGeckoKey?: string, headers?: IWSMonitorHeaders): Promise; /** * Fetch token price by contract address and chain ID from August price server. * @param address - Token contract address * @param chainId - Network chain ID * @param headers - Optional monitoring headers for request tracking * @returns Token price in USD, or 0 if not found */ export declare function fetchTokenPriceByAddress(address: VaultAddress, chainId: number, headers?: IWSMonitorHeaders): Promise; /** * Fetch DeBank data for all subaccounts of a vault in a single request. * @param vaultAddress The vault contract address * @param headers Optional monitoring headers * @returns Dictionary of subaccount addresses to DeBank data, or false on error */ export declare function fetchVaultDebankResponse(vaultAddress: IAddress, headers?: IWSMonitorHeaders): Promise; /** * Fetch historical timeseries data for a specific vault. * Returns TVL, APY, PnL, and share price data over time. * @param vaultAddress - Vault contract address * @param nDays - Number of days of historical data to fetch (default 30, min 1) * @param headers - Monitoring headers for request tracking * @returns Historical timeseries data with date keys */ export declare function fetchVaultHistoricalTimeseries(vaultAddress: IAddress, nDays?: number, headers?: IWSMonitorHeaders): Promise; /** * Fetch vault metadata from the upshift API. * Returns metadata including symbol, subgraph URL, and address for all vaults. * @param options Request options including headers * @returns Vault metadata object keyed by lowercase symbol */ export declare function fetchVaultMetadata(opts?: { options?: { headers?: Record; }; }): Promise; export declare const filterOutBySize: (usdAmount: number) => boolean; /** * Format a cross-chain error into a user-friendly message. * * Mirrors the `classifyCrossChainDepositError` from upshift-app but is * generic enough for any SDK consumer. */ export declare function formatCrossChainError(errMsg: string): string; /** * Format APY data from backend tokenized vault into the unified IVaultApy shape. * Shared across all chain adapters (EVM, Solana, Stellar). */ export declare function formatVaultApy(tokenizedVault: ITokenizedVault): IVault['apy']; /** * Generate a browser/environment fingerprint for cross-session tracking. * Falls back gracefully in different environments. * * @returns Base64 encoded fingerprint string or undefined if unavailable */ export declare function generateFingerprint(): string | undefined; /** * Generate an ERC2612 permit signature * @param token - The ERC20 token contract address * @param owner - The token owner's address (signer) * @param spender - The address that will be approved to spend (your pool contract) * @param value - The amount to approve * @param deadline - Unix timestamp for when the permit expires * @param signer - The ethers.js Signer (wallet) * @param provider - The ethers.js Provider * @returns The signature components (v, r, s) and deadline */ export declare function generatePermitSignature(token: string, owner: string, spender: string, value: string | bigint, deadline: number, signer: ethers.Signer, chainId: number): Promise; /** Classify an address by chain family (evm / solana / stellar / sui). */ export declare function getAddressChainType(address: string): ChainType; /** * Return the active ERC-8021 suffix for a write on the given chain, or * `undefined` when attribution is off or the chain is not attributed. * * @param chainId EVM chain ID of the transaction, when the call site knows * it. When a `chains` restriction is configured, gating is fail-closed: an * omitted chain ID yields no suffix, since a suffix on an unattributed * chain buys nothing and breaks hardware-wallet clear-signing (see * {@link IAttributionConfig.chains}). * @returns `0x`-prefixed hex suffix, or `undefined` when nothing should be * appended. */ export declare function getAttributionSuffix(chainId?: number): string | undefined; /** * Get all chain IDs that a vault supports (hub + all spokes). */ export declare function getAvailableChains(config: ICrossChainVaultConfig): number[]; /** * Read how much of a withdrawal-epoch date's queue a given receiver can * currently claim via `claim`, before sending the claim transaction. * * EVM-2 only. * * @returns The claimable amount, in share-token raw units. * @throws AugustValidationError on invalid address input or a non-EVM-2 vault. * @throws AugustSDKError when the underlying contract read fails. * * @worstCaseRpcCalls 2 — vault-version lookup, `getBurnableAmountByReceiver`. * * @example * ```ts * const claimable = await augustSdk.evm.getBurnableAmountByReceiver({ * vault: vaultAddress, * receiver: walletAddress, * year, month, day, * }); * ``` */ export declare function getBurnableAmountByReceiver(signer: IContractRunner, options: IGetBurnableAmountByReceiverOptions): Promise; /** * Cache statistics snapshot. The SDK never recorded cache hits, misses, or * sets, so every field is always `0`. * * @deprecated Always returns zeros. Kept only for API compatibility and will * be removed in the next major release; there is no replacement. */ export declare function getCacheStats(): typeof cacheStats; /** * Retrieve chain ID from web3 provider. * Handles both initialized and uninitialized provider states. * @param provider Web3 provider instance * @returns Numeric chain ID */ export declare const getChainId: (provider: IContractRunner) => Promise; /** * Resolve the full cross-chain config for a vault. Address comparison is * case-insensitive. * * @param vault - Hub-chain vault contract address. * @returns The {@link ICrossChainVaultConfig} to pass to * `crossChainVaultDeposit` / `quoteCrossChainDeposit`, or `undefined` when * the vault is not a registered OVault deployment. * @example * ```ts * const config = getCrossChainVaultConfig('0xE9B725010A9E419412ed67d0fA5f3A5f40159D32'); * if (config) await quoteCrossChainDeposit({ config, ...rest }); * ``` */ export declare function getCrossChainVaultConfig(vault: IAddress): ICrossChainVaultConfig | undefined; /** * Fetch token decimals from contract or Solana mint. * Results are cached to minimize RPC calls. * * **Never throws** — a failed read resolves `undefined`. Callers that must not * silently proceed on an unknown scale (any path that encodes an amount) should * use {@link getDecimalsOrThrow} instead: feeding `undefined` into * `toNormalizedBn` silently defaults to 18 decimals. * * Transient transport faults (provider rate limits, socket resets, an empty * response to `decimals()`) are logged at `warn` — a breadcrumb, not a * standalone Sentry issue — since the caller sees the same `undefined` either * way. Everything else is logged at `error`. The read itself is **not** * retried here; that is opt-in via {@link getDecimalsOrThrow}. * * @param provider Web3 provider * @param address Token contract address or Solana mint * @param isVault Resolve `address` as a vault (evm-2 vaults redirect to the * receipt token) rather than reading it as a plain ERC-20. Defaults to `true`. * @returns Number of decimals for the token, or `undefined` when the read failed. */ export declare const getDecimals: (provider: IContractRunner, address: IAddress, isVault?: boolean) => Promise; /** * Read a token's `decimals()` with the **same cache and stampede protection as * {@link getDecimals}**, but surfacing failures instead of swallowing them, and * retrying the transient ones. * * Two reasons this exists rather than a flag on `getDecimals`: * * 1. **`getDecimals` must keep returning `undefined` on failure** — a dozen * read paths depend on that. Amount-encoding paths need the opposite: an * `undefined` reaching `toNormalizedBn` silently means 18 decimals, which * misencodes the transaction. Here the original error propagates, so the * caller's `AugustSDKError` keeps its cause and its Sentry grouping. * 2. **Retry.** Providers intermittently return an empty response to * `decimals()`, which ethers reports as * `missing revert data (action="call", data="0x313ce567", …)` — a shape a * deployed ERC-20 cannot legitimately produce, since `decimals()` takes no * arguments. That is retried here via {@link isEmptyViewResponse} scoped to * this exact selector, alongside ordinary transport faults * ({@link isRetryableRpcError}). The empty-view widening applies **only** * here; everywhere else the strict transport definition stands. A genuine * revert (`CALL_EXCEPTION` carrying revert data) is never retried. * * Cache is shared with `getDecimals`, so a read-then-write flow against the * same token costs one `decimals()` RPC in total, and N concurrent callers for * an uncached token collapse to one. * * **Exception — an unresolvable chain scope bypasses the cache entirely.** When * {@link resolveProviderScope} cannot determine the chain (a runner with no * resolved network and no connection URL, e.g. a browser provider before its * first request), the only available key is the shared `unknown` bucket. Read * paths happily use that bucket, and this function deliberately does not: the * two paths have different blast radii. A wrong cached `decimals` on a read * renders a wrong number on screen; on a write it misencodes an amount the user * then *signs*. The collision needed — the same address being a different token * with different decimals on two chains, within one process, across a * mid-session chain switch — is narrow, but "no worse than the read path" is * not the bar for a value that ends up in a transaction. In that case the read * is neither served from nor written to the cache, and it also skips the * in-flight dedup map, since joining another caller under an untrusted key * would reintroduce exactly the collision being avoided. Retries still apply; * the only thing forgone is the RPC saving. * * RPC cost: 1 on a cache miss, 0 on a hit, up to 3 on a miss that keeps * faulting (~750ms of added latency in the worst case before it gives up). * Always ≥1 when the chain scope is unresolvable. * * @param runner - Provider or signer to read through. A signer is unwrapped to * its provider for cache scoping, so it shares entries with reads on the * same chain. * @param address - Token address. Read directly as an ERC-20 — pass the * receipt-token address yourself for an `evm-2` vault's share scale. * @param tag - Low-cardinality label for retry breadcrumbs (e.g. * `'vaultDeposit:poolDecimals'`). * @returns The token's decimals. * @throws The underlying read error once retries are exhausted, or immediately * when the failure is neither a transport fault nor an empty view response. * * @example * ```ts * // Amount encoding must not proceed on a guessed scale. * const decimals = await getDecimalsOrThrow(signer, token, 'deposit:decimals'); * const amount = toNormalizedBn(userInput, decimals); * ``` */ export declare const getDecimalsOrThrow: (runner: IContractRunner, address: IAddress, tag: string) => Promise; /** * Previously fabricated a Goldsky subgraph URL from the chain name and vault * symbol. That guess is unreliable and produced dead endpoints: * - The path segment `/v1/subgraphs/name/goldsky/` is legacy hosted-service * syntax, not Goldsky's current scheme (cf. {@link SUBGRAPH_VAULT_URLS}). * - The chain name isn't the subgraph slug — ethers reports Citrea's network as * `unknown`, and mainnet as `mainnet` where the subgraph uses `eth`. * - A vault's symbol isn't its subgraph name — e.g. on-chain `EctUSD` vs the * deployed `earn-ctusd`. * * A fabricated URL 404s silently, so a missing subgraph reads as "no data" * rather than an error (this masked the Citrea Earn ctUSD outage). Subgraph URLs * must now come from backend vault metadata (`fetchVaultMetadata → subgraph`). * This returns `undefined` so callers hit their existing "Missing Subgraph" * branch (warn + Slack alert) instead of querying a dead endpoint. * * @param _network - Unused. Kept for call-site compatibility. * @param _symbol - Unused. Kept for call-site compatibility. * @returns `undefined` — the SDK no longer guesses subgraph URLs. * @deprecated Resolve subgraph URLs from `fetchVaultMetadata`; do not rely on a * generated fallback. */ export declare const getDefaultSubgraphUrl: (_network: string, _symbol: string) => string | undefined; /** * Program ids for `network`, or `undefined` when the canonical program has no * deployment there (currently `testnet`). Callers must handle `undefined` — * silently substituting a default would hand back a dead address. */ declare function getDeployedProgramIds(network: ISolanaNetwork): ISolanaProgramIds | undefined; /** * Fetches the total amount deposited by an address on a whitelist contract * @param signer - signer / provider object * @param options - object including whitelist contract address, wallet address, and vault address * @returns normalized number of the deposited amount */ export declare function getDeposited(signer: IContractRunner, options: { whitelist: IAddress; wallet: IAddress; vault: IAddress; }): Promise; /** * Resolve whether a deposit can go through the SwapRouter carrying the * instance origin code (`router`) or takes the vault's native path * (`native`), and which address to approve. Read-only. `vaultDeposit` and * `approve` follow this route, so integrators that manage approvals * themselves must approve `route.spender`, not the vault. * * The route is `router` only when an origin code is configured, the chain is * Ethereum mainnet ({@link ORIGIN_ATTRIBUTION_CHAINS}) and has a SwapRouter, * the vault is registered on it, the vault accepts the asset directly (its * reference asset, or a Tokenized Vault V2 whitelisted asset — deposited * as-is, never swapped), the router whitelists the asset, the router is not * paused, the deposit is not a permit, native-token or adapter deposit, and * the code is registered. Otherwise it is `native` with a `reason`. A paused * router gives `router-paused` even under `attribution.strictOrigin`. * * @param signer - ethers `Signer` / `Wallet` used for the reads. * @param options - {@link IGetDepositRouteOptions}; `depositAsset` defaults * to the vault's underlying. * @returns {@link IDepositRoute}. * @throws AugustValidationError on an invalid `target`, or an unregistered * code under `attribution.strictOrigin` while the router is not paused. * @throws AugustSDKError when a backend, vault or router read fails. * @worstCaseRpcCalls 8 — the backend vault row, `asset()`, the router's * `vaultInfo`, the vault's `assetsWhitelistAddress()` and * `getWhitelistedAssets()` (Tokenized Vault V2 non-reference asset only), * the router's `whitelistedTokens(asset)`, `isPaused()` and `origins`. The * router reads and `getWhitelistedAssets()` are cached for 5 minutes, except * `isPaused()` (15 seconds). No router read without a code or off Ethereum * mainnet. * @example * ```ts * const route = await augustSdk.evm.getDepositRoute({ target: vault, depositAsset: usdt }); * if (route.spender) await approveToken(usdt, route.spender, amount); * ``` */ export declare function getDepositRoute(signer: Signer | Wallet, options: IGetDepositRouteOptions): Promise; /** * Get the Stellar explorer URL for a given address or transaction. */ declare function getExplorerLink({ id, type, network, }: { id: string; type?: 'contract' | 'account' | 'tx'; network?: IStellarNetwork; }): string; /** * Get fallback RPC URLs for a specific chain */ export declare function getFallbackRpcUrls(chainId: number): string[]; /** * Aggregate borrower-health-factor data, optionally scoped to a single vault. * * - When `vault` is provided, only that vault's tokenized record is fetched * and only its loans are read. This is the path callers should use when * they already know which vault they care about — it skips the cross-chain * fanout entirely. * - When `vault` is omitted, the function fetches every tokenized vault and * builds health factors for each, preserving the legacy behavior. Per-vault * failures are isolated with `Promise.allSettled` so one bad vault returns * an empty array instead of rejecting the whole map. * * The returned map is keyed by **lowercased** vault address so callers can * look up entries without worrying about EIP-55 checksum casing in either the * backend response or the caller's input. * * @param options - Standard vault options — `rpcUrl` should match `vault`'s chain. * @param vault - Optional vault address to scope the fetch to. * @returns Map of lowercased vault address → array of borrower-health-factor rows. */ export declare function getHealthFactorOfBorrowersByVault({ options, vault, }: { options: IVaultBaseOptions; vault?: IAddress; }): Promise>; /** * Query historical contract state across a block range. * Useful for reconstructing historical data like TVL over time. * @param provider Web3 provider * @param contractAddress Target contract address * @param abi Contract ABI * @param methodName View function to call * @param args Function arguments * @param startBlock Starting block number * @param endBlock Ending block number (current block if not specified) * @param blockInterval Blocks between each query * @returns Array of results with block numbers and timestamps */ export declare function getHistoricalContractData(provider: IContractRunner, contractAddress: IAddress, abi: Interface | InterfaceAbi, methodName: string, args: (string | number | bigint | boolean)[], startBlock: number, endBlock: number, blockInterval?: number): Promise; /** * Query historical contract state at regular time intervals. * Uses binary search to find blocks closest to target timestamps. * @param provider Web3 provider * @param contractAddress Target contract address * @param abi Contract ABI * @param methodName View function to call * @param args Function arguments * @param startDate Start date (string or timestamp) * @param endDate End date (string or timestamp) * @param intervalHours Hours between each query * @returns Array of results with dates, blocks, and values */ export declare function getHistoricalContractDataByDate(provider: IContractRunner, contractAddress: IAddress, abi: Interface | InterfaceAbi, methodName: string, args: (string | number | bigint | boolean)[], startDate: string | number, endDate: string | number, intervalHours?: number): Promise; /** * Get the idle assets for the vault * @param provider - The provider * @param vaultAddress - The vault address * @param totalAssets - The total assets of the vault * @param knownVersion - Optional pre-resolved vault version. Callers that * already hold the backend row (e.g. `buildFormattedVault`) pass it so this * function doesn't re-fetch `GET /tokenized_vault/{address}` — and with the * API's default load flags at that, a heavier payload on a different cache * key than the caller's own fetch — just to dispatch on the version. * @returns The idle assets */ export declare function getIdleAssets(provider: IContractRunner, vaultAddress: IAddress, underlying: IAddress, totalAssets: INormalizedNumber, knownVersion?: IVaultVersion): Promise; /** * Read an EVM-2 vault's idle (uncommitted) liquidity — the balance available * to satisfy an instant redemption without a synchronous recall from the * settlement module, computed as `getTotalAssets() - externalAssets()`. * * EVM-2 only. Two on-chain reads with no caching — call it immediately * before sizing an instant redemption rather than reusing a stale value, and * size the redemption against the result rather than against total assets. * * @returns Idle liquidity, in the vault's reference-asset raw units. * @throws AugustValidationError on invalid vault address or a non-EVM-2 vault. * @throws AugustSDKError when either underlying contract read fails. * * @worstCaseRpcCalls 3 — vault-version lookup, `getTotalAssets`, `externalAssets`. * * @example * ```ts * const idle = await augustSdk.evm.getIdleLiquidity({ vault: vaultAddress }); * if (redeemAmount > idle) { * // fall back to a queued withdrawal instead of an instant one * } * ``` */ export declare function getIdleLiquidity(signer: IContractRunner, options: IGetIdleLiquidityOptions): Promise; /** * Create or reuse a cached Infura provider for the specified chain. * @param infura Configuration with chain ID and API key */ export declare const getInfuraProvider: (infura: IInfuraOptions) => JsonRpcProvider; /** * Get the LayerZero Scan URL for tracking a cross-chain message. */ export declare function getLayerZeroScanUrl(txHash: string, testnet?: boolean): string; /** * Fetch dynamic fee rate from on-chain oracle contract. * Used for calculating loan interest repayment fees. * @param provider Web3 provider * @param category_id Fee category identifier * @param address Context address for fee calculation * @param chainId Optional chain ID (auto-detected if not provided) * @returns Fee rate as decimal number */ export declare function getLoanOracleFeeRate(provider: IContractRunner, category_id: ILoanOracleFeeCategories, address: IAddress, chainId?: number): Promise; declare function getLogger(): SDKLogger | null; /** * Fetch management fee percentage from vault contract. * Performs static call first to check if method exists. * @todo fix so that when lending pool does not have "managementFeePercent", to not break everything * @param provider Web3 provider * @param address Vault contract address * @returns Management fee as percentage or undefined if not supported */ export declare const getManagementFeePercent: (provider: IContractRunner, address: IAddress) => Promise; /** * Look up the category for a method name, defaulting to `'unknown'` for * methods not yet added to {@link METHOD_CATEGORIES}. */ export declare function getMethodCategory(methodName: string): MethodCategory; /** * The SwapRouter origin code configured on the SDK instance via * {@link IAttributionConfig.originCode}. * * @returns The `bytes32` code, or `null` when none is configured. */ export declare function getOriginCode(): `0x${string}` | null; /** * Read how an origin code is registered on a chain's `SwapRouter`: whether it * exists, its origin fee, and its fee collector. * * Check a partner code with this before configuring it as * `attribution.originCode` — the router reverts every deposit carrying an * unregistered code with `InvalidOrigin`. A code is registered when its * collector is non-zero (`addOrigin` always sets one); a zero-fee code is * still registered but never emits `OriginFeeApplied`. Cached per (chain, * router, code) for 5 minutes. * * @param options - {@link IGetOriginInfoOptions}. * @returns {@link IOriginInfo}; `registered: false` with a zero fee and * collector, and no RPC, on a chain with no SwapRouter deployment. * @throws {@link AugustValidationError} when `originCode` is not a 32-byte hex * string. * @throws {@link AugustSDKError} when the `origins(bytes32)` read fails. * @worstCaseRpcCalls 1 — one `origins(bytes32)` call; none on a cache hit. * @example * ```ts * const info = await getOriginInfo({ chainId: 1, originCode, rpcUrl }); * if (!info.registered) throw new Error('origin code is not registered'); * ``` */ export declare function getOriginInfo({ chainId, originCode, rpcUrl, }: IGetOriginInfoOptions): Promise; /** * Get the hub and spoke chain IDs a vault is deployed across — the set of * chains a user can deposit from. * * @param vault - Vault contract address. * @returns `{ hub, spokes }` chain IDs, or `undefined` when the vault is not a * registered OVault deployment. */ export declare function getOVaultChains(vault: IAddress): { hub: number; spokes: number[]; } | undefined; /** * Preview the amount of assets that would be received for redeeming shares (queued redemption). * @param vault - Vault contract address * @param sharesAmount - Amount of shares to redeem (human-readable, raw bigint, or string) * @param options - RPC configuration * @returns The amount of assets as an INormalizedNumber with `normalized` and `raw` fields */ export declare function getPreviewRedemption({ vault, sharesAmount, options, }: { vault: IAddress; sharesAmount: string | bigint | number; options: IVaultBaseOptions; }): Promise; /** * Read the active base for the `public` server — the SDK-level override if set, * otherwise the compiled-in `WEBSERVER_URL.public`. */ export declare function getPublicApiBaseUrl(): string; /** * Fetch receipt token address from tokenized vault contract. * Results are cached to minimize RPC calls. * * **Never throws** — a failed read logs at error level and resolves * `undefined`, which several read paths depend on. The underlying * `lpTokenAddress()` call is made through * {@link getReceiptTokenAddressOrThrow}, so a transient provider blip is * absorbed by a bounded retry before that happens; a deterministic failure (a * vault that has no `lpTokenAddress()` because it is not `evm-2`) still resolves * `undefined` after the attempts are spent, exactly as before. Callers on a * money path must use {@link getReceiptTokenAddressOrThrow} directly instead — * an `undefined` receipt-token address there would silently mis-address a * `decimals()` read. * * @param provider Web3 provider * @param address Tokenized vault contract address * @returns Receipt token address, or `undefined` when the read failed. */ export declare const getReceiptTokenAddress: (provider: IContractRunner, address: IAddress) => Promise<`0x${string}`>; /** * Read an `evm-2` vault's receipt (LP) token address via `lpTokenAddress()`, * retrying only the transient transport faults and surfacing everything else * unchanged. * * Why this exists: `lpTokenAddress()` sits immediately before the receipt-token * `decimals()` read on every `evm-2` write path (approve / deposit / request * redeem / swap-router deposit). Those `decimals()` reads were hardened against * provider blips ({@link getDecimalsOrThrow}); the `lpTokenAddress()` read one * line above them was not, so a single truncated `eth_call` response still * failed the whole write with * `missing revert data (action="call", data="0xf5ae497a", …)` — observed in * production against a mainnet vault whose `lpTokenAddress()` demonstrably * returns a real address when the provider is healthy. * * **This must never hide a misrouted vault, and does not.** `lpTokenAddress()` * exists *only* on `evm-2` vaults. A vault wrongly classified as `evm-2` returns * empty returndata for it, deterministically and forever, and that empty * response is byte-identical to the transient one — it is the *only* signal the * SDK gets that its version routing was wrong. So the retry here is deliberately * shaped to preserve that signal: * * - it is **bounded** (3 attempts, ~750ms of backoff in total — see * `retryOnTransientRpc`), never open-ended; * - on exhaustion it **rethrows the original error object**, with its identity, * message, `code` and `transaction.data` intact, so the caller's * `AugustSDKError` cause and Sentry grouping are exactly what they are today; * - it has **no fallback**: it never substitutes another address, never resolves * the vault address itself, and never resolves `null`/`undefined`. It either * returns a real receipt-token address or throws. * * Net effect: a blip costs a retry, a misroute costs three `eth_call`s and then * fails exactly as loudly as before. * * **Deliberately not cached.** Unlike `decimals()`, the vault→receipt-token * mapping is not memoized here. Caching it would make a misroute's first * (failed) probe and every subsequent one diverge, and would put a * vault-identity mapping in the cache on the money path. The lenient, cached * reader is {@link getReceiptTokenAddress} — use that on read paths that can * tolerate `undefined`. * * RPC cost: exactly 1 `eth_call` on success; at most 3 when the provider keeps * faulting. * * @param runner - Provider or signer to read through. * @param vault - Address of the `evm-2` tokenized vault. * @param tag - Low-cardinality label for retry breadcrumbs (e.g. * `'vaultRequestRedeem:receiptToken'`). * @returns The vault's receipt (LP) token address. Never `null`/`undefined`. * @throws The underlying read error, unmodified, once the bounded retries are * exhausted — or immediately when the failure is neither a transport fault nor * an empty response to this exact selector (e.g. a genuine revert carrying * revert data). * * @example * ```ts * const receiptToken = await getReceiptTokenAddressOrThrow( * signer, * vault, * 'vaultRequestRedeem:receiptToken', * ); * const decimals = await getDecimalsOrThrow(signer, receiptToken, 'tag'); * ``` */ export declare const getReceiptTokenAddressOrThrow: (runner: IContractRunner, vault: IAddress, tag: string) => Promise; /** * Fetches the remaining allocation for an address on a whitelist contract * @param signer - signer / provider object * @param options - object including whitelist contract address, wallet address, vault address, and optional deposit cap amount * @returns the remaining allocation as normalized number */ export declare function getRemainingAllocations(signer: IContractRunner, options: { whitelist: IAddress; wallet: IAddress; vault: IAddress; depositCapAmount?: bigint; }): Promise; /** * Read the total shares required to settle a withdrawal-epoch date's entire * queue. * * EVM-2 only. * * @returns Required shares, in share-token raw units. * @throws AugustValidationError on invalid vault address or a non-EVM-2 vault. * @throws AugustSDKError when the underlying contract read fails. * * @worstCaseRpcCalls 2 — vault-version lookup, `getRequirementByDate`. * * @example * ```ts * const shares = await augustSdk.evm.getRequirementByDate({ * vault: vaultAddress, * year, month, day, * }); * ``` */ export declare function getRequirementByDate(signer: IContractRunner, options: IGetRequirementByDateOptions): Promise; /** * Calculates the reward multiplier based on the vault and optional timestamp. * Returns the applicable multiplier for a given vault at a specific timestamp, * or the latest multiplier if no timestamp is provided. * @param foundPool The vault to get the multiplier for * @param timestamp Optional timestamp to get historical multiplier * @returns The reward multiplier value */ export declare const getRewardMultiplierByTimestamp: (foundPool: IVault, timestamp?: number) => number; export declare function getRewardsStakingPositions({ rpcUrl, wallet, coinGeckoKey, }: { wallet?: IAddress; rpcUrl: string; coinGeckoKey?: string; }): Promise; export declare const getSafeCache: (key: string) => Promise; /** * Read the scheduled queued-withdrawal volume for a withdrawal-epoch date. * * EVM-2 only. * * @returns Total scheduled transactions and their execution epoch. * @throws AugustValidationError on invalid vault address or a non-EVM-2 vault. * @throws AugustSDKError when the underlying contract read fails. * * @worstCaseRpcCalls 2 — vault-version lookup, `getScheduledTransactionsByDate`. * * @example * ```ts * const { totalTransactions, executionEpoch } = * await augustSdk.evm.getScheduledTransactionsByDate({ * vault: vaultAddress, * year, month, day, * }); * ``` */ export declare function getScheduledTransactionsByDate(signer: IContractRunner, options: IGetScheduledTransactionsByDateOptions): Promise; /** * Read the active default request timeout — the SDK-level override if set, * otherwise the compiled-in `REQUEST_TIMEOUT_MS`. */ export declare function getSdkRequestTimeout(): number; /** * Get the current Sentry instance for advanced usage. * Returns null if analytics is disabled. */ export declare function getSentry(): typeof Sentry | null; /** * Returns the detected runtime label (`'browser'` | `'node'` | `'unknown'`). * Used to set the `sdk.runtime` Sentry tag. */ export declare function getSentryRuntime(): 'browser' | 'node' | 'unknown'; /** * Returns the resolved Sentry SDK for the current runtime, or `null` if no * SDK can be loaded. Idempotent and cached. */ export declare function getSentrySDK(): typeof Sentry | null; /** * Generate a session ID that persists for the SDK instance lifetime. * Provides user continuity even when wallet is not connected. * * @returns UUID v4 session identifier */ export declare function getSessionId(): string; /** * Fetch Solana vault data from on-chain program state. * Falls back to backend-only data when Solana RPC is unavailable, * ensuring vaults always appear in the list even without on-chain access. * * When the vault has a withdrawal queue, `withdrawalQueue` carries its live * summary, at the cost of one extra `getMultipleAccountsInfo` (the queue and a * fresh read of the vault state, for `enabled`). A failed queue read is * logged and leaves the field out rather than failing the vault. * @param tokenizedVault Vault metadata from backend * @param options RPC configuration with Solana service * @returns Formatted vault object with Solana-specific fields */ declare const getSolanaVault: (tokenizedVault: ITokenizedVault, options: IVaultBaseOptions) => Promise; /** * Get user position for a Stellar vault. * Queries the vault contract's balance(address) and decimals() functions via Soroban RPC. * * Returns `{ shares, decimals, decimalsFromFallback }` on success (shares may be * '0' for zero balance), or null when the balance query fails. The two reads are * independent: a `decimals()` failure does NOT null the result — instead * `decimals` falls back to STELLAR_FALLBACK_DECIMALS (7) and * `decimalsFromFallback` is set to `true` so callers can tell a fabricated 7 * apart from a genuine 7-decimal vault. * * Why this matters: an ERC4626 offset vault has share decimals = asset + offset * (e.g. 13). A consumer that sizes a redeem trusting a silent fallback 7 would * under-redeem by `10^offset`. Callers that settle a redeem from this position * MUST refuse (surface an error) when `decimalsFromFallback` is `true` rather * than trusting `decimals`. * * @param vaultAddress - Stellar vault contract ID (C… address) * @param walletAddress - User's Stellar account (G… address); validated upfront * @param network - 'mainnet' | 'testnet' (defaults to 'mainnet') * @param sorobanRpcUrl - Optional override Soroban RPC endpoint (e.g. a keyed * Alchemy URL); becomes the primary with the SDK's public endpoints kept as * failover. Omit to use the public endpoints. * @returns The position, or `null` if the balance read failed or was unparseable. * @throws AugustValidationError on an invalid `walletAddress`. * @example * ```ts * const pos = await getStellarUserPosition(vault, wallet, 'mainnet'); * if (!pos || pos.decimalsFromFallback) { * // Refuse to size a redeem — share scale is not authoritatively known. * throw new Error('Stellar share decimals unresolved'); * } * const human = Number(pos.shares) / 10 ** pos.decimals; * ``` */ declare const getStellarUserPosition: (vaultAddress: string, walletAddress: string, network?: IStellarNetwork, sorobanRpcUrl?: string) => Promise; /** * Build a unified IVault from backend + on-chain data for Stellar vaults. * Reads total assets and total supply from the Soroban contract via RPC. * Falls back to backend `latest_reported_tvl` for total assets, or zero * for total supply, when on-chain queries fail. */ declare const getStellarVault: (tokenizedVault: ITokenizedVault, options: IVaultBaseOptions) => Promise; declare function getStructuredLogger(): ILogger | null; /** * Resolve the `SwapRouter` address for a chain. * * @param chainId - EVM chain ID. * @returns The router address, or `undefined` if no SwapRouter is deployed. * @example * ```ts * const router = getSwapRouterAddress(1); * // '0xAC771209FF2b71EECfF6E85a9AD01db8Ff2618B0' * ``` */ export declare function getSwapRouterAddress(chainId: number): IAddress | undefined; /** * Resolves the real, post-execution outcome of a SwapRouter deposit from its * mined transaction receipt. The SwapRouter contract itself emits no * deposit/amount-out event — only the vault does, via its own `Deposit` event * — so this decodes that log directly rather than trusting the pre-trade quote * a UI shows before the user submits (the true post-swap amount depends on * execution-time price and can differ from that estimate). * * Works for both vault generations without the caller resolving the version * first: evm-1 (ERC-4626-style `Deposit(sender, owner, assets, shares)`) and * evm-2 (`Deposit(assetIn, amountIn, shares, senderAddr, receiverAddr)`) have * different event signatures (different topic0), so both are registered and * whichever matches the vault's actual log is decoded. * * @param signer - ethers `Signer` or `Wallet` connected to a provider (used * read-only here — no transaction is sent). * @param options - {@link ISwapRouterDepositResultOptions}. * @returns The decoded {@link ISwapRouterDepositResult}, or `null` if the * receipt isn't found yet or carries no `Deposit` log from `vault` (e.g. the * hash is wrong, or the tx hasn't mined). * @throws {@link AugustValidationError} if `signer` has no connected provider. * @worstCaseRpcCalls 1 — a single `getTransactionReceipt` call; decoding is * local. * @example * ```ts * const hash = await augustSdk.evm.swapRouterDeposit({ ... }); * const result = await augustSdk.evm.getSwapRouterDepositResult({ * txHash: hash, * vault: '0x74ad2f789ed583dbd141bbdafc673fe1f033718b', * }); * // result?.amountOut — actual reference-asset amount received after the swap * ``` */ export declare function getSwapRouterDepositResult(signer: Signer | Wallet, { txHash, vault }: ISwapRouterDepositResultOptions): Promise; /** * Resolve the vaults currently eligible for the any-token `SwapRouter` deposit * surface on a chain — i.e. every vault the router has `enableVault`-ed that is * still registered on-chain. * * The router stores registrations as `mapping(address => VaultInfo) vaultInfo` * with **no on-chain enumeration**, so (exactly like * {@link getSwapRouterWhitelistedTokens}) this runs in two stages: * 1. Scan the router's `VaultEnabled(address)` event history (from the chain's * {@link SWAP_ROUTER_DEPLOY_BLOCKS} floor, in `eth_getLogs` chunks sized by * {@link determineBlockSkipInternal}) to reconstruct the candidate set of * every vault ever enabled. * 2. Re-read `vaultInfo(vault)` for each candidate — batched via Multicall3 * where verified, else per-call — and keep only those whose * `referenceAsset != address(0)` (an unregistered vault reverts with * `InvalidVault` at deposit time). This makes later disables correct * without replaying `VaultDisabled`, and is the fail-closed source of * truth: a vault surfaces only on a definite on-chain registration. * * This is the dynamic successor to the static * {@link SWAP_ROUTER_ELIGIBLE_VAULTS} snapshot / {@link isSwapRouterEligible}. * It reports **on-chain eligibility only** — app-level policy (e.g. excluding * OVault-enabled vaults that have their own deposit flow) remains the caller's * responsibility, as does the flag gating of the UI surface. * * The resolved list is cached per chain for 5 minutes — registrations change * only via an admin `enableVault`/`disableVault` transaction, so a short TTL * keeps the (multi-RPC) scan off the hot path without going stale for long. * * @param chainId - EVM chain ID. Chains without a {@link SWAP_ROUTER_ADDRESSES} * entry resolve to `[]` with no RPC. * @param options - `rpcUrl` (required) must point at `chainId`'s network; * `fromBlock` overrides the default deploy-block scan floor. * @returns Checksummed addresses of the currently-registered eligible vaults, * deduped. Empty when no router is deployed or none are registered. * @throws AugustValidationError when `rpcUrl` is missing/empty. * @throws AugustSDKError when an `eth_getLogs` chunk fails — surfaced (not * swallowed) so a partial scan never masquerades as the complete set. * @worstCaseRpcCalls On mainnet, 1 `eth_blockNumber` + ~4 `eth_getLogs` chunks * (router-lifetime ÷ 50k-block window) + 1 Multicall3 `eth_call` ≈ 6; scales * with the router's on-chain age, not with candidate count. * @example * ```ts * const vaults = await getSwapRouterEligibleVaults(1, { * rpcUrl: 'https://eth-mainnet.example/v2/KEY', * }); * // ['0x74aD…718b', '0xE9B7…9D32'] (Sentora USD, Upshift Core USDC) * ``` */ export declare function getSwapRouterEligibleVaults(chainId: number, options: { rpcUrl: string; fromBlock?: number; }): Promise; /** * Resolve the human-readable display name of the `SwapRouter` periphery * contract for a chain. * * The contract exposes no name on-chain, so this reads the SDK-maintained * {@link SWAP_ROUTER_NAMES} registry. Intended for UI surfaces that label the * contract a swap-and-deposit routes through (e.g. a "Router" row in a * transaction overview) — display metadata only, never routing logic. * * @param chainId - EVM chain ID. * @returns The display name (e.g. `'Upshift Swap Router'`), or `undefined` * when no SwapRouter is deployed on the chain — callers should omit the * label rather than show an address. * @example * ```ts * const name = getSwapRouterName(1); * // 'Upshift Swap Router' * ``` */ export declare function getSwapRouterName(chainId: number): string | undefined; /** * Resolve the ERC-20 tokens currently whitelisted for the `SwapRouter` on a * chain — the any-token set a UI can offer as swap-and-deposit inputs. * * The router exposes its allowlist only as `mapping(address => bool) * whitelistedTokens` with **no on-chain enumeration**, so this cannot be a * single view call. It runs in two stages: * 1. Scan the router's `TokenEnabled(address)` event history (from the chain's * {@link SWAP_ROUTER_DEPLOY_BLOCKS} floor, in `eth_getLogs` chunks sized by * {@link determineBlockSkipInternal}) to reconstruct the candidate set of * every token ever enabled. * 2. Re-read `whitelistedTokens(token)` for each candidate — batched via * Multicall3 where verified, else per-call — and keep only those the * mapping currently returns `true` for. This step makes later disables (and * disable-then-re-enable) correct without replaying `TokenDisabled`, and is * the fail-closed source of truth: a token surfaces only on a definite * on-chain `true`. * * The resolved list is cached per chain for 5 minutes — the allowlist changes * only via an admin `enableToken`/`disableToken` transaction, so a short TTL * keeps the (multi-RPC) scan off the hot path without going stale for long. * * @param chainId - EVM chain ID. Chains without a {@link SWAP_ROUTER_ADDRESSES} * entry resolve to `[]` with no RPC. * @param options - `rpcUrl` (required) must point at `chainId`'s network; * `fromBlock` overrides the default deploy-block scan floor (e.g. to widen a * scan on a chain missing from {@link SWAP_ROUTER_DEPLOY_BLOCKS}). * @returns Checksummed addresses of the currently-whitelisted tokens, deduped. * Empty when no router is deployed or none are enabled. Callers still filter * out a given vault's natively-accepted assets (those deposit without a swap). * @throws AugustValidationError when `rpcUrl` is missing/empty. * @throws AugustSDKError when an `eth_getLogs` chunk fails — surfaced (not * swallowed) so a partial scan never masquerades as a complete allowlist. * @worstCaseRpcCalls On mainnet, 1 `eth_blockNumber` + ~4 `eth_getLogs` chunks * (router-lifetime ÷ 50k-block window) + 1 Multicall3 `eth_call` ≈ 6; scales * with the router's on-chain age, not with candidate count. * @example * ```ts * const tokens = await getSwapRouterWhitelistedTokens(1, { * rpcUrl: 'https://eth-mainnet.example/v2/KEY', * }); * // ['0xA0b8…', '0xdAC1…', '0xC02a…', '0x2260…'] (USDC, USDT, WETH, WBTC) * ``` */ export declare function getSwapRouterWhitelistedTokens(chainId: number, options: { rpcUrl: string; fromBlock?: number; }): Promise; /** * Fetch token symbol from contract. * Results are cached to minimize RPC calls. * @param provider Web3 provider * @param address Token contract address * @returns Token symbol string */ export declare const getSymbol: (provider: IContractRunner, address: IAddress | undefined, isVault?: boolean) => Promise; /** * Batch fetch multiple token metadata fields in a single call. * Efficiently retrieves name, symbol, decimals, and totalSupply. * @param provider Web3 provider * @param asset Token contract address * @param meta Array of metadata fields to fetch * @returns Array of metadata values in same order as requested */ export declare function getTokenMetadata(provider: IContractRunner, asset: IAddress, meta: ('symbol' | 'decimals' | 'name' | 'totalSupply')[]): Promise; /** * Generate a unique user ID for Sentry from identity components. * Priority: apiKeyHash \> wallet \> domain \> fingerprint \> session * * An API key identifies the integrator and a wallet identifies the end user, * so both outrank the hosting domain — otherwise every visitor of one web app * collapses into a single Sentry user. `domain` still ranks above the * fingerprint, which nearly every runtime produces, so hostname attribution * is not lost. * * @param identity - User identity object * @returns Prefixed user ID string */ export declare function getUserId(identity: IUserIdentity): string; /** * Fetch user points from the backend API endpoint. * This replaces client-side points calculation with server-side processing. * @param userAddress - User wallet address (EVM or Solana) * @param options - Request options including headers * @returns Points data from the backend API */ export declare function getUserPoints({ userAddress, options, }: { userAddress: IAddress; options?: IVaultBaseOptions; }): Promise; /** * Vault Data Getters * * Main query functions for vault data across chains: * - getVault: Comprehensive vault details with loans/allocations * - getVaultLoans: Active loan data with on-chain enrichment * - getVaultAllocations: DeFi/CeFi/OTC allocation breakdowns * - getVaultAvailableRedemptions: Claimable redemption requests * - getVaultRedemptionHistory: Historical redemption data * - getVaultPositions: User positions across vaults * - getVaultApy: @deprecated Current and historical APY data * - getRewardsStakingPositions: Staking positions and rewards * - getVaultTvl: Current and historical TVL * - getVaultHistoricalTimeseries: Time series data for vault metrics */ /** * Fetch comprehensive vault data including on-chain state and backend metadata. * Routes to appropriate chain adapter (EVM v1/v2, Solana, or Stellar) based on vault version. * Optionally enriches with loan and allocation data. * @param vault - Vault contract address (EVM hex, Stellar C-address, or Solana program ID) * @param loans - Include active loan data. EVM vaults only — there is no * non-EVM loan book to read, so other families keep the empty default. * @param allocations - Include DeFi/CeFi allocation breakdowns. Resolved for EVM * vaults (via DeBank) and Stellar vaults (via the Untangled portfolio API). * Solana and Sui have no vault-level portfolio provider and keep the empty * default. * @param options - RPC and service configuration * @param tokenizedVault - Optional pre-fetched backend row for `vault`. When a * caller already holds the row (e.g. `getVaults` fetched the whole list one * call earlier), passing it skips this function's own * `GET /tokenized_vault/{address}` — a pure de-duplication of backend * traffic. The row must have been fetched with the same * `loadSubaccounts`/`loadSnapshots` flags the caller passes here. * @returns Complete vault object with optional enrichments */ export declare function getVault({ vault, loans, allocations, options, loadSubaccounts, loadSnapshots, tokenizedVault: prefetchedRow, }: { vault: IAddress; loans?: boolean; allocations?: boolean; options: IVaultBaseOptions; loadSubaccounts?: boolean; loadSnapshots?: boolean; tokenizedVault?: ITokenizedVault; }): Promise; /** * Get adapter configuration for a vault */ export declare function getVaultAdapterConfig(vaultAddress: IAddress): IVaultAdapterConfig | undefined; /** * Vault Allocations */ /** * Fetch comprehensive vault asset allocation breakdown. * Includes DeFi protocols (via DeBank), CeFi balances, OTC positions, and loans. * Categorizes exposures by borrowing, supplying, lending, and wallet holdings. * * DeFi exposure resolves per chain family: EVM vaults via DeBank, Solana * borrowers via Octav.fi, and Stellar vaults via the Untangled portfolio API — * one vault-level call covering the idle buffer, Stellar protocol positions, * custody wallets, and capital bridged to other chains. The Stellar path adds * exactly 1 HTTP call and zero for every other chain; when it fails, the * exposure section comes back empty and the CeFi, OTC and loan allocations are * still returned. * * @param vault - Vault address * @param options - RPC configuration * @param tokenizedVault - Optional pre-fetched backend row for `vault`. When a * caller already holds the row (e.g. `getVault` fetched it one call earlier), * passing it skips this function's own `GET /tokenized_vault/{address}` — a * pure de-duplication of backend traffic. The row must carry the subaccount * data this function reads (`.subaccounts`, `.eoa_operators`), so it must not * have been fetched with `loadSubaccounts: false`; a row fetched that way * would silently resolve zero borrowers. * @returns Detailed allocation data with exposure categorization */ export declare function getVaultAllocations(vault: IAddress, options: IVaultBaseOptions, tokenizedVault?: ITokenizedVault): Promise; /** * Fetch annualized APY metrics for a vault. * * Supported Vaults: cUSDO, tETH, wstETH, rsETH * * @deprecated The `hgETH30dLiquidAPY` and `hgETH7dLiquidAPY` response fields are deprecated. * These fields will be removed in the next major release. * Use `liquidAPY30Day` and `liquidAPY7Day` fields instead. * * @param vault - Vault contract address * @param options - Request options including headers * @returns Annualized APY data including liquidity APY */ export declare function getVaultAnnualizedApy({ vault, options, }: { vault: IAddress; options?: IVaultBaseOptions; }): Promise; /** * @deprecated use getVaultHistoricalTimeseries instead */ export declare function getVaultApy({ vault, options, historical, }: { vault: IAddress; options?: IVaultBaseOptions; historical?: IVaultHistoricalParams; }): Promise<{ value: number; timestamp: string; }[]>; export declare function getVaultAvailableRedemptions({ vault, wallet, options, prefetchedReads, }: { vault: IAddress; wallet?: IAddress; options: IVaultBaseOptions & { verbose?: boolean; }; /* Excluded from this release type: prefetchedReads */ }): Promise<{ processedWithdrawals: ISubgraphWithdrawProccessed[]; requestedWithdrawals: ISubgraphWithdrawRequest[]; availableRedemptions: IVaultAvailableRedemption[]; pendingRedemptions: IVaultAvailableRedemption[]; }>; /** * Build the per-loan borrower / health-factor list for a single vault. * * Resilience: individual loan reads (`loanState()`, `borrower()`) and the * per-borrower August backend call are isolated with `Promise.allSettled` and * try/catch so one bad loan — a test loan whose address isn't a real contract, * a borrower the backend doesn't recognize, an intermittent RPC error — drops * that single row from the result instead of rejecting the whole batch. Failed * rows are logged via `Logger.log.warn`; the loan is still returned with * `health_factor: undefined` so callers can render an explicit empty state * rather than a perpetual loading skeleton. * * @param vault - Vault address to scope the fetch to. * @param options - Standard vault options — `rpcUrl` must point at `vault`'s chain. * @returns Array of `IVaultBorrowerHealthFactor`, one entry per active loan. */ export declare function getVaultBorrowerHealthFactor({ vault, options, }: { vault: IAddress; options: IVaultBaseOptions; }): Promise; /** * Get deposit tokens for a vault (includes underlying + adapter tokens) */ export declare function getVaultDepositTokens(vaultAddress: IAddress, underlyingToken: IAddress): IAddress[]; export declare function getVaultExposure(debankResponse: any): { borrowing_exposure: { symbol: string; chain: string; amount: number; }[]; supplying_exposure: { symbol: string; chain: string; amount: number; }[]; wallet_exposure: { symbol: string; chain: string; amount: number; }[]; }; export declare function getVaultHistoricalTimeseries({ vault, nDays, options, }: { vault: IAddress; nDays?: number; options?: IVaultBaseOptions; }): Promise; /** * Vault Loans */ export declare function getVaultLoans(vault: VaultAddress | IVault, options: IVaultBaseOptions): Promise; /** * Fetch pending redemptions for a vault with liquidity analysis. * @param vault - Vault contract address * @param pastDays - Number of past days to include (default 7, min 1, max 30) * @param futureDays - Number of future days to include (default 14, min 1, max 30) * @param options - Request options including headers * @returns Pending redemptions grouped by date with liquidity summary */ export declare function getVaultPendingRedemptions({ vault, pastDays, futureDays, options, }: { vault: IAddress; pastDays?: number; futureDays?: number; options?: IVaultBaseOptions; }): Promise; /** * Calculate PnL for a vault (vault-level, not user-specific). * Returns the vault's overall profit and loss across all users. * * @param vault - Vault contract address * @param options - RPC configuration and service options * @returns Vault PnL in USD and notional value */ export declare function getVaultPnl({ vault, options, }: { vault: IAddress; options: IVaultBaseOptions; }): Promise; /** * Vault Positions */ export declare function getVaultPositions({ vault, wallet, solanaWallet, stellarWallet, options, prefetchedReads, }: { vault: IAddress; wallet?: IAddress; solanaWallet?: string; stellarWallet?: string; options: IVaultBaseOptions; /* Excluded from this release type: prefetchedReads */ }): Promise; export declare function getVaultRedemptionHistory({ vault, wallet, lookbackBlocks, options, }: { vault: IAddress; wallet?: IAddress; lookbackBlocks?: number; options: IVaultBaseOptions; }): Promise; /** * Get the rewards for the vault. * * Builds the display-facing rewards summary from the raw tokenized-vault * rewards array. In addition to the legacy `additionalPoints` string list, it * emits `additionalPointsDetailed`, which pairs each label with its * backend-provided `img_url`. Consumers (e.g. the Upshift app) resolve a * reward's logo from this `imgUrl` first, falling back to a bundled asset only * when it is absent — so a newly-added reward with a backend logo (e.g. * "Cores") renders its icon without any client-side keyword mapping. * * @param tokenizedVault - The tokenized vault. * @returns The rewards summary, including `additionalPointsDetailed`. */ export declare function getVaultRewards(tokenizedVault: ITokenizedVault): { points: string; multiplier: number; multipliers: { timestamp: number; value: number; }[]; additionalPoints: string[]; additionalPointsDetailed: { id: string; label: string; text: string; imgUrl: string; multiplier: number; }[]; }; /** * Vault Subaccount Loans */ export declare function getVaultSubaccountLoans(vault: VaultAddress | IVault, options: IVaultBaseOptions): Promise; /** * Fetch summary data for a vault (name, type, chain, recent returns). * @param vault - Vault contract address * @param options - Request options including headers * @returns Vault summary data */ export declare function getVaultSummary({ vault, options, }: { vault: IAddress; options?: IVaultBaseOptions; }): Promise; export declare function getVaultSymbol(vault: IAddress, provider: IContractRunner): Promise; export declare function getVaultTvl({ vault, options, historical, }: { vault: IAddress; options: IVaultBaseOptions; historical?: IVaultHistoricalParams; }): Promise<{ value: INormalizedNumber; timestamp: string; }[]>; /** * Calculate lifetime PnL for a user in a specific vault. * * Basic logic: * 1. Get user's list of deposits and withdrawals from subgraph * 2. Fetch user's current assets (balanceOf * sharePrice via convertToAssets) * 3. Calculate PnL = assets withdrawn + current assets - assets deposited * * `totalDeposited` is the face value of what the user actually paid in * (each deposited asset's raw amount, rescaled to the vault's decimals — no * live price conversion), so any entry/exit fee the vault charges is * automatically counted as a cost against PnL rather than excluded from it. * Pre-deposit multi-asset vaults are assumed to only accept dollar-pegged * stablecoins into a dollar-denominated vault; a vault accepting a * non-pegged deposit asset would need deposit-time price conversion, which * this function does not perform. * * Every USD field is the native amount times the underlying asset's USD price * from the price server. There is no stand-in price: when none resolves the * getter throws rather than returning USD values it cannot know. * * Shares moved by transfer: peer transfers of the share token (see * {@link selectPeerTransfers}) are valued at the vault's daily share ratio * ({@link transferCostBasis}) and folded in by {@link pnlCostBasis} — received * shares add to `totalDeposited` (and are reported again as * `receivedByTransfer`), sent shares add to `totalWithdrawn`. This holds * alongside indexed deposits, so a wallet that received shares and also * deposited is not credited with the received shares as profit. On LayerZero * OVaults, transfers from or to the hub composer and share OFT do not count, * because the composer delivers cross-chain deposits by transfer and those * are already counted as LayerZero deposits. * * Gaps in the indexed history: a share mint with no `Deposit` event counts as * a deposit of the assets in its `ReserveDeposit` event * ({@link selectReserveDeposits}; High Growth ETH emits it for Kelp gain-adapter * deposits), and a withdrawal request the vault logged twice counts once * ({@link countWithdrawalRequestsOnce}). Transfers fold in for a depositor only * once every mint is explained. A wallet with no indexed deposit and a mint * that no deposit explains throws `HISTORY_UNAVAILABLE`. * * Tokenized Vault V2 redemptions carry only shares, so a settled one counts at * the assets the vault paid, or at the share ratio on its claim date when the * subgraph has no processed row for it ({@link settleV2Redemptions}). Only a * request not yet claimable is valued at the current share price. When the lag * or the ratio history cannot be read, every request is valued at the current * share price instead. * * Request cost: one receipt-transfer subgraph query (and a `symbol()` RPC read) * per call, plus one backend timeseries request when peer transfers exist and * one `reserveDeposits` subgraph query when a mint has no indexed deposit, and * for a Tokenized Vault V2 wallet with redemption requests, a `lagDuration()` * read plus one backend timeseries request. A timeseries window with no usable * ratio (a closed vault whose history stopped earlier) is read again in full, * so the latest earlier day still prices it. The transfer query runs for * every vault, in parallel with the history read. * * @param vault - Vault contract address * @param wallet - User wallet address * @param options - RPC configuration and service options * @returns Lifetime PnL data in both native token and USD * @throws {@link AugustHistoryUnavailableError} (`HISTORY_UNAVAILABLE`) when a * live position has no indexed deposits, withdrawals or priceable share * transfers, or has no indexed deposit while a share mint to the wallet has * no matching deposit. * @throws {@link AugustPriceUnavailableError} (`PRICE_UNAVAILABLE`) when the * underlying asset has no USD price, or `asset()` cannot be read. */ export declare function getVaultUserLifetimePnl({ vault, wallet, options, }: { vault: IAddress; wallet: IAddress; options: IVaultBaseOptions; coingeckoKey?: string; }): Promise; /** * Classify a vault's protocol version from its address alone. * * @deprecated Use {@link getVaultVersionV2} instead. This V1 classifier can only * recognise a multi-asset vault (`evm-2`) if its address is hard-coded in the * static `MULTI_ASSET_VAULTS` list. Any multi-asset vault missing from that list * is silently misclassified as `evm-1`, which broke deposit preview/simulation in * the 2026-07-06 Sentora incident. `getVaultVersionV2` reads the backend * `internal_type` (falling back to the static list only as a safety net), so new * vaults classify correctly without a code change. Retained as a non-breaking * shim; scheduled for removal in the next major. * * @param vault - The vault contract address (EVM `0x…`, Solana, or Stellar). * @returns The vault version slug, or `undefined` for empty/invalid input. */ export declare function getVaultVersion(vault: string): IVaultVersion | undefined; export declare function getVaultVersionV2(vault: (Pick & { chain_type?: string; internal_type?: string; }) | undefined | null): IVaultVersion | undefined; /** * Fetch withdrawal summary and pending queue for a vault. * @param vault - Vault contract address * @param chain - Chain identifier (e.g., chain ID as string) * @param options - Request options including headers * @returns Withdrawal summary and pending queue */ export declare function getVaultWithdrawals({ vault, chain, options, }: { vault: IAddress; chain: string; options?: IVaultBaseOptions; }): Promise; /* Excluded from this release type: getWhitelistedAssets */ /** * Read an EVM-2 vault's current withdrawal epoch. * * The on-chain return order is `(year, month, day, claimableEpoch)` — * `claimableEpoch` last, not first. This is the opposite order from what * `requestRedeem` returns (`(claimableEpoch, year, month, day)`, epoch * first); treat that call's return value, not this one, as the source of * truth for a specific withdrawal's claim date. * * @returns The vault's current withdrawal epoch, by named field. * @throws AugustValidationError on invalid vault address or a non-EVM-2 vault. * @throws AugustSDKError when the underlying contract read fails. * * @worstCaseRpcCalls 2 — vault-version lookup, `getWithdrawalEpoch`. * * @example * ```ts * const { year, month, day, claimableEpoch } = await augustSdk.evm.getWithdrawalEpoch({ * vault: vaultAddress, * }); * ``` */ export declare function getWithdrawalEpoch(signer: IContractRunner, options: IGetWithdrawalEpochOptions): Promise; /** * Returns all withdrawal requests for a vault, enriched with computed claimable dates * and current processing status. * * The unique identifier for matching requests to processed events is: * (receiver, claimableDate.year, claimableDate.month, claimableDate.day) * * This is the primary method for integrators to reliably track withdrawal status * when multiple requests are submitted by the same receiver. * * ## Data sources * - **Withdrawal requests** come from the subgraph (all historical requests). * - **Processed events** come from on-chain `WithdrawalProcessed` logs, which are * limited to a finite lookback window determined by the chain's block parameters. * * ## Lookback window & filtering * On-chain logs only cover a limited number of recent blocks (e.g. ~20 days on Monad, * ~21 days on Ethereum). The `lookbackBlocks` parameter controls how far back to scan * and is applied uniformly to both data sources: it bounds the `WithdrawalProcessed` * log query *and* drops any withdrawal request whose submission timestamp falls outside * the window — regardless of whether a matching processed event was found. Callers who * need deeper history should widen `lookbackBlocks`. * * ## Status determination * - `'processed'` — A matching `WithdrawalProcessed` event was found (by receiver + claimable date). * - `'ready_to_claim'` — Claimable date has passed (within the lookback window) but no processed event found. * - `'pending'` — Claimable date is still in the future. * * @param params - Query parameters: * - `vault` — Vault address to query. * - `receiver` — (Optional) Filter by receiver address. * - `lookbackBlocks` — (Optional) On-chain log lookback window in blocks. * Defaults to a chain-specific value (e.g. 150,000 for Ethereum, 3,456,000 for Monad). * Increasing this scans more history but requires more RPC calls. * - `options` — Standard vault query options (provider, RPC URL, etc.). * @returns Array of withdrawal requests with status and claimable dates * * @example * ```typescript * const requests = await getWithdrawalRequestsWithStatus({ * vault: '0xVault...', * receiver: '0xReceiver...' * }); * * // Results show exact status + claimable date * requests.forEach(req => { * console.log( * `${req.claimableDate.year}-${req.claimableDate.month}-${req.claimableDate.day}: ${req.status}` * ); * }); * * // With custom lookback window (e.g. 30 days on Ethereum ≈ 216,000 blocks) * const moreResults = await getWithdrawalRequestsWithStatus({ * vault: '0xVault...', * lookbackBlocks: 216_000, * }); * ``` */ export declare function getWithdrawalRequestsWithStatus(params: { vault: IAddress; receiver?: IAddress; lookbackBlocks?: number; options: IVaultBaseOptions; }): Promise; /** * Chains a user can receive the underlying asset on when withdrawing. * Hub-only-receipt vaults redeem to the hub chain only; all * other OVault vaults can redeem to the hub or any spoke. * * @param vault - Vault contract address. * @returns Destination chain IDs, or an empty array when the vault is not a * registered OVault deployment. */ export declare function getWithdrawDestinationChains(vault: IAddress): number[]; /** * Fetch the timestamp when yield was last realized for a vault. * Returns the assetsUpdatedOn timestamp from the vault contract. * @param vault - Vault contract address * @param options - RPC configuration * @returns Timestamp (Unix timestamp in seconds) when yield was last realized */ export declare function getYieldLastRealizedOn({ vault, options, }: { vault: IAddress; options: IVaultBaseOptions; }): Promise; /** * Subgraph base URL * @deprecated use getVaultMetadata to fetch subgraph URLs from the backend */ export declare const GOLDSKY_BASE_URL = "https://api.goldsky.com/api/public/project_cm9g0xy3o4j6v01vd34r3hvv9/subgraphs"; /** * Deposit funds into a Solana August vault and mint share tokens. * * @param depositAmount `bigint` is treated as raw on-chain units (preferred * — no JS-float round-trip). `number` is treated as a UI amount and * scaled by the deposit mint's decimals via {@link uiAmountToRawBn}. * @throws AugustValidationError on missing wallet/programId or invalid amount, * or when the wallet's deposit-mint balance is below `depositAmount`. * @throws AugustSDKError when a candidate token account's balance cannot be * read, or wrapping any downstream failure (`cause` preserved). * @throws AugustTransactionError (`TRANSACTION_UNCONFIRMED`) when the * transaction was sent but its outcome could not be established; check * `signature` before resubmitting. * @remarks **Side effects.** Submits exactly one transaction, signed by the * provider's wallet. When the wallet has no share account, that transaction * also creates one, and `publicKey` pays its rent — roughly 0.00204 SOL, * non-refundable while the account stays open — on top of the network fee. * Callers should ensure the wallet holds enough SOL for both before * prompting the user to sign. * @remarks Sends `deposit_checked`, not `deposit`. Unless `options.minSharesOut` * is given, the vault state and share mint are read to quote the shares this * deposit should mint, and that quote lowered by `options.slippageBps` * (default {@link DEFAULT_SLIPPAGE_BPS}) is passed as the floor; the program * reverts with `SlippageExceeded` if execution would mint fewer. An `idl` * that predates `deposit_checked` gets the plain `deposit` with no floor, * unless `options` asks for one — then it throws {@link AugustValidationError}. */ declare function handleSolanaDeposit({ provider, connection, network, vaultProgramId, vaultAddress, depositAmount, publicKey, idl, options, }: { vaultProgramId: PublicKey | string; vaultAddress?: PublicKey | string; idl: any; publicKey: PublicKey | string; depositAmount: number | bigint; /** Slippage protection; see {@link ISolanaDepositOptions}. */ options?: ISolanaDepositOptions; /** * @deprecated Accepted and ignored. Share-account creation is now prepended * to the deposit instruction, so there is no longer a second transaction to * send. Kept so existing callers keep compiling; will be removed in the next * major. */ sendTransaction?: (transaction: Transaction | web3.VersionedTransaction, connection: Connection, options?: SendTransactionOptions) => Promise; } & ISolanaConnectionOptions): Promise; /** * Redeem vault shares back into the underlying mint on a Solana August vault. * * @param redeemShares `bigint` is treated as raw share-token units; * `number` is treated as a UI amount. * @remarks Sends `redeem_checked`, not `redeem`. Unless `options.minAssetsOut` * is given, the payout is quoted from the vault state and share supply the * handler already reads, **net of the withdrawal fee**, and that quote * lowered by `options.slippageBps` (default {@link DEFAULT_SLIPPAGE_BPS}) is * passed as the floor; the program reverts with `SlippageExceeded` below it. * An `idl` that predates `redeem_checked` gets the plain `redeem` with no * floor, unless `options` asks for one — then it throws * {@link AugustValidationError}. * @throws AugustValidationError on missing wallet/programId or invalid amount, * or when the wallet holds fewer shares than `redeemShares`. * @throws AugustSDKError when a candidate token account's balance cannot be * read, or wrapping any downstream failure (`cause` preserved). * @throws AugustTransactionError (`TRANSACTION_UNCONFIRMED`) when the * transaction was sent but its outcome could not be established; check * `signature` before resubmitting. * @remarks **Side effects.** Submits exactly one transaction, signed by the * provider's wallet. That transaction also creates the payout account when * the wallet has none, and the vault's fee-recipient account when *it* has * none — `publicKey` pays rent for both, roughly 0.00204 SOL each and * non-refundable, on top of the network fee. Callers should ensure the * wallet holds enough SOL for all of it before prompting the user to sign. */ declare function handleSolanaRedeem({ provider, connection, vaultProgramId, vaultAddress, publicKey, redeemShares, idl, options, }: { idl: any; vaultProgramId: PublicKey | string; vaultAddress?: PublicKey | string; publicKey: PublicKey | string; redeemShares: number | bigint; /** Slippage protection; see {@link ISolanaRedeemOptions}. */ options?: ISolanaRedeemOptions; /** * @deprecated Accepted and ignored. Payout- and fee-recipient-account * creation is now prepended to the redeem instruction, so there is no longer * a second transaction to send. Kept so existing callers keep compiling; * will be removed in the next major. */ sendTransaction?: (transaction: Transaction | web3.VersionedTransaction, connection: Connection, options?: SendTransactionOptions) => Promise; } & ISolanaConnectionOptions): Promise; /** * Deposit assets into a Stellar vault (self-deposit). * * Builds an unsigned Soroban transaction invoking the vault's `deposit` function. * All three address roles (receiver, from, operator) are set to senderAddress. * * Contract signature: deposit(assets: i128, receiver: Address, from: Address, operator: Address) -> i128 * * @returns Base64-encoded XDR of the unsigned transaction, ready for wallet signing. */ declare function handleStellarDeposit(params: IStellarDepositParams): Promise; /** * Build an unsigned self-redeem Soroban transaction (receiver, owner, and * operator all = `receiverAddress`). Assumes the deployed vault exposes * `redeem(shares: i128, receiver, owner, operator) -> i128`; divergence * surfaces as a generic Soroban simulation error. * * Side effect on failure: when the *vault* cannot serve the redemption — it * rejected the call, or its ledger state needs restoring — the failure is * reported to that vault's curator. Stellar vaults are instant-redeem only, so * this is the curator's only signal that their depositors cannot get out. * Fire-and-forget and deduped; see * {@link reportRedeemFailure} and {@link REPORTED_BUILD_STAGES}. * * Note this includes a caller-caused rejection such as redeeming more shares * than the wallet holds: the contract trapping is what we can observe, and * telling that apart from a vault-side problem needs the vault's error * taxonomy. A bad address, an unfunded account, and an exhausted RPC failover * are excluded — none of those reached the vault. * * @returns Base64-encoded XDR ready for wallet signing; pass the signed * XDR to {@link submitStellarTransaction}. */ declare function handleStellarRedeem(params: IStellarRedeemParams): Promise; /** * Hash an API key with SHA-256 for use as a Sentry-safe identity token. * * Only the hash is ever returned. The most recently hashed key and its hash * are cached in memory, so a repeat call skips the digest and a different key * replaces the cache instead of returning the previous key's hash. * * When the runtime has no usable `crypto.createHash` (e.g. a browser bundle * without a `crypto` shim) this returns `''` rather than throwing, so the * Sentry identity falls back to the next identifier instead of being dropped. * * @param apiKey - The raw API key to hash * @returns Hex-encoded SHA-256 hash of `apiKey`, or `''` for an empty input or * when hashing is unavailable */ export declare function hashApiKey(apiKey: string): string; /** * Check that a wallet's indexed deposit history accounts for every share mint * its share-token ledger shows. * * A deposit mints shares to the wallet in the same transaction, so a mint with * no deposit of the same hash means the history is missing that deposit (an * older deposit the subgraph never indexed, or one a third party made for the * wallet). Folding peer transfers into such a history would credit the wallet * for shares it sent while missing what it paid for them, so * {@link getVaultUserLifetimePnl} only folds transfers for a depositor when * this holds. * * Pure and synchronous. Hashes and addresses compare case-insensitively. * * @param params - See {@link HistoryCoversMintsParams}. * @returns `true` when every mint to `wallet` has a matching deposit, including * when there are no mints. * @example * ```ts * const covered = historyCoversMints({ * transfers, * wallet, * depositTransactionHashes: history * .filter((item) => item.type === 'deposit') * .map((item) => item.transactionHash_), * }); * ``` */ export declare function historyCoversMints({ transfers, wallet, depositTransactionHashes, }: HistoryCoversMintsParams): boolean; /** Inputs {@link historyCoversMints} compares. */ export declare interface HistoryCoversMintsParams { /** Every share-token transfer touching `wallet`, mints included. */ transfers: Pick[]; /** The wallet whose history is being checked. */ wallet: IAddress; /** Transaction hashes of the wallet's indexed deposits. */ depositTransactionHashes: string[]; } declare interface IActiveNetwork { chainId: IChainId; rpcUrl: string; } export declare type IActiveStakingPosition = { stakingToken: { decimals: number; symbol: string; address: IAddress; chain: number; totalStaked: INormalizedNumber; usd: INormalizedNumber; totalSupply?: INormalizedNumber; name: string; }; rewardToken: { decimals: number; symbol: string; address: IAddress; chain: number; redeemable: INormalizedNumber; usd: INormalizedNumber; name: string; }; rewardDistributor: IAddress; rewardPerSecond: INormalizedNumber; apy?: number; maxApy?: number; chainId: number; id: string; }; export declare type IAddress = `0x${string}`; /** Options for {@link allowance}. */ export declare type IAllowanceOptions = { /** Spender contract — usually the vault address. */ vault: IAddress; /** Owner whose ERC-20 allowance is being queried. */ owner: IAddress; /** * Token whose allowance is queried. Defaults to the vault's underlying * asset, resolved via `IERC4626.asset()`. */ asset?: IAddress; }; /** * Configuration for SDK analytics/telemetry. * Analytics are enabled by default (opt-out model). */ export declare interface IAnalyticsConfig { /** Set to false to disable analytics. Default: true */ enabled?: boolean; /** * Sentry trace sample rate. Defaults to `0.1`; values outside `[0, 1]` * are clamped. */ tracesSampleRate?: number; /** * Which August surface is emitting telemetry, recorded once at init as the * sticky `sdk.surface` tag on every event and span. The CLI passes `'cli'` * and the MCP server `'mcp'`; applications embedding the SDK directly can * leave the default `'sdk'`. */ surface?: 'sdk' | 'cli' | 'mcp' | 'react' | string; } /** * Controls how the vault's APY is displayed in the UI. * When `is_show_target_apy` is true, the UI should show a target/projected APY. * When `is_show_hardcoded_apy` is true, `hardcoded_apy` overrides the computed APY. * When `is_show_compound_apy` is true, the UI should render the * compound-annualized historical APY (`historical_compound_apy`) instead of * the simple one. */ export declare interface IApyOverride { /** Whether to display a target APY rather than historical performance. */ is_show_target_apy: boolean; /** Whether to display `hardcoded_apy` in place of the computed APY. */ is_show_hardcoded_apy: boolean; /** The fixed APY value to display when `is_show_hardcoded_apy` is true, or null. */ hardcoded_apy: number | null; /** * Whether to display the compound-annualized historical APY * (`historical_compound_apy`) instead of the simple `historical_apy`. * Absent (older/cached responses) or false means simple. Independent of the * target/hardcoded flags above, which keep their existing precedence. */ is_show_compound_apy?: boolean; } /** * ERC-8021 builder-code attribution and the SwapRouter origin code — independent; set either or both. * * @example * ```typescript * const sdk = new AugustSDK({ * appName: 'my-app', * providers: { 8453: 'https://...' }, * keys: { august: '...' }, * attribution: { builderCodes: ['bc_abc123'] }, * }); * ``` */ export declare interface IAttributionConfig { /** * Builder codes to embed in the suffix, e.g. from base.dev registration * (`bc_…`). ASCII strings of 1–64 characters each; the comma-joined list * must fit in 255 bytes (schema 0 length prefix is a single byte). Omit to * send no ERC-8021 suffix. */ builderCodes?: string[]; /** * EVM chain IDs to attribute. Omit to attribute writes on every EVM chain * (the suffix is inert on chains without an ERC-8021 indexer and costs * ~16 gas per non-zero byte). When set, gating is fail-closed: writes on * other chains — and writes whose chain ID cannot be determined — are sent * without the suffix. * * Over-attribution is not harmless. The suffix makes calldata longer than * the ABI encoding of the call, which breaks clear-signing on hardware * wallets: a Ledger rejects an over-long ERC-20 `approve` with * `EthAppCommandError: Invalid data 6a80`, so an unattributed chain that * receives the suffix anyway cannot be transacted on from a Ledger at all. */ chains?: number[]; /** * SwapRouter origin (referral / fee-sharing) code: the `bytes32` registered * via the router's `addOrigin`, as `0x` + 64 hex chars. Every Ethereum * mainnet SwapRouter deposit carries it unless the call passes its own * `originCode`; it is never sent on another chain. Omit to send the * all-zero sentinel (no origin fee). Unaffected by `chains`. An * unregistered code reverts with `InvalidOrigin` — check it with * `getOriginInfo` first. */ originCode?: `0x${string}`; /** * When `true`, a deposit route that would use the SwapRouter with an * `originCode` not registered there throws `AugustValidationError` before * any transaction, instead of falling back to the vault's native path. */ strictOrigin?: boolean; } export declare interface IAugustBase { /** * Identifier-shaped name for the integrating application. Required. * * Pick a stable, kebab-case slug that identifies your product (e.g. * `"acme-trader"`, `"my-defi-app"`). The SDK includes it on outbound * analytics events so August Digital can see who's hitting which methods * and reach out about breaking changes or critical bugs. * * Despite the friendly `appName` label, the value is used as a Sentry * tag and HTTP header, so it must be identifier-shaped: * 3–64 characters, `[a-zA-Z0-9._-]` only. Use a slug ("acme-trader"), * not a display name ("Acme Trader"). * * @throws AugustValidationError synchronously from the constructor if * missing, empty, or malformed. * * @example * ```typescript * const sdk = new AugustSDK({ * appName: 'acme-trader', * providers: { 1: 'https://...' }, * keys: { august: '...' }, * }); * ``` */ appName: string; providers?: IProvidersConfig; solana?: ISolanaConfig; stellar?: IStellarConfig; /** * Provider keys. Optional: vault reads and vault-linked sub-account reads * work without an August key. Supply `august` for admin and curator methods, * for authenticated-user reads such as `getDiscountFactors`, and for * sub-account reads where the subaccount is not linked to a vault. */ keys?: IKeys; monitoring?: IMonitoring; /** Analytics configuration. Enabled by default (opt-out model). */ analytics?: IAnalyticsConfig; /** * Best-effort npm-registry version check. Enabled by default in * non-production environments; never runs in `NODE_ENV=production`. * Set `enabled: false` to disable entirely (or set the * `AUGUST_SDK_DISABLE_VERSION_CHECK` env var). */ versionCheck?: IVersionCheckConfig; /** * Default request timeout (in milliseconds) for backend API calls made by * this SDK instance. Falls back to the SDK's compiled-in * `REQUEST_TIMEOUT_MS` (90 s) when omitted. * * Per-call `timeoutMs` (when threaded through to the fetcher) still wins * over this value. Setting this only changes the default that's used when * no per-call value is supplied. * * Note: this is a process-global override on the underlying fetcher * helpers, so the last `AugustSDK` instantiated wins if you create several * with different timeouts in the same process. */ timeoutMs?: number; /** * Override the base URL for the SDK's unauthenticated `public` vault-catalog * API (what `getVault` / `getVaults` / `fetchTokenizedVault` read from). * Defaults to the compiled-in prod base * (`https://api.augustdigital.io/api/v1`) when omitted — so production apps * pass nothing and behaviour is unchanged. * * Set this ONLY for a non-prod deployment that runs against an isolated * backend (e.g. a staging API serving staging-only vaults). Must be an * absolute http(s) URL including any base path, e.g. * `https://api.staging.augustdigital.io/api/v1`. Invalid values are ignored. * * Note: this is a process-global override on the underlying fetcher helpers, * applied on EVERY construction — so the last `AugustSDK` instantiated is * authoritative, and one that omits `publicApiBaseUrl` RESETS to the prod * default. (Stricter than `timeoutMs`, which stays sticky when omitted, since * a stale cross-environment base is higher blast-radius than a stale timeout.) */ publicApiBaseUrl?: string; /** * ERC-8021 calldata-suffix attribution (Base Builder Codes). When set, * every EVM write sent through the SDK — ethers vault writes and the * cross-chain (OVault) viem writes — carries the attribution suffix so * offchain indexers (base.dev) can credit the transaction to your app. * Omit to send unattributed transactions (the default). * * `attribution.originCode` sets the SwapRouter origin (referral / * fee-sharing) code that every Ethereum mainnet SwapRouter deposit made * through the SDK carries unless the call passes its own. * * Note: this is a process-global override applied on EVERY construction — * the last `AugustSDK` instantiated is authoritative, and one that omits * `attribution` RESETS it (same semantics as `publicApiBaseUrl`). * * @throws Throws synchronously from the constructor when the builder codes * are malformed — see {@link IAttributionConfig}. * @throws AugustValidationError synchronously from the constructor when * `originCode` is not a 32-byte hex string. */ attribution?: IAttributionConfig; } /** Options for {@link balanceOf}. */ export declare type IBalanceOfOptions = { /** ERC-20 token address. */ asset: IAddress; /** Owner whose balance is queried. */ owner: IAddress; }; export declare type IChainId = number; export declare type IChainObj = { chainId: number; name: string; explorer: string; }; /** Options for {@link claimWithdrawal}. */ export declare type IClaimWithdrawalOptions = { /** EVM-2 (Tokenized Vault V2) vault contract address. */ target: IAddress; /** * Wallet initiating the claim. Not a signer, but it is the default * `receiver` of the withdrawn assets when `receiver` is omitted. */ wallet: IAddress; /** * Withdrawal-epoch year to settle, from the `(claimableEpoch, year, month, * day)` tuple `vaultRequestRedeem`/`requestRedeem` returned for this * withdrawal — do not re-derive it from a timestamp. */ year: string | bigint | number; /** Withdrawal-epoch month, same source as `year`. */ month: string | bigint | number; /** Withdrawal-epoch day, same source as `year`. */ day: string | bigint | number; /** Address receiving the withdrawn assets. Defaults to `wallet`. */ receiver?: IAddress; /** Wait for transaction confirmation. */ wait?: boolean; }; /** * Per-collateral-token breakdown within a collateral simulation (backend * `CollateralDetailsResult` schema). `chain` is the numeric August chain id. */ export declare interface ICollateralDetailsResult { chain: number; token_address: IAddress; price: number; allocation: number; collateral_value_from_redeployed_loan_usd: number; collateral_value_usd: number; amount_usd: number; amount_token: number; effective_discount_factor: number; is_top_up: boolean; } /** * Result of `GET /risk/collateral_excess_or_deficit` (backend * `CollateralExcessOrDeficit` schema). A positive value is excess collateral * that could be withdrawn; a negative value is the shortfall that must be * deposited to reach the target health factor. */ export declare interface ICollateralExcessOrDeficit { amount_usd: number; amount_token: number; } /** * Request body for `POST /risk/collateral_simulation` (backend * `CollateralSimulation` schema). Chain fields are numeric August chain ids. * `collateral_tokens` is a list of `[chain, address]` pairs and * `collateral_token_allocation` the matching per-token weights (normalized * server-side, so relative magnitudes are what matter). When `on_platform` * is `true`, both `loan_redeployed_token_*` fields are required by the * backend. */ export declare interface ICollateralSimulationInput { loan_token_chain: number; loan_token_address: IAddress; loan_amount: number; on_platform?: boolean; loan_redeployed_token_chain?: number | null; loan_redeployed_token_address?: IAddress | null; collateral_tokens: [number, IAddress][]; collateral_token_allocation: number[]; target_health_factor?: number; } /** * Result of `POST /risk/collateral_simulation` (backend * `CollateralSimulationResults` schema). `collateral_details` is keyed by * `"_"`. */ export declare interface ICollateralSimulationResults { total_debt_usd: number; total_required_collateral_usd: number; total_collateral_value_from_redeployed_loan_usd: number; health_factor: number; collateral_details: Record; } export declare interface IComposabilityIntegration { name: string; description: string; earning_multiplier: number; protocol_url: string; logo_url: string; tokenized_vault_id: string; id: string; } export declare type IContractRunner = Signer | Provider; export declare type IContractWriteOptions = { target: IAddress; wallet: IAddress; amount?: string | bigint | number; wait?: boolean; /** * Optional: Token to deposit (defaults to vault's underlying asset) * If different from underlying, will use adapter logic */ depositAsset?: IAddress; /** * Optional: Chain ID for the vault (used for adapter routing) */ chainId?: number; /** * Optional: Pool/vault name for adapter routing */ poolName?: string; /** * Optional: boolean for instant redeem */ isInstantRedeem?: boolean; /** * Optional: boolean for depositWithPermit */ isDepositWithPermit?: boolean; /** * @deprecated Ignored — `vaultDeposit` mints to `wallet`. Use * {@link swapRouterDeposit}'s `receiver` instead. */ receiver?: IAddress; /** * @deprecated Ignored — `vaultDeposit` never swaps. Use * {@link swapRouterDeposit}'s `slippageBps` instead. */ slippageBps?: number; }; /** * Parameters for building a cross-chain vault transaction. * Used internally by `buildCrossChainVaultTx`. */ export declare interface ICrossChainBuildRequest { /** Injected `@layerzerolabs/ovault-evm` SDK dependency */ ovaultSdk: IOVaultSdkDependency; /** Cross-chain vault configuration */ config: ICrossChainVaultConfig; /** Operation to perform */ operation: CrossChainOperation; /** Amount to deposit/redeem (human-readable string, raw bigint, or number) */ amount: string | number | bigint; /** Decimals of the token being deposited/redeemed */ decimals: number; /** Chain ID the user is currently on */ userChainId: number; /** User's wallet address */ walletAddress: IAddress; /** Chain to receive shares (deposit) or assets (redeem). Defaults to user's chain */ destinationChainId?: number; /** Recipient address. Defaults to walletAddress */ recipientAddress?: IAddress; /** Slippage tolerance in basis points (default: 100 = 1%) */ slippageBps?: number; /** * viem Chain object for the hub chain (with RPC URLs configured). * Required for SDK to create a public client for on-chain reads. */ hubChain: unknown; /** * viem Chain object for the user's source chain (with RPC URLs configured). */ sourceChain: unknown; /** Fee buffer percentage applied to LZ native fees (default: 50) */ feeBufferPercent?: number; /** Gas limit for lzCompose on hub chain (default: 2_000_000n) */ hubLzComposeGasLimit?: bigint; } /** * Result from building a cross-chain vault transaction. */ export declare interface ICrossChainBuildResult { success: boolean; data?: { /** Contract address to call */ contractAddress: IAddress; /** Function name to call on the contract */ contractFunctionName: string; /** ABI for the contract call */ abi: readonly unknown[]; /** Arguments for the contract function */ txArgs: readonly unknown[]; /** Native value to send with the transaction (includes LZ fees) */ messageValue: bigint; /** LayerZero messaging fee breakdown */ messageFee: { nativeFee: bigint; lzTokenFee: bigint; }; /** Expected output amount on destination */ dstAmount: bigint; /** Minimum output amount (after slippage) */ minDstAmount: bigint; /** Approval info if token approval is required */ approval?: { tokenAddress: IAddress; spender: IAddress; amount: bigint; }; }; error?: string; } /** * Request parameters for executing a cross-chain deposit. */ export declare interface ICrossChainDepositRequest { /** Injected `@layerzerolabs/ovault-evm` SDK dependency */ ovaultSdk: IOVaultSdkDependency; /** Cross-chain vault configuration */ config: ICrossChainVaultConfig; /** Amount to deposit (human-readable) */ amount: string; /** Decimals of the deposit token */ decimals: number; /** Chain ID the user is depositing from */ userChainId: number; /** User's wallet address */ walletAddress: IAddress; /** viem WalletClient for signing transactions */ walletClient: unknown; /** viem PublicClient for reading chain state */ publicClient: unknown; /** viem Chain object for the hub chain (with RPC URLs) */ hubChain: unknown; /** viem Chain object for the source chain (with RPC URLs) */ sourceChain: unknown; /** Chain to receive shares on. Defaults to user's chain */ destinationChainId?: number; /** Skip the internal approval check (set true when caller handles approval) */ skipApprovalCheck?: boolean; /** Slippage tolerance in basis points (default: 100 = 1%) */ slippageBps?: number; /** Fee buffer percentage (default: 50) */ feeBufferPercent?: number; /** Gas buffer multiplier as percentage (default: 150 = 1.5x) */ gasBufferPercent?: number; } /** * Result from a cross-chain deposit execution. */ export declare interface ICrossChainDepositResult { /** Transaction hash */ transactionHash: string; /** Whether the on-chain receipt shows success */ success: boolean; } /** * Cross-chain operation status for tracking LayerZero messages. */ export declare interface ICrossChainOperationStatus { /** Source chain transaction hash */ srcTxHash: string; /** Current status of the cross-chain message */ status: 'PENDING' | 'INFLIGHT' | 'DELIVERED' | 'FAILED'; /** Source chain ID */ srcChainId: number; /** Destination chain ID */ dstChainId: number; } /** * Request parameters for executing a cross-chain redemption. */ export declare interface ICrossChainRedeemRequest { /** Injected `@layerzerolabs/ovault-evm` SDK dependency */ ovaultSdk: IOVaultSdkDependency; /** Cross-chain vault configuration */ config: ICrossChainVaultConfig; /** Amount of shares to redeem (human-readable) */ amount: string; /** Decimals of the share token */ decimals: number; /** Chain ID the user is on (must be hub chain) */ userChainId: number; /** User's wallet address */ walletAddress: IAddress; /** viem WalletClient for signing transactions */ walletClient: unknown; /** viem PublicClient for reading chain state */ publicClient: unknown; /** viem Chain object for the hub chain (with RPC URLs) */ hubChain: unknown; /** viem Chain object for the source chain (with RPC URLs) */ sourceChain: unknown; /** Chain to receive assets on. Defaults to user's chain */ destinationChainId?: number; /** Skip the internal approval check (set true when caller handles approval) */ skipApprovalCheck?: boolean; /** Slippage tolerance in basis points (default: 100 = 1%) */ slippageBps?: number; /** Fee buffer percentage (default: 50) */ feeBufferPercent?: number; /** Gas buffer multiplier as percentage (default: 200 = 2x) */ gasBufferPercent?: number; /** Minimum gas limit for redeem operations (default: 5_000_000n) */ minGasLimit?: bigint; } /** * Result from a cross-chain redeem execution. */ export declare interface ICrossChainRedeemResult { /** Transaction hash */ transactionHash: string; /** Whether the on-chain receipt shows success */ success: boolean; } /** * Cross-chain vault configuration provided by SDK consumers. * * Each vault deployment requires 5 contract types: * 1. AssetOFT — OFT wrapper for the underlying asset (e.g., USDC) on hub + spoke chains * 2. ERC4626 Vault — The actual vault contract on the hub chain * 3. ShareOFTAdapter — Wraps vault shares for cross-chain transport (hub chain) * 4. ComposerSync — Orchestrates cross-chain operations (hub chain) * 5. ShareOFT — Share token representation on spoke chains */ export declare interface ICrossChainVaultConfig { /** Human-readable vault name */ vaultName: string; /** Vault receipt token symbol */ vaultSymbol: string; /** Chain ID where the ERC4626 vault lives */ hubChainId: number; /** Address of the ERC4626 vault on the hub chain */ vaultAddress: IAddress; /** Chain IDs where users can deposit from (spoke chains) */ spokeChainIds: number[]; /** Contract addresses for the OVault deployment */ contracts: { /** Underlying asset token addresses per chain (e.g., native USDC) */ assetToken: Record; /** AssetOFT (OFT wrapper for the asset) addresses per chain */ assetOFT: Record; /** ShareOFTAdapter address on the hub chain */ shareOFTAdapter: IAddress; /** VaultComposerSync address on the hub chain */ composerSync: IAddress; /** ShareOFT addresses on spoke chains */ shareOFT: Record; }; /** LayerZero Endpoint IDs (NOT chain IDs) */ layerZeroEids: { /** Hub chain LayerZero EID */ hub: number; /** Spoke chain LayerZero EIDs keyed by chain ID */ spokes: Record; }; /** * Multi-asset vault support. * When set, the vault uses `previewDeposit(address, uint256)` instead of * the standard ERC4626 `previewDeposit(uint256)`. */ multiAsset?: { /** Asset address on hub chain used for previewDeposit calls */ hubAssetAddress: IAddress; }; /** * When `true`, the vault's receipt token cannot leave the hub chain: there * is no OFT/bridge for it, so minting shares on a spoke would strand the * user. Withdraw UIs must offer the hub chain only. Defaults * to `false` when omitted. Drives `getWithdrawDestinationChains`. */ hubOnlyReceipt?: boolean; } /** Curator-alert reporting. Enabled by default; this is the opt-out. */ export declare interface ICuratorAlertsConfig { /** * `false` stops emitting entirely. `true` forces emitting even in an * environment the SDK would otherwise stay quiet in — it bypasses **every** * environment gate: `NODE_ENV` of `development`/`test`, a browser served * from a loopback or private host, and `monitoring.env` other than `PROD`. * It does NOT lift the mainnet-only restriction; only `endpoint` does. A * `DEV` or test * integration that sets it and then fails a mainnet redeem pages a real * curator, so use it only when deliberately exercising the path (pair it * with `endpoint` to aim at a test relay). The only thing that still wins is * the {@link CURATOR_ALERTS_DISABLE_ENV_VAR} kill switch. */ enabled?: boolean; /** * Override the relay endpoint. Defaults to * {@link DEFAULT_CURATOR_ALERT_ENDPOINT}. Setting it also lifts the * mainnet-only restriction, so a staging relay can receive testnet failures. */ endpoint?: string; } /** Ambient facts about the reporting SDK instance, supplied by `AugustBase`. */ export declare interface ICuratorAlertsContext { /** Carried on the payload so August can tell partner traffic apart. */ appName?: string; /** * `monitoring.env`. Anything other than `'PROD'` keeps the SDK quiet unless * `config.enabled` is explicitly `true`. */ environment?: IEnv; /** * Effective base URL of the August public API. Reports follow the API this * instance reads from, so a deployment pointed at a staging backend alerts * staging rather than production. */ apiBaseUrl?: string; } /** * On-chain whitelist status of one subaccount linked to a vault, from * `GET /curator/vaults/{vault_address}/whitelist` (backend * `WhitelistStatusResponse` schema). EVM vaults only. */ export declare interface ICuratorWhitelistStatus { address: IAddress; is_whitelisted: boolean; } export declare interface IDebankAccountData { positions: IDebankUserProtocol[]; app_positions: IDebankAppProtocol[]; tokens: IDebankTokenObject[]; } export declare interface IDebankAccountDataError { error: string; } export declare interface IDebankAppPortfolioDetailObject { supply_token_list?: IDebankAppTokenObject[]; reward_token_list?: IDebankAppTokenObject[]; borrow_token_list?: IDebankAppTokenObject[]; description?: string | null; } export declare interface IDebankAppPortfolioItemObject { stats: IDebankStatsObject; update_at: number; name: string; detail_types: string[]; detail: IDebankAppPortfolioDetailObject; proxy_detail?: IDebankProxyDetailObject | null; position_index?: string | null; [key: string]: unknown; } export declare interface IDebankAppProtocol { id: string; name: string; logo_url?: string | null; site_url: string; has_supported_portfolio: boolean; portfolio_item_list: IDebankAppPortfolioItemObject[]; } export declare interface IDebankAppTokenObject { id: string; name: string; symbol: string; decimals: number; logo_url?: string | null; app_id?: string | null; price: number; amount?: number | null; [key: string]: unknown; } export declare interface IDebankDetailObject { supply_token_list?: IDebankTokenObject[]; reward_token_list?: IDebankTokenObject[]; borrow_token_list?: IDebankTokenObject[]; health_rate?: number | null; } export declare interface IDebankNormalizedResponse { subaccount: { positions: any[]; tokens: any[]; }; } export declare interface IDebankPoolObject { controller: string; id: string; chain: string; project_id: string; adapter_id?: string | null; time_at?: number | null; } export declare type IDebankPortfolioItemName = 'Yield' | 'Deposit' | 'Staked' | 'Locked' | 'Farming' | 'Leveraged Farming' | 'Lending' | 'Vesting' | 'Rewards' | 'Airdrop' | 'Liquidity Pool' | 'Options Seller' | 'Options Buyer' | 'Insurance' | 'Investment' | 'Governance' | 'Perpetuals' | 'NFT Staked' | 'NFT Liquidity Pool' | 'NFT Lending' | 'NFT Fraction' | 'NFT P2P Borrower' | 'NFT P2P Lender'; export declare interface IDebankPortfolioItemObject { stats: IDebankStatsObject; update_at: number; name: IDebankPortfolioItemName; detail_types: string[]; detail: IDebankDetailObject; proxy_detail?: IDebankProxyDetailObject | null; position_index?: string | null; pool: IDebankPoolObject; } export declare 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 declare interface IDebankProxyDetailObject { project?: Record | null; proxy_contract_id?: string | null; } export declare interface IDebankStatsObject { asset_usd_value: number; debt_usd_value: number; net_usd_value: number; } export declare interface IDebankTokenExposure { amount: number; chain: string; decimals: number; id: IAddress; logoUrl: string; name: string; symbol: string; } export declare interface IDebankTokenObject { id: string; chain: string; name: string; symbol: string; display_symbol: unknown; optimized_symbol: string; decimals: number; protocol_id: string; is_core?: boolean | null; price: number; time_at?: number | null; logo_url?: string | null; price_24h_change?: number | null; credit_score?: number | null; is_verified?: boolean | null; is_scam?: boolean | null; is_suspicious?: boolean | null; is_wallet?: boolean | null; amount?: number | null; raw_amount?: number | null; } export declare interface IDebankUserProtocol { id: string; chain: string; name: string; logo_url?: string | null; site_url: string; has_supported_portfolio: boolean; portfolio_item_list: IDebankPortfolioItemObject[]; } /** Result of decoding a raw revert blob with {@link decodeRevertData}. */ export declare interface IDecodedRevert { /** * `'error-string'` for `Error(string)` (a `require` message), `'panic'` for * compiler-inserted `Panic(uint256)`, `'custom'` when the selector matched a * corpus (or caller-supplied) custom error, `'unknown'` when nothing matched. */ kind: IRevertKind; /** The 4-byte selector (`0x` + 8 hex chars), always present — even for `'unknown'` so callers can 4byte-lookup it. */ selector: string; /** Error name (e.g. `'ERC20InsufficientBalance'`, `'Error'`, `'Panic'`). Absent for `'unknown'`. */ name?: string; /** Full error signature (e.g. `'ERC20InsufficientBalance(address,uint256,uint256)'`). Absent for `'unknown'`. */ signature?: string; /** * Decoded arguments in declaration order (`bigint` for integers, checksummed * strings for addresses). Absent when the selector matched but the argument * bytes were truncated or malformed — see {@link IDecodedRevert.reason}. */ args?: unknown[]; /** * Human-readable summary when one exists: the `Error(string)` message, the * named `Panic` code, or a note that the argument data was truncated. */ reason?: string; } /** A deposit's route — the SwapRouter or the vault's native path — and the address to approve. */ export declare type IDepositRoute = { /** * `router`: `SwapRouter.deposit` carrying the instance origin code (a direct * deposit, never a swap). `native`: the vault's own deposit path. */ via: 'native' | 'router'; /** Address to approve for the deposit token; `null` for a native-token deposit (`msg.value`). */ spender: IAddress | null; /** Why the deposit stays native; absent on the router route. */ reason?: DepositRouteReason; }; /** * A token's discount-factor ladder from `GET /risk/discount_factors` * (backend `DiscountFactorRead` schema). `steps` are ascending notional * thresholds (in the token's smallest unit) and `factors` the corresponding * ascending haircut multipliers in `[0, 1]`; the two arrays are equal length. * `chain` is the numeric August chain id. */ export declare interface IDiscountFactorLadder { steps: number[] | null; factors: number[] | null; address: IAddress; chain: number; } export declare const IDLE_CAPITAL_BORROWER_ADDRESS: `0x${string}`[]; declare interface IEmberVault { address: string; id: string; name: string; description: string; logoUrl: string; status: 'active' | 'beta' | 'deprecated'; publicType: string; strategy: string; createdAt: number; totalDeposits: string; totalDepositsInUsdE9: string; maxDepositsAllowed: string; rateE9: string; managementFeePercentE9: string; weeklyPerformanceFeeBpsE9: string; withdrawalPeriodDays: number; minWithdrawalSharesE9: string; historicalSnapshots?: IHIstoricalSnapshot[]; max_drawdown?: number | null; depositCoin: { address: string; symbol: string; name: string; decimals: number; logoUrl: string; priceE9: string; type: string; }; receiptCoin: { address: string; symbol: string; name: string; decimals: number; logoUrl: string; priceE9: string; type: string; }; reportedApy: { apyE9: string; reportedApyE9: string; updatedAt: string; }; managers: Array<{ id: string; name: string; logoUrl: string; websiteUrl: string; }>; subAccounts: Array<{ address: string; manager: { id: string; name: string; logoUrl: string; websiteUrl: string; }; }>; rewards: any[]; } export declare type IEnv = 'DEV' | 'PROD'; export declare type IExplorerType = 'tx' | 'address' | 'token'; export declare type IExposurePerCategory = { borrowing: IVaultExposureItem[]; supplying: IVaultExposureItem[]; lending: IWSSubaccountLoan[]; wallet: IVaultExposureItem[]; cefiBalance: number; defiBalance: number; walletBalance: number; loanBalance: number; }; /** Fields recovered from an ethers v6 error string by {@link extractRevertFromErrorText}. */ export declare interface IExtractedRevertContext { /** The revert blob from the top-level `data="0x…"` field, when present. */ revertData?: string; /** The failed operation from `action="…"` (e.g. `'estimateGas'`, `'call'`). */ action?: string; /** The ethers error code from `code=…` (e.g. `'CALL_EXCEPTION'`). */ code?: string; /** The embedded `transaction={ … }` fields that survived, when any did. */ tx?: { from?: string; to?: string; data?: string; }; } /** * API Fetching and Data Utilities * * Core fetching functions for August backend services: * - Authentication: fetchAugustWithKey, fetchAugustWithBearer, fetchAugustPublic * - Retry Logic: withRetry, isRetryableError, promiseSettle * - Vault Data: fetchTokenizedVaults, fetchTokenizedVaultLoans * - Pricing: fetchTokenPrice (with CoinGecko fallback) * - Caching: LRU cache for API responses */ export declare type IFetchAugustMethods = 'get' | 'post' | 'put'; export declare type IFetchAugustOptions = { method?: IFetchAugustMethods; headers?: Record; data?: unknown; server?: keyof typeof WEBSERVER_URL; /** Caller-supplied AbortSignal; combined with the default timeout. */ signal?: AbortSignal; /** Per-request timeout in ms. Defaults to `REQUEST_TIMEOUT_MS`. */ timeoutMs?: number; /** * @deprecated No longer has any effect: an absent `apiKey` already sends an * anonymous request. Will be removed in a future major version; drop it. */ override?: boolean; }; declare interface IFetchEmberVaultsOptions { limit?: number; offset?: number; status?: string; } /** Options for {@link getBurnableAmountByReceiver}. */ export declare type IGetBurnableAmountByReceiverOptions = IWithdrawalDateOptions & { /** Address whose claimable amount for this date is being queried. */ receiver: IAddress; }; /** Options for {@link getDepositRoute} — the same fields `vaultDeposit` reads. */ export declare type IGetDepositRouteOptions = Pick; /** Options for {@link getIdleLiquidity}. */ export declare type IGetIdleLiquidityOptions = { /** EVM-2 (Tokenized Vault V2) vault contract address. */ vault: IAddress; }; /** Options for {@link getOriginInfo}. */ export declare interface IGetOriginInfoOptions { /** EVM chain ID whose `SwapRouter` to read. */ chainId: number; /** The `bytes32` origin code, `0x` + 64 hex chars. */ originCode: `0x${string}`; /** RPC endpoint for `chainId`. */ rpcUrl: string; } /** Options for {@link getRequirementByDate}. */ export declare type IGetRequirementByDateOptions = IWithdrawalDateOptions; /** Options for {@link getScheduledTransactionsByDate}. */ export declare type IGetScheduledTransactionsByDateOptions = IWithdrawalDateOptions; /** * Options accepted by `getVaults` — on both the `AugustSDK` facade and the * underlying `AugustVaults` module. Defined once so the two signatures cannot * drift (the facade previously declared a narrower inline type that rejected * documented options like `includeClosed` at compile time). */ export declare interface IGetVaultsOptions extends IVaultCustomOptions { chainIds?: number[]; headers?: IWSMonitorHeaders; loadSubaccounts?: boolean; loadSnapshots?: boolean; /** * Portfolio mode: include closed vaults in the result. * * By default (`false`) closed vaults are excluded, so marketplace / * discovery callers never receive a `status: 'closed'` vault. When set, * closed vaults are returned regardless of `is_visible` (closed + * invisible vaults bucket as closed), so a consumer joining user * positions can render a position held in a closed vault on the * portfolio page. * * In this mode, loans/allocations enrichment is also skipped for closed * vaults: they have none, and the per-vault enrichment * (`getVault` → `getVaultAllocations`) otherwise re-throws when a closed * vault has no live strategy/debank data or no subaccounts, which would * land the vault in the `failed` bucket and silently drop it before it * reaches the filter. Skipping enrichment lets the vault survive on its * backend metadata + base on-chain read. * * @default false */ includeClosed?: boolean; /** * Maximum primary-fetch attempts per vault before the fallback * strategies (fallback RPCs, minimal fetch, extended retry) run. * Attempt `n` waits `baseDelay * 2^(n-1)` ms before retrying, so the * default (5 attempts, 2000 ms base) can spend up to 30s of backoff on * a single persistently-failing vault. Callers racing this method * against their own timeout should lower it (e.g. `2`) so one flaky * vault cannot exhaust the whole budget. * * @default 5 */ maxRetries?: number; /** * Base backoff delay in **milliseconds** for the per-vault retry * schedule (see `maxRetries`). * * @default 2000 */ baseDelay?: number; } /** Options for {@link getWithdrawalEpoch}. */ export declare type IGetWithdrawalEpochOptions = { /** EVM-2 (Tokenized Vault V2) vault contract address. */ vault: IAddress; }; /** * Table of Contents * 1) Subaccounts * 2) Metrics * 3) Tokens * 4) Users * 5) Statuses * 6) Integrations * 7) Lending Pools */ export declare 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 declare 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 declare interface IHistoricalTimeseriesResponse { data: Record; } export declare type IInfuraOptions = { chainId: IChainId; apiKey: string; }; declare interface IKeys { august?: string; graph?: string; coingecko?: string; } declare type ILabelValue = { label: string; value: string; usd: number; }; /** Options for {@link lagDuration}. */ export declare type ILagDurationOptions = { /** EVM-2 (Tokenized Vault V2) vault contract address. */ vault: IAddress; }; declare interface ILayerZeroDeposit { assetAmt: string; dstEid: string; sender: string; recipient: string; shareAmt: string; transactionHash_: string; timestamp_: string; } declare interface ILayerZeroRedeem { id: string; recipient: string; sender: string; shareAmt: string; transactionHash_: string; timestamp_: string; } /** * One loan-book entry from the admin loan-book endpoints (backend * `LoanBookInfo` schema). Amounts are decimal-adjusted floats; monetary * fields are denominated in the loan's principal token. `deployed_date` is an * ISO-8601 datetime string; `state` is the backend `LoanStateStr` value * (e.g. `"ACTIVE"`). */ export declare interface ILoanBookInfo { address: IAddress; lender: IAddress; borrower: IAddress; state: string; total_repaid: number; principal_token: IWhitelistedToken; principal_amount: number; interest_amount: number; upcoming_payment: ILoanUpcomingPayment; apr: number; initial_principal_amount: number; deployed_date: string; payment_interval: number; total_interest_payment_fees: number; lender_apr: number; } declare type ILoanOracleFeeCategories = 'LOAN.REPAY.INTERESTS'; /** * The amount and due date of a loan's next scheduled payment, as serialized * by the backend `UpcomingPayment` schema. `due_date` is an ISO-8601 datetime * string. */ export declare interface ILoanUpcomingPayment { amount: number; due_date: string; } /** * Structured logger interface (debug/info/warn/error). Sanitization runs * before any method here is invoked, so implementations needn't scrub secrets. * * ```ts * Logger.setStructuredLogger({ * info: (tag, ctx) => pino.info({ tag, ...ctx }), * warn: (tag, ctx) => pino.warn({ tag, ...ctx }), * error: (tag, err, ctx) => pino.error({ tag, err, ...ctx }), * }); * ``` */ export declare interface ILogger { debug?: (tag: string, context?: Record) => void; info?: (tag: string, context?: Record) => void; warn?: (tag: string, context?: Record) => void; error: (tag: string, error: unknown, context?: Record) => void; } /** Options for {@link maxDeposit}. */ export declare type IMaxDepositOptions = { /** Vault contract address. */ vault: IAddress; /** * Receiver address — passed to ERC-4626 `maxDeposit(address)` on single- * asset vaults. Ignored by EVM-2 multi-asset vaults which expose a vault- * level `maxDepositAmount()` without a receiver argument. */ receiver?: IAddress; }; /** * Metrics for tracking SDK method calls. */ export declare interface IMethodCallMetrics { method: string; /** * Coarse-grained category from {@link METHOD_CATEGORIES} — e.g. `'read.vault'`, * `'write.deposit'`. Used to roll calls up in the partner-usage dashboard * without having to enumerate every method name. */ category?: string; chainId?: number; duration: number; success: boolean; errorType?: string; } declare interface IMonitoring extends IWSMonitorHeaders { slackWebhookUrl?: string; env?: IEnv; /** * Curator notifications for failed vault redemptions. Enabled by default * (opt-out model, like `analytics`). * * Stellar vaults are instant-redeem only, so when a redemption fails the * vault's curator has no other way to learn about it. The SDK relays the * failure to August's notification service, which routes it to that curator's * own channel — no credentials or curator identities are held here. * * Set `enabled: false` (or, in Node, the * `AUGUST_SDK_DISABLE_CURATOR_ALERTS` env var) to stop emitting; set * `endpoint` only to point a non-prod deployment at a test relay. Nothing is * emitted unless `monitoring.env` is `PROD`, `NODE_ENV` is neither * `development` nor `test`, and — in a browser, where `NODE_ENV` is not * readable — the page is not served from localhost. * * `enabled: true` is the one exception: it bypasses all three gates, so a * `DEV` or test integration that sets it can page a real curator. See * {@link ICuratorAlertsConfig}. */ curatorAlerts?: ICuratorAlertsConfig; } /* Excluded from this release type: IMulticall3Request */ /* Excluded from this release type: IMulticall3Result */ export declare type INativeDepositOptions = { /** * MultiAssetNativeDepositWrapper contract address */ wrapperAddress: IAddress; /** * Optional: Receiver address for the deposit (defaults to signer address) * If not provided, uses the overload without receiver parameter */ receiver?: IAddress; /** * Amount of native token (ETH/AVAX/etc) to deposit */ amount: string | bigint | number; /** * Optional: Wait for transaction confirmation */ wait?: boolean; }; /** * Initialize Sentry with SDK-specific configuration. Idempotent: re-calls * only refresh user identity and the cached API-key hash. * * Breaking change in v9: `appName` moved from the optional fifth parameter * to the required third parameter, so every telemetry stream carries an * application identity (the `AugustSDK` constructor has required it since * v5). Callers on the old positional order get a synchronous validation * error rather than silently anonymous events. * * @param config - Analytics configuration. Pass `tracesSampleRate` to * override the default of `0.1`, and `surface` to label the emitting * surface (`sdk.surface` tag; defaults to `'sdk'`). * @param environment - Current environment (DEV or PROD). * @param appName - App-name slug, required. Set as the global `app.name` * tag on every event and used to derive `partner.id`. Identifier-shaped: * 3–64 chars, `[a-zA-Z0-9._-]` only, and not an EVM address — the same * rules the `AugustSDK` constructor enforces. * @param walletAddress - Optional wallet address for user identification. * @param apiKey - Optional API key (hashed for identification). * @throws AugustValidationError (code `INVALID_INPUT`) when `appName` is * missing, empty, mis-typed, out of the allowed length range, contains * disallowed characters, or is shaped like an EVM address. Thrown before * any analytics state mutates, even when analytics would be disabled by * config or environment gates. */ export declare function initializeSentry(config: IAnalyticsConfig, environment: IEnv, appName: string, walletAddress?: string, apiKey?: string): void; export declare type INormalizedNumber = { normalized: string; raw: string; }; /** * Instrument all methods on a class instance with tracking. * This auto-wraps all public methods (both async and sync) without boilerplate. * * @param instance - The class instance to instrument * @param getChainId - Function to get current chain ID * @returns The same instance with instrumented methods */ export declare function instrumentClass(instance: T, getChainId: () => number | undefined): T; export declare type IOperatorTypeEnum = 'eoa' | 'subaccount'; /** * A vault's NAV-oracle classification from the public * `GET /upshift/oracle_classification/{vault_address}` endpoint (backend * `OracleClassificationResponse` schema). `warnings` lists tokens that could * not be resolved (`"unresolved:"`). `snapshot_at` is an ISO-8601 * datetime string. */ export declare interface IOracleClassification { vault_address: IAddress; chain_id: number; snapshot_at: string; methodology: string; rows: IOracleClassificationRow[]; warnings: string[]; } /** * One row of a vault's NAV-oracle classification table (backend * `OracleClassificationRow` schema) — how a single position/token is priced * and its USD value. */ export declare interface IOracleClassificationRow { position: string; type: string; oracle_source: string; usd_value: number; } /** A SwapRouter origin code's registration, from `origins(bytes32)`. */ export declare interface IOriginInfo { /** `true` when registered via `addOrigin` and not revoked (non-zero collector). */ registered: boolean; /** Origin fee in basis points; `0` for an attribution-only code. */ originFeeBps: number; /** Fee recipient; the zero address when the code is not registered. */ collector: IAddress; } /** * An OTC margin requirement from `GET /otc/margin_requirement` (backend * `IOTCMarginRequirementRead` schema) — the margin the `payer` must post to * the given counterparty. */ export declare interface IOtcMarginRequirement { otc_counter_party_id: string; margin_requirement: number; payer: IAddress; } export declare interface IOTCPosition { value: number; underlying: string; settlement_type: string; settlement_currency: string; asset_type: string; symbol: string; trades: IOTCTrade[]; } /** * A tracked position from `GET /otc/position` (backend `IPositionRead` * schema). `configs` is a free-form JSON object of position-specific * settings; `category` is the position category (e.g. `"otc"`). */ export declare interface IOtcPositionRead { id: string; slug: string; position_class: string | null; configs: Record | null; category: string | null; position_discount_factor: number | null; } export declare 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; } /** * Injected dependency for the `@layerzerolabs/ovault-evm` SDK. * * Because the `@layerzerolabs/ovault-evm` package has broken ESM exports * (bare directory imports in a `"type": "module"` package), the SDK cannot * `require()` it internally. Instead, the consuming application imports it * in its own bundler context and passes it to SDK functions via this type. * * @example * ```ts * import { OVaultSyncMessageBuilder, OVaultSyncOperations } from '@layerzerolabs/ovault-evm'; * * await buildCrossChainVaultTx({ * ovaultSdk: { OVaultSyncMessageBuilder, OVaultSyncOperations }, * // ...other params * }); * ``` */ export declare interface IOVaultSdkDependency { OVaultSyncMessageBuilder: { generateOVaultInputs: (input: unknown) => Promise; [key: string]: unknown; }; OVaultSyncOperations: { DEPOSIT: string; REDEEM: string; }; } export declare type IPool = { address: IAddress; name: string; logoUrl: string; asset: IAddress; loansOperator?: IAddress; globalLoansAmount: INormalizedNumber; symbol: string; totalAssets?: INormalizedNumber; totalSupply: INormalizedNumber; maxSupply: INormalizedNumber; decimals: number; getTotalLoansDeployed: INormalizedNumber; chainId: number; withdrawalFee: INormalizedNumber; loans?: IPoolLoan[]; collateral?: IAddress[]; apy?: number; sUSDeAPY?: number; leverageLoopAPR?: number; leverage?: string; managementFee?: number | undefined; stakeAPY?: number; idleAssets?: INormalizedNumber; description?: string; hardcodedStrategist?: string; protocolExposure?: IDebankProtocolExposure[]; tokenExposure?: IDebankTokenExposure[]; cefiExposure?: IWSSubaccountCefi[]; vaultsSubAccWhitelist?: IAddress[]; internalType?: 'lendingPool' | 'tokenizedVault'; publicType?: 'Lending' | 'Defi Yield' | 'Pre-deposit'; strategist: ITokenizedVaultStrategist; isFeatured?: boolean; isVisible?: boolean; rewards?: IPoolRewards; }; export declare type IPoolAction = 'deposit' | 'withdraw' | 'claim' | 'stake' | 'getReward' | 'unstake'; export declare type IPoolAvailableRedemption = { receiver: IAddress; day: INormalizedNumber; month: INormalizedNumber; year: INormalizedNumber; amount: INormalizedNumber; date: Date; pool: IAddress; }; export declare type IPoolFunctions = 'decimals' | 'symbol' | 'name' | 'asset' | 'totalSupply' | 'maxSupply' | 'totalAssets' | 'globalLoansAmount' | 'loansOperator' | 'getTotalLoansDeployed' | 'withdrawalFee' | 'lagDuration' | 'withdrawalsPaused' | 'depositsPaused' | 'assetsWhitelistAddress' | 'getWhitelistedAssets' | 'maxDepositAmount' | 'getTotalAssets' | 'lpTokenAddress' | 'depositCap'; export declare type IPoolHistoricalParams = { order?: IPoolOrderParam; start: Date; interval?: 'years' | 'quarters' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes'; }; export declare type IPoolLoan = { address: IAddress; apr: number; collateral: IAddress; principal: INormalizedNumber; allocation: number; repaid: INormalizedNumber; exposure?: ILabelValue[]; positions?: ILabelValue[]; idleCapital?: boolean; }; export declare type IPoolModal = { isOpen: boolean; onClose: (e: any) => void; type: IPoolAction; mode?: 'light' | 'dark'; } & IPoolWithUnderlying; export declare type IPoolOrderParam = 'asc' | 'desc'; export declare type IPoolRedemptionHistoryItem = { receiver: IAddress; amount: INormalizedNumber; processed: Date; requested: Date; pool: IAddress; }; export declare type IPoolRewards = { upshift_points: string; latestUpshiftPointMultiplier: number; upshift_points_multipliers: { multiplier: number; timestamp: number; }[]; additional_points: string[]; }; export declare type IPoolWithPositions = IPoolWithUnderlying & { token: IAddress; position: string; apy: number; status: string; availableRedemptions: IPoolAvailableRedemption[]; redeemable: INormalizedNumber; walletBalance: string; }; export declare type IPoolWithUnderlying = IPool & { underlying: { address: IAddress; symbol: string; decimals: number; chain: number; }; }; /** Options for {@link previewDeposit}. */ export declare type IPreviewDepositOptions = { /** Vault contract address. */ vault: IAddress; /** Deposit amount in the deposit asset's smallest unit (raw bigint-shaped). */ amount: string | bigint | number; /** * Optional deposit asset. Required for multi-asset vaults (EVM-2); ignored * for single-asset vaults where the underlying is implicit. */ asset?: IAddress; }; /** Options for {@link previewRedeem}. */ export declare type IPreviewRedeemOptions = { /** Vault contract address. */ vault: IAddress; /** Share amount in the vault share token's smallest unit (raw bigint-shaped). */ shares: string | bigint | number; }; export declare type IPreviewRwaRedemptionOptions = { /** RwaRedeemSubaccount contract address */ target: IAddress; /** Redeemable asset address (e.g. USDC, USDT) */ asset: IAddress; /** Amount of vault shares to preview */ amount: string | bigint | number; /** Decimals of the vault share token */ decimals: number; /** Decimals of the output/redeemable asset */ outputDecimals: number; }; export declare type IProvidersConfig = Partial>; /** * Request parameters for quoting a cross-chain deposit. */ export declare interface IQuoteCrossChainDepositRequest { /** Injected `@layerzerolabs/ovault-evm` SDK dependency */ ovaultSdk: IOVaultSdkDependency; /** Cross-chain vault configuration */ config: ICrossChainVaultConfig; /** Amount to deposit (human-readable) */ amount: string; /** Decimals of the deposit token */ decimals: number; /** Chain ID the user would deposit from */ userChainId: number; /** User's wallet address */ walletAddress: IAddress; /** viem Chain object for the hub chain (with RPC URLs) */ hubChain: unknown; /** viem Chain object for the source chain (with RPC URLs) */ sourceChain: unknown; /** Destination chain for shares */ destinationChainId?: number; /** Slippage tolerance in basis points (default: 100 = 1%) */ slippageBps?: number; /** Fee buffer percentage (default: 50) */ feeBufferPercent?: number; } /** * Request parameters for quoting a cross-chain redeem. */ export declare interface IQuoteCrossChainRedeemRequest { /** Injected `@layerzerolabs/ovault-evm` SDK dependency */ ovaultSdk: IOVaultSdkDependency; /** Cross-chain vault configuration */ config: ICrossChainVaultConfig; /** Amount of shares to redeem (human-readable) */ amount: string; /** Decimals of the share token */ decimals: number; /** User's wallet address */ walletAddress: IAddress; /** viem Chain object for the hub chain (with RPC URLs) */ hubChain: unknown; /** viem Chain object for the source chain (with RPC URLs) */ sourceChain: unknown; /** Destination chain for assets */ destinationChainId?: number; /** Slippage tolerance in basis points (default: 100 = 1%) */ slippageBps?: number; /** Fee buffer percentage (default: 50) */ feeBufferPercent?: number; } /** * Result from a cross-chain fee/output quote. */ export declare interface IQuoteCrossChainResult { /** Native fee in wei (includes buffer) */ nativeFee: bigint; /** Expected output amount on destination */ dstAmount: bigint; /** Minimum output amount (after slippage) */ minDstAmount: bigint; /** Unix epoch (ms) when this quote was generated. */ quotedAt: number; /** Unix epoch (ms) after which this quote is stale. */ expiresAt: number; } /** * Refund status for failed cross-chain operations. * LayerZero may refund assets if delivery fails. */ export declare interface IRefundStatus { /** Whether a refund has been initiated */ refunded: boolean; /** Refund transaction hash (if available) */ refundTxHash?: string; /** Amount refunded in the source token's smallest unit */ refundAmount?: bigint; /** Chain ID where the refund was issued */ refundChainId?: number; } /** The revert shapes {@link decodeRevertData} distinguishes. */ export declare type IRevertKind = 'error-string' | 'panic' | 'custom' | 'unknown'; /** * Result of the public `GET /revert_reason` endpoint (backend `RevertResponse` * schema) — the decoded failure reasons for a reverted transaction, collected * from a `debug_traceTransaction` call tree. All three arrays are empty when * no matching signal was found in the trace. */ export declare interface IRevertReason { error_messages: string[]; revert_reasons: string[]; universal_subaccount_errors: string[]; } export declare type IRwaRedeemOptions = { /** RwaRedeemSubaccount contract address */ target: IAddress; /** User wallet address */ wallet: IAddress; /** Redeemable asset address (e.g. USDC, USDT) */ asset: IAddress; /** Amount of vault shares to redeem */ amount: string | bigint | number; /** Minimum output amount (slippage protection), in output asset decimals */ minOut: string | bigint | number; /** Decimals of the vault share token */ decimals: number; /** Decimals of the output/redeemable asset */ outputDecimals: number; /** Wait for transaction confirmation */ wait?: boolean; }; /** * `AUGUST_SDK_DISABLE_ANALYTICS=1` is the env equivalent of passing * `analytics: { enabled: false }`. Useful when partners can't easily plumb * config through (CI runners, ops scripts). */ export declare function isAnalyticsDisabledViaEnv(): boolean; /** * Check if analytics is enabled and initialized. */ export declare function isAnalyticsEnabled(): boolean; /** * `AUGUST_SDK_FORCE_ANALYTICS=1` bypasses the dev/test and localhost gates. * Used by our own smoke-test script and by partners deliberately exercising * telemetry in a non-prod environment. */ export declare function isAnalyticsForcedOnViaEnv(): boolean; /** * Whether attribution is configured at all, independent of any chain gate. * * Call sites that need to know whether to resolve a chain ID before asking * for the suffix use this; {@link getAttributionSuffix} applies the gate. * * @returns `true` when builder codes are configured. */ export declare function isAttributionEnabled(): boolean; /** Type guard. Works across realms (e.g. Web Worker / VM contexts). */ export declare function isAugustSDKError(err: unknown): err is AugustSDKError; /** * Bad transactions that should be ignored * these transactions are usually from tests and can skew data */ export declare const isBadTransaction: (hash: string, chainId: number) => boolean; export declare const isBadVault: (address?: string) => boolean; /** Runtime type guard for ChainType values (e.g. at API deserialization boundaries). */ export declare function isChainType(value: unknown): value is ChainType; /** Scheduled queued-withdrawal volume for a withdrawal-epoch date. */ export declare type IScheduledTransactionsByDate = { totalTransactions: bigint; /** Unix timestamp this date's queue is scheduled to execute. */ executionEpoch: bigint; }; /** * Check if an operation is cross-chain (needs LayerZero). * * An operation is cross-chain when: * - The user's chain differs from the hub chain, OR * - The destination chain differs from the hub chain * (e.g. deposit from hub but receive shares on a spoke) */ export declare function isCrossChainOperation(config: ICrossChainVaultConfig, userChainId: number, destinationChainId?: number): boolean; /** * Whether a vault is a registered LayerZero OVault and should route deposits * through the cross-chain flow. Address comparison is case-insensitive. * * @param vault - Vault contract address. * @returns `true` when the vault has an entry in * {@link CROSS_CHAIN_VAULT_CONFIGS}. */ export declare function isCrossChainVault(vault: IAddress): boolean; declare function isDevMode(): boolean; export declare function isEarlierThanNow(startTime: Date): boolean; /** * Is this error an **empty RPC response to an argument-free view call** — * i.e. a transport artefact wearing a revert's clothes? * * Why this is separate from {@link isRetryableRpcError}: when a provider * truncates or 500s a response to `eth_call`, ethers reports * `missing revert data (action="call", data="0x313ce567", …)` with a `null` * `data` field. That is byte-for-byte the shape of a genuine revert with no * reason string, so a general "transport" predicate cannot safely claim it — * doing so would retry every data-less `CALL_EXCEPTION` in the SDK. This * predicate narrows the claim to the one case where the ambiguity resolves: * a **deployed ERC-20's `decimals()`/`symbol()`/`name()`/`totalSupply()` cannot * legitimately revert**, because it takes no arguments and returns state fixed * at deployment. An empty response there is the provider's fault, full stop. * * A match requires all of: * 1. no revert evidence ({@link hasRevertEvidence}) — anything carrying real * revert `data`, an `execution reverted` message, or a failed receipt is out; * 2. a `missing revert data` message; * 3. an `action` of `call` or `staticCall` — a read, never a state change; * 4. **when a selector is derivable** from the error, that it is * `expectedSelector` (if given) or one of * {@link ARGUMENT_FREE_VIEW_SELECTORS}. When no selector can be recovered, * conditions 1–3 stand on their own. * * Note the cost of a false positive is bounded and small: the caller retries an * idempotent read a couple of times before surfacing the same error. The cost * of a false negative is the production flood this predicate exists to stop. * * @param error - The caught value, of unknown type. * @param expectedSelector - Optional `0x`-prefixed 4-byte selector the caller * knows it invoked (e.g. `'0x313ce567'` for `decimals()`). When supplied, the * error's own selector must match it — this stops a `decimals()` retry from * firing on an unrelated view call that happened to fail the same way. * @returns `true` when the failure is an empty provider response to a view call * that cannot revert, and is therefore safe to retry. * * @example * ```ts * try { return Number(await erc20.decimals()); } * catch (e) { * if (!isEmptyViewResponse(e, '0x313ce567')) throw e; // real problem * return Number(await erc20.decimals()); // provider blip * } * ``` */ export declare function isEmptyViewResponse(error: unknown, expectedSelector?: string): boolean; /** * Chain-ID validation for public SDK entry points. * * Two distinct failure modes are covered here, and they are deliberately kept * separate because they have different remediations: * * 1. **Unknown chain ID** — the caller passed an ID the SDK has no concept of * (a typo, a stale constant, an off-by-one on a non-EVM synthetic ID). No * configuration can make this work; the call site is wrong. * 2. **Known EVM chain, no RPC configured** — the ID is valid but the SDK was * constructed without a provider for it. Remediated by passing an RPC URL. * * Both used to be logged-and-ignored, letting execution continue with an * `undefined` RPC URL. That produced a cascade of misleading downstream * failures (`connect ECONNREFUSED 127.0.0.1:8545` from ethers' localhost * default, `missing revert data` from `decimals()` reads issued against the * wrong chain, and `TypeError: Cannot read properties of undefined`). Failing * fast at the boundary replaces that cascade with one actionable error. * * @module core/helpers/chain-support */ /** * Whether `chainId` is an EVM chain the SDK knows about (i.e. has an entry in * {@link NETWORKS}). * * @param chainId - Numeric chain ID to test. * @returns `true` for supported EVM chains, `false` for non-EVM synthetic IDs * (Solana, Stellar, Sui) and for anything unrecognised. */ export declare function isEvmChainId(chainId: number): boolean; /** * Is this error a routine on-chain read revert rather than a real failure? * * Reading a function a contract doesn't implement, or an address that holds no * (or incompatible) bytecode, reverts — a normal outcome when the SDK probes * heterogeneous vaults. Matches ethers' `CALL_EXCEPTION` code and the * message variants emitted by ethers and viem (`missing revert data`, * `execution reverted`, `call revert exception`, and the bare `reverted` * phrasing such as `the contract function "totalAssets" reverted`). * * Scope note: callers apply this on **read** paths only. A reverted *write* * (a tx that failed on-chain) is a genuine error and is intentionally not * demoted by this predicate's use in `write.actions`. * * @param error - The caught value, of unknown type. * @returns `true` when the failure is an expected/benign contract revert. * * @example * ```ts * try { return await vaultContract.maxDepositAmount(); } * catch (e) { * logChainError('maxDeposit', e, isExpectedRevertError(e)); * throw e; * } * ``` */ export declare function isExpectedRevertError(error: unknown): boolean; /** * Whether a vault's receipt token is hub-only (no cross-chain withdraw). * The deposit UI must not offer a spoke share destination for these vaults. * * @param vault - Vault contract address. * @returns `true` for vaults whose shares cannot leave the hub chain. */ export declare function isHubOnlyReceipt(vault: IAddress): boolean; /** Result of an {@link simulateCall} `eth_call` replay. */ export declare type ISimulateCallResult = { /** The call succeeded. */ ok: true; /** The raw return data of the call, `0x`-prefixed. */ returnData: string; } | { /** The call reverted or the node rejected it. */ ok: false; /** Fresh, untruncated revert blob when the node returned one. */ revertData?: string; /** {@link decodeRevertData} applied to `revertData`, when present. */ decoded?: IDecodedRevert; /** The underlying error message, for failures without revert data. */ errorMessage: string; }; export declare function isInsufficientFundsError(error: unknown): boolean; /** * Whether `chainId` is recognised by the SDK at all — either a supported EVM * chain or one of the non-EVM chain IDs in {@link NON_EVM_CHAIN_IDS}. * * @param chainId - Numeric chain ID to test. * @returns `true` when the ID maps to a chain the SDK can route to. */ export declare function isKnownChainId(chainId: number): boolean; /* Excluded from this release type: isMulticall3Supported */ /** * Whether a vault can take a native-ETH (chain-native token) SwapRouter * deposit — the pre-flight check for {@link depositNativeViaSwapRouter} and * {@link swapRouterDeposit} with a zero-address `depositAsset`. * * The on-chain SwapRouter only wraps native ETH to the chain's wrapped-native * token and deposits that — it has no ETH→other-asset swap leg (see * {@link SWAP_ROUTER_WRAPPED_NATIVE}). So a native deposit needs all three: a * SwapRouter deployed on `chainId`, the vault registered on that router with * the wrapped-native token as its `vaultInfo(vault).referenceAsset` (a * deposit into an unregistered vault reverts with `InvalidVault`), and the * vault's own on-chain `asset()` equal to that same token. Use this to gate a * "deposit ETH" UI option before the user picks it, instead of discovering * the answer via a thrown {@link AugustValidationError} or an on-chain revert. * * It checks configuration only — a deposit that passes this check can still * fail on balance, gas, a paused vault, or a deposit cap. * * Read-only and provider-agnostic (no signer required) — safe to call before * a wallet is connected. Makes no backend call. * * @param chainId - EVM chain ID the vault is deployed on. * @param vault - August vault address to check. * @param options - `rpcUrl` for `chainId`, passed to `createProvider`. * @returns `true` iff a SwapRouter exists on `chainId`, the vault is * registered on it with the wrapped-native reference asset, and the vault's * `asset()` is that token. `false` — never throws — for a chain with no * SwapRouter deployment, a missing/invalid `rpcUrl`, an unreadable vault or * router, an unregistered vault, or a vault whose reference asset isn't the * wrapped-native token. * @worstCaseRpcCalls 2 — the vault's `asset()` and the router's * `vaultInfo(vault)`, read in parallel. None on a chain with no SwapRouter. * @example * ```ts * const canDepositEth = await isNativeSwapRouterDepositSupported( * 1, * '0x1234000000000000000000000000000000005678', * { rpcUrl: 'https://eth-mainnet.example/v2/KEY' }, * ); * // true only if that vault is a router-registered WETH vault on mainnet * ``` */ export declare function isNativeSwapRouterDepositSupported(chainId: number, vault: IAddress, options: { rpcUrl: string; }): Promise; /** * True when `NODE_ENV` is `'development'` or `'test'`. The SDK auto-disables * analytics in these environments so partners' local dev runs and Jest suites * don't pollute the production Sentry project. * * `NODE_ENV` undefined / `'production'` / `'staging'` / anything else → false. */ export declare function isNodeDevOrTestEnv(): boolean; /* Excluded from this release type: isNonceParsing */ /** * Check if an error indicates a missing LayerZero peer configuration. */ export declare function isNoPeerError(errStr: string): boolean; /** * Input to {@link SolanaAdapter.vaultCancelRedeemRequest}. */ export declare interface ISolanaCancelRedeemRequestParams { /** The holder who made the request; only they may cancel it. */ wallet: PublicKey | string; /** The request account's address, as returned by `vaultRequestRedeem`. */ request: PublicKey | string; } export declare interface ISolanaConfig { rpcUrl: string; network: ISolanaNetwork; /** * Commitment for every Solana read *and* for the confirmation of every * Solana write, so the two always describe the same chain state. * * Defaults to `'finalized'` — unchanged from the commitment the SDK has * always inherited from the RPC. Pass `'confirmed'` for a markedly faster * round trip (seconds rather than tens of seconds), accepting that the state * you act on can still, in principle, be rolled back. * * Only read from this object. Configuring Solana through the legacy * `providers` map instead leaves the commitment at its default, since this * type requires `rpcUrl` and `network` alongside it. */ commitment?: Commitment; } declare interface ISolanaConnectionOptions { endpoint?: ISolanaRpcEndpoint; connection?: Connection; provider?: AnchorProvider; network?: ISolanaNetwork_2; } /** Solana networks the canonical august_vault program is actually deployed on. */ declare type ISolanaDeployedNetwork = keyof typeof programIds; /** * Slippage protection for {@link SolanaAdapter.vaultDeposit}. * * The SDK quotes the shares a deposit should mint from the vault's current * state and passes a floor to the program's `deposit_checked` instruction, * which reverts with `SlippageExceeded` if the share price moves past it * before execution. */ export declare interface ISolanaDepositOptions { /** * Tolerance below the quoted shares, in basis points (`0` to `10000`). * `0` demands the quote exactly. Ignored when `minSharesOut` is given. * @defaultValue 50 (0.5%) */ slippageBps?: number; /** * Explicit floor in raw share units, passed to `deposit_checked` as is. * Skips the quote and the single snapshot read it needs. `0n` restores the * unguarded behaviour of the plain `deposit` instruction. * * When the handler's `idl` predates `deposit_checked`, a non-zero floor or * any `slippageBps` throws {@link AugustValidationError} instead of being * silently dropped; with neither, the plain `deposit` is sent. * * Must be a `bigint` in `0 .. 2^64-1`; anything else throws * {@link AugustValidationError} before the transaction is built. */ minSharesOut?: bigint; } export declare type ISolanaNetwork = 'devnet' | 'mainnet-beta' | 'testnet' | 'localnet'; declare type ISolanaNetwork_2 = 'devnet' | 'mainnet-beta' | 'testnet' | 'localnet'; /** * Program ids deployed on one Solana network. `withdrawalQueue` is absent where * the queue program is not deployed yet (currently mainnet-beta). */ declare type ISolanaProgramIds = { vault: string; withdrawalQueue?: string; }; /** * Slippage protection for {@link SolanaAdapter.vaultRedeem}. * * The floor is measured **net of the withdrawal fee**, i.e. on what the wallet * actually receives, matching the program's `redeem_checked`. */ export declare interface ISolanaRedeemOptions { /** * Tolerance below the quoted net payout, in basis points (`0` to `10000`). * `0` demands the quote exactly. Ignored when `minAssetsOut` is given. * @defaultValue 50 (0.5%) */ slippageBps?: number; /** * Explicit floor in raw deposit-mint units, net of the withdrawal fee, * passed to `redeem_checked` as is. Skips the quote. `0n` restores the * unguarded behaviour of the plain `redeem` instruction. * * When the handler's `idl` predates `redeem_checked`, a non-zero floor or * any `slippageBps` throws {@link AugustValidationError} instead of being * silently dropped; with neither, the plain `redeem` is sent. */ minAssetsOut?: bigint; /** * Claim this withdrawal request instead of redeeming instantly: the request * account's address, as `id` on the entries `getVaultAvailableRedemptions` * returns. Its shares, recipient and vault come from the request, so the * `redeemShares` and `vaultAddress` arguments are ignored. The queue pays * at the share price of the moment it settles, held to the floor the request * was made with, so `slippageBps` and `minAssetsOut` must not be set * alongside it. * * Required on a vault with a withdrawal queue attached, which refuses a * direct redeem. See {@link SolanaAdapter.vaultRequestRedeem}. */ request?: PublicKey | string; } /** * Input to {@link SolanaAdapter.vaultRequestRedeem}. */ export declare interface ISolanaRequestRedeemParams { /** The vault's `VaultState` account address. */ vault: PublicKey | string; /** The holder, who signs, escrows the shares and pays rent for the request. */ wallet: PublicKey | string; /** Shares to escrow: `bigint` in raw share units, or `number` as a UI amount. */ amount: number | bigint; /** * Wallet to pay when the request is claimed; its deposit-token account is * created in the same transaction if it has none, at the holder's expense. * Defaults to the holder. */ recipient?: PublicKey | string; /** * The one key besides the holder that may claim the request, e.g. a keeper. * Defaults to anyone, which is what lets a keeper settle requests for * holders who do not come back. */ finalizer?: PublicKey | string; /** * The request's id, unique per holder while it is pending. Defaults to a * random `u64`; pass one only to choose it yourself. */ requestId?: bigint; /** * Tolerance below the quoted net payout, in basis points (`0` to `10000`). * The floor is fixed now and checked when the request is claimed, so it * guards against a fee rise or an AUM mark-down in between; yield earned in * the meantime only raises the payout. Ignored when `minAssetsOut` is given. * @defaultValue 50 (0.5%) */ slippageBps?: number; /** * Explicit floor on the net payout, in raw deposit-mint units, stored on the * request as is. Skips the quote. `0n` means no floor: the claim pays * whatever the shares are worth when it lands. * * Must be a `bigint` in `0 .. 2^64-1`; anything else throws * {@link AugustValidationError} before the transaction is built. */ minAssetsOut?: bigint; } /** * What {@link SolanaAdapter.vaultRequestRedeem} returns. */ export declare interface ISolanaRequestRedeemResult { /** The confirmed transaction's signature. */ signature: string; /** * The new request account's address: pass it as `request` to claim or * cancel. `getVaultAvailableRedemptions` lists it as `id`. */ request: string; /** The request id, as a decimal string (a `u64`). */ requestId: string; } declare type ISolanaRpcEndpoint = `https://${string}`; /** * Structural interface for the Solana adapter surface used by vault operations. * Avoids importing the concrete SolanaAdapter class to prevent circular dependencies. */ declare interface ISolanaService { connection: Connection; getVaultState: (vaultProgramId: any, idl: any, vaultAddress?: any) => Promise; fetchUserShareBalance: (publicKey: any, shareMint: any) => Promise; /** * Raw (BigInt-safe) variant. Required — `fetchUserShareBalance` alone * returns a JS-number `uiAmount` which is lossy and silently encodes * against 18 decimals when fed back through `toNormalizedBn` without an * explicit decimals argument. Every consumer that needs a correct * `walletBalance.raw` (positions, redemptions, max actions) MUST use this * entry point. * * Returns `{ amount, decimals }`: * - `amount` is the on-chain u64 as a base-units string (always set; * `'0'` when no balance / no account / no args / RPC failure). * - `decimals` matches the mint when a parsed `tokenAmount` is * available; otherwise **`null`**. `decimals === null` is the * "scale unknown" signal — callers must substitute a known decimals * value (typically the deposit mint's decimals from backend metadata) * before constructing an `INormalizedNumber`. Never throws. */ fetchUserShareBalanceRaw: (publicKey: any, shareMint: any) => Promise<{ amount: string; decimals: number | null; }>; /** * Canonical program id for this service's network, as * `SolanaAdapter.getProgramId`. Optional so a hand-built service keeps * working: without it the withdrawal-queue reads are skipped, and vaults and * positions come back without queue data. */ getProgramId?: (type: 'vault' | 'withdrawalQueue') => string; /** * This service's network, as `SolanaAdapter.network`. When present, the * withdrawal-queue reads look the queue program up in `programIds` directly * instead of calling `getProgramId`. */ network?: ISolanaNetwork; } export declare interface ISolanaVaultMetadata { vault_state_pda: string; share_mint: string; deposit_mint: string; deposit_token_symbol?: string; deposit_token_decimals?: number; program_id?: string; } declare interface ISolanaVaultState { operator: PublicKey | null; admin: PublicKey | null; shareMint: PublicKey | null; depositMint: PublicKey | null; feeRecipient: PublicKey | null; withdrawalFee: number | null; localAum: number | null; deployedAum: number | null; /** * Virtual-share offset the program prices with (a power of ten). Absent on * builds that predate it, and `0` on vaults created before it; read it * through `resolveShareOffset`, which maps both to the default. */ shareOffset?: BN | null; aumIncreaseLimit: number | null; aumDecreaseLimit: number | null; pdaBump: number[] | null; vaultVersion: number[] | null; paused: boolean | null; /** * The only key the vault accepts a redeem from, or the default (all-zero) * public key when no withdrawal queue is attached. When set it is this * vault's withdrawal-queue PDA: a direct holder redeem is refused with * `WithdrawalQueueRequired` (6021), and holders exit through the queue * instead. Vaults created before the queue existed read the default key. */ withdrawalQueueAuthority: PublicKey | null; /** * Number of registered operator subaccounts. Non-zero means operator * transfers must go to a registered subaccount; `0` on vaults created before * subaccounts existed, and on every mainnet vault today. */ subaccountCount: BN | null; /** * Raw deposit-mint units taken out to subaccounts and not yet returned, * across all of them. Distinct from `deployedAum`, which the operator marks * without moving tokens. Informational: nothing on-chain trusts it. */ deployedPrincipal: BN | null; } /** Returns `true` when the quote should be refreshed before submitting. */ export declare function isQuoteStale(quote: Pick, now?: number): boolean; /** * Check if an error is network-related and suitable for retry. * Identifies timeouts, connection resets, and fetch failures. */ export declare function isRetryableError(error: Error): boolean; /** * Is this error a transient RPC **transport** failure that is safe to retry, * rather than a decision the chain made? * * Why this exists: the SDK's write paths poll `eth_getTransactionReceipt` to * confirm a broadcast transaction. When the provider hiccups mid-poll, ethers * surfaces `could not coalesce error (error={ "code": -32603, … "method": * "eth_getTransactionReceipt" … })`. Historically that propagated out of * `safeWaitForTx` and the SDK reported the write as **failed** — even though * the transaction was broadcast, its hash was known, and it mined fine. Users * then retried and hit `ERC20InsufficientBalance` because the first attempt had * in fact succeeded. Classifying the failure as transport-level lets callers * re-poll instead of lying to the user. * * Matches, in order of precedence: * 1. **Veto** — anything with revert evidence ({@link hasRevertEvidence}: * `CALL_EXCEPTION` carrying revert `data`, an `execution reverted` message, * or an attached `receipt.status === 0`) returns `false`. Nodes reuse * `-32603`/`-32000` for real reverts, so the veto must come first. * 2. JSON-RPC / ethers transport codes — see `RETRYABLE_RPC_CODES`. * 3. HTTP `429` and any `5xx` carried on the error. * 4. Transport message fragments — see `RETRYABLE_RPC_PHRASES`. * * Retrying is only safe for **idempotent** work: re-reading an immutable value * (`decimals()`) or re-polling a receipt for a hash that is already on the * wire. Never use this to re-send a transaction. * * @param error - The caught value, of unknown type. * @returns `true` when the failure is a transient transport fault worth * retrying with backoff; `false` for chain-level decisions (reverts) and for * anything unrecognised — the safe default is to surface the error. * * @example * ```ts * try { * return await provider.waitForTransaction(hash, 1, 120_000); * } catch (e) { * if (!isRetryableRpcError(e)) throw e; // real revert — surface it * await sleep(250); * return await provider.waitForTransaction(hash, 1, 120_000); * } * ``` */ export declare function isRetryableRpcError(error: unknown): boolean; /** * Check if a string is a valid Solana base58 address (including PDAs). * Returns `false` for EVM hex addresses. */ declare function isSolanaAddress(address: string): boolean; /** * Check if a string is a valid Stellar address. * Muxed accounts (M prefix, per SEP-0023) are intentionally excluded — they are * not valid vault or contract addresses. */ declare function isStellarAddress(address: string): boolean; /** * Whether {@link IAttributionConfig.strictOrigin} is set on the SDK instance. * * @returns `true` when an unregistered origin code must fail a deposit. */ export declare function isStrictOrigin(): boolean; /** * Whether a vault is eligible for the any-token `SwapRouter` deposit surface * (the SwapRouter is `enableVault`-ed for it on-chain). Address comparison is * case-insensitive. * * This gates the (flag-controlled) swap-router deposit UI and can fail-fast a * {@link swapRouterDeposit} call. It does **not** affect {@link vaultDeposit}, * which never swaps (see `getDepositRoute` for when it uses the router). * * @param vaultAddress - August vault address. * @returns `true` when the vault is in {@link SWAP_ROUTER_ELIGIBLE_VAULTS}. * @deprecated Superseded by {@link getSwapRouterEligibleVaults}, which resolves * eligibility from the router's on-chain `VaultEnabled` history + current * `vaultInfo` registration instead of this static snapshot. Kept functional as * the zero-RPC sync fallback (seed data, fail-fast checks); migrate UI gates * to the async resolver. */ export declare function isSwapRouterEligible(vaultAddress: IAddress): boolean; /** * Stellar-specific configuration for `new AugustSDK({ stellar })`. All * fields are optional — omit it entirely to target Stellar mainnet through the * SDK's built-in public Soroban RPC endpoints. */ export declare interface IStellarConfig { /** * Override Soroban RPC endpoint (e.g. a consumer's keyed Alchemy URL). When * set it becomes the primary, with the SDK's built-in public endpoints kept * behind it as failover. Optional — omit to use the public endpoints. */ rpcUrl?: string; /** Stellar network; defaults to mainnet when omitted. */ network?: IStellarNetwork; } /** Parameters for building an unsigned Stellar vault deposit transaction. */ declare interface IStellarDepositParams { contractId: string; amount: string; senderAddress: string; network: IStellarNetwork; /** * Optional override Soroban RPC endpoint (e.g. a keyed Alchemy URL). When set * it is the primary, with the SDK's public endpoints kept behind it as * failover. */ sorobanRpcUrl?: string; } export declare type IStellarNetwork = 'mainnet' | 'testnet'; /** Parameters for building an unsigned Stellar vault redeem transaction. */ declare interface IStellarRedeemParams { contractId: string; shares: string; receiverAddress: string; network: IStellarNetwork; /** * Optional override Soroban RPC endpoint (e.g. a keyed Alchemy URL). When set * it is the primary, with the SDK's public endpoints kept behind it as * failover. */ sorobanRpcUrl?: string; } /** * User vault position returned by on-chain balance queries. * * `decimals` carries the share-token scale used to interpret `shares`. When the * on-chain `decimals()` read fails, it falls back to STELLAR_FALLBACK_DECIMALS * (7) and `decimalsFromFallback` is set to `true`. Callers that size a redeem * from this position MUST check `decimalsFromFallback` and refuse to settle * when it is `true` — trusting a fabricated 7 against an ERC4626 offset vault * (share decimals = asset + offset) under-redeems by `10^offset`. */ declare interface IStellarUserPosition { /** Raw share balance in smallest unit, as a non-negative integer string */ shares: string; /** Share-token decimals; may be the fallback — see `decimalsFromFallback`. */ decimals: number; /** * `true` when `decimals` is the fallback (the on-chain `decimals()` read * failed), `false` when it is the authoritative on-chain value. Treat `true` * as a decimals read failure: do not trust `decimals` to scale or redeem. * * Optional for source back-compat (a consumer's existing object literal still * compiles), but `getStellarUserPosition` always populates it — so a position * obtained from the SDK never omits it. */ decimalsFromFallback?: boolean; } export declare 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; } /** * Cross-chain DeBank protocol positions for a subaccount and its associated * strategies (backend `SubaccountDebankAccountData` schema). `strategies` is * keyed by strategy address. This endpoint is slow (300-second server-side * cache) as it fans out across every supported chain. */ export declare interface ISubaccountDebank { subaccount: ISubaccountDebankData; strategies: Record; } /** * DeBank positions and tokens for a single account (backend * `DebankAccountData` schema). `positions`, `app_positions`, and `tokens` * are passed through as raw DeBank objects. */ export declare interface ISubaccountDebankData { positions: unknown[]; app_positions: unknown[]; tokens: unknown[]; } /** * One transaction record from `GET /transactions/v2` (backend * `TransactionAPIRead` schema). `chain` is the numeric August chain id; * `value` is decimal-adjusted; `timestamp` is a Unix epoch (seconds). * `from_` mirrors the backend field name (`from` is reserved). Nested * `logs` / `transfers` / `function_signature` / `otc_cashflow` are passed * through as-is. `transaction_name` is the resolved function name (or the raw * selector when unknown). */ export declare interface ISubaccountTransaction { id: string; tx_hash: string; chain: number; from_: IAddress; to: IAddress; value: number; block_number: number; timestamp: number; selector: string | null; logs: unknown[]; transfers: unknown[]; function_signature: Record | null; otc_cashflow: Record | null; transaction_name: string | null; } export declare interface ISubgraphBase { id: string; contractId_: IAddress; timestamp_: string; transactionHash_: IAddress; block_number: string; } export declare interface ISubgraphDeposit extends ISubgraphBase { assets: string; sender: IAddress; shares: string; owner: IAddress; senderAddr?: IAddress; amountIn?: string; /** * Deposit asset token address (evm-2 / pre-deposit vaults). The deposited * asset can differ from the vault's underlying and carry different decimals * (e.g. RLUSD at 18 into a 6-decimal sentUSD vault), so `amountIn` must be * normalized against this token's decimals, not the vault's. Absent for * single-asset vaults. */ assetIn?: IAddress; } export declare interface ISubgraphFormattedLoan { amount: INormalizedNumber; address: IAddress; apr: number; collateral: IAddress; repaid: INormalizedNumber; borrower: IAddress; } export declare interface ISubgraphFormattedPool { decimals: number; symbol: string; name: string; asset: IAddress; totalSupply: INormalizedNumber; totalAssets: INormalizedNumber; maxSupply: INormalizedNumber; globalLoansAmount: INormalizedNumber; getTotalLoansDeployed: INormalizedNumber; withdrawalFee: INormalizedNumber; chainId: number; address: IAddress; managementFee: number; underlying: { address: IAddress; chain: number; }; loansOperator: IAddress; loans: ISubgraphFormattedLoan[]; } /** * A `ReserveDeposit(account, shares, assets)` event: a deposit that mints * shares to `account` without an ERC-4626 `Deposit` event. High Growth ETH * emits it for deposits made through Kelp's gain adapter. */ export declare interface ISubgraphReserveDeposit extends ISubgraphBase { account: IAddress; shares: string; assets: string; } export declare interface ISubgraphTransfer extends ISubgraphBase { from: IAddress; to: IAddress; value: string; } export declare interface ISubgraphUserHistoryItem extends ISubgraphBase { address: IAddress; amount: string; type: 'withdraw-request' | 'deposit' | 'withdraw-processed'; decimals?: number; isInstant?: boolean; /** * Receipt-token (vault share) amount burned, raw base units. Present on * withdraw-request rows: an async withdrawal burns shares up front, but the * assets ultimately received are only known once the request settles (share * price can move). Consumers showing a pending request should surface these * shares (the concrete on-chain fact) rather than the request's `assets` * preview. Absent on deposits and settled withdraws. */ shares?: string; /** * Deposit asset token address, when known. Pre-deposit vaults accept * multiple deposit assets with differing decimals (e.g. USDS at 18, * USDC at 6), so `amount` cannot be normalized with the vault's own * decimals alone — consumers (notably lifetime PnL) key off this address * to resolve the correct per-asset decimals and USD price. Absent for * single-asset vaults, where the vault `decimals` is correct. */ assetIn?: IAddress; } export declare interface ISubgraphWithdraw extends ISubgraphBase { receiver: IAddress; sender: string; assets: string; } export declare interface ISubgraphWithdrawProccessed extends ISubgraphBase { processedOn: string; requestedOn: string; receiverAddr: IAddress; assetsAmount: string; } export declare interface ISubgraphWithdrawRequest extends ISubgraphBase { day: string; month: string; year: string; shares: string; assets: string; receiverAddr: IAddress; ownerAddr: IAddress; } /** * Is this error a wallet/user rejection of a transaction or signature request? * * Detects ethers v6's `ACTION_REJECTED` code, the EIP-1193 `4001` * ("User rejected the request") code (top-level or nested), and the common * human-readable phrasings as a fallback for providers that omit a code. * * @param error - The caught value, of unknown type. * @returns `true` when the failure was the user declining in their wallet. * * @example * ```ts * try { await vault.deposit(...); } * catch (e) { * if (isUserRejectionError(e)) return; // user cancelled — not an error * throw e; * } * ``` */ export declare function isUserRejectionError(error: unknown): boolean; /** * Signer Compatibility Helpers * * Utilities for supporting both ethers and viem/wagmi signers. * Provides conversion layer from viem WalletClient to ethers Signer. */ /** * Type guard to check if a signer is from viem/wagmi * @param signer The signer to check * @returns True if the signer is a viem WalletClient */ export declare function isViemWalletClient(signer: any): boolean; /** * Options for `swapAndDeposit` — ERC-20 in, vault reference asset out. */ export declare interface ISwapAndDepositOptions extends ISwapRouterBaseOptions { /** One or more swap legs. Capped by the contract's `MAX_SWAPS`. */ swaps: ISwapParams[]; } /** * One swap leg passed to `SwapRouter.swapAndDeposit`. * * The router pulls `amountIn` of `tokenIn` from the caller, approves the * configured `tokenTransferProxies[router]` address, and calls `router` with * `payload`. Output is measured by balance-diff and must clear `minAmountOut` * or the call reverts with `SlippageError`. * * For a single-hop swap, `tokenOut` is typically the vault's reference asset. * For multi-hop, intermediate legs use any whitelisted token. */ export declare interface ISwapParams { /** ERC-20 address pulled from the caller. Must be whitelisted via `whitelistedTokens`. */ tokenIn: IAddress; /** ERC-20 address the router is expected to produce. */ tokenOut: IAddress; /** Input amount in `tokenIn`'s smallest unit (no decimals). */ amountIn: bigint; /** Minimum acceptable `tokenOut` output. Below this the call reverts. */ minAmountOut: bigint; /** Whitelisted DEX router target (enabled via `enableRouter`). */ router: IAddress; /** ABI-encoded calldata to invoke on `router`. */ payload: `0x${string}`; } /** Quote-provider discriminant. Will widen as new providers are added. */ export declare type ISwapQuoteProvider = 'paraswap'; /** * Input to {@link fetchSwapQuote}. */ export declare interface ISwapQuoteRequest { /** EVM chain ID where the swap will execute. */ chainId: number; /** ERC-20 the user holds. */ srcToken: IAddress; /** `srcToken.decimals()`. */ srcDecimals: number; /** ERC-20 the SwapRouter should produce — typically the vault's `referenceAsset`. */ destToken: IAddress; /** `destToken.decimals()`. */ destDecimals: number; /** Input amount in `srcToken`'s smallest unit. */ amount: bigint; /** * Address that will execute the resulting calldata. For SwapRouter use, * pass the SwapRouter's address — the aggregator's calldata is bound to * this address, so it must hold the tokens at swap time. */ receiver: IAddress; /** * Slippage tolerance in bps (1 bp = 0.01%). Defaults to 100 (1%). Must be * in `[0, 10_000)` — 10_000 disables protection entirely and is rejected. */ slippageBps?: number; /** * Optional aggregator contract-method filter. When set, the aggregator is * constrained to this single method (ParaSwap's `/prices` * `includeContractMethods`), so the returned calldata's leading 4-byte * selector is deterministic — required when the on-chain SwapRouter only * authorizes one selector per router. When omitted, the aggregator picks the * optimal method freely and the selector may vary between quotes. */ contractMethod?: string; /** Aggregator partner key. Defaults to `'august'`. */ partner?: string; /** Aggregator partner-fee receiver. Defaults to the August partner address. */ partnerAddress?: IAddress; /** * `fetch`-compatible function override. Defaults to `globalThis.fetch`. * Exposed so callers in Node environments lacking a global `fetch` can * inject one, and so tests can mock without touching the global. */ fetchImpl?: typeof fetch; /** Optional AbortSignal to cancel the in-flight Paraswap requests. */ signal?: AbortSignal; } /** * Output of {@link fetchSwapQuote}. The `router` + `payload` pair maps * directly into one entry of an `ISwapParams[]` passed to * `SwapRouter.swapAndDeposit`. * * Modeled as a discriminated union on `provider` so adding 1inch/0x is an * additive change rather than a breaking widening. */ export declare type ISwapQuoteResult = { /** Quote provider that produced this calldata. */ provider: 'paraswap'; /** DEX router that will execute the swap (the contract `payload` is calldata for). */ router: IAddress; /** ABI-encoded calldata for `router`. */ payload: `0x${string}`; /** Expected output in `destToken` units before slippage. */ expectedAmountOut: bigint; /** Slippage-adjusted minimum output. Below this the on-chain call reverts. */ minAmountOut: bigint; /** * Epoch ms when the quote was fetched. Callers that prefetch a quote * before submitting should re-fetch when this is older than ~60s — DEX * pool state moves and a stale `minAmountOut` may have been computed * against a price that no longer holds. */ fetchedAt: number; }; /** * Common options shared by every public SwapRouter SDK method. */ export declare interface ISwapRouterBaseOptions { /** EVM chain ID — must have an entry in `SWAP_ROUTER_ADDRESSES`. */ chainId: number; /** August vault address. Must be registered via `enableVault` on the router. */ vault: IAddress; /** Address that receives the minted vault shares. */ receiver: IAddress; /** * 32-byte origin/referral code registered via `addOrigin`. Drives the * origin-fee accrual. Defaults to the SDK instance's `attribution.originCode` * when omitted on Ethereum mainnet, else {@link ORIGIN_CODES.default}. A code * passed here that is not registered throws before any approval; an * unregistered instance code falls back to the sentinel with an * `attribution-skipped` warning (or throws under `attribution.strictOrigin`). */ originCode?: `0x${string}`; /** When `true`, the helper awaits a single confirmation before returning. */ wait?: boolean; } /** * Options for {@link swapRouterDeposit} — the high-level, explicit SwapRouter * deposit entry point. It reads the vault's reference asset and decimals * on-chain, then picks the correct router path from `depositAsset`, so callers * do not hand-build swap legs or pre-resolve decimals themselves. * * `vaultDeposit` never swaps; this is the explicit, opt-in entry point for * swap deposits, so a vault is never silently routed through a swap it does * not need — the failure mode that broke native multi-asset deposits when * `vaultDeposit` still auto-routed allowlisted vaults. * * Unlike {@link ISwapRouterBaseOptions}, `receiver` is optional here and * defaults to the signer's resolved EOA. */ export declare interface ISwapRouterDepositOptions extends Omit { /** * Token being deposited, held by the signer. Its relationship to the vault's * reference asset selects the router path: * - equals the reference asset → direct router deposit (no swap); * - the zero address → native-token deposit (only when the reference asset * is the chain's wrapped-native token); * - any other ERC-20 → a swap to the reference asset via the chain's * whitelisted DEX aggregator, bundled into the deposit. */ depositAsset: IAddress; /** Amount in `depositAsset`'s smallest unit (decimal string or bigint). */ amount: string | bigint; /** Address that receives the minted shares. Defaults to the signer's EOA. */ receiver?: IAddress; /** * Max slippage in basis points for the swap leg. Only used when `depositAsset` * differs from the reference asset; passed through to the swap quote, whose * own default applies when omitted. */ slippageBps?: number; } /** * Real, on-chain outcome of a SwapRouter deposit, decoded from the vault's own * `Deposit` event (the SwapRouter contract itself emits no deposit/amount-out * event — see {@link getSwapRouterDepositResult}). For a swap deposit this is * the actual post-swap amount that reached the vault, which can differ from * the pre-trade quote a UI shows before the user submits. */ export declare interface ISwapRouterDepositResult { /** Raw amount of the vault's reference asset recorded as deposited (reference-asset decimals). */ amountOut: bigint; /** Raw vault shares minted to the receiver (share-token decimals). */ sharesOut: bigint; } /** * Options for {@link getSwapRouterDepositResult} — resolves the real, * post-execution outcome of a SwapRouter deposit from its mined transaction * receipt, rather than the pre-trade quote shown before submission. */ export declare interface ISwapRouterDepositResultOptions { /** Hash of a mined SwapRouter deposit transaction (e.g. from {@link swapRouterDeposit}). */ txHash: string; /** The vault that was deposited into — isolates its own `Deposit` event from the router's unrelated logs. */ vault: IAddress; } /** * Options for `depositViaSwapRouter` — direct deposit (no swap) of an * already-held asset, routed through the SwapRouter so origin/swap-fee * accounting still applies. */ export declare interface ISwapRouterDirectDepositOptions extends ISwapRouterBaseOptions { /** Deposited ERC-20 asset. For ERC-4626 vaults this must equal the reference asset. */ asset: IAddress; /** Amount in `asset`'s smallest unit. */ amount: bigint; } /** * Options for `depositNativeViaSwapRouter` — wraps `msg.value` to the * chain's wrapped-native token and deposits. Only valid when the vault's * reference asset equals `wrappedNativeTokenAddress`. */ export declare interface ISwapRouterNativeDepositOptions extends ISwapRouterBaseOptions { /** Native token amount in wei. Sent as `msg.value`. */ amount: bigint; } /** * Checks if an address is whitelisted on a whitelist contract * @param signer - signer / provider object * @param options - object including whitelist contract address and wallet address to check * @returns boolean indicating if the address is whitelisted */ export declare function isWhitelisted(signer: IContractRunner, options: { whitelist: IAddress; wallet: IAddress; }): Promise; /** * One timelock request from `GET /timelock-requests` (backend * `ITimelockRequestRead` schema). `chain_id` is the numeric chain id; * `status` is one of `"scheduled" | "executed" | "cancelled"`; `params` is a * free-form JSON object; datetime fields are ISO-8601 strings. */ export declare interface ITimelockRequest { id: string; hash: string; vault_address: IAddress; timelock_address: IAddress; chain_id: number; action_id: string; params: Record; status: string; schedule_tx_hash: string; execute_tx_hash: string | null; cancel_tx_hash: string | null; submitted_by: string | null; scheduled_at: string; resolved_at: string | null; created_at: string | null; updated_at: string | null; } export declare 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; /** * Display buffer in seconds added on top of the on-chain lag for the * withdrawal period shown to users. Null when not configured. */ withdrawal_margin_seconds?: number | null; /** * IAT trader wallet addresses for the vault. Address format follows the * vault's chain (EVM hex / Solana base58 / Stellar). Null when not * configured. */ iat_traders?: string[] | null; historical_apy: Record | null; /** * Compound-annualized historical APY keyed by horizon in days (1/7/30), as * decimal fractions (0.0795 = 7.95%). Same shape and per-horizon null * semantics as `historical_apy`. Absent on older/cached responses. */ historical_compound_apy?: Record | null; /** @deprecated Use getVaultHistoricalTimeseries instead */ historical_snapshots?: IHIstoricalSnapshot[]; max_drawdown: number | null; daily_pnl_per_share: Record; latest_reported_tvl: number | null; /** * Set when this vault is a wrapper: the address of the inner vault it * deposits into. null/absent = not a wrapper. A wrapper's TVL is already * counted in its underlying vault, so platform totals skip it. */ underlying_vault_address?: string | null; /** Chain of the underlying vault; null/absent when not a wrapper. */ underlying_chain?: number | null; cached_at?: string | null; /** * Per-vault provenance timestamps (APY recompute, newest share-price snapshot, * response assembly). Absent on older/cached responses predating the backend * change that added it. */ freshness?: ITokenizedVaultFreshness | 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; /** Controls APY display behaviour in the UI; null when the server has not set an override. */ apy_override: IApyOverride | null; } export declare interface ITokenizedVaultEoaOperator { address: string; id: string; name: string; } /** * Per-vault provenance timestamps returned by the backend on every tokenized-vault * read (list and single-vault, on both the `api.augustdigital.io/tokenized_vault` * and `api.upshift.finance/tokenized_vaults` surfaces). * * The three stamps describe *different* pipelines and are independently nullable — * one of them cannot stand in for another. Consumers use the ordering between them * to detect that the vault's share price has moved ahead of its APY: a * `share_ratio_snapshot_at` later than `apy_computed_at` means a share-price * snapshot has landed that the APY has not yet been recomputed from. * * All values are RFC 3339 UTC strings with a trailing `Z` (e.g. * `'2026-07-25T00:01:46Z'`). The trailing `Z` matters: `new Date()` parses an * offset-less date-time as *local* time, which would silently shift the stamp by * the viewer's UTC offset. * * @see ITokenizedVault.freshness */ export declare interface ITokenizedVaultFreshness { /** * When `historical_apy`, TVL and drawdown were last recomputed, or null if they * have never been computed for this vault. */ apy_computed_at: string | null; /** * `snapshot_datetime` of the newest persisted share-price snapshot, or null when * the vault has no snapshot yet. * * The backend stamps this from a scalar `max(snapshot_datetime)`, so it is * populated independently of `load_snapshots` — including on the basic and * sub-accounts views (`load_snapshots=false`), which is what every app call site * sends. Never substitute another timestamp for it. */ share_ratio_snapshot_at: string | null; /** * When the backend assembled the response body, before it entered the backend's * own response cache. Distinct from the top-level `cached_at` only in scope: * this one travels with the vault object. */ cached_at: string | null; } export declare interface ITokenizedVaultOperator { address: `0x${string}`; operator_type: IOperatorTypeEnum; } export declare 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 declare 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 declare interface ITokenizedVaultReward { tokenizedvault_id: string; id: string; text: string; img_url: string; multiplier: number; created_at: string; start_datetime: string; } export declare interface ITokenizedVaultStrategist { strategist_name: string; strategist_logo: string; /** URL of the strategist's website, or null if not provided. */ website_url: string | null; id: string; } export declare interface ITokenizedVaultSubaccount { address: string; strategist: ITokenizedVaultStrategist; } /** Snapshot of a holder's token state returned by {@link readTokenState}. */ export declare interface ITokenState { /** Token symbol, when the contract implements `symbol()`. */ symbol?: string; /** Token decimals, when the contract implements `decimals()`. */ decimals?: number; /** The holder's raw balance in base units, when `balanceOf` resolved. */ balance?: bigint; /** Raw allowance from holder to `spender`, only probed when `spender` was given. */ allowance?: bigint; /** * Whether the holder is frozen/blacklisted by the token issuer, from the * first compliance getter the token implements (`isAccountFrozen` — Agora * AUSD, `isBlacklisted` — USDC-style, `isFrozen`). `undefined` when the * token exposes none of them — which is NOT evidence the holder is clear, * only that the token has no recognized compliance getter. */ frozen?: boolean; } /** One (date, protocol) allocation point (backend `AllocationPoint`). */ export declare interface ITransparencyAllocationPoint { /** `YYYY-MM-DD`. */ date: string; protocol: string; strategy_category: ITransparencyStrategyCategory; usd_value: number; /** Fraction of TVL (0.25 = 25%). */ pct_of_tvl: number; } /** Smoothed 7D-APY series (backend `historical_apy/chart`); labels are `M/D/YYYY`, values are decimal fractions (0.0245 = 2.45%). */ export declare interface ITransparencyApySeries { labels: string[]; values: number[]; average_apy?: number | null; } /** Category pill of an audit-log entry (backend `AuditLogCategory` enum). */ export declare type ITransparencyAuditCategory = 'Strategy' | 'Role' | 'Permission' | 'Attestation'; /** * One page of the governance audit log, newest first. Paginate with * `before` = the last entry's `timestamp` while `has_more` is true. */ export declare interface ITransparencyAuditLog { vault_address: IAddress; chain_id: number; entries: ITransparencyAuditLogEntry[]; has_more: boolean; warnings: string[]; } /** One row of the governance audit log (backend `AuditLogEntryView`). `tx_hash` is set only for on-chain-backed events. */ export declare interface ITransparencyAuditLogEntry { /** Naive-UTC ISO timestamp (no offset) — pass back verbatim as the `before` cursor. */ timestamp: string; type: ITransparencyAuditCategory; summary: string; actor: string | null; vault_address: IAddress; tx_hash: string | null; } /** Vault fee configuration as shown on the Performance tab (backend `VaultFeesResponse`). `*_pct` fields are already percents (2 = 2%), unlike the `pct_of_*` fractions elsewhere. */ export declare interface ITransparencyFees { vault_address: IAddress; chain_id: number; management_fee_bps: number | null; management_fee_pct: number | null; performance_fee_ppm: number | null; performance_fee_pct: number | null; weekly_performance_fee_bps: number | null; 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; warnings: string[]; } /** Public-safe summary of one Fordefi transaction-policy rule. */ export declare interface ITransparencyFordefiPolicyRule { name: string; transaction_types: string[]; recipients: string[]; assets: string[]; action: string | null; } /** One integration the vault's wallets may operate, with unioned scopes (backend `VaultPermissionView`). */ export declare interface ITransparencyGovernancePermission { integration: string; protocol: string | null; /** null for chainless CeFi venue integrations. */ chain_id: number | null; tokens: string[]; functions: string[]; spenders: IAddress[]; wallets: IAddress[]; fordefi_policy_match: boolean; fordefi_policies: ITransparencyFordefiPolicyRule[] | null; } /** Governance tab → "Vault Permissions" table (backend `VaultPermissionsResponse`). */ export declare interface ITransparencyGovernancePermissions { vault_address: IAddress; chain_id: number; permissions: ITransparencyGovernancePermission[]; /** null = no policy workspace could answer (unknown, not empty). */ fordefi_policies: ITransparencyVaultFordefiPolicy[] | null; warnings: string[]; } /** One privileged address on the vault with custody enrichment (backend `VaultRoleView`). */ export declare interface ITransparencyGovernanceRole { role: 'owner' | 'operator'; address: IAddress; chain_id: number; is_safe: boolean; safe_threshold: number | null; safe_owners: IAddress[] | null; safe_nonce: number | null; has_fordefi_policy: boolean; /** Governed by the Upshift operator-policy engine (whitelisted integrations). */ has_august_policy: boolean; /** null = unknown/uncovered — distinct from an explicit 0. */ fordefi_policy_count: number | null; fordefi_policies: ITransparencyFordefiPolicyRule[] | null; safe_ui_url: string | null; } /** Governance tab → "Vault Roles" card (backend `VaultRolesResponse`). `warnings` lists enrichment failures (Safe / Fordefi lookups) that degraded rows rather than failing the call. */ export declare interface ITransparencyGovernanceRoles { vault_address: IAddress; chain_id: number; snapshot_at: string; roles: ITransparencyGovernanceRole[]; warnings: string[]; } /** Daily allocation history for the Performance tab's "Allocation Over Time" chart. */ export declare interface ITransparencyHistoricalAllocations { vault_address: IAddress; chain_id: number; /** ISO-8601 timestamp of the earliest snapshot, or null when there is none. */ history_from: string | null; points: ITransparencyAllocationPoint[]; } /** One protocol's positions inside a subaccount (backend `IntegrationGroupView`). */ export declare interface ITransparencyIntegrationGroup { /** Normalized DeFi slug, CeFi venue name, or `_idle` for undeployed wallet balances. */ protocol: string; chain_id: number; strategy_category: ITransparencyStrategyCategory; /** Wallet that physically holds the position. */ holding_address: IAddress; tokens: ITransparencyTokenExposure[]; total_usd: number; /** Fraction of the subaccount total (0.25 = 25%); can exceed 1.0 slightly by rounding. */ pct_of_subaccount: number; /** Minimum health factor across the grouped DeFi positions; null when none reports one. */ health_factor?: number | null; } /** * Latest position snapshot for a vault, grouped per wallet — the data behind * the Overview tab's strategy breakdown, backing composition, vault buffer and * per-wallet table (backend `VaultPositionsResponse`). * * `total_nav` is the mark-to-market NAV of all positions under the published * pricing methodology; `reported_tvl` is the vault-reported total assets * captured in the SAME snapshot (use it for a headline that matches the vault * contract). The vault's own liquidity buffer is `total_nav − Σ subaccounts[].total_usd`. */ export declare interface ITransparencyPositions { vault_address: IAddress; chain_id: number; /** ISO-8601 snapshot timestamp; every field on this response is from this instant. */ snapshot_at: string; total_nav: number; reported_tvl?: number | null; subaccounts: ITransparencySubaccount[]; } /** One point of a vault's unrealized-PnL / ratio series (backend `unrealized_pnl` record, `fields=ratio` projection). */ export declare interface ITransparencyRatioPoint { timestamp: string; /** Backing ÷ supply; > 1 means over-collateralized. Drives the Collateral Ratio chart. */ adjusted_redeem_ratio: number; /** Mark-to-market NAV — the "Backing Assets" series. */ actual_tvl: number; /** Vault-reported TVL — the "Supply" series. */ tvl_on_vault: number; } /** * Strategy bucket the backend assigns to a position group (backend * `StrategyCategory` enum). `Buffer / Idle` is undeployed wallet liquidity; * `CeFi` positions are the only ones not inspectable on-chain. */ export declare type ITransparencyStrategyCategory = 'Lending' | 'Yield Trading' | 'Staking / Vaults' | 'CeFi' | 'Buffer / Idle' | 'Unclassified'; /** One vault wallet with its positions (backend `SubaccountIntegrationsView`). */ export declare interface ITransparencySubaccount { subaccount_address: IAddress; label: string; type: 'subaccount' | 'eoa'; total_usd: number; /** Fraction of NAV (0.25 = 25%). */ pct_of_nav: number; integrations: ITransparencyIntegrationGroup[]; } /** One request in the vault timelock (backend `VaultTimelockView`). */ export declare interface ITransparencyTimelock { action_id: string; action_label: string; target_label: string; params: Record; status: ITransparencyTimelockStatus; proposer: string | null; /** Naive-UTC ISO timestamp. */ scheduled_at: string; /** null when the timelock duration could not be read on-chain (see `warnings`). */ executable_at: string | null; schedule_tx_hash: string; execute_tx_hash: string | null; cancel_tx_hash: string | null; timelock_address: IAddress; } /** Governance tab → "Pending Timelocks" table (backend `VaultTimelocksResponse`). */ export declare interface ITransparencyTimelocks { vault_address: IAddress; chain_id: number; timelocks: ITransparencyTimelock[]; warnings: string[]; } /** Lifecycle of a timelock request (backend `TimelockStatus` enum). */ export declare type ITransparencyTimelockStatus = 'scheduled' | 'executed' | 'cancelled'; /** One token leg of a position (backend `TokenExposureView`). */ export declare interface ITransparencyTokenExposure { symbol: string; /** Native token units; CeFi derivatives carry signed contract units. */ balance: number; /** USD value; negative for borrow legs. */ usd_value: number; role: ITransparencyTokenRole; } /** Role of a token leg inside a position. Borrow legs carry NEGATIVE `usd_value` and `balance`. */ export declare type ITransparencyTokenRole = 'supply' | 'borrow' | 'reward' | 'wallet'; /** One Fordefi transaction-policy rule attributed to the vault, with the vault wallets it targets. */ export declare interface ITransparencyVaultFordefiPolicy extends ITransparencyFordefiPolicyRule { wallets: IAddress[]; } /** * One unrealized-PnL snapshot for a vault, computed by the August backend * from periodic vault state. `timestamp` is an ISO-8601 datetime; monetary * fields are denominated in the vault's reference asset * (`referenceAsset`) except `assetPrice`, which is the asset's USD price. */ export declare type IUnrealizedPnlSnapshot = { timestamp: string; vaultName: string; vaultAddress: string; strategistName: string | null; referenceAsset: string; assetPrice: number; tvlOnVault: number; currentRedeemRatio: number; actualTvl: number; adjustedRedeemRatio: number; unrealizedPnl: number; unrealizedPnlInAsset: number; }; /** * User identity for analytics tracking. * Multiple identifiers are used with priority: apiKeyHash \> wallet \> domain \> fingerprint \> session */ export declare interface IUserIdentity { /** Hex-encoded SHA-256 hash of the API key. Never stores the raw key. */ apiKeyHash?: string; /** User's wallet address (lowercased) */ walletAddress?: string; /** Random UUID generated per SDK instance */ sessionId: string; /** Browser/environment fingerprint for cross-session tracking */ fingerprint?: string; /** Current environment */ environment: IEnv; /** Domain of the current environment */ domain?: string; } export declare interface IUserPoints { totalPoints?: number; referralEarnings?: number; pools?: Record; external?: Record; referrals?: Record; topVault?: { lifetimeDeposit?: number; address?: string; } | null; streak?: number; rank?: number | null; } export declare type IUserRoles = 'client' | 'admin' | 'dev' | 'internal'; export declare interface IVault { max_drawdown?: number | null; historical_apy?: Record | null; /** * Compound-annualized historical APY keyed by horizon in days (1/7/30), as * decimal fractions. Same shape and per-horizon null semantics as * `historical_apy`. Display is opted in per vault via * `apyOverride.is_show_compound_apy`; absent on older/cached responses. */ historical_compound_apy?: Record | null; /** @deprecated Use getVaultHistoricalTimeseries instead */ historical_snapshots?: IHIstoricalSnapshot[]; depositCap?: INormalizedNumber; maxDepositAmount?: INormalizedNumber; /** * Vault contract address. May be an EVM hex address, Solana base58 address, * or Stellar base32 address depending on the vault's chain. */ address: VaultAddress; chainId: number; name: string; logoUrl: string; receipt: { address: VaultAddress; symbol: string; decimals: number; }; description: string; startDatetime: string; status: 'active' | 'closed' | 'testing'; version: IVaultVersion; tags: string[]; isFeatured: boolean; isSpotlighted?: boolean; withdrawalOnly?: boolean; isVisible: boolean; reserveTarget: number; reserveTolerance: number; decimals: number; totalAssets: INormalizedNumber; totalSupply: INormalizedNumber; maxSupply: INormalizedNumber; operators: ITokenizedVaultOperator[]; eoa_operators: ITokenizedVaultEoaOperator[]; depositAssets: { address: VaultAddress; symbol: string; decimals: number; }[]; apy: IVaultApy; operator: IAddress; rewards: IVaultRewards; strategists: IVaultStrategist[]; fees: { management: number; isManagementWaived: boolean; managementFeeWaivedUntilDate: string | null; managementFeeWaivedUntilTvl: number | null; performance: number; isPerformanceWaived: boolean; performanceFeeWaivedUntilDate: string | null; performanceFeeWaivedUntilTvl: number | null; }; lagDuration: number; /** * Backend-configured display buffer in seconds added on top of * `lagDuration` for the withdrawal period shown to users. Null when the * backend has not set a value — consumers apply their own default. */ withdrawalMarginSeconds?: number | null; /** * IAT trader wallet addresses for the vault, from the backend * `iat_traders` field. Address format follows the vault's chain * (EVM hex / Solana base58 / Stellar). Null when not configured. */ iatTraders?: string[] | null; maxDailyDrawdown: number; risk: string; isWithdrawalPaused: boolean; isDepositPaused: boolean; idleAssets: INormalizedNumber; loans?: IVaultLoan[]; allocations?: IVaultAllocations; position?: IVaultPosition; linkOnly?: boolean; composabilityIntegrations?: Array<{ name: string; description: string; earningMultiplier: number; protocolUrl: string; logoUrl: string; tokenizedVaultId: string; id: string; }>; dailyPnlPerShare?: { timestamp: string; value: number; }[]; enabled_historical_price_horizons?: number[]; defaultApyHorizon?: 7 | 30 | null; latest_reported_tvl?: number | null; cachedAt?: string | null; /** * Provenance timestamps for the vault's server-side data — when its APY was last * recomputed, when its newest share-price snapshot was taken, and when the * backend built the response. Null (or a null member) when the backend did not * report that stamp; see {@link IVaultFreshness}. */ freshness?: IVaultFreshness | null; showCapFilled?: boolean | null; /** Controls how the vault's APY is displayed; null when the backend has not set an override. */ apyOverride?: IApyOverride | null; programId?: string; /** * Solana only: the vault's withdrawal queue, when it has one. Absent for * other chains and for Solana vaults that never had a queue. See * {@link IVaultWithdrawalQueue}. */ withdrawalQueue?: IVaultWithdrawalQueue; /** Instant redemption config, populated from backend instant_redeem_config */ instant_redeem_config?: { subaccountAddress: IAddress; outputAssetSymbol: string; redeemableAssets: Array<{ address: IAddress; symbol: string; decimals: number; spreadBps: number; }>; isPaused: boolean; availableLiquidity: number; } | null; } /** * Adapter configuration for vaults that support deposits with alternative tokens */ export declare interface IVaultAdapterConfig { lpTokenAddress?: IAddress; isNativeTokenDeposit: boolean; isWrappedTokenDeposit: boolean; wrappedTokenAddress?: IAddress; referralId?: IAddress | string; abi?: InterfaceAbi; wrapperAddress?: IAddress; viewAdapter?: IAddress; tokens?: IAddress[]; bridgeId?: number; } /** * @todo clean up to minimize data transfer * ```typescript * { * defi: IOctavfiPortfolio[] * cefi: IWSSubaccountCefi[] * otc: Record * breakdown: { // this will be total net values * defi: number; * cefi: number; * otc: number; * total: number; * } * } * ``` */ export declare interface IVaultAllocations { defi: IDebankProtocolExposure[]; /** * The vault's asset composition, in USD (`amount` is a dollar value). * * On Stellar this is Untangled's `byAsset` breakdown, which decomposes the * same `tvlUsd` that `defi` does along a different axis — assets rather than * venues. The two do not join: which venue holds which asset is not published, * so this is the only place a Stellar vault's assets are stated, and reading a * per-venue asset split out of `exposurePerCategory` is not supported for * multi-asset Stellar vaults. */ tokens: IDebankTokenExposure[]; cefi: IWSSubaccountCefi[]; unfilteredTokens: IDebankTokenExposure[]; otc: Record; exposurePerCategory?: IExposurePerCategory; netValue?: number; defiPerBorrower: Record<`0x${string}`, { exposure: any[]; positions: any[]; }>; } /** * Response for GET /tokenized_vault/annualized_apy/{vault_address} * * Supported Vaults: cUSDO, tETH, wstETH, rsETH * * @deprecated The `hgETH30dLiquidAPY` and `hgETH7dLiquidAPY` fields are deprecated. * These fields will be removed in the next major release. * Use `liquidAPY30Day` and `liquidAPY7Day` fields instead. */ export declare interface IVaultAnnualizedApy { vaultAddress: IAddress; liquidityApy: number; annualizedApy: number; /** @deprecated Use `liquidAPY7Day` instead. Will be removed in the next major release. */ hgETH7dLiquidAPY?: number; /** @deprecated Use `liquidAPY30Day` instead. Will be removed in the next major release. */ hgETH30dLiquidAPY?: number; liquidAPY7Day?: number; liquidAPY30Day?: number; } /** * A vault's APY breakdown. * * **Unit contract: every rate on this type is a PERCENTAGE, not a decimal * fraction.** `7.95` means 7.95%. The backend reports these as decimal fractions * (`0.0795`); the SDK multiplies by 100 exactly once, uniformly across every rate * field, before returning them. Consumers must therefore divide by 100 at most once * — and must apply the same treatment to `apy`, `liquidApy`, `pointsApy`, * `campaignApy` and `underlyingApy`, because they all arrive in the same unit. * * This is stated explicitly because the convention going undocumented let a * consumer scale a subset of these fields twice, making them contribute 1/100th of * their value to a displayed total. The unit is uniform here by * design; treating some of these fields as decimals and others as percentages is * always a bug on the consumer side. */ export declare interface IVaultApy { /** Base vault APY as a percentage (7.95 = 7.95%). */ apy: number; /** Human-readable note on how the APY is derived; empty or null when unset. */ explainer: string; /** Liquid-yield component as a percentage. */ liquidApy: number; /** Points-program APY as a percentage, or null when the vault has no points. */ pointsApy: number | null; /** Campaign-boost APY as a percentage, or null when no campaign is running. */ campaignApy: number | null; /** Claimable rewards, in the reward token's own units — not a percentage. */ rewardsClaimable: number; /** Compounded rewards, in the reward token's own units — not a percentage. */ rewardsCompounded: number; /** Underlying-asset APY as a percentage (e.g. staking yield on the deposit asset). */ underlyingApy: number; } export declare type IVaultAvailableRedemption = { id: string; hash: string; timestamp: number; receiver: IAddress; day: INormalizedNumber; month: INormalizedNumber; year: INormalizedNumber; amount: INormalizedNumber; date: Date; vault: IAddress; status?: VaultRedemptionStatus; /** * Solana withdrawal queue only: what claiming would pay now, in deposit-token * units and net of the vault's withdrawal fee. The payout is priced when the * request is claimed, so this moves with the share price. Absent when the * vault has no share price to quote. */ estimatedAssets?: INormalizedNumber; }; /** * Base configuration for vault operations. */ export declare interface IVaultBaseOptions { rpcUrl: string; env?: IEnv; augustKey?: string; subgraphKey?: string; chainId?: number; solanaService?: ISolanaService; /** * Optional Soroban RPC override (e.g. a keyed Alchemy URL) for Stellar vault * reads, threaded from the SDK's `stellar` config. Carries the network it was * configured for so it is only applied to matching-network vaults — a testnet * override must not be used for a mainnet read. Unset → built-in endpoints. */ stellarRpc?: { rpcUrl: string; network: IStellarNetwork; }; headers?: IWSMonitorHeaders; /** * Portfolio mode: when true, the per-vault EVM getter does NOT null out a * closed + invisible vault. Needed so a user's position in a closed, * invisible vault can still resolve its metadata. Defaults to undefined * (false) so marketplace/discovery reads keep hiding closed staging vaults. */ includeClosed?: boolean; } /** * One row of borrower-health-factor data for a vault. `health_factor` is * absent when the upstream August backend has no record for `borrower` * (e.g. test loans whose borrower is not a registered subaccount), or when * the per-borrower fetch failed — callers must handle the undefined case * rather than assume a numeric value is present. */ export declare interface IVaultBorrowerHealthFactor { borrower: IAddress; loan: IAddress; health_factor?: { datetime: string; health_factor: number; id: string; total_collateral_value: number; total_loan_value: number; }; } /** * Optional enrichment options for vault queries. */ export declare interface IVaultCustomOptions { loans?: boolean; allocations?: boolean; wallet?: IAddress; solanaWallet?: string; stellarWallet?: string; /** * Portfolio mode for a SINGLE vault read: when true, a `closed` + * `is_visible: false` vault resolves normally instead of coming back as * null. Needed by any caller reading ONE vault by address on behalf of a * holder — a position in a closed vault must still resolve its metadata, or * the holder is left with no way to act on it. * * The plural counterpart is {@link IGetVaultsOptions.includeClosed}; this is * the same flag on the per-address path. * * @default false */ includeClosed?: boolean; } /** * Response type for vault-level DeBank data. * Keys are subaccount addresses, values are either DeBank data or error objects. */ export declare type IVaultDebankResponse = Record; export declare type IVaultExposureItem = { amount: number; chain: string; decimals: number; exposureType?: string; id: string; logoUrl?: string; name: string; protocol?: string; symbol: string; /** DeBank `pool.id` of the portfolio item the token belongs to — tells * apart two positions in the same protocol holding the same token. */ poolId?: string; }; /** * Provenance timestamps for a vault's server-side data, mapped from the backend * `freshness` object. * * A vault's share price and its APY come from two different pipelines: the SDK * reads share price live from chain (`totalAssets()/totalSupply()`), while APY is a * backend column recomputed on a schedule. These stamps make the remaining gap * visible so a UI can render "data as of X" instead of implying both numbers are * equally current. * * The three fields are **independently nullable and independently meaningful** — * none of them is a fallback for another. In particular, when * `shareRatioSnapshotAt` is later than `apyComputedAt`, a share-price snapshot has * landed that the APY has not yet been recomputed from: that ordering is the * staleness signal. * * Every value is an RFC 3339 UTC string with a trailing `Z`, exactly as the backend * sends it — the SDK does not reformat or reinterpret them. Keep the `Z` if you * pass these anywhere: `new Date('2026-07-25T00:01:46')` (no `Z`) is parsed as * *local* time and silently shifts by the viewer's UTC offset. * * @example * ```ts * const vault = await sdk.vaults.getVault(address); * const { apyComputedAt, shareRatioSnapshotAt } = vault.freshness ?? {}; * // Only comparable when BOTH are present. * const apyLagsSharePrice = * !!apyComputedAt && * !!shareRatioSnapshotAt && * new Date(shareRatioSnapshotAt) > new Date(apyComputedAt); * ``` */ export declare interface IVaultFreshness { /** * When the backend last recomputed `historical_apy`, TVL and drawdown for this * vault. Null if never computed. */ apyComputedAt: string | null; /** * Timestamp of the newest persisted share-price snapshot the backend holds. Null * only when the vault has no snapshot yet. * * Populated regardless of whether the read loaded snapshots — the backend stamps * it from a scalar `max(snapshot_datetime)`, so it is present even on * `load_snapshots=false` reads (the basic and sub-accounts views). When it is * null, treat it as absent: do not fall back to `apyComputedAt` or `cachedAt` in * its place. */ shareRatioSnapshotAt: string | null; /** * When the backend assembled the response body this vault came from, before its * own response cache. Note this does **not** account for the SDK's client-side * LRU (10–15 min on `fetchTokenizedVault` / `fetchTokenizedVaults`), so a vault * served from that cache can be older than this stamp suggests is possible. */ cachedAt: string | null; } export declare type IVaultHistoricalParams = { daysAgo?: number; order?: IVaultOrderParam; interval?: 'days' | 'weeks' | 'months' | 'years'; }; export declare interface IVaultLoan { vault: VaultAddress; address: IAddress; lender: IAddress; borrower: IAddress; state: string; totalRepaid: number; principalToken: IWSTokenEntry; principalAmount: number; interestAmount: number; upcomingPayment: { amount: number; dueDate: string; }; apr: number; initialPrincipalAmount: number; deployedDate: string; paymentInterval: number; isIdleCapital: boolean; allocation: number; } /** * Response type for getVaultMetadata * Keys are lowercase of the symbol value */ export declare type IVaultMetadata = Record; /** * Vault metadata item from upshift API */ export declare interface IVaultMetadataItem { symbol: string; subgraph: string; address: string; /** * Subgraph indexing the vault's separate receipt token (evm-2 vaults), when * one is deployed. Absent for vaults whose shares are the vault token itself. */ receipt_subgraph?: string; } export declare type IVaultOrderParam = 'asc' | 'desc'; /** * Response for GET /vaults/\{vault_addr\}/pending-redemptions */ export declare interface IVaultPendingRedemptions { vault: { address: string; chainId: number; name: string | null; symbol: string | null; }; asset: { address: string; symbol: string | null; decimals: number | null; }; liquidity: { available: number; }; summary: { totalPending: number; pendingCount: number; pendingToLiquidityRatio: number | null; isLiquiditySufficient: boolean; shortfall: number | null; nextRedemptionDate: string | null; isOverdue: boolean; }; redemptionsByDate: Array<{ date: string; assets: number; daysUntilDue: number; isOverdue: boolean; }>; } /** * Performance-fee computation for a vault from * `GET /metrics/vault_performance_fees` (backend `UpshiftVaultPerformanceFees` * schema). High/low water marks are share-price levels; `*_datetime` fields * are ISO-8601 strings. `calculation_period` is `"YearToDate"` / * `"MonthToDate"` (null when a custom date range was supplied). */ export declare interface IVaultPerformanceFees { previous_water_mark: number; previous_water_mark_datetime: string; last_water_mark: number; last_water_mark_datetime: string; is_in_drawdown: boolean; asset_symbol: string | null; total_pnl_in_asset: number; total_perf_fees_asset: number; calculation_period: string | null; annualized_fees_pct: number; underlying_asset_vs_native_perf: number | null; native_token_symbol: string | null; } export declare interface IVaultPnl { totalPnl: INormalizedNumber; pnlUsd: number; } export declare interface IVaultPosition { vault: VaultAddress; status: string; availableRedemptions: IVaultAvailableRedemption[]; pendingRedemptions: IVaultAvailableRedemption[]; redeemable: INormalizedNumber; walletBalance: INormalizedNumber; } export declare type IVaultRedemptionHistoryItem = { receiver: IAddress; amount: INormalizedNumber; processed: Date; requested: Date; vault: IAddress; transactionHash?: string; }; /** * A single reward paired with its backend-provided logo. * * `id` is the reward's stable backend identifier ({@link ITokenizedVaultReward.id}) * and is the key consumers should join on — it is unique even when two rewards * share a multiplier and text. `label` is display-only: it mirrors the * corresponding {@link IVaultRewards.additionalPoints} string (and so carries a * leading space when `multiplier === 1`, e.g. `" Cores"`), so it is fine to * print but must not be treated as a unique key. * * `imgUrl` is `null` when the backend has no logo for the reward, in which * case consumers fall back to a bundled asset. */ export declare type IVaultRewardDetail = { id: string; label: string; text: string; imgUrl: string | null; multiplier: number; }; export declare type IVaultRewards = { points: string; multiplier: number; multipliers: { value: number; timestamp: number; }[]; additionalPoints: string[]; /** * Optional so this addition is non-breaking for external code that * constructs an {@link IVaultRewards}. `getVaultRewards` always populates it; * readers should treat an absent value as an empty list. */ additionalPointsDetailed?: IVaultRewardDetail[]; }; export declare interface IVaultStrategist { address: IAddress; logo: string; name: string; type?: string; website_url: string | null; } /** * Response for GET /tokenized_vault/vault_summary/{vault_address} */ export declare interface IVaultSummary { vaultAddress: IAddress; name: string; type: string; chain: string; recentReturns: { day: number; week: number; month: number; }; } export declare type IVaultUserHistoryItem = { timestamp: number; address: IAddress; amount: INormalizedNumber; pool: IAddress; chainId: number; type: 'withdraw-request' | 'deposit' | 'withdraw-processed' | 'redeem'; transactionHash: IAddress; /** * The token address that was actually deposited, when known. Pre-deposit * vaults accept multiple deposit assets (e.g. a sentUSD vault taking RLUSD, * USDC, and USDT), so the vault's own metadata cannot tell a consumer which * asset a given deposit used — only this per-row address can. UIs should * resolve the displayed asset symbol/logo from `assetIn` rather than assuming * the vault's first deposit asset. Absent for single-asset vaults and for * withdraw/redeem rows, where the vault's underlying asset applies. */ assetIn?: IAddress; /** * Receipt-token (vault share) amount burned on a withdraw **request**. An * async withdrawal burns shares immediately, but the assets received are not * known until the request settles (share price can drift), so `amount`'s * asset figure is only a preview. UIs rendering a pending request should show * these `shares` with the receipt symbol — the concrete on-chain fact — and * reserve the asset amount for the settled ("processed") row. Present only on * `withdraw-request` items. */ shares?: INormalizedNumber; }; export declare interface IVaultUserLifetimePnl { tokenSymbol: string; totalDeposited: INormalizedNumber; totalDepositedUsd: number; totalWithdrawn: INormalizedNumber; totalWithdrawnUsd: number; currentPositionValue: INormalizedNumber; currentPositionValueUsd: number; lifetimePnl: INormalizedNumber; lifetimePnlUsd: number; pnlPercentage: number; /** * The part of `totalDeposited` that is shares the wallet received from * another holder (a migration airdrop, a DEX purchase, a transfer from * another wallet), valued at the vault's share ratio on the day each * arrived. Zero when no such shares counted. Optional only so objects built * before it existed still type-check; `getVaultUserLifetimePnl` always sets * it. */ receivedByTransfer?: INormalizedNumber; /** `receivedByTransfer` in USD, at the same price as the other USD fields. */ receivedByTransferUsd?: number; } export declare type IVaultVersion = 'evm-0' | 'evm-1' | 'evm-2' | 'sol-0' | 'sui-0' | 'stellar-0'; /** * A Solana vault's withdrawal queue, as `IVault.withdrawalQueue`. * * With a queue attached, holders cannot redeem directly: they request a * withdrawal, wait out the cooldown, then claim. Read from the queue account on * each vault fetch, so the counts are live. */ export declare interface IVaultWithdrawalQueue { /** The queue account (PDA) address, base58. */ address: string; /** * Whether the vault's redeem gate points at this queue, i.e. whether new * requests are accepted and direct redemption is closed. `false` for a * released queue, which may still hold requests made before the release. */ enabled: boolean; /** Seconds between a new request and when it can be claimed. */ cooldownSeconds: number; /** * Seconds after the cooldown that a new request stays claimable, or `0` for * no limit. A request past its window can only be cancelled. */ fulfillmentWindowSeconds: number; /** Number of requests not yet claimed or cancelled, across all holders. */ pendingCount: number; /** Shares escrowed across all pending requests, in share-token units. */ pendingShares: INormalizedNumber; } /** * Response for GET /withdrawals/{chain}/{vault_address} */ export declare interface IVaultWithdrawals { vaultAddress: IAddress; chain: string; totalWithdrawals: INormalizedNumber; pendingQueue: Array<{ id: string; amount: INormalizedNumber; requestedAt: string; estimatedCompletionDate: string; receiver: IAddress; }>; } /** * Configuration knob exposed on `IAugustBase.versionCheck`. Defaulting to * enabled keeps the nudge in front of integrators who haven't read the docs; * setting `enabled: false` is the explicit opt-out for libraries that wrap * the SDK and want their own update strategy. */ export declare interface IVersionCheckConfig { /** Set to `false` to disable the registry check entirely. Default: `true`. */ enabled?: boolean; } /** * A whitelisted token as embedded in loan-book records by the backend * `WhitelistedTokenModel` schema. `chain` is the numeric August chain id * (backend `Chain` IntEnum value, e.g. `1` for Ethereum mainnet). */ export declare interface IWhitelistedToken { chain: number; name: string; token_type: string; address: IAddress; decimals: number; symbol: string; discount_factor: number; img_url: string | null; price: number | null; } /** Options shared by the EVM-2 queued-withdrawal-date reads. */ declare type IWithdrawalDateOptions = { /** EVM-2 (Tokenized Vault V2) vault contract address. */ vault: IAddress; /** Withdrawal-epoch year, as returned by `requestRedeem`/`getWithdrawalEpoch`. */ year: string | bigint | number; /** Withdrawal-epoch month, same source as `year`. */ month: string | bigint | number; /** Withdrawal-epoch day, same source as `year`. */ day: string | bigint | number; }; /** An EVM-2 vault's current withdrawal epoch, as read from `getWithdrawalEpoch()`. */ export declare type IWithdrawalEpoch = { year: bigint; month: bigint; day: bigint; /** Unix timestamp at which the current epoch's queued withdrawals become claimable. */ claimableEpoch: bigint; }; /** * Statuses */ export declare 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'; /** * Integrations */ export declare interface IWSIntegrationMorphoApy { apy: number; vault_positions: any[]; token: IWSTokenEntry; } export declare 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 declare 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 declare 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 declare 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; }; /** * Metrics */ export declare type IWSMetricsPnlAttributes = { pnl: number; percent_return: number; realized_apr: number; } | null; export declare 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 declare 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 declare 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 declare 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 declare interface IWSMonitorHeaders { 'x-user-id'?: string; 'x-environment'?: string; } export declare interface IWSSubaccountCefi { value: number; name: string; spot_tokens: IWSSubaccountCefiSpotToken[]; derivative_positions: IWSSubaccountCefiDerivative[]; } declare interface IWSSubaccountCefiAsset { type: string; name: string; underlying: string; symbol: string; asset_type: string; } declare interface IWSSubaccountCefiDerivative { value: number; asset_type: string; asset: IWSSubaccountCefiAsset; units: number; avg_cost: number; entry_cost: number; } declare interface IWSSubaccountCefiSpotToken { asset: IWSSubaccountCefiAsset; value: number; balance: number; } export declare interface IWSSubAccountHealthFactor { id: IAddress; datetime: string; health_factor: number; total_collateral_value: number; total_loan_value: number; } /** * Chain record attached to a subaccount directory entry, as serialized by the * backend `IChainRead` schema. */ export declare interface IWSSubaccountListChain { id: string; chain_id: number; name: string; } /** * One subaccount record (backend `ISubaccountRead` schema), as returned by the * admin-only `GET /subaccount` directory, `GET /users/{address}/subaccounts` * and `GET /org/subaccounts`. Nullable fields are optional metadata the * operations team may not have filled in. */ export declare interface IWSSubaccountListItem { id: string; user_id: string | null; internal_name: string; friendly_name: string | null; address: IAddress; status: string | null; subaccount_type: string | null; min_health_factor: number | null; estimated_apr: number | null; notes: string | null; proxy_salt: string | null; admin_salt: string | null; disable_discount_factor: boolean | null; turnkey_address: IAddress | null; autopay_frequency: string | null; implementation: string | null; variant: string | null; default_fee_rate_in_bips: number | null; wallet_role: string | null; /** * Cached USD account value, refreshed out of band by an hourly backend job. * A sort key and placeholder, not an authoritative NAV — read the live value * from the subaccount summary. `null` before the job's first run; absent on * backends that predate the field. */ latest_account_value?: number | null; /** Naive-UTC ISO timestamp of `latest_account_value`. */ account_value_updated_at?: string | null; chains: IWSSubaccountListChain[]; } export declare 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; } /** * Subaccounts */ export declare type IWSSubaccountPermission = { name: string; chain: number; account_address?: string; }; export declare interface IWSSubaccountSummary { address: IAddress; name: string; type: 'subaccount' | 'eoa'; portfolio: IWSSubaccountSummaryPortfolio; loanbook: IWSSubaccountSummaryLoanbook; chains: IWSSubaccountSummaryChain[]; tokens: IWSSubaccountSummaryFullToken[]; total_account_value: number; total_collateral_value: number; total_loan_value: number; health_factor: number | null; net_account_value: number; total_equity_value: number; } export declare interface IWSSubaccountSummaryChain { name: string; chain_id: number; } export declare interface IWSSubaccountSummaryFullToken extends IWSSubaccountSummaryToken { price: number; raw_balance: number; balance: number; value: number; } export declare interface IWSSubaccountSummaryLoan { subaccount_address: IAddress; book: IWSSubaccountSummaryLoanBook; is_borrow: boolean; debt_info: { interest_owed: number; principal_debt_owed: number; interest_repaid: number; }; credit_info: { net_interest_owed: number; principal_debt_owed: number; net_interest_repaid: number; }; } export declare interface IWSSubaccountSummaryLoanBook { address: IAddress; lender: IAddress; borrower: IAddress; state: string; total_repaid: number; principal_token: IWSSubaccountSummaryToken & { token_type: number; discount_factor: number; price: number; }; 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; total_interest_payment_fees: number; } export declare interface IWSSubaccountSummaryLoanbook { loans: IWSSubaccountSummaryLoan[]; total_debt: number; total_credit: number; aggregates_by_token: unknown[]; } export declare interface IWSSubaccountSummaryPortfolio { tokens: IWSSubaccountSummaryPortfolioToken[]; margin_balances: unknown[]; collateral_balances: unknown[]; cefi_positions: unknown[]; defi_positions: unknown[]; trs_positions: unknown[]; strategy_contract_positions: unknown[]; legacy_hedger_positions: unknown[]; otc_positions: unknown[]; total_value: number; discounted_value: number; } export declare interface IWSSubaccountSummaryPortfolioToken { value: number; balance: number; token: IWSSubaccountSummaryToken; } export declare interface IWSSubaccountSummaryToken { type: string; name: string; address: string; chain: number; symbol: string; decimals: number; img_url: string; } export declare type IWSSubaccountToken = { address: string; chain: number; decimals: number; discount_factor: number; img_url: string | null; price: number; symbol: string; token_type: number; }; export declare 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 declare 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 declare 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; }; /** * Tokens */ export declare 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 declare type IWSTokenPrice = { price: number; dt: string; }; export declare type IWSUser = { eoa: string; full_name: string; type_: IUserRoles; nonce: string; disabled: boolean; id: string; }; /** * Users */ export declare 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; }; /** * @deprecated */ export declare interface IWSVaultHistoricalApy { data: { labels: string[]; values: number[]; }; average_apy: number; status: number; error: string | null; } /** * Lending Pools */ export declare 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; } /** * Read an EVM-2 vault's queued-withdrawal lag — the delay, in seconds, * between `requestRedeem` and the withdrawal epoch becoming claimable. * * EVM-2 only. This value is per-vault (259,200s / 3 days on sentUSD, but * shorter on other deployments) and can change after launch — read it live * rather than hardcoding it. * * @returns Lag duration, in seconds. * @throws AugustValidationError on invalid vault address or a non-EVM-2 vault. * @throws AugustSDKError when the underlying contract read fails. * * @worstCaseRpcCalls 2 — vault-version lookup, `lagDuration`. * * @example * ```ts * const seconds = await augustSdk.evm.lagDuration({ vault: vaultAddress }); * ``` */ export declare function lagDuration(signer: IContractRunner, options: ILagDurationOptions): Promise; /** * Well-known LayerZero Endpoint IDs for common chains. * SDK consumers can use these when building their ICrossChainVaultConfig. */ export declare const LAYERZERO_ENDPOINT_IDS: { readonly ETHEREUM: 30101; readonly ARBITRUM: 30110; readonly AVALANCHE: 30106; readonly BASE: 30184; readonly SONIC: 30332; readonly MONAD: 30390; }; export declare function loanStateToReadable(loanState: number | bigint): "PREAPPROVED" | "FUNDING_REQUIRED" | "FUNDED" | "ACTIVE" | "CANCELLED" | "MATURED" | "CLOSED"; /** * Log a caught chain error at the severity its category warrants, without * swallowing it. When `isBenign` is `true` the failure is recorded as a `warn` * (a Sentry breadcrumb that rides along with the next real issue, not a billed * standalone issue); otherwise it is logged at `error` (a Sentry issue). The * caller is still responsible for re-throwing — this only routes telemetry. * * Pass the benign decision explicitly (via {@link isUserRejectionError} or * {@link isExpectedRevertError}) so the call site documents *why* the demotion * is safe and each path opts into only the category that applies to it. * * @param tag - Low-cardinality call-site label (e.g. `'deposit'`), used as the * Sentry breadcrumb/issue grouping key. * @param error - The caught value, of unknown type. * @param isBenign - `true` to demote to `warn`; `false` to keep at `error`. * @param context - Optional structured context attached to the log entry. It is * sanitized by the logger before transport. */ export declare function logChainError(tag: string, error: unknown, isBenign: boolean, context?: Record): void; export declare const Logger: { setLogger: typeof setLogger; setStructuredLogger: typeof setStructuredLogger; setSentrySink: typeof setSentrySink; getLogger: typeof getLogger; getStructuredLogger: typeof getStructuredLogger; setDevMode: typeof setDevMode; isDevMode: typeof isDevMode; log: { info: (tag: string, ...args: any[]) => void; warn: (tag: string, ...args: any[]) => void; error: (tag: string, error: unknown, context?: Record) => void; }; }; /** * Look up candidate signatures for an unknown 4-byte selector against public * signature databases. * * Network helper — queries [openchain.xyz](https://openchain.xyz) first and * falls back to [4byte.directory](https://www.4byte.directory). Kept separate * from {@link decodeRevertData} so the core decode path stays offline. * Worst case 2 HTTPS requests. * * @param selector - The selector to look up. Longer hex (a full revert blob) * is accepted; only the first 4 bytes are used. * @returns Candidate signatures (e.g. `['ERC20InsufficientBalance(address,uint256,uint256)']`), * most-likely first. Empty when the input is not hex, no database knows the * selector, or both databases were unreachable. Never throws. * * @example * ```ts * const candidates = await lookupSelector('0xe450d38c'); * ``` */ export declare function lookupSelector(selector: string): Promise; /** * `lpTokenAddress()` — `keccak256("lpTokenAddress()")[0..4]`. The August `evm-2` * tokenized vault's receipt-token getter, exported so the readers that invoke it * can scope {@link isEmptyViewResponse} to exactly this call instead of * duplicating the literal. */ export declare const LP_TOKEN_ADDRESS_SELECTOR = "0xf5ae497a"; /** * Map composability integrations from backend format to vault format. * Shared across all chain adapters. */ export declare function mapComposabilityIntegrations(tokenizedVault: ITokenizedVault): IVault['composabilityIntegrations']; /** * Map strategists from backend subaccounts or hardcoded list. * Shared across all chain adapters. */ export declare function mapStrategists(tokenizedVault: ITokenizedVault): { address: IAddress; logo: string; name: string; type: string; website_url: string; }[]; /** * Map the backend `freshness` object onto the camelCased {@link IVaultFreshness} * shape carried on `IVault`. Shared across all chain adapters (EVM, Solana, * Stellar) so every surface reports provenance identically. * * Each of the three stamps is passed through independently: a missing member * becomes `null` and is never defaulted from one of the others. That is the point * of the object — `apy_computed_at` and `share_ratio_snapshot_at` describe two * different pipelines, and collapsing them would erase the very staleness signal * (snapshot newer than APY) the field exists to expose. * * @param tokenizedVault - Backend tokenized-vault payload. `freshness` is absent on * responses predating the backend change, and may be explicitly null. * @returns The mapped freshness object, or `null` when the backend reported none. * Values are the backend's RFC 3339 UTC strings verbatim — no reformatting, so * the trailing `Z` is preserved. */ export declare function mapVaultFreshness(tokenizedVault: ITokenizedVault | undefined | null): IVaultFreshness | null; /** * Max fee ceiling in stroops (1_000_000 stroops = 0.1 XLM). * assembleTransaction adjusts to the actual fee from simulation. */ declare const MAX_FEE_STROOPS = "1000000"; /** Maximum number of polling attempts before timeout. */ declare const MAX_POLL_ATTEMPTS = 30; /** * Read the maximum deposit currently accepted by a vault. Routes between * single-asset ERC-4626 (`maxDeposit(receiver)`) and EVM-2 multi-asset * (`maxDepositAmount()`, vault-level cap, no receiver dependence). * * @returns Max deposit in raw on-chain units of the deposit asset. * @throws AugustValidationError on invalid vault address. * @throws AugustSDKError when the underlying contract call fails. * * @example * ```ts * const cap = await augustSdk.evm.maxDeposit({ vault }); * if (cap === 0n) showVaultIsFullToast(); * ``` */ export declare function maxDeposit(signer: IContractRunner, options: IMaxDepositOptions): Promise; /** * Map of public SDK method names to their {@link MethodCategory}. * * Keys are unqualified because `instrumentClass` walks the prototype and * surfaces them that way; the same name on multiple adapters (e.g. * `vaultDeposit` on EVM, Solana, Stellar) shares the same category. */ export declare const METHOD_CATEGORIES: Readonly>; /** * Canonical category for an SDK public method, used as the `sdk.category` * Sentry tag so the partner-usage dashboard can roll calls up into * `read.*` / `write.*` / `network` / `bridge` buckets. */ export declare type MethodCategory = 'read.vault' | 'read.position' | 'read.redemption' | 'read.price' | 'read.points' | 'read.subaccount' | 'read.staking' | 'read.layerzero' | 'read.solana' | 'read.stellar' | 'read.sui' | 'read.evm' | 'write.deposit' | 'write.redeem' | 'write.approve' | 'write.points' | 'write.stellar' | 'network' | 'bridge' | 'unknown'; export declare const MIN_ABIS: { name: string; symbol: string; decimals: string; totalSupply: string; approve: string; allowance: string; managementFeePercent: string; }; /** * @deprecated use the backend responses /tokenized_vault internal_type field to determine if the vault is an old lending pool * @todo use the backend responses /tokenized_vault internal_type field to determine if the vault is an old lending pool */ export declare const MULTI_ASSET_VAULTS: `0x${string}`[]; /* Excluded from this release type: MULTICALL3_ADDRESS */ /* Excluded from this release type: MULTICALL3_BATCH_SIZE */ /* Excluded from this release type: MULTICALL3_VERIFIED_CHAINS */ /* Excluded from this release type: multicall3Aggregate */ export declare const NATIVE_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; /** * Returns `true` when the wallet's ERC-20 allowance is insufficient for the * cross-chain operation. On RPC failure also returns `true` (defensive * default — better a redundant approval than a downstream revert). */ export declare function needsCrossChainApproval(tokenAddress: IAddress, spenderAddress: IAddress, walletAddress: IAddress, amount: bigint, publicClient: { readContract: (args: unknown) => Promise; }): Promise; /** * NEMO ETH Yield vault address (lowercase for comparisons) */ export declare const NEMO_VAULT_ADDRESS = "0xa422c3018c46ba90a14acd14f96cb60616f5c91b"; declare const NETWORK_PASSPHRASES: Record; export declare const NETWORKS: Record; /** * Chain IDs the SDK understands that are **not** served by an EVM JSON-RPC * provider. Callers may legitimately pass these to vault methods without a * matching entry in the `providers` map — the request routes through the * Solana / Stellar / Sui adapter instead. */ export declare const NON_EVM_CHAIN_IDS: ReadonlySet; /** * Normalize a signer to ensure it's ethers-compatible * Accepts both ethers Signer and viem WalletClient * @param signer Either an ethers Signer or viem WalletClient * @returns Ethers-compatible Signer */ export declare function normalizeSigner(signer: Signer | Wallet | any): Promise; /** * @deprecated use the backend responses /tokenized_vault internal_type field to determine if the vault is an old lending pool * @todo use the backend responses /tokenized_vault internal_type field to determine if the vault is an old lending pool */ export declare const OLD_LENDING_POOLS: `0x${string}`[]; export declare const ORACLE_CONTRACTS: { 1: string; 43114: string; 42161: string; 8453: string; 10: string; }; /** * Arrays */ export declare function orderObjArrByDate>(objectArray: T[], options?: { key?: string; order?: 'asc' | 'desc'; }): T[]; /** * Chains on which the SDK sends the instance origin code * (`attribution.originCode`). Ethereum mainnet only: it is the one SwapRouter * deployment whose origin registry has been verified. On any other chain the * instance code is never sent, even where a SwapRouter is configured; an * `originCode` passed to a call is still sent. */ export declare const ORIGIN_ATTRIBUTION_CHAINS: readonly number[]; /* Excluded from this release type: ORIGIN_CODE_PATTERN */ /** * 32-byte origin codes registered on the `SwapRouter` via `addOrigin`. * Drives origin/referral-fee accrual. The on-chain admin must register a * code before it can be used — calls with an unknown code revert with * `InvalidOrigin`. * * `default` is the all-zero sentinel — the SwapRouter treats it as "no * origin fee" and skips the origin-fee transfer. */ export declare const ORIGIN_CODES: { /** All-zero sentinel — no origin fee. */ readonly default: `0x${string}`; }; export declare function parseLoanLevelDebank(debankRes: any): { exposure: any[]; positions: any[]; }; export declare function parseVaultLevelDebank(debankRes: any, protocolExposure: IDebankProtocolExposure[], tokenExposure: IDebankTokenExposure[], borrower: IAddress, exposurePerCategory: any, netValue: any): { tokenMap: Record; protocolTokenMap: Record; protocolExposures: any; tokenExposures: any; loansExposure: { exposure: any[]; positions: any[]; }; }; export declare interface PermitSignature { r: string; s: string; v: number; deadline: number; } /** The cost basis {@link getVaultUserLifetimePnl} computes PnL against. */ export declare interface PnlCostBasis { /** Indexed deposits plus shares received by transfer, raw at vault decimals. */ depositedRaw: bigint; /** Asset-terms withdrawals plus shares sent by transfer, raw at vault decimals. */ withdrawnAssetsRaw: bigint; /** The part of `depositedRaw` that came from shares received by transfer. */ receivedByTransferRaw: bigint; } /** * Fold peer share transfers into a wallet's lifetime-PnL cost basis. * * Shares a wallet received from another holder (a migration airdrop, a DEX * purchase, a transfer from another wallet) cost the wallet their value on * arrival, so they add to the deposited amount; shares it sent away count as * withdrawn. This applies whether or not the wallet also deposited, so a holder * who received shares and then topped up is not credited with the received * shares as profit, and a depositor who moved its shares elsewhere (a lending * market, a DEX) is not shown as having lost them. A wallet with no deposit and * no received shares keeps a zero basis, so the history guard still decides. * * A depositor whose history misses a mint ({@link historyCoversMints}) is the * exception: its transfers do not count, so the result matches what the getter * returned before transfers counted for depositors. A wallet with no deposit * still gets a basis here when its history misses a mint, but * {@link assertPnlHistoryConsistent} rejects it. On a LayerZero OVault the * caller leaves the hub composer and share OFT out of the transfers (see * {@link selectPeerTransfers}): the composer's deliveries are already counted * as LayerZero deposits, and shares bridged to a spoke chain still count in the * position. * * Pure and synchronous. * * @param params - See {@link PnlCostBasisParams}. * @returns The deposited and withdrawn amounts to compute PnL from, and the * transfer-priced part of the deposited amount (zero when transfers did not * count). * @example * ```ts * const basis = pnlCostBasis({ * depositedRaw, * withdrawnAssetsRaw, * hasDeposits: depositedRaw > BigInt(0), * mintsMatchHistory: historyCoversMints({ * transfers, * wallet, * depositTransactionHashes, * }), * transfers: transferCostBasis({ * transfers, * wallet, * vault, * history, * countSentWithoutReceipt: true, * }), * }); * ``` */ export declare function pnlCostBasis({ depositedRaw, withdrawnAssetsRaw, hasDeposits, mintsMatchHistory, transfers, }: PnlCostBasisParams): PnlCostBasis; /** Inputs {@link pnlCostBasis} folds together. */ export declare interface PnlCostBasisParams { /** Indexed deposits at face value, raw at the vault's decimals. */ depositedRaw: bigint; /** Withdrawals already in asset terms, raw at the vault's decimals. */ withdrawnAssetsRaw: bigint; /** Whether history indexed any deposit, LayerZero deposits included. */ hasDeposits: boolean; /** Whether the history accounts for every share mint (see {@link historyCoversMints}). */ mintsMatchHistory: boolean; /** * Peer transfers priced by {@link transferCostBasis} with * `countSentWithoutReceipt: true`. */ transfers: TransferCostBasis; } /** Inputs the lifetime-PnL history guard inspects. */ export declare interface PnlHistoryConsistencyParams { /** Vault contract address, used for the error message and context. */ vault: IAddress; /** User wallet address, used for the error message and context. */ wallet: IAddress; /** * Whether the resolved deposit history contains at least one deposit record * (subgraph deposits or LayerZero cross-chain deposits). */ hasDeposits: boolean; /** * Whether the indexed deposits explain every share mint to the wallet (see * {@link historyCoversMints}). Defaults to `true`. */ mintsMatchHistory?: boolean; /** * Shares received by peer transfer, priced in raw base units (asset * decimals) by {@link transferCostBasis}. Defaults to zero. */ receivedByTransferRaw?: bigint; /** Total withdrawn, in raw base units (asset decimals). */ totalWithdrawnRaw: bigint; /** Current on-chain position value, in raw base units (asset decimals). */ currentPositionRaw: bigint; } /** Inputs the lifetime-PnL price guard inspects. */ export declare interface PnlTokenPriceParams { /** Vault contract address, used for the error message and context. */ vault: IAddress; /** User wallet address, used for the error message and context. */ wallet: IAddress; /** * The vault's underlying asset (`asset()`) that was priced, or `undefined` * when `asset()` could not be read and no price lookup was possible. */ asset: IAddress | undefined; /** * USD price of `asset` as resolved by the price server. `0` means the lookup * failed or the token is unknown to it (`fetchTokenPriceByAddress` never * throws). */ tokenPriceUsd: number; } /** The receipt-token transfer fields the transfer cost basis reads. */ export declare type PnlTransfer = Pick; /** Multiplier applied to the poll interval after each NOT_FOUND poll. */ declare const POLL_INTERVAL_BACKOFF = 1.5; /** Cap for the backed-off confirmation-poll interval (ms). */ declare const POLL_INTERVAL_MAX_MS = 8000; /** Initial confirmation-poll interval (ms). Grows up to {@link POLL_INTERVAL_MAX_MS}. */ declare const POLL_INTERVAL_MS = 2000; /** * Pool/Vault names for adapter routing */ export declare const POOL_NAMES: { readonly ETH_TREEHOUSE_GROWTH: "Treehouse Growth"; readonly AVAX_AVAX: "AVAX Strategy"; readonly ETH_KELP_TAC_RSETH: "Kelp TAC rsETH"; }; export declare function prepareDateForDb(date: string | Date): string; /** * Preview the number of shares that would be minted for a deposit, without * touching on-chain state. Routes between single-asset ERC-4626 and EVM-2 * multi-asset vaults using the vault version detected from backend metadata. * * @returns The number of shares (raw on-chain units, share-token decimals). * @throws AugustValidationError on invalid vault address or amount. * @throws AugustSDKError when the underlying contract call fails. * * @example * ```ts * const shares = await augustSdk.evm.previewDeposit({ * vault: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32', * amount: 1_000_000n, // 1 USDC (6 decimals) * }); * ``` */ export declare function previewDeposit(signer: IContractRunner, options: IPreviewDepositOptions): Promise; /** * Preview the number of underlying assets returned by redeeming a given * number of shares, without touching on-chain state. Routes between single- * asset ERC-4626 (`previewRedeem`) and EVM-2 multi-asset * (`previewRedemption(shares, isInstant=false)`) using the vault version. * * @returns The assets that would be redeemed (raw on-chain units, asset * decimals). * @throws AugustValidationError on invalid vault or share input. * @throws AugustSDKError when the underlying contract call fails. * * @example * ```ts * const assets = await augustSdk.evm.previewRedeem({ * vault: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32', * shares: 1_000_000_000_000_000_000n, // 1 share (18 decimals) * }); * ``` */ export declare function previewRedeem(signer: IContractRunner, options: IPreviewRedeemOptions): Promise; /** * Preview the output amount for an RWA instant redemption via the RwaRedeemSubaccount contract. * @param signer - signer / provider object * @param options - object including subaccount address, asset, amount, decimals, and outputDecimals * @returns normalized number of the expected output amount (in output asset decimals) */ export declare function previewRwaRedemption(signer: IContractRunner, options: IPreviewRwaRedemptionOptions): Promise; export declare const PRICE_SERVER_URL = "https://prices.augustdigital.io"; declare const programIds: { devnet: { vault: string; withdrawalQueue: string; }; "mainnet-beta": { vault: string; }; localnet: { vault: string; withdrawalQueue: string; }; }; /** * Execute multiple promises with retry logic and allow partial failures. * Unlike Promise.all, continues execution if some promises fail. * Failed promises return null to maintain array index alignment. * @param promises - Array of promises to execute * @param maxRetries - Maximum retry attempts per promise * @param baseDelay - Initial delay for exponential backoff * @returns Array of results with null for failed promises */ export declare function promiseSettle(promises: Promise[], maxRetries?: number, baseDelay?: number): Promise; /** Timeout for read-only Soroban simulation queries (seconds). */ declare const QUERY_TIMEOUT_SECONDS = 10; /** * Estimate fees and expected shares for a cross-chain deposit. The returned * quote carries `quotedAt`/`expiresAt`; re-quote via {@link isQuoteStale} * before submitting. */ export declare function quoteCrossChainDeposit(props: IQuoteCrossChainDepositRequest): Promise; /** * Estimate fees and expected assets for a cross-chain redeem. The returned * quote carries `quotedAt`/`expiresAt`; re-quote via {@link isQuoteStale} * before submitting. */ export declare function quoteCrossChainRedeem(props: IQuoteCrossChainRedeemRequest): Promise; /** * Environment-variable gates for analytics. Pure functions — safe to import * anywhere, no Sentry side effects. Tested directly in `analytics.test.js`. */ /** * Read a process env var without crashing in browsers or in bundles where * `process.env` is a frozen / proxied object that throws on missing keys. */ export declare function readEnv(name: string): string | undefined; /* Excluded from this release type: readOriginInfo */ /* Excluded from this release type: readSwapRouterPaused */ /* Excluded from this release type: readSwapRouterTokenWhitelisted */ /* Excluded from this release type: readSwapRouterVaultInfo */ /** * Read a bounded, fixed set of token-state probes for a holder — the exact * facts needed to explain a failed deposit/transfer: what the token is, what * the holder has, what the spender may pull, and whether the issuer froze the * holder. * * The probe set is deliberately fixed (no arbitrary calldata): `symbol()`, * `decimals()`, `balanceOf(holder)`, `allowance(holder, spender)` when a * spender is given, and the compliance getters tried in order — * `isAccountFrozen(address)` (Agora AUSD, selector `0xe816d97f`), * `isBlacklisted(address)` (USDC-style), `isFrozen(address)`. Probes the * token does not implement resolve to `undefined`; this function never * throws. * * Worst case 7 RPC calls (4 base probes + 3 compliance getters), batched by * the provider where supported. * * @param provider - A connected `JsonRpcProvider` for the token's chain. * @param token - The ERC-20 token contract address. * @param holder - The account whose balance/compliance state to read. * @param spender - Optional spender for the `allowance(holder, spender)` * probe (e.g. the vault a deposit approves). * @returns The token state with every unresolvable probe as `undefined`. * * @example * ```ts * const state = await readTokenState(provider, ausd, eoa, vault); * // { symbol: 'AUSD', decimals: 6, balance: 487711967n, allowance: 0n, frozen: false } * ``` */ export declare function readTokenState(provider: JsonRpcProvider, token: string, holder: string, spender?: string): Promise; /** * Register a user for the points program, authenticated by a wallet signature. * * The caller must obtain a personal_sign (EIP-191) signature over the * canonical message template below — the backend reconstructs the same * string from these fields and verifies the signature recovers to * `userAddress`. Building the message client-side and server-side from the * same primitives means a hostile client cannot show one message in the * wallet prompt while submitting a different one for validation. * * Canonical message (`\n`-separated, no trailing newline): * * ``` * Upshift: register {userAddress.toLowerCase()} * referrer: {referrerAddress.toLowerCase() || "none"} * chain: {chainId} * nonce: {nonce} * expires: {expiry} * ``` * * @param userAddress - EVM wallet address being registered. Must match the * signer that produced `signature`. Lowercased before being embedded in * the canonical message. * @param referrerAddress - Optional EVM address that referred this user. * Lowercased when embedded; the literal string `"none"` is used when * absent. Tampering with this field after signing produces 401. * @param chainId - Chain on which the wallet signed. For smart-contract wallets * (Safe etc.) this is the chain whose RPC the backend will use to run the * EIP-1271 `isValidSignature` check; for EOAs it still pins the signature * to a chain so it can't be replayed cross-chain. Must be one of the chains * Upshift supports (see backend `SUPPORTED_REGISTRATION_CHAINS`). * @param signature - `0x`-prefixed hex of the personal_sign signature over * the canonical message. Single-use: replays within ~10 min are rejected. * @param nonce - Caller-generated random string (8–128 chars). Pair with * `userAddress` to form the single-use key in the backend's nonce store. * @param expiry - Unix timestamp (seconds). Must be in the future and within * the backend's TTL window (currently 10 min). * @param options - Request options (headers). * @returns Raw `Response` from the backend. 200 on success, 401 for * expired / replayed / mismatched-signer / tampered-referrer, 422 for an * unsupported `chainId`. * * @example * ```ts * const nonce = crypto.randomUUID().replace(/-/g, ''); * const expiry = Math.floor(Date.now() / 1000) + 300; * const message = * `Upshift: register ${address.toLowerCase()}\n` + * `referrer: ${referrer?.toLowerCase() ?? 'none'}\n` + * `chain: ${chainId}\n` + * `nonce: ${nonce}\n` + * `expires: ${expiry}`; * const signature = await walletClient.signMessage({ account: address, message }); * await registerUserForPoints({ userAddress: address, referrerAddress: referrer, chainId, signature, nonce, expiry }); * ``` */ export declare function registerUserForPoints({ userAddress, referrerAddress, chainId, signature, nonce, expiry, options, }: { userAddress: IAddress; referrerAddress?: IAddress; chainId: number; signature: string; nonce: string; expiry: number; options?: IVaultBaseOptions; }): Promise; /** * Default per-request timeout, in milliseconds, for every August HTTP fetcher * (`fetchAugustPublic`, `fetchAugustWithKey`, `fetchAugustWithBearer`). * * Previously 90s. That was longer than any realistic caller was willing to * wait: server-rendered integrations run inside serverless functions whose own * execution budget is well under 90s, so the request had already been abandoned * upstream by the time the abort fired — the timeout only ever garbage-collected * a dead request, while the socket stayed open holding backend capacity and * amplifying the stall for every concurrent caller. * * 15s is above the p99 of a healthy August API response and below every common * upstream budget (Vercel/Lambda defaults, browser patience, upstream gateway * timeouts), so a stalled request now fails fast and frees its connection. * * Callers that genuinely need longer override per-request via * `IFetchAugustOptions.timeoutMs`, or process-wide via `setSdkRequestTimeout`. */ export declare const REQUEST_TIMEOUT_MS = 15000; /** * Reset analytics state (useful for testing). */ export declare function resetAnalytics(): void; /** * Reset the cache statistics snapshot to zeros. The SDK never records any, so * this has no observable effect. * * @deprecated Has no effect. Kept only for API compatibility and will be * removed in the next major release; there is no replacement. */ export declare function resetCacheStats(): void; /* Excluded from this release type: _resetVersionCheckForTests */ /* Excluded from this release type: resolveDepositTokenDecimals */ /** * Resolve whether a single fee (management or performance) is currently waived. * * Backend-driven. This centralizes logic that previously lived — * and diverged — across two upshift-app components. The resolution is deliberately * split between the backend and the SDK: * * - The backend `isFeeWaivedToggle` (`platform_fee_override.is_fee_waived`) is both * the master enable AND the TVL latch. Retool config takes precedence over live * TVL, and the backend flips this flag `false` once live TVL crosses the * configured threshold. That flip is one-way: if TVL later falls back below the * threshold the waiver does NOT re-apply. The SDK therefore does no TVL math and * never reads `latest_reported_tvl` here — trusting the flag preserves the latch. * - The **date** window is time-dependent, so it cannot be a static DB flag; the SDK * evaluates it live against the clock. * * Resolution: * - Toggle off → never waived (also the only "hide" path once TVL trips the latch). * - Toggle on, both date and TVL blank → indefinite manual waiver → waived. * - Toggle on with a date window → waived while `now < waivedUntilDate`. * - Toggle on with a TVL threshold configured → waived (the backend keeps the toggle * on only while live TVL is under the threshold). * * @param isFeeWaivedToggle - Backend master/TVL-latch flag. `false` ⇒ never waived. * @param waivedUntilDate - ISO datetime string the waiver runs until, or `null` for * no date window. An unparseable string yields `NaN`, which is never `> now`, so * it correctly contributes no date-based waiver. * @param waivedUntilTvl - Configured TVL threshold in whole USD, or `null`. Used only * to detect that a TVL-based waiver was set (values `<= 0` are treated as unset); * the threshold comparison itself is owned by the backend. * @param now - Clock, injected for deterministic testing. Defaults to `new Date()`. * @returns `true` if the UI should present this fee as "Fee Waived" right now. * @example * ```ts * // Toggle on, 30-day window still open → waived. * resolveFeeWaived(true, '2099-01-01T00:00:00Z', null); // true * // Toggle off overrides everything → not waived. * resolveFeeWaived(false, '2099-01-01T00:00:00Z', 10_000_000); // false * ``` */ export declare function resolveFeeWaived(isFeeWaivedToggle: boolean, waivedUntilDate: string | null, waivedUntilTvl: number | null, now?: Date): boolean; /** * Normalize an optional origin code to the value to send on-chain. * * Returns the caller-supplied code when present (an explicit all-zero * sentinel opts one call out), otherwise the SDK instance's * `attribution.originCode` when `chainId` is in * {@link ORIGIN_ATTRIBUTION_CHAINS} (Ethereum mainnet only), otherwise the * default (all-zero) sentinel from {@link ORIGIN_CODES}. Validates that any * supplied code is exactly 32 bytes (66 chars including the `0x` prefix); * the on-chain SwapRouter reverts with `InvalidOrigin` otherwise, but * surfacing the failure here as a typed SDK error gives partners a * grepable Sentry event instead of a generic `execution reverted`. * * @param provided - Optional caller-supplied origin code. * @param chainId - Chain the deposit is sent on. The instance code is never * returned without it, or on a chain outside * {@link ORIGIN_ATTRIBUTION_CHAINS}. * @returns The 32-byte origin code to pass to the router. * @throws {@link AugustValidationError} when `provided` is not a 32-byte hex string. */ export declare function resolveOriginCode(provided?: `0x${string}`, chainId?: number): `0x${string}`; /** * Resolve the Slack webhook to alert through. * * Why this replaced a hardcoded constant: a webhook path is a **bearer * credential** — anyone holding it can post to the channel. The previous * default embedded August's own webhook as a string literal, which shipped in * every published tarball and in the generated `.d.ts`, handing every consumer * of the SDK write access to an internal Slack channel (CLAUDE.md §5: no * secrets in client-reachable code). It also meant a consumer's alerts went to * August's channel rather than their own, with no way to redirect them. * * Resolution order: * 1. `explicit` — passed by the caller, wins outright; * 2. `AUGUST_SDK_SLACK_WEBHOOK_URL` in the environment; * 3. none — alerting is disabled and the call becomes a no-op. * * Reading the env var per call (rather than once at module load) means a * consumer configuring it after import still gets alerts, and a test can set * and unset it without re-importing the module. * * @param explicit - Caller-supplied webhook, full URL or bare path suffix. * @returns The bare `T…/B…/x…` path suffix, or `''` when unconfigured. */ declare function resolveSlackWebhookUrl(explicit?: string): string; /* Excluded from this release type: resolveSpender */ /** * Run an **idempotent** RPC read, retrying with exponential backoff while the * failure classifies as a transient transport fault * ({@link isRetryableRpcError}). * * Lives next to the classifiers it consumes so there is exactly one retry * implementation in the SDK: both the receipt-poll fallback in the vault write * paths and the cached `decimals()` reader in `core/helpers/web3.ts` call this. * * Only safe for operations that can be repeated without side effects: polling * `eth_getTransactionReceipt` for an already-broadcast hash, or re-reading an * immutable value such as `decimals()`. **Never wrap a transaction send in * this.** * * Anything that is not a transport fault (a genuine revert, a user rejection, * an insufficient-funds rejection) is rethrown on the first attempt with no * delay, so real failures still fail fast. * * @param tag - Low-cardinality log label for the retry breadcrumb. * @param operation - The idempotent async read to run. * @param context - Extra structured context for the retry breadcrumb (e.g. * `{ hash }`). Sanitized by the logger before transport. * @param isRetryable - Predicate deciding whether a caught error warrants * another attempt. Defaults to the strict transport definition * ({@link isRetryableRpcError}); pass a wider one only where the call site * can prove the extra shape is also a provider artefact — the only such case * today is the selector-scoped {@link isEmptyViewResponse} used by * `getDecimalsOrThrow`. * @returns Whatever `operation` resolves to on the first successful attempt. * @throws The last error thrown by `operation` once retries are exhausted, or * immediately when the error is not retryable. * * @example * ```ts * const receipt = await retryOnTransientRpc( * 'safeWaitForTx:transport-retry', * () => provider.waitForTransaction(hash, 1, 120_000), * { hash }, * ); * ``` */ export declare function retryOnTransientRpc(tag: string, operation: () => Promise, context?: Record, isRetryable?: (error: unknown) => boolean): Promise; export declare const REWARD_DISTRIBUTOR_ADDRESS: (chainId: number) => string[]; /** * Formats any numeric value (number, string, or bigint) to a standardized string. * * @param value - amount to be formatted * @param options - formatting options: * `showing` is the number of decimals to cut off at (or `'all'`); * `usd` toggles USD-value display; * `decimals` is how many decimals to parse to when `value` is a bigint. * * @returns standardized string type value */ export declare function round(value: number | string | bigint, options?: { showing?: number | 'all'; usd?: boolean; decimals?: number; }): string; /** * Kick off a best-effort version check. Always returns synchronously. * * @param config - Optional config from `IAugustBase.versionCheck` */ export declare function runVersionCheck(config?: IVersionCheckConfig): void; export declare const RWA_REDEEM_SUBACCOUNT: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vault"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_referenceAsset"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_idleVault"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "AssetMismatch"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }]; readonly name: "AssetNotRedeemable"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CannotSweepIdleVaultShares"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "CannotSweepReferenceAsset"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "DepositFailed"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "required"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "available"; readonly type: "uint256"; }]; readonly name: "InsufficientLiquidity"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "requested"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "actual"; readonly type: "uint256"; }]; readonly name: "InsufficientWithdrawal"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOracleDecimals"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOraclePrice"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidOracleTimestamp"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidReceiver"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTimePeriod"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "InvalidTokenDecimals"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OnlyVault"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OnlyVaultOwner"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "OnlyVaultOwnerOrOperator"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "provided"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minimum"; readonly type: "uint256"; }]; readonly name: "OracleStalenessTooLow"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "referenceValue"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "normalizedAmount"; readonly type: "uint256"; }]; readonly name: "PriceDeviationExceeded"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "requested"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "limit"; readonly type: "uint256"; }]; readonly name: "RedemptionExceedsLimit"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "RedemptionsPaused"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "RoundNotComplete"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "SenderNotWhitelisted"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "expected"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "actual"; readonly type: "uint256"; }]; readonly name: "SlippageExceeded"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "provided"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maximum"; readonly type: "uint256"; }]; readonly name: "SpreadTooHigh"; readonly type: "error"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "provided"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minimum"; readonly type: "uint256"; }]; readonly name: "SpreadTooLow"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "StalePrice"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAddress"; readonly type: "error"; }, { readonly inputs: readonly []; readonly name: "ZeroAmount"; readonly type: "error"; }, { 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: "asset"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "assetIn"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "referenceOut"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "fee"; readonly type: "uint256"; }]; readonly name: "AssetRedeemed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "Deposited"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "requested"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "actual"; readonly type: "uint256"; }]; readonly name: "EmergencyWithdrawAll"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "reason"; readonly type: "bytes"; }]; readonly name: "IdleDepositFailed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "IdleDeposited"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes"; readonly name: "reason"; readonly type: "bytes"; }]; readonly name: "IdleVaultFallback"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "requested"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "actual"; readonly type: "uint256"; }]; readonly name: "IdleWithdrawn"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "oldLimit"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "newLimit"; readonly type: "uint256"; }]; readonly name: "MaxRedemptionPerTxUpdated"; 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: "bool"; readonly name: "enabled"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "spreadBps"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "oracle"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "maxPriceDeviationBps"; readonly type: "uint256"; }]; readonly name: "RedeemableAssetSet"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bool"; readonly name: "paused"; readonly type: "bool"; }]; readonly name: "RedemptionsPausedUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "TokenSwept"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "Withdrawn"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "MAX_SPREAD_BPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MIN_ORACLE_STALENESS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MIN_SPREAD_BPS"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "availableLiquidity"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "deposit"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "depositToIdle"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "minActual"; readonly type: "uint256"; }]; readonly name: "emergencyWithdrawAll"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "actual"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getIdleUtilization"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "idle"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "idleVaultValue"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getRedeemableAssetsList"; readonly outputs: readonly [{ readonly internalType: "address[]"; readonly name: ""; readonly type: "address[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "IDLE_VAULT"; readonly outputs: readonly [{ readonly internalType: "contract IERC4626"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxRedemptionPerTx"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "previewRedemption"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minOut"; readonly type: "uint256"; }]; readonly name: "redeemAsset"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "referenceOut"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "redeemableAssets"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "oracle"; readonly type: "address"; }, { readonly internalType: "uint8"; readonly name: "oracleDecimals"; readonly type: "uint8"; }, { readonly internalType: "uint8"; readonly name: "tokenDecimals"; readonly type: "uint8"; }, { readonly internalType: "uint256"; readonly name: "spreadBps"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxOracleStaleness"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxPriceDeviationBps"; readonly type: "uint256"; }, { readonly internalType: "bool"; readonly name: "enabled"; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "redemptionsPaused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "REFERENCE_ASSET"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "REFERENCE_ASSET_DECIMALS"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "limit"; readonly type: "uint256"; }]; readonly name: "setMaxRedemptionPerTx"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "asset"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "enabled"; readonly type: "bool"; }, { readonly internalType: "uint256"; readonly name: "spreadBps"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "oracle"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "maxStaleness"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "maxPriceDeviationBps"; readonly type: "uint256"; }]; readonly name: "setRedeemableAsset"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bool"; readonly name: "paused"; readonly type: "bool"; }]; readonly name: "setRedemptionsPaused"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "token"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "sweepToken"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "VAULT"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "tokenAddr"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address payable"; readonly name: "receivingAddr"; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minActual"; readonly type: "uint256"; }]; readonly name: "withdrawFromIdle"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; /** * Redeem vault shares for an underlying asset via the RwaRedeemSubaccount. * Caller must approve the **vault share token** (not the output asset) to * the subaccount beforehand — it pulls shares via `transferFrom`. * * Pass `minOut` to enforce slippage protection (in `outputDecimals` units). * The SDK does not currently compute `minOut` from a slippage percentage — * the caller is responsible for choosing a safe lower bound. * * @throws AugustValidationError on invalid addresses or amount inputs. * @throws AugustSDKError when the redeem submission or on-chain call fails. * * @example * ```ts * // 1. Approve the vault share token to the subaccount first. * await augustSdk.evm.vaultApprove({ * target: subaccountAddress, * wallet: walletAddress, * amount: '10', * wait: true, * }); * * // 2. Redeem 10 shares for USDC, requiring at least 9.5 USDC out. * await augustSdk.evm.rwaRedeemAsset({ * target: subaccountAddress, * wallet: walletAddress, * asset: USDC_ADDRESS, * amount: '10', * minOut: '9.5', * decimals: 18, // vault share decimals * outputDecimals: 6, // USDC decimals * wait: true, * }); * ``` */ export declare function rwaRedeemAsset(signer: Signer | Wallet, options: IRwaRedeemOptions): Promise; /* Excluded from this release type: safeBigInt */ /* Excluded from this release type: safeSendTx */ /* Excluded from this release type: safeWaitForTx */ /** * Sanitize method arguments for safe logging to Sentry. * Removes sensitive data and truncates large values. */ export declare function sanitizeArgs(args: unknown[]): Record; /** * Recursively sanitize an object, removing sensitive keys. */ export declare function sanitizeObject(obj: Record, depth?: number): Record; /* Excluded from this release type: SDKBreadcrumb */ /** * Sentry-compatible logger shape — `@sentry/browser` can be passed directly. */ export declare type SDKLogger = { setTag: (key: string, value: string) => void; captureException: (err: unknown, context?: Record) => void; }; /* Excluded from this release type: SDKSentrySink */ /** * Keep the receipt-token transfers that moved shares between `wallet` and * another holder. * * Vault shares are transferable ERC-20 tokens, so a wallet can hold a position * it never deposited into — a migration airdrop, a DEX purchase, a transfer from * another wallet. Mints (from the zero address), burns (to it) and transfers to * or from the vault itself are dropped: those are the deposit and withdrawal * legs the subgraph history already records, and counting them again would * double the cost basis. Transfers to or from `exclude` are dropped too. * * @param transfers - Receipt-token transfers touching `wallet`, as returned by * the vault's transfer subgraph. * @param wallet - The wallet whose position is being valued. * @param vault - The vault contract address. * @param exclude - Other counterparties whose transfers are not peer * transfers, such as a LayerZero OVault's hub composer and share OFT * (`hubComposer` / `hubShareOFT` in `LAYERZERO_VAULTS`). Defaults to none. * @returns The peer-to-peer transfers, in input order. Addresses compare * case-insensitively. * @example * ```ts * const peer = selectPeerTransfers(transfers, wallet, vault); * ``` */ export declare function selectPeerTransfers(transfers: T[], wallet: IAddress, vault: IAddress, exclude?: string[]): T[]; /** * Keep the `ReserveDeposit` events that explain a share mint the indexed * deposit history misses. * * High Growth ETH mints shares for deposits made through Kelp's gain adapter * with a `ReserveDeposit` event instead of an ERC-4626 `Deposit`, so those * deposits are absent from the user history and fail {@link historyCoversMints}. * An event counts only when its transaction mints shares to `wallet` and holds * no indexed deposit, so a deposit is never counted twice. * * Pure and synchronous. Hashes and addresses compare case-insensitively. * * @param params - See {@link SelectReserveDepositsParams}. * @returns The matching events, in input order. * @example * ```ts * const reserve = selectReserveDeposits({ * reserveDeposits: await getSubgraphUserReserveDeposits(wallet, provider, vault), * transfers, * wallet, * depositTransactionHashes, * }); * ``` */ export declare function selectReserveDeposits({ reserveDeposits, transfers, wallet, depositTransactionHashes, }: SelectReserveDepositsParams): ISubgraphReserveDeposit[]; /** Inputs {@link selectReserveDeposits} matches. */ export declare interface SelectReserveDepositsParams { /** The wallet's `ReserveDeposit` events (see `getSubgraphUserReserveDeposits`). */ reserveDeposits: ISubgraphReserveDeposit[]; /** Every share-token transfer touching `wallet`, mints included. */ transfers: Pick[]; /** The wallet whose history is being completed. */ wallet: IAddress; /** Transaction hashes of the wallet's indexed deposits. */ depositTransactionHashes: string[]; } /** * Fetches the senders whitelist contract address from a whitelisted allocation vault * @param signer - signer / provider object * @param options - object including vault contract address * @returns the senders whitelist contract address */ export declare function sendersWhitelistAddress(signer: IContractRunner, options: { vault: IAddress; }): Promise; /** * Set (or clear) the process-global attribution config. * * Called unconditionally on every `AugustSDK` construction — an instance * that omits `attribution` passes `null` and RESETS the state, so a prior * instance's builder codes or origin code never leak into a later instance * in the same process (same semantics as `setPublicApiBaseUrl`). * * @param config Attribution config from the SDK constructor, or `null` to * disable attribution. * @throws Error when the config's builder codes fail validation — thrown * synchronously from the constructor so misconfiguration is caught at * init, not on the first write. * @throws {@link AugustValidationError} when `originCode` is not a 32-byte * hex string. */ export declare function setAttribution(config: IAttributionConfig | null): void; declare function setDevMode(devMode: boolean): void; declare function setLogger(customLogger: SDKLogger): void; /** * Override the base URL used for `WEBSERVER_URL.public` requests — the * unauthenticated vault-catalog API that `getVault` / `fetchTokenizedVault` * (and the other `fetchAugustPublic` callers) read from. Defaults to the * compiled-in prod base (`https://api.augustdigital.io/api/v1`); pass `null` * (or call with no arguments) to clear. * * Intended for non-prod deployments that run against an ISOLATED backend * (e.g. a staging API): set it once at construction via * `IAugustBase.publicApiBaseUrl` so a staging-only vault resolves. Production * leaves it unset, so behaviour is unchanged. * * This is a process-global override on the fetcher helpers. The SDK constructor * calls it on EVERY instantiation (with `null` when `publicApiBaseUrl` is * omitted), so the last `AugustSDK` instantiated is authoritative — a prod * instance resets it to the default even after a prior staging instance set it. * An invalid or non-http(s) URL is treated as "no override": it RESETS to the * compiled-in default (warned) rather than retaining a prior value, so a bad env * value can neither break fetches nor silently leave a previous instance's base * in place. * * Whenever the effective base CHANGES, the shared public-response cache is * cleared, so catalog data fetched from the previous backend is never served for * the new one (e.g. a prod-cached vault leaking into a staging instance). Base * changes happen at construction, when the cache is cold, so this is ~free. * * @param url - Absolute http(s) base URL (trailing slash is trimmed). `null`, or * an invalid / non-http(s) value, resets to the compiled-in public base. */ export declare function setPublicApiBaseUrl(url?: string | null): void; export declare const setSafeCache: (key: string, value: T) => Promise; /** * Record the consuming application's `appName` so every request to the * August backend carries it as `x-august-app`, next to * `x-august-sdk-version`. This gives the backend per-integrator request * counts that do not depend on Sentry sampling. * * Process-global, last writer wins — the same contract as * `setSdkRequestTimeout` and `setPublicApiBaseUrl`. The `AugustSDK` * constructor calls this with its validated `appName`. * * @param appName - Validated app-name slug, or `null` to stop sending it. */ export declare function setSdkAppName(appName?: string | null): void; /** * Override the default request timeout used by every August fetcher helper * when the caller doesn't supply a per-call `timeoutMs`. Pass `null` (or * call with no arguments) to clear the override and fall back to the * compiled-in `REQUEST_TIMEOUT_MS`. * * @param ms - Positive number of milliseconds to wait before aborting, or * `null` to clear. */ export declare function setSdkRequestTimeout(ms?: number | null): void; /* Excluded from this release type: setSentrySink */ /** Plug in an `ILogger`. Independent of `setLogger`; pass `null` to clear. */ declare function setStructuredLogger(custom: ILogger | null): void; /** * Value a wallet's Tokenized Vault V2 redemption requests, which carry only * shares. * * Every processed withdrawal (`WithdrawalProcessed.assetsAmount`) counts at the * assets the vault paid. Its shares, estimated at the vault's * `asset_share_ratio` on the day it was processed, retire the oldest requests * first. Request shares left over count at the ratio on their claim date (see * `computeClaimableDate`) once claimable: the subgraph lacks some processed rows * (none for earnAUSD before 2026-02-01), and that ratio lands within about * 0.05% of what the vault paid. Shares not yet claimable are left to the * current share price. Matching by amount, not by claim date, keeps the result * right when a vault processes a request before the date today's `lagDuration` * implies. A leftover under 0.5% of a request that a later processed * withdrawal followed is rounding from the daily ratio, so it is dropped. * * Pure and synchronous. Assumes, as the getter does, that shares and assets * share the vault's decimals. A day with no usable ratio takes the latest * earlier day's, and a date older than the history takes the earliest day's. * * @param params - See {@link SettleV2RedemptionsParams}. * @returns The settled assets and the shares left to the current price; every * requested share is pending when `ratios` holds no usable day. * @example * ```ts * const { settledAssetsRaw, pendingShares } = settleV2Redemptions({ * history, * lagDuration: 259_200, * ratios: (await fetchVaultHistoricalTimeseries(vault, nDays)).data, * now: Math.floor(Date.now() / 1000), * }); * ``` */ export declare function settleV2Redemptions({ history, lagDuration, ratios, now, }: SettleV2RedemptionsParams): V2RedemptionValue; /** Inputs {@link settleV2Redemptions} values. */ export declare interface SettleV2RedemptionsParams { /** The wallet's user history (see `getSubgraphUserHistory`). */ history: ISubgraphUserHistoryItem[]; /** The vault's `lagDuration()`, in seconds. */ lagDuration: number; /** * The vault's daily history from `fetchVaultHistoricalTimeseries`, keyed by * UTC date (`YYYY-MM-DD`). Only `asset_share_ratio` (assets per share) is * read. */ ratios: Record>; /** The current time, in unix seconds. */ now: number; } /** * Replay a call via `eth_call` and decode the revert when it fails. * * The primary use is re-executing a transaction that failed at `estimateGas` * (so no transaction hash ever existed): the node returns the *full* revert * blob, which both confirms the failure still reproduces and recovers * untruncated revert data even when the original error text was clipped in * transit. Passing a historical `blockTag` replays against archival state * (requires an archive-capable RPC). * * Exactly 1 RPC call (`eth_call`). * * @param provider - A connected `JsonRpcProvider` for the target chain, e.g. * from `createProvider(rpcUrl, chainId)`. Note that some listed public RPCs * reject keyless `eth_call` — supply a working endpoint via the SDK's RPC * precedence (constructor `providers` map / `AUGUST_RPC_` env). * @param tx - The call to replay: `to` and `data` are required, `from` * matters whenever the target checks `msg.sender`. * @param blockTag - Optional block to execute against (`'latest'` by * default; a number or hex tag replays historical state). * @param opts - Optional settings forwarded to {@link decodeRevertData}. * @param opts.extraAbis - Additional ABIs checked before the built-in corpus * when decoding a revert. * @returns `{ ok: true, returnData }` on success; on failure `{ ok: false }` * with the fresh `revertData` and its decode when the node supplied one. * Never throws on revert — only on programmer error (e.g. no provider). * * @example * ```ts * const result = await simulateCall(provider, { * from: eoa, * to: vault, * data: calldata, * }); * if (!result.ok && result.decoded) console.log(result.decoded.signature); * ``` */ export declare function simulateCall(provider: JsonRpcProvider, tx: { from?: string; to: string; data: string; }, blockTag?: string | number, opts?: { extraAbis?: InterfaceAbi[]; }): Promise; /** * Simulate contract transaction without executing on-chain. * Useful for testing transaction viability before sending. * @param provider Web3 provider * @param abi Contract ABI * @param functionName Function to simulate * @param options Transaction parameters including args, from, to * @returns Decoded function result or false if simulation fails */ export declare function simulateTransaction(provider: IContractRunner, abi: string[] | any, functionName: string, options?: { args?: (string | number | bigint)[][]; from?: string; to?: string; }): Promise; declare const SLACK: { error: typeof error; }; declare namespace Slack { export { resolveSlackWebhookUrl, SLACK_WEBHOOK_ENV_VAR, DEFAULT_SLACK_WEBHOOK_URL, SLACK } } export { Slack } /** * Environment variable holding the Slack incoming-webhook to post SDK alerts * to. Accepts either the full `https://hooks.slack.com/services/T…/B…/x…` URL * or the bare `T…/B…/x…` path suffix. */ declare const SLACK_WEBHOOK_ENV_VAR = "AUGUST_SDK_SLACK_WEBHOOK_URL"; /** * A sentence to append when the program rejected the instruction for * slippage, so the caller learns what to do rather than just what happened. * Empty for every other error. * * Not merely a restatement of the program's reason string. Both checked * instructions share error 6018, whose on-chain message is share-worded — * "Received fewer shares than the caller's minimum" — so on a *redeem*, where * the floor is denominated in assets, the program describes the wrong * quantity. This sentence is what makes that case readable. The numeric code * `describeSolanaError` renders alongside it is kept deliberately: it is the * handle support and telemetry group on, and it survives a reword of the * program's message. */ declare function slippageHint(e: unknown): string; export declare const Solana: { utils: { getExplorerLink: ({ signature, type, network, }: { signature: string; type: "tx" | "address" | "token"; } & ISolanaConnectionOptions) => string; isSolanaAddress: isSolanaAddress; isSolana: (signature: string) => boolean; getProgram: ({ provider, idl, programId, network, }: { idl?: any; programId?: string; } & ISolanaConnectionOptions) => Program; getProvider: ({ connection, publicKey, signTransaction, }: { publicKey: PublicKey; signTransaction: ((transaction: T) => Promise) | undefined; } & ISolanaConnectionOptions) => BlockhashConfirmingProvider; getReadOnlyProvider: ({ connection }: ISolanaConnectionOptions) => AnchorProvider; deriveShareMintPda: (vaultProgramId: PublicKey | string) => web3.PublicKey; deriveVaultStatePda: (vaultProgramId: PublicKey | string) => web3.PublicKey; deriveVaultTokenAtaPda: (vaultProgramId: PublicKey | string, depositMint: PublicKey, vaultVersion?: number) => web3.PublicKey; getVaultState: ({ provider, connection, vaultProgramId, vaultAddress, idl, }: { vaultProgramId: PublicKey | string; vaultAddress?: PublicKey | string; idl: any; } & ISolanaConnectionOptions) => Promise<{ vaultState: unknown | null; depositMintDecimals: number | null; }>; getVaultStateReadOnly: ({ vaultProgramId, vaultAddress, connection, idl, }: { vaultProgramId: PublicKey | string; vaultAddress?: PublicKey | string; idl: any; } & ISolanaConnectionOptions) => Promise<{ vaultState: ISolanaVaultState | null; depositMintDecimals: number | null; }>; getToken: ({ mintAddress, endpoint, connection, }: { mintAddress: string | PublicKey; } & ISolanaConnectionOptions) => Promise<{ address: string; symbol: string; decimals: number; name: string; image: string; } | null>; getTokenSymbol: ({ endpoint, mintAddress, }: { mintAddress: string | PublicKey; } & ISolanaConnectionOptions) => Promise; fetchUserTokenBalance: ({ connection, publicKey, depositMint, }: { publicKey: PublicKey | string; depositMint?: PublicKey | string; } & ISolanaConnectionOptions) => Promise; fetchUserShareBalance: ({ connection, publicKey, shareMint, }: { publicKey: PublicKey | string; shareMint?: PublicKey | string; } & ISolanaConnectionOptions) => Promise; fetchUserShareBalanceRaw: ({ connection, publicKey, shareMint, }: { publicKey: PublicKey | string; shareMint?: PublicKey | string; } & ISolanaConnectionOptions) => Promise<{ amount: string; decimals: number | null; }>; getBestRpcEndpoint: ({ endpoint, network, connection, }: ISolanaConnectionOptions) => Promise<"http://127.0.0.1:8899" | `https://${string}`>; fallbackDecimals: number; fallbackNetwork: ISolanaNetwork; programIds: { devnet: { vault: string; withdrawalQueue: string; }; "mainnet-beta": { vault: string; }; localnet: { vault: string; withdrawalQueue: string; }; }; getVaultMints: ({ vaultProgramId, vaultAddress, connection, idl, }: { vaultProgramId: PublicKey | string; vaultAddress?: PublicKey | string; idl: any; } & ISolanaConnectionOptions) => Promise<{ depositMint: string; shareMint: string; vaultVersion: number | undefined; }>; resolveProgramId: (vaultAddress: string, solanaMetadata?: { program_id?: string; } | null) => string; }; constants: typeof SolanaConstants; actions: typeof SolanaActions; getters: typeof SolanaGetters; }; declare namespace SolanaActions { export { describeSolanaError, slippageHint, validateExplicitFloor, handleSolanaDeposit, handleSolanaRedeem } } /** * Solana Adapter for August SDK * * @example * To access the Solana adapter instance * ``` * const sdk = new AugustSDK() * sdk.solana.getVaultState() * ``` */ declare class SolanaAdapter { private _endpoint; private _network; private _connection; private _provider; /** * @param commitment - Commitment for every read this adapter makes *and* for * the confirmation of every write, so the two always describe the same * chain state — the vault handlers take it from this same `Connection`. * * Defaults to `'finalized'`, which is what this adapter has always used in * practice: it previously passed no commitment at all, so both reads and * confirmations fell through to the RPC's own `'finalized'` default. The * default is stated explicitly now rather than inherited, but it is * unchanged. * * Pass `'confirmed'` for a markedly faster round trip — seconds rather * than tens of seconds — accepting that the state you act on can still, in * principle, be rolled back. Also settable as the `commitment` field of * the `solana` config passed to `AugustSDK`. */ constructor(endpoint: ISolanaRpcEndpoint, network?: ISolanaNetwork_2, commitment?: Commitment); get endpoint(): `https://${string}`; get network(): ISolanaNetwork_2; get connection(): web3.Connection; get provider(): AnchorProvider; setWalletProvider(_publicKey: PublicKey | string, signTransaction: ((transaction: T) => Promise) | undefined): void; /** * Build an Anchor `Program` bound to this adapter's provider and network. * * The program id is resolved as: explicit `programId` → the `address` carried * by a custom `programIdl` → the canonical deployment for this adapter's * network. A copy of the SDK's bundled `vaultIdl` defers to the network * default (its embedded `address` is a build stamp, not network-aware), so * forwarding it on devnet never silently targets the mainnet program. * * An IDL whose `metadata.name` is `august_withdrawal_queue` resolves against * the withdrawal queue program's network default instead of the vault's. * * @param programIdl - Anchor IDL to bind. Defaults to the SDK's bundled * `august_vault` IDL. A custom IDL's `address` is honoured when it differs * from the program's canonical id (the build stamp every bundled copy of * the vault or queue IDL carries). * @param programId - Base58 program id that overrides both the IDL's address * and the network default. Use this to target a non-canonical deployment. * @returns An Anchor `Program` for the resolved program id. No RPC is made — * construction is offline. * @throws {@link AugustValidationError} if no program id can be resolved * because the program has no canonical deployment on this adapter's network * (neither program on `testnet`; the withdrawal queue not yet on * `mainnet-beta`) and neither `programId` nor a custom IDL address was * supplied. * * @example * ```ts * // canonical program on the adapter's network * const program = sdk.solana.getProgram(); * * // a different deployment, same interface * const legacy = sdk.solana.getProgram(vaultIdl, '7B8n9vL51b6ibqRAd1adZsi3x3kxtq5NZaondh22Vkyq'); * ``` */ getProgram(programIdl?: any, programId?: string): Program; getVaultState(vaultProgramId: PublicKey | string, idl: any, vaultAddress?: PublicKey | string): Promise<{ vaultState: unknown | null; depositMintDecimals: number | null; }>; getVaultStateReadOnly(vaultProgramId: PublicKey | string, idl: any, vaultAddress?: PublicKey | string): Promise<{ vaultState: ISolanaVaultState | null; depositMintDecimals: number | null; }>; getToken(mintAddress: string | PublicKey): Promise<{ address: string; symbol: string; decimals: number; name: string; image: string; }>; getTokenSymbol(mintAddress: string | PublicKey): Promise; fetchUserTokenBalance(publicKey: PublicKey | string, depositMint: PublicKey | string): Promise; fetchUserShareBalance(publicKey: PublicKey | string, shareMint: PublicKey | string): Promise; /** * BigInt-safe variant of {@link fetchUserShareBalance}. Returns the raw u64 * `amount` (as a base-units string) plus the mint's `decimals` (or `null` * when the scale can't be determined — see Returns), so the caller can * produce a correct `INormalizedNumber` without losing precision. * * Prefer this anywhere the result feeds BigInt math — positions, max- * actions, redemption sizing, allowance checks. `fetchUserShareBalance` * returns a JS-number `uiAmount` which silently encodes against 18 decimals * when passed through `toNormalizedBn(value)` without an explicit decimals * argument; that's exactly how the jitoSOL "missing position" regression * manifested. * * RPC cost: 1 `getParsedTokenAccountsByOwner` call. Worst case ~150ms on a * healthy mainnet endpoint. * * @param publicKey Wallet owner (PublicKey or base58 string). * @param shareMint The vault's share-token mint (PublicKey or base58). * @returns * `{ amount, decimals }`. Three observable shapes: * - `{ amount: '', decimals: }` — token account exists. * - `{ amount: '0', decimals: null }` — no token account for this mint * under this wallet, OR `tokenAmount` was missing from the response, * OR `publicKey`/`shareMint` was not supplied. Distinguishable from a * genuine zero-balance account (`decimals` would be set there). * - `{ amount: '0', decimals: null }` — RPC threw (error is logged). * * `decimals === null` means "we could not determine the scale" — callers * that need an `INormalizedNumber` must fall back to a known decimals * value (typically the deposit mint's decimals from backend metadata) * before normalizing. Never throws. */ fetchUserShareBalanceRaw(publicKey: PublicKey | string, shareMint: PublicKey | string): Promise<{ amount: string; decimals: number | null; }>; /** * Deposit funds into a Solana August vault. * @param depositAmount `bigint` (raw on-chain units) or `number` (UI amount). * @param sendTransaction - **Ignored; scheduled for removal in the next major release.** * Share-account creation is now prepended to the deposit instruction, so * the SDK sends no second transaction and never invokes this callback — * signing goes through the provider's wallet. * * **Pass `undefined` here; do not delete the argument.** It sits *before* * `vaultAddress`, so removing it shifts your vault address into this slot * and leaves `vaultAddress` undefined — which silently falls back to the * legacy single-vault PDA derivation and targets a different vault. * @param options - Slippage protection. By default the SDK quotes the shares this deposit should mint * from the vault's current state and passes that quote, lowered by 50 bps, * as the floor to the program's checked instruction. See {@link ISolanaDepositOptions}. */ vaultDeposit(vaultProgramId: PublicKey | string, idl: any, publicKey: PublicKey | string, depositAmount: number | bigint, sendTransaction?: (transaction: Transaction | web3.VersionedTransaction, connection: Connection, options?: SendTransactionOptions) => Promise, vaultAddress?: PublicKey | string, options?: ISolanaDepositOptions): Promise; /** * Redeem vault shares from a Solana August vault. * @param redeemShares `bigint` (raw share units) or `number` (UI amount). * @param sendTransaction - **Ignored; scheduled for removal in the next major release.** * Payout- and fee-recipient-account creation is now prepended to the redeem * instruction, so the SDK sends no second transaction and never invokes * this callback — signing goes through the provider's wallet. * * **Pass `undefined` here; do not delete the argument.** It sits *before* * `vaultAddress`, so removing it shifts your vault address into this slot * and leaves `vaultAddress` undefined — which silently falls back to the * legacy single-vault PDA derivation and targets a different vault. * @param options - Slippage protection. By default the SDK quotes the net payout these shares should return * from the vault's current state and passes that quote, lowered by 50 bps, * as the floor to the program's checked instruction. See {@link ISolanaRedeemOptions}. * * **On a vault with a withdrawal queue**, holders cannot redeem directly: * request with {@link SolanaAdapter.vaultRequestRedeem}, then claim here with * `options.request` once the cooldown has run. The claim settles at the share * price of that moment, net of the withdrawal fee, held to the floor set at * request time, and pays the request's recipient; `redeemShares` and * `vaultAddress` are then ignored, and `slippageBps` / `minAssetsOut` must * be left unset. Without `request`, a * queued vault is refused before signing. * @returns The confirmed transaction's signature. * @throws {@link AugustValidationError} for bad input, for a queued vault * without `options.request`, or for a request the wallet cannot claim yet. * @example * ```ts * // A vault with a withdrawal queue: claim a ready request. * const { pendingRedemptions } = await sdk.getVaultAvailableRedemptions({ vault, wallet }); * await sdk.solana.vaultRedeem(programId, vaultIdl, wallet, 0n, undefined, undefined, { * request: pendingRedemptions[0].id, * }); * ``` */ vaultRedeem(vaultProgramId: PublicKey | string, idl: any, publicKey: PublicKey | string, redeemShares: number | bigint, sendTransaction?: (transaction: Transaction | web3.VersionedTransaction, connection: Connection, options?: SendTransactionOptions) => Promise, vaultAddress?: PublicKey | string, options?: ISolanaRedeemOptions): Promise; /** * Request a withdrawal from a Solana vault that has a withdrawal queue. * * With a queue attached, a vault's shares cannot be redeemed directly: the * holder escrows them in a request, waits out the queue's cooldown, then * claims with {@link SolanaAdapter.vaultRedeem} and `options.request`, or * anyone the request permits (a keeper, by default) claims for them. The * payout is priced when the request is claimed, not now, but never below the * floor set here: by default the current net quote lowered by 50 bps, so a * fee rise or mark-down in between makes the claim fail rather than pay * less. A pending request * can be cancelled at any time with * {@link SolanaAdapter.vaultCancelRedeemRequest}, which returns the shares. * * Signs through the provider's wallet and submits one transaction, which * also creates the recipient's deposit-token account when it has none. The * holder pays the request account's rent, refunded when it is claimed or * cancelled, plus rent for any account created. Use * `getVaultAvailableRedemptions` to list requests and see when they can be * claimed. * * RPC: three to four reads, then the send. * * @param params - Vault, wallet, shares, and optional recipient, finalizer, * request id and floor. See {@link ISolanaRequestRedeemParams}. * @returns The signature, the request's address (pass it as `request` to * claim or cancel) and its id. * @throws {@link AugustValidationError} for bad input, a vault without an * attached queue, a frozen account or too few shares, before signing. * @throws {@link AugustSDKError} when the transaction fails. * @example * ```ts * const { request } = await sdk.solana.vaultRequestRedeem({ * vault: vaultStateAddress, * wallet: wallet.publicKey, * amount: 10, // shares, UI units * }); * // ...once the cooldown has run: * await sdk.solana.vaultRedeem(programId, vaultIdl, wallet.publicKey, 0n, undefined, undefined, { request }); * ``` */ vaultRequestRedeem(params: ISolanaRequestRedeemParams): Promise; /** * Cancel a pending withdrawal request, returning its shares to the holder. * * Allowed at any time while the request exists: during the cooldown, after * it, past the fulfillment window, and while the vault is paused. Only the * holder who made the request may cancel it. Signs through the provider's * wallet; the request's rent is refunded to the holder. * * RPC: three reads, then the send. * * @param params - The holder and the request address. See * {@link ISolanaCancelRedeemRequestParams}. * @returns The confirmed transaction's signature. * @throws {@link AugustValidationError} for a missing request, or one this * wallet did not make, before signing. * @throws {@link AugustSDKError} when the transaction fails. * @example * ```ts * await sdk.solana.vaultCancelRedeemRequest({ wallet: wallet.publicKey, request }); * ``` */ vaultCancelRedeemRequest(params: ISolanaCancelRedeemRequestParams): Promise; /** * Canonical program id for a program type on this adapter's network. * * @param type - Program to look up: `'vault'` (august_vault) or * `'withdrawalQueue'` (august_withdrawal_queue). * @returns The base58 program id. * @throws {@link AugustValidationError} if `type` is not one of the two * program types, or the program is not deployed on this adapter's network: * neither program on `testnet`, and `'withdrawalQueue'` not yet on * `mainnet-beta`. * @example * ```ts * const queueProgram = adapter.getProgramId('withdrawalQueue'); * ``` */ getProgramId(type: 'vault' | 'withdrawalQueue'): string; } declare namespace SolanaConstants { export { fallbackDecimals, fallbackNetwork, fallbackRpcEndpoints, getDeployedProgramIds, programIds, vaultIdl, ISolanaDeployedNetwork, ISolanaProgramIds } } declare namespace SolanaGetters { export { getSolanaVault } } declare const SOROBAN_RPC_URLS: Record; export declare const SPECIAL_CHAINS: { solana: { name: string; chainId: number; explorer: string; }; stellar: { name: string; chainId: number; explorer: string; }; }; export declare const Stellar: { utils: { isStellarAddress: isStellarAddress; getExplorerLink: getExplorerLink; assertNotStellar: assertNotStellar; }; constants: typeof StellarConstants; actions: typeof StellarActions; submit: typeof StellarSubmit; getters: typeof StellarGetters; }; declare const STELLAR_CHAIN: { name: string; chainId: number; explorer: string; }; declare const STELLAR_CHAIN_ID: number; declare const STELLAR_FALLBACK_DECIMALS = 7; declare namespace StellarActions { export { handleStellarDeposit, handleStellarRedeem } } /** * Stellar Adapter for August SDK * * @example * ``` * const adapter = new StellarAdapter('testnet'); * const xdr = await adapter.vaultDeposit({ * contractId: 'CBGWW5...', * amount: '1000000', * senderAddress: 'GDLZ...', * }); * // Sign xdr with wallet (e.g. Freighter), then submit via adapter.submitTransaction() * ``` */ export declare class StellarAdapter { private _network; /** * Optional consumer-supplied Soroban RPC endpoint (e.g. a keyed Alchemy URL). * When set it is the primary, with the SDK's public endpoints as failover. */ private _sorobanRpcUrl?; /** * @param network - Stellar network to operate on; defaults to `'mainnet'`. * @param options - Optional adapter configuration. Its `sorobanRpcUrl` field * overrides the Soroban RPC endpoint (e.g. a keyed Alchemy URL): it becomes * the primary with the SDK's built-in public endpoints kept behind it as * failover, and a per-call `sorobanRpcUrl` (on the deposit/redeem params) * takes precedence over this adapter-level one. */ constructor(network?: IStellarNetwork, options?: { sorobanRpcUrl?: string; }); get network(): IStellarNetwork; isStellarAddress(address: string): boolean; getExplorerLink(id: string, type?: 'contract' | 'account' | 'tx'): string; /** * Build an unsigned deposit transaction for a Stellar vault. * @returns Base64-encoded XDR of the unsigned transaction. */ vaultDeposit(params: Omit): Promise; /** * Build an unsigned redeem transaction for a Stellar vault. * * Side effect on failure: a redemption the vault cannot serve is reported to * that vault's curator, since Stellar vaults are instant-redeem only and this * is the curator's only signal. Fire-and-forget — it never delays or alters * the error you receive. On by default in production; see * `monitoring.curatorAlerts` and the Curator Notifications section of the * Stellar Actions guide for exactly what is sent and how to opt out. * * @returns Base64-encoded XDR of the unsigned transaction. */ vaultRedeem(params: Omit): Promise; /** * Side effect: a submitted transaction that the network reports as a failed * `redeem` operation is reported to that vault's curator, on the same * fire-and-forget terms as {@link StellarAdapter.vaultRedeem}. * * Submit a signed Soroban transaction and poll until the network confirms it. * * Submits on the network this adapter was constructed with, so `signedXdr` * must be signed for that same network. * * @param signedXdr - Base64-encoded XDR of the signed transaction. * @returns The transaction hash once the network confirms it as successful. * @throws {@link AugustTimeoutError} when the transaction is not confirmed * within the poll budget (`MAX_POLL_ATTEMPTS`). * @throws {@link AugustSDKError} when the RPC rejects the submission or the * transaction confirms as failed. Its `context` carries `{ network, status }` * plus, when the result XDR decodes, a `resultCode` string holding the * transaction-level reason (e.g. `"txBadSeq"`, `"txTooLate"`); `resultCode` * is `undefined` when the code cannot be decoded. * @example * ```ts * try { * const hash = await adapter.submitTransaction(signedXdr); * } catch (err) { * if (err instanceof AugustSDKError && err.context?.resultCode === 'txBadSeq') { * // stale sequence number — rebuild the transaction and resubmit * } * } * ``` */ submitTransaction(signedXdr: string): Promise; /** * Get user's vault share balance. * * @returns The position `{ shares, decimals, decimalsFromFallback }`, or null * if the balance read fails. When `decimalsFromFallback` is `true` the * `decimals()` read failed and `decimals` is the fallback (7) — callers sizing * a redeem MUST refuse rather than trust it. */ getUserPosition(vaultAddress: string, walletAddress: string): Promise; /** * Preview how many vault shares a deposit amount would yield. * @param vaultAddress Stellar contract ID (C… address) * @param rawAmount Deposit amount in the deposit token's smallest unit * @returns Raw share amount as a string, or null if query fails. */ convertToShares(vaultAddress: string, rawAmount: string): Promise; } declare namespace StellarConstants { export { STELLAR_CHAIN_ID, STELLAR_CHAIN, SOROBAN_RPC_URLS, NETWORK_PASSPHRASES, STELLAR_FALLBACK_DECIMALS, TX_TIMEOUT_SECONDS, QUERY_TIMEOUT_SECONDS, MAX_FEE_STROOPS, POLL_INTERVAL_MS, POLL_INTERVAL_MAX_MS, POLL_INTERVAL_BACKOFF, MAX_POLL_ATTEMPTS } } declare namespace StellarGetters { export { getStellarVault, getStellarUserPosition, convertToShares } } declare namespace StellarSubmit { export { submitStellarTransaction } } /** * @deprecated * Replaced by SUBGRAPH_VAULT_URLS which are subgraphs deployed on Goldsky. */ export declare const SUBGRAPH_POOL_URLS: (apiKey: string, chainId?: number, pool?: IAddress) => { 1: string; 8453: string; 43114: string; 42161: string; 56: string; } | { 999: string; }; /** * Subgraph URLs * @deprecated use getVaultMetadata to fetch subgraph URLs from the backend */ export declare const SUBGRAPH_VAULT_URLS: Record; /** * Submit a signed Soroban transaction and poll until confirmed. * * @param signedXdr - Base64-encoded XDR of the signed transaction * @param network - Stellar network name * @param sorobanRpcUrl - Optional override Soroban RPC endpoint (e.g. a keyed * Alchemy URL); becomes the primary with the SDK's public endpoints kept as * failover. Omit to use the public endpoints. * @returns The transaction hash once the network confirms it as successful * @throws {@link AugustTimeoutError} when the transaction is not confirmed * within the poll budget (`MAX_POLL_ATTEMPTS`). * @throws {@link AugustSDKError} when the RPC rejects the submission or the * transaction confirms as failed. Its `context` carries `{ network, status }` * plus, when the result XDR decodes, a `resultCode` string holding the * transaction-level reason (e.g. `"txBadSeq"`, `"txTooLate"`); `resultCode` * is `undefined` when the code cannot be decoded. * * Side effect: a transaction whose `resultCode` is `txFailed` — the operation * itself ran and failed — and whose envelope shows a vault `redeem` is relayed * to that vault's curator (fire-and-forget, deduped — see * {@link reportRedeemFailure}). Nothing else alerts: an RPC-rejected * broadcast is a retryable race, a poll timeout is indeterminate (the * transaction may yet succeed), and any other result code means the redeem * never executed. * @example * ```ts * try { * const hash = await submitStellarTransaction(signedXdr, 'mainnet'); * } catch (err) { * if (err instanceof AugustSDKError && err.context?.resultCode === 'txBadSeq') { * // stale sequence number — rebuild the transaction and resubmit * } * } * ``` */ declare function submitStellarTransaction(signedXdr: string, network: IStellarNetwork, sorobanRpcUrl?: string): Promise; /** * Chain ID used to address Sui vaults. * * Unlike Solana (`-1`) and Stellar (`-3`), Sui does not use a synthetic * negative ID — `101` is the SLIP-44-derived value the Sui adapter has always * used. It lives here rather than in `adapters/sui/constants.ts` so that * `core/` can recognise it without importing the adapter layer (which would * create a `core → adapters` back-edge); the adapter re-exports it. */ export declare const SUI_CHAIN_ID = 101; /** * Sui Adapter for August SDK * * @example * To access the Sui adapter instance * ``` * const sdk = new AugustSDK() * sdk.sui.getEmberVaults() * ``` */ declare class SuiAdapter { private _apiBaseUrl; private _chainId; constructor(apiBaseUrl?: string, chainId?: number); get apiBaseUrl(): string; get chainId(): number; getEmberVaults(options?: IFetchEmberVaultsOptions): Promise; getEmberTVL(limit?: number): Promise; convertFromE9(value: string | number): number; calculateUtilization(current: string | number, maximum: string | number): number; isSuiAddress(address: string): boolean; isSuiVault(chainId: number): boolean; transformEmberVaultToIVault(emberVault: IEmberVault): IVault; transformEmberVaultsToIVaults(emberVaults: IEmberVault[]): IVault[]; } /** * Sum a wallet's per-asset deposits into the vault's own decimals, at face * value — 1 unit of any deposited asset is treated as 1 unit of the vault's * reporting currency, with no live price conversion. * * Used by {@link getVaultUserLifetimePnl} for `totalDeposited`. Pre-deposit * multi-asset vaults only accept dollar-pegged stablecoins (USDC, USDT, DAI, * USDS, RLUSD, etc.) into a dollar-denominated vault, so face value is a * reasonable stand-in for USD value. This intentionally does NOT re-quote * through a live price oracle: doing so priced a historical deposit at * today's market rate, so `totalDeposited` (and lifetimePnl) drifted between * calls purely from stablecoin peg noise, and approximately re-inflated * deposits back toward face value — which silently excluded the vault's * entry fee from PnL. The fee is money the user actually paid, so PnL must * be computed net of it. * * @param depositsByAsset - Raw deposited amount per asset, keyed by * lowercased asset address (or `'default'` / `'lz-default'` for * single-asset / cross-chain rows). * @param assetDecimals - Decimals for each key in `depositsByAsset`. * @param vaultDecimals - The vault's own decimals — the target scale every * asset is rescaled to. * @returns Total deposited, in raw base units at `vaultDecimals`. */ export declare function sumDepositsAtFaceValue(depositsByAsset: Map, assetDecimals: Map, vaultDecimals: number): bigint; /** * Address of the `SwapRouter` periphery contract on each supported chain. * * Missing keys mean no SwapRouter is deployed on that chain — callers * should fall back to legacy adapter paths. * * @see {@link getSwapRouterAddress} for the typed lookup helper. */ export declare const SWAP_ROUTER_ADDRESSES: Readonly>; /** * Block at which each chain's `SwapRouter` was deployed/configured — the safe * lower bound for scanning its `TokenEnabled` / `VaultEnabled` log history. * * The router stores its allowlist as `mapping(address => bool) whitelistedTokens` * with no on-chain enumeration, so {@link getSwapRouterWhitelistedTokens} must * reconstruct the candidate set from `TokenEnabled` events before verifying each * against the current mapping. Starting the `eth_getLogs` scan here (rather than * from genesis) bounds it to the router's own lifetime — a few chunks — instead * of the whole chain. * * Each value is the router's deployment block (its first emitted event, the * constructor `OwnershipTransferred`). A too-low value only costs extra empty * log ranges; a value ABOVE the first `TokenEnabled` would silently miss tokens, * so err on the side of earlier. */ export declare const SWAP_ROUTER_DEPLOY_BLOCKS: Readonly>; /** * The DEX aggregator whitelisted on each chain's `SwapRouter` via * `enableRouter`, plus the single aggregator contract method every swap leg is * pinned to and that method's 4-byte selector. * * This is the single source of truth tying the off-chain swap-leg builder to * the on-chain router whitelist. The two MUST agree or `swapAndDeposit` reverts * with `InvalidRouter()` (router not whitelisted) or `InvalidNotWhitelisted()` * (selector not authorized). It is consumed in three places: * * - `dispatchViaSwapRouter` asks {@link fetchSwapQuote} to pin the aggregator to * `contractMethod`, then asserts the returned quote's `router` and payload * selector match this entry before broadcasting — failing closed rather than * letting the user pay gas for a transaction the contract will reject. * - The CI check `scripts/verify-swap-router-aggregator.mjs` asserts the * deployed `SwapRouter` actually has `tokenTransferProxies[router] != 0` and * `isAuthorizedSelector(router, selector) == true` for every entry here, so * config drift is caught at release time, not by a user's failed deposit. * * Pinning to one generic method matters: the aggregator otherwise picks a route * method per quote (e.g. a direct `swapExactAmountInOnUniswapV3`) that varies * with market conditions, producing a different selector each time. Pinning * collapses that to one stable selector so the on-chain whitelist needs only * that selector and never drifts as routing changes. * * `router` is the address the aggregator's calldata targets (ParaSwap v6.2 * pulls tokens to the Augustus contract itself, so the SwapRouter's * `tokenTransferProxies[router]` is the router address). `selector` is * `bytes4(keccak256("(...)"))`. Verify both against the * deployed router before adding a chain — a wrong value reverts at deposit time. */ export declare const SWAP_ROUTER_DEX_AGGREGATOR: Readonly>; /** * Vaults whose UI **may offer the any-token SwapRouter deposit surface** — * i.e. the SwapRouter is `enableVault`-ed for them on-chain. * * This is *eligibility metadata only*. It is consumed by: * - the app UI, to decide whether to render the (flag-gated) swap-router * deposit surface for a vault; and * - {@link swapRouterDeposit}, optionally, as a fail-fast eligibility check. * * It is deliberately **NOT** read by {@link vaultDeposit}: `vaultDeposit` never * swaps, and uses the SwapRouter only for a direct deposit carrying a * configured origin code (see `getDepositRoute`). That separation is what * stops a natively-accepted asset from being silently swapped — the * regression that implicit auto-routing caused. Any-token swap * deposits are the explicit, opt-in job of {@link swapRouterDeposit}. * * Membership requires the vault to be registered on-chain * (`vaultInfo[addr].referenceAsset != 0`) — an unregistered vault reverts with * `InvalidVault` at deposit time. A listed vault's natively-accepted assets * (for a multi-asset vault, its whole deposit-asset set) still deposit via * `vaultDeposit`; only tokens OUTSIDE that set go through `swapRouterDeposit`. * * Lowercase comparison is required when checking — use * {@link isSwapRouterEligible} rather than reading this set directly. * * @deprecated Superseded by {@link getSwapRouterEligibleVaults}, which derives * the eligible set from the router's on-chain `VaultEnabled` history and * verifies each vault's current registration (`vaultInfo.referenceAsset != 0`) * — so new enablements surface without an SDK release. This static set stays * functional as the zero-RPC fallback seed (e.g. TanStack Query `initialData`) * and for SDK-internal sync consumers. */ export declare const SWAP_ROUTER_ELIGIBLE_VAULTS: ReadonlySet; /** * Maximum number of swap legs the contract accepts in a single * `swapAndDeposit` call. Mirrors the on-chain `MAX_SWAPS` constant; reading * the on-chain value at call time would add an RPC for no gain. * * Kept here so the SDK can reject oversize inputs at the boundary rather * than wait for the on-chain `TooManySwaps` revert. */ export declare const SWAP_ROUTER_MAX_SWAPS = 9; /** * Human-readable display name of the `SwapRouter` periphery contract on each * supported chain. * * The contract exposes no on-chain name (no `@title` accessor), so UIs that * want to show *which contract* performed the swap-and-deposit — rather than a * bare address — read it from here. Display metadata only: never derive * routing or eligibility logic from it. * * Missing keys mean no SwapRouter is deployed on that chain. * * @see {@link getSwapRouterName} for the typed lookup helper. */ export declare const SWAP_ROUTER_NAMES: Readonly>; /** * Wrapped-native ERC-20 per chain that has a SwapRouter deployment. Mirrors * the on-chain `wrappedNativeTokenAddress()` view to avoid an extra RPC on * every dispatch. Used to validate that native-token deposits target a * vault whose reference asset is the wrapped native — the only configuration * the contract's `depositNativeToken` / `swapAndDepositNativeToken` accept. * * **Wrap-only, WETH-vaults-only limitation.** Both payable entry points on the * deployed router (`depositNativeToken` and `swapAndDepositNativeToken`) only * wrap native ETH to this address and deposit — neither has an ETH→other-asset * swap leg. `swapAndDepositNativeToken`'s ABI takes no swap payload, so a DEX * swap is structurally impossible on that path too; its only difference from * `depositNativeToken` is applying the vault swap fee on the pure wrap. The * practical consequence: **native ETH can only be deposited into a vault whose * reference asset is this wrapped-native token** (e.g. a WETH-reference * vault). There is no atomic native-ETH deposit into a non-WETH-reference * vault (e.g. a USDC vault) — deposit the wrapped native token instead * (already whitelisted, and it routes through the swap leg for a vault whose * reference asset differs). True atomic ETH→any-asset support would require a * contract change (a payable `swapAndDeposit` variant), which is out of scope * for this SDK. Use {@link isNativeSwapRouterDepositSupported} to check a * vault's eligibility for the native path before offering it in a UI. */ export declare const SWAP_ROUTER_WRAPPED_NATIVE: Readonly>; /** * Swap one or more whitelisted ERC-20s into a vault's reference asset via * the on-chain SwapRouter, then deposit the proceeds into the vault. * * Approval is sent automatically when the caller's allowance on each * `swaps[i].tokenIn` against the SwapRouter is below `amountIn`. * * @param signer - ethers `Signer` or `Wallet` with the EOA that holds the input tokens. * @param options - {@link ISwapAndDepositOptions}. * @returns The transaction hash of the `swapAndDeposit` call. * * @throws {@link AugustValidationError} for unsupported chains, invalid * addresses, empty/oversized swap arrays, or an origin code not registered on * the router (a per-call code, or the instance code under * `attribution.strictOrigin`), before any approval. * @throws {@link AugustSDKError} while the SwapRouter is paused (checked before * any approval), or on unrecoverable contract or RPC failure. * * @example * ```ts * const quote = await fetchSwapQuote({ * chainId: 1, * srcToken: WBTC, * srcDecimals: 8, * destToken: USDC, * destDecimals: 6, * amount: 100_000_000n, * receiver: SWAP_ROUTER_ADDRESSES[1]!, * }); * const hash = await swapAndDeposit(signer, { * chainId: 1, * vault: '0x8AcA0841993ef4C87244d519166e767f49362C21', * receiver: wallet, * swaps: [{ * tokenIn: WBTC, * tokenOut: USDC, * amountIn: 100_000_000n, * minAmountOut: quote.minAmountOut, * router: quote.router, * payload: quote.payload, * }], * }); * ``` */ export declare function swapAndDeposit(signer: Signer | Wallet, options: ISwapAndDepositOptions): Promise; /** * Deposit into an August vault through the on-chain `SwapRouter`, selecting the * correct router path from the deposit asset. * * {@link vaultDeposit} never swaps; this function always routes through the * SwapRouter, because the caller asked it to. Keeping swaps opt-in is the * point: a native-deposit vault (e.g. a multi-asset Tokenized Vault V2 whose * non-reference assets are accepted directly) is never accidentally swapped — * the regression that implicit, allowlist-driven routing inside `vaultDeposit` * caused before it was removed. Use `vaultDeposit` for native / adapter * deposits and this for SwapRouter deposits. * * The vault's reference asset and its decimals are read on-chain (never trusted * from the caller — a wrong reference asset would mis-route the swap). The path * is then chosen from `depositAsset`: * - equals the reference asset, or is an asset a Tokenized Vault V2 accepts * as-is that the router also whitelists (e.g. USDT into Sentora USD) → * direct router deposit, no swap and no swap fee * ({@link depositViaSwapRouter}); * - the zero address → native-token deposit ({@link depositNativeViaSwapRouter}), * valid only when the reference asset is the chain's wrapped-native token — * the router only wraps ETH, it never swaps it, so this throws for any * other reference asset (see {@link SWAP_ROUTER_WRAPPED_NATIVE} for why, and * {@link isNativeSwapRouterDepositSupported} to check first); * - any other ERC-20 → a swap to the reference asset (Paraswap quote pinned to * the chain's whitelisted aggregator, fail-closed on router/selector drift) * bundled into {@link swapAndDeposit}. * * The origin code — the per-call `originCode`, else the SDK instance's * `attribution.originCode` on Ethereum mainnet, else the all-zero sentinel * ("no origin fee") — is forwarded to whichever of those three entry points * runs, so a partner's origin fee accrues on every path. * * Side effects: reads tokenized-vault metadata, the vault's reference asset and * decimals, for a Tokenized Vault V2 non-reference asset the router's * `vaultInfo` and `whitelistedTokens` and the vault's assets whitelist, the * origin code's registration, and (on the swap path) one Paraswap quote; * sends one ERC-20 `approve` to the SwapRouter when allowance is short, then * the deposit tx. * * @param signer - ethers `Signer` or `Wallet` that signs the approval + deposit. * @param options - {@link ISwapRouterDepositOptions}. * @returns The transaction hash of the router deposit call. * @throws {@link AugustValidationError} for an unsupported chain (no SwapRouter * deployment), an invalid vault or deposit-asset address, a missing or zero * amount, a native deposit into a non-wrapped-native vault, drift between * the aggregator quote and the on-chain router whitelist, or an origin code * not registered on the router (a per-call code, or the instance code under * `attribution.strictOrigin`), before any approval; with code * `ACCOUNT_NOT_FUNDED` when the account cannot cover gas. * @throws {@link AugustSDKError} while the SwapRouter is paused (checked before * any approval), or on unrecoverable contract or RPC failure. * @worstCaseRpcCalls 11 on the swap path into a Tokenized Vault V2 — * tokenized-vault metadata, reference asset + decimals, deposit-token * decimals, the router's `vaultInfo` and `whitelistedTokens`, the vault's * `assetsWhitelistAddress()` and `getWhitelistedAssets()`, the quote, the * router's `isPaused()`, the origin code's `origins` (none for the zero * sentinel), and the allowance read. The router reads and * `getWhitelistedAssets()` are cached for 5 minutes, except `isPaused()` * (15 seconds). * @example * ```ts * // USDT deposited into a USDC-reference vault → swapped to USDC en route. * const hash = await augustSdk.evm.swapRouterDeposit({ * chainId: 1, * vault: '0xe9b725010a9e419412ed67d0fa5f3a5f40159d32', * depositAsset: '0xdAC17F958D2ee523a2206206994597C13D831ec7', * amount: '100', * slippageBps: 50, * }); * ``` */ export declare function swapRouterDeposit(signer: Signer | Wallet, options: ISwapRouterDepositOptions): Promise; /** * Numeric vault-type tag used by the on-chain `SwapRouter` to branch between * the ERC-4626 (`deposit(uint256, address)`) and multi-asset * (`deposit(address, uint256, address)`) deposit interfaces. * * Values match the contract's `VAULT_TYPE_ERC4626` / `VAULT_TYPE_TOKENIZED_VAULT_V2` * constants exactly. Set by an admin per-vault via `enableVault` and looked * up via `vaultInfo(vaultAddr).vaultType`. SDK callers normally do not pass * this — the router resolves it internally. */ export declare enum SwapRouterVaultType { ERC4626 = 1, TokenizedVaultV2 = 2 } /** * Table of Contents * - Formatters * - Datetime * - Arrays * - Caching */ export declare function toNormalizedBn(value: string | bigint | number, decimals?: number | bigint): INormalizedNumber; /* Excluded from this release type: toRawBigInt */ /** * Formatters */ export declare function toTitleCase(str: string, type?: 'camel'): string; /** * Track API response times and status. * * @param endpoint - The API endpoint called * @param method - HTTP method used * @param startTime - Start timestamp from performance.now() * @param status - HTTP response status code (0 for network errors) * @param server - Server identifier (production, staging, etc.) */ export declare function trackApiCall(endpoint: string, method: string, startTime: number, status: number, server: string): void; /** * Track the outcome of an API-key verification check (e.g. `verifyAugustKey`). * Records success/failure as a breadcrumb and a low-cardinality tag so * verification failures are visible in the dashboard without leaking the key * itself — callers must never pass the raw key value. * * @param keyType - Which key was verified (e.g. `'august'`) * @param success - Whether the key was accepted */ export declare function trackKeyVerification(keyType: string, success: boolean): void; /** * Track chain/network switches for usage distribution analysis. * * @param chainId - The chain ID being switched to */ export declare function trackNetworkSwitch(chainId: number): void; /** Asset amounts that peer transfers moved into and out of a position. */ export declare interface TransferCostBasis { /** Assets the received shares were worth on arrival, raw at vault decimals. */ receivedRaw: bigint; /** Assets the sent shares were worth when they left, raw at vault decimals. */ sentRaw: bigint; } /** * Value peer share transfers in the vault's asset, at the vault's share ratio * on the day each one happened. * * Used by {@link getVaultUserLifetimePnl} when a wallet has no indexed * deposits: received shares become its cost basis and sent shares count as * withdrawn, so lifetime PnL for a transfer recipient reads "PnL since the * shares arrived" rather than failing or reporting the whole position as * profit. A day with no usable ratio takes the latest earlier day's, and a * transfer older than the history takes the earliest day's. * * Sent shares count only against a received basis by default. A wallet that * sent shares but received none gets a zero basis, so the lifetime-PnL history * guard still decides for it instead of reporting the sent shares as profit. * `countSentWithoutReceipt: true` reports them anyway, for a caller that knows * the wallet also deposited. * * Pure and synchronous. Assumes, as the getter does, that shares and assets * share the vault's decimals. * * @param params - See {@link TransferCostBasisParams}. * @returns The received and sent asset amounts, raw at the vault's decimals; * both zero when no shares were received. * @throws {@link AugustHistoryUnavailableError} (`HISTORY_UNAVAILABLE`) when no * day in `history` carries a positive, finite `asset_share_ratio`. * @example * ```ts * const { data } = await fetchVaultHistoricalTimeseries(vault, nDays); * const { receivedRaw, sentRaw } = transferCostBasis({ * transfers: selectPeerTransfers(transfers, wallet, vault), * wallet, * vault, * history: data, * }); * ``` */ export declare function transferCostBasis({ transfers, wallet, vault, history, countSentWithoutReceipt, }: TransferCostBasisParams): TransferCostBasis; /** Inputs {@link transferCostBasis} prices. */ export declare interface TransferCostBasisParams { /** Peer transfers touching `wallet` — see {@link selectPeerTransfers}. */ transfers: PnlTransfer[]; /** The wallet whose cost basis is being computed. */ wallet: IAddress; /** The vault contract address, used for the error message and context. */ vault: IAddress; /** * The vault's daily history from `fetchVaultHistoricalTimeseries`, keyed by * UTC date (`YYYY-MM-DD`). Only `asset_share_ratio` (assets per share) is * read. */ history: Record>; /** * Report sent shares even when none were received. Defaults to `false`, which * zeroes them so a zero-deposit wallet's history guard still decides; pass * `true` when the caller applies that rule itself, as {@link pnlCostBasis} * does. */ countSentWithoutReceipt?: boolean; } export declare function truncate(s: string, amount?: number): string; /* Excluded from this release type: tryRecoverTxHash */ /** * Vault addresses to exclude from `getTotalDeposited` TVL aggregation. * Addresses are lowercased so EVM, Solana, Sui and Stellar vaults can be * checked uniformly (don't wrap them with `getAddress` — non-EVM addresses * would throw). Add an address here to drop its `latest_reported_tvl` from * the headline number — e.g. closed pre-deposit vaults, test vaults, or * migrated v1 pools that are double-counted by a v2 successor. */ export declare const TVL_EXCLUDED_VAULTS: ReadonlySet; /** * Validity window for a submitted Soroban invocation (seconds). * * This becomes the transaction's `maxTime`. Validators reject a tx whose * `maxTime` has passed (`txTOO_LATE`), so the window must outlast the slowest * realistic sign-then-submit path: hardware wallets, careful manual review, * and institutional approval flows (e.g. Fordefi) that don't sign instantly. * 10 minutes comfortably covers those while staying well inside the Soroban * footprint/ledger-entry TTL, so the simulated footprint can't go stale first. * * The window is anchored to the *network* clock (see `getNetworkCloseTime` in * soroban.ts), not the signer's `Date.now()`, so a skewed device clock can't * make the deadline expire early. */ declare const TX_TIMEOUT_SECONDS = 600; export declare type TypedContract = Omit & { [Method in ExtractAbiFunctionNames]: TypedContractFunction; } & { /** * Return the function for a given name. This is useful when a contract * method name conflicts with a JavaScript name such as ``prototype`` or * when using a Contract programatically. */ getFunction>(key: T | TypedFragment): TypedContractFunction; /** * Return the event for a given name. This is useful when a contract * event name conflicts with a JavaScript name such as ``prototype`` or * when using a Contract programatically. */ getEvent>(key: T | EventFragment): TypedContractEvent; /** * All the Events available on this contract. */ filters: { [EventName in ExtractAbiEventNames]: TypedContractEvent; }; }; export declare interface TypedContractEvent = ExtractAbiEvent, TEventArgs extends readonly unknown[] = AsArray>>> { (...args: [...TEventArgs]): DeferredTopicFilter; /** * The name of the Contract event. */ name: TEventName; /** * The fragment of the Contract event. This will throw on ambiguous * method names. */ fragment: EventFragment; /** * Returns the fragment constrained by %%args%%. This can be used to * resolve ambiguous event names. */ getFragment(...args: [...TEventArgs]): EventFragment; } export declare interface TypedContractFunction = ExtractAbiFunction, TInputArgs extends readonly unknown[] = AsArray>, TResult = TypedContractFunctionResult, TFragment = TypedFragment> { (...args: [...TInputArgs, overrides?: Overrides]): Promise; /** * The name of the Contract method. */ name: TFunctionName; /** * The fragment of the Contract method. This will throw on ambiguous * method names. */ fragment: TFragment; /** * Returns the fragment constrained by %%args%%. This can be used to * resolve ambiguous method names. */ getFragment(...args: [...TInputArgs]): TFragment; /** * Returns a populated transaction that can be used to perform the * contract method with %%args%%. */ populateTransaction(...args: [...TInputArgs, overrides?: Overrides]): Promise; /** * Call the contract method with %%args%% and return the value. * * If the return value is a single type, it will be dereferenced and * returned directly, otherwise the full Result will be returned. */ staticCall(...args: [...TInputArgs, overrides?: Overrides]): Promise; /** * Send a transaction for the contract method with %%args%%. */ send(...args: [...TInputArgs, overrides?: Overrides]): Promise; /** * Estimate the gas to send the contract method with %%args%%. */ estimateGas(...args: [...TInputArgs, overrides?: Overrides]): Promise; /** * Call the contract method with %%args%% and return the Result * without any dereferencing. */ staticCallResult(...args: [...TInputArgs, overrides?: Overrides]): Promise; } export declare type TypedContractFunctionResult['outputs']>> = TOutputArgs extends readonly [] ? void : TOutputArgs extends readonly [infer Arg] ? Arg : TOutputArgs; export declare type TypedFragment = ExtractAbiFunction> = Omit & { name: TFunction['name']; type: TFunction['type']; inputs: TFunction['inputs']; outputs: TFunction['outputs']; stateMutability: TFunction['stateMutability']; }; export declare function unixToDate(epoch: number): Date; /** * Update the current user identity in Sentry. * Called when wallet address changes. * * @param walletAddress - New wallet address (or undefined to clear) * @param environment - Current environment */ export declare function updateUser(walletAddress?: string, environment?: IEnv): void; /** What a wallet's Tokenized Vault V2 redemption requests are worth. */ export declare interface V2RedemptionValue { /** Assets paid, or due, for requests past their claim date; raw at vault decimals. */ settledAssetsRaw: bigint; /** Shares to value at the current share price, raw. */ pendingShares: bigint; } /* Excluded from this release type: validateAmountPrecision */ /** * Validate a caller-supplied slippage floor before it reaches Anchor's `u64` * encoder. * * Anchor serializes a `BN` to `u64` via `toArrayLike`, which writes the * magnitude and drops the sign — a `-1n` floor would reach the program as a * floor of `1`, inverting the caller's intent instead of failing. Values above * `u64` fare no better: they surface as an untyped "byte array longer than * desired length" from inside the encoder, naming nothing the caller passed. * Both are caught here, at the public-API boundary. * * @param value - The caller's `minSharesOut` / `minAssetsOut`, in raw base units. * @param label - Option name, quoted in the error. * @returns `value`, once known to fit an unsigned 64-bit integer. * @throws {@link AugustValidationError} when it is not a `bigint` in `0 .. 2^64-1`. */ declare function validateExplicitFloor(value: bigint, label: string): bigint; /** * Vault adapter configurations mapping vault addresses to their adapter settings */ export declare const VAULT_ADAPTER_CONFIGS: Record; export declare const VAULT_ADDRESSES: Record<"musd" | "predlp" | "sentusd" | "pregrid" | "repouscc" | "earnxrp" | "tivkbtc" | "tivusdt0" | "supermon" | "earnmon" | "k3europ" | "wmon/ausd" | "wbtc/ausd" | "earnausd_monad" | "sausd" | "farmbold" | "sentuscc" | "sentbtc" | "svusdc" | "apusdc" | "testwethtsa" | "tacusr" | "upinjusdt" | "tac-teth" | "upausd" | "taccbbtc" | "xupusdc" | "uptbtc" | "gteth" | "ageth" | "upusdc" | "hgeth" | "upssylva" | "hbbtc" | "hbhype" | "upazt" | "susdt" | "upedge" | "coreusdc" | "upcusdo" | "shifteth" | "upsusde" | "uplbtc" | "upavax" | "tacrseth" | "earnausd" | "alpineusdcflagship" | "alpinecoinshiftusdc" | "upbtc" | "upstrbtc" | "maxiusr" | "upgammausdc" | "xhype" | "wildusd" | "alpinebtc" | "prenusd" | "upyzusd" | "upnusd" | "hlpe" | "nemo eth yield", `0x${string}`>; /** * Hardcoded subaccount addresses for specific vaults allocations */ export declare const VAULT_ALLOCATION_SUBACCOUNTS: { AgoraAUSD: { address: IAddress; subaccount: IAddress; useDebank: boolean; }; earnAUSD: { address: IAddress; subaccount: IAddress; useDebank: boolean; }; MonarqXRP: { address: IAddress; subaccount: IAddress; useDebank: boolean; }; }; /** * The functions to call on the vault contract * @returns The functions to call */ export declare const VAULT_FUNCTIONS_V1: IPoolFunctions[]; export declare const VAULT_FUNCTIONS_V2: IPoolFunctions[]; export declare const VAULT_FUNCTIONS_V2_RECEIPT: IPoolFunctions[]; export declare const VAULT_FUNCTIONS_V2_WHITELISTED_ASSETS: IPoolFunctions[]; /** * Vault Symbols Mapping * @deprecated use getVaultMetadata to fetch vault symbols from the backend */ export declare const VAULT_SYMBOLS: Record; /** * Vault Symbols Reverse Mapping * @deprecated use getVaultMetadata to fetch vault symbols from the backend */ export declare const VAULT_SYMBOLS_REVERSE: Record; /** * Address type for vault contracts across all supported chains. * EVM vaults use `0x`-prefixed hex addresses, Solana vaults use base58, * and Stellar vaults use 56-character base32 addresses (G/C prefix). * * Use this instead of `IAddress` when the address may belong to any chain. */ export declare type VaultAddress = string; /** * allowance checks user's current allowance per pool * @param signer - signer / provider object * @param options - object including pool contract address, user wallet address * @returns normalized number object of the user's current allowance */ export declare function vaultAllowance(signer: IContractRunner, options: IContractWriteOptions): Promise; /** * Approve a vault (or the appropriate adapter wrapper) to spend a token * ahead of a separate deposit call. Spender routing mirrors * {@link vaultDeposit} (multi-asset → vault, adapter → wrapper, standard → * vault, SwapRouter when {@link getDepositRoute} routes there). Returns * `undefined` when the existing allowance already covers `amount` **or** * when the deposit asset is native. * * @returns Transaction hash when an approval was sent, `undefined` when * the existing allowance already covers `amount` or the deposit asset is * native (no ERC-20 allowance applies). Use {@link approve} for a * discriminated `ApproveResult` if you need to tell those two cases apart. * @throws AugustValidationError on invalid wallet/target/amount. * @throws AugustValidationError when `attribution.strictOrigin` is set and the * configured origin code is not registered on the SwapRouter (the spender * follows {@link getDepositRoute}). * * @example * ```ts * const hash = await augustSdk.evm.vaultApprove({ * target: '0x...', // vault contract address * wallet: walletAddress, * amount: '100', // 100 of the deposit token (UI units) * wait: true, // wait for the approval to confirm * }); * if (hash) console.log('approve tx', hash); * // hash === undefined means the on-chain allowance already covers the * // amount, or the deposit asset is native (msg.value, no allowance). * ``` */ export declare function vaultApprove(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * Deposit underlying token into the specified vault. Auto-routes to the * correct contract path (single-asset ERC-4626, EVM-2 multi-asset, * Paraswap adapter, native-token wrapper, depositWithPermit) based on the * vault version and `depositAsset`. * * With `attribution.originCode` configured, a deposit the SwapRouter can take * directly goes through `SwapRouter.deposit` carrying that code, and the * router is approved instead of the vault — see {@link getDepositRoute} for * the rules and the fallback reasons. Without a code nothing changes. * * Amounts are encoded against the **deposit token's** decimals, not the * vault's share decimals. The SDK reads the appropriate decimals via the * vault metadata and the asset's ERC-20. * * Approval is handled automatically: if the existing allowance doesn't * cover `amount`, an `approve` is sent and **always waited for** (regardless * of the caller's `wait` flag) so the deposit tx can't be re-ordered ahead * of the approval on Monad-style RPCs. * * @param signer ethers Signer / Wallet (or viem WalletClient via {@link setSigner}) * @param options Vault address, wallet, amount, optional `depositAsset` for * adapter routes, optional `wait` to wait for the deposit receipt. * @returns Deposit transaction hash. * @throws AugustValidationError on invalid wallet/target/amount or missing * adapter config when `depositAsset` differs from the vault underlying. * @throws AugustValidationError when `attribution.strictOrigin` is set and the * configured origin code is not registered on the SwapRouter. * @throws AugustSDKError when the deposit submission or on-chain call fails. * * @example * ```ts * const hash = await augustSdk.evm.vaultDeposit({ * target: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32', // vault * wallet: walletAddress, * amount: '100', // 100 USDC (UI units) * wait: true, // wait for the deposit receipt * }); * ``` * * @example Adapter deposit (different deposit asset than the vault's underlying) * ```ts * await augustSdk.evm.vaultDeposit({ * target: vaultAddress, * wallet: walletAddress, * amount: '0.5', * depositAsset: WETH_ADDRESS, // swap WETH -> vault underlying via the adapter * chainId: 1, * }); * ``` */ export declare function vaultDeposit(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * Check if vault has adapter support */ export declare function vaultHasAdapter(vaultAddress: IAddress): boolean; /** * august_vault program IDL (Anchor). * * GENERATED — do not edit by hand. Source of truth is the program repo's build * artifact: `target/idl/august_vault.json` from * fractal-protocol/solana-upshift-vault-programs, built at the release the SDK * targets (solana-vaults' `frontend/idl/august_vault.json` is a copy of the same * artifact, synced from its vendored submodule). Regenerate from there, NOT with * `anchor idl fetch`: an Anchor IDL upload is not refreshed by a program * upgrade, so every IDL published for this program lineage is stale — both * `up12…` on mainnet (last written 2026-01-21) and the `C8B1…` devnet reference * (2026-01-23) predate the ProgramConfig build deployed on 2026-08-06. * * `address` is a build stamp (the mainnet id), NOT network-aware. Never rely on * it: SolanaAdapter/getProgram resolve the real program id per network from * programIds, or from an explicit `programId` override. * * Writability: generated from the withdrawal-queue release build (#34). Later * builds (devnet runs #41) drop `mut` from accounts they only read. Do not * regenerate from one of those until mainnet runs it: mainnet's build rejects * those accounts arriving read-only, while every build accepts them writable. * Guarded by tests/adapters/solana-idl.test.ts. Built with the doc-only fix * from program PR #48 applied (`SubaccountDelegationMissing` is 6027), so it * differs from #34's artifact in doc strings alone. * * One hand edit after generation: `operator_token_account` in `operator_deposit` * and `operator_withdraw` carries no `pda`. The program derives it as the ATA of * the registered subaccount's stored `address`, or of the operator when there is * none, which Anchor's IDL cannot express: the generated seed names the * `subaccount` account itself, so Anchor would silently resolve the wrong ATA. * Without the `pda`, callers must pass the account, and a missing one throws. * Pinned by tests/adapters/solana-idl.test.ts; reapply it on every regeneration. * * Drift is guarded by tests/vaults/solana-idl-drift.test.ts: the deployed binary * is pinned, every discriminator declared here must appear in that binary, and * live VaultState accounts must decode against this file. */ declare const vaultIdl: { accounts: { discriminator: number[]; name: string; }[]; address: string; errors: { code: number; msg: string; name: string; }[]; events: { discriminator: number[]; name: string; }[]; instructions: ({ accounts: ({ name: string; writable: boolean; signer?: undefined; docs?: undefined; } | { name: string; writable?: undefined; signer?: undefined; docs?: undefined; } | { name: string; signer: boolean; writable?: undefined; docs?: undefined; } | { docs: string[]; name: string; writable?: undefined; signer?: undefined; })[]; args: any[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; signer: boolean; writable: boolean; docs?: undefined; pda?: undefined; address?: undefined; } | { docs: string[]; name: string; signer: boolean; writable: boolean; pda?: undefined; address?: undefined; } | { docs: string[]; name: string; writable: boolean; signer?: undefined; pda?: undefined; address?: undefined; } | { docs: string[]; name: string; signer?: undefined; writable?: undefined; pda?: undefined; address?: undefined; } | { name: string; pda: { program: { kind: string; value: number[]; }; seeds: ({ kind: string; value: number[]; path?: undefined; } | { kind: string; path: string; value?: undefined; })[]; }; writable: boolean; signer?: undefined; docs?: undefined; address?: undefined; } | { address: string; name: string; signer?: undefined; writable?: undefined; docs?: undefined; pda?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; pda?: undefined; signer?: undefined; } | { name: string; pda: { seeds: ({ kind: string; value: number[]; path?: undefined; account?: undefined; } | { kind: string; path: string; value?: undefined; account?: undefined; } | { account: string; kind: string; path: string; value?: undefined; })[]; }; writable: boolean; signer?: undefined; } | { name: string; writable?: undefined; pda?: undefined; signer?: undefined; } | { name: string; signer: boolean; writable: boolean; pda?: undefined; })[]; args: any[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; signer?: undefined; docs?: undefined; } | { name: string; writable?: undefined; signer?: undefined; docs?: undefined; } | { name: string; signer: boolean; writable?: undefined; docs?: undefined; } | { docs: string[]; name: string; signer: boolean; writable?: undefined; })[]; args: any[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ docs: string[]; name: string; pda: { seeds: { kind: string; value: number[]; }[]; }; signer?: undefined; writable?: undefined; address?: undefined; } | { docs: string[]; name: string; signer: boolean; pda?: undefined; writable?: undefined; address?: undefined; } | { docs: string[]; name: string; signer: boolean; writable: boolean; pda?: undefined; address?: undefined; } | { name: string; docs?: undefined; pda?: undefined; signer?: undefined; writable?: undefined; address?: undefined; } | { name: string; writable: boolean; docs?: undefined; pda?: undefined; signer?: undefined; address?: undefined; } | { address: string; name: string; docs?: undefined; pda?: undefined; signer?: undefined; writable?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ docs: string[]; name: string; signer: boolean; pda?: undefined; writable?: undefined; address?: undefined; } | { docs: string[]; name: string; pda: { program: { kind: string; value: number[]; }; seeds: { kind: string; value: number[]; }[]; }; signer?: undefined; writable?: undefined; address?: undefined; } | { name: string; signer: boolean; writable: boolean; docs?: undefined; pda?: undefined; address?: undefined; } | { name: string; pda: { seeds: { kind: string; value: number[]; }[]; program?: undefined; }; writable: boolean; docs?: undefined; signer?: undefined; address?: undefined; } | { address: string; name: string; docs?: undefined; signer?: undefined; pda?: undefined; writable?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; signer?: undefined; address?: undefined; } | { name: string; writable?: undefined; signer?: undefined; address?: undefined; } | { name: string; signer: boolean; writable?: undefined; address?: undefined; } | { name: string; signer: boolean; writable: boolean; address?: undefined; } | { address: string; name: string; writable?: undefined; signer?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; docs?: undefined; signer?: undefined; optional?: undefined; pda?: undefined; } | { docs: string[]; name: string; writable: boolean; signer?: undefined; optional?: undefined; pda?: undefined; } | { docs: string[]; name: string; signer: boolean; writable?: undefined; optional?: undefined; pda?: undefined; } | { name: string; writable?: undefined; docs?: undefined; signer?: undefined; optional?: undefined; pda?: undefined; } | { docs: string[]; name: string; optional: boolean; pda: { seeds: ({ kind: string; value: number[]; path?: undefined; account?: undefined; } | { kind: string; path: string; value?: undefined; account?: undefined; } | { account: string; kind: string; path: string; value?: undefined; })[]; }; writable: boolean; signer?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; docs?: undefined; signer?: undefined; optional?: undefined; pda?: undefined; } | { docs: string[]; name: string; writable: boolean; signer?: undefined; optional?: undefined; pda?: undefined; } | { name: string; signer: boolean; writable?: undefined; docs?: undefined; optional?: undefined; pda?: undefined; } | { name: string; writable?: undefined; docs?: undefined; signer?: undefined; optional?: undefined; pda?: undefined; } | { docs: string[]; name: string; optional: boolean; pda: { seeds: ({ kind: string; value: number[]; path?: undefined; account?: undefined; } | { kind: string; path: string; value?: undefined; account?: undefined; } | { account: string; kind: string; path: string; value?: undefined; })[]; }; writable: boolean; signer?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; pda?: undefined; docs?: undefined; signer?: undefined; address?: undefined; } | { name: string; pda: { seeds: ({ kind: string; value: number[]; path?: undefined; } | { kind: string; path: string; value?: undefined; })[]; program?: undefined; }; writable: boolean; docs?: undefined; signer?: undefined; address?: undefined; } | { name: string; writable?: undefined; pda?: undefined; docs?: undefined; signer?: undefined; address?: undefined; } | { docs: string[]; name: string; pda: { program: { kind: string; value: number[]; }; seeds: { kind: string; path: string; }[]; }; writable?: undefined; signer?: undefined; address?: undefined; } | { docs: string[]; name: string; signer: boolean; writable: boolean; pda?: undefined; address?: undefined; } | { address: string; name: string; writable?: undefined; pda?: undefined; docs?: undefined; signer?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ name: string; writable: boolean; pda?: undefined; docs?: undefined; signer?: undefined; } | { name: string; pda: { seeds: ({ kind: string; value: number[]; path?: undefined; account?: undefined; } | { kind: string; path: string; value?: undefined; account?: undefined; } | { account: string; kind: string; path: string; value?: undefined; })[]; program?: undefined; }; writable: boolean; docs?: undefined; signer?: undefined; } | { name: string; writable?: undefined; pda?: undefined; docs?: undefined; signer?: undefined; } | { docs: string[]; name: string; pda: { program: { kind: string; value: number[]; }; seeds: ({ account: string; kind: string; path: string; } | { kind: string; path: string; account?: undefined; })[]; }; writable?: undefined; signer?: undefined; } | { name: string; signer: boolean; writable?: undefined; pda?: undefined; docs?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; } | { accounts: ({ docs: string[]; name: string; signer: boolean; writable?: undefined; pda?: undefined; address?: undefined; } | { docs: string[]; name: string; writable: boolean; signer?: undefined; pda?: undefined; address?: undefined; } | { docs: string[]; name: string; signer?: undefined; writable?: undefined; pda?: undefined; address?: undefined; } | { name: string; pda: { program: { kind: string; value: number[]; }; seeds: ({ kind: string; value: number[]; path?: undefined; } | { kind: string; path: string; value?: undefined; })[]; }; writable: boolean; docs?: undefined; signer?: undefined; address?: undefined; } | { address: string; name: string; docs?: undefined; signer?: undefined; writable?: undefined; pda?: undefined; })[]; args: { name: string; type: string; }[]; discriminator: number[]; docs: string[]; name: string; })[]; metadata: { description: string; name: string; spec: string; version: string; }; types: ({ name: string; repr: { kind: string; }; serialization: string; type: { fields: { name: string; type: string; }[]; kind: string; }; docs?: undefined; } | { docs: string[]; name: string; type: { fields: ({ docs: string[]; name: string; type: string; } | { docs: string[]; name: string; type: { array: (string | number)[]; }; })[]; kind: string; }; repr?: undefined; serialization?: undefined; } | { name: string; type: { fields: ({ name: string; type: string; docs?: undefined; } | { name: string; type: { array: (string | number)[]; }; docs?: undefined; } | { docs: string[]; name: string; type: string; } | { docs: string[]; name: string; type: { array: (string | number)[]; }; })[]; kind: string; }; repr?: undefined; serialization?: undefined; docs?: undefined; } | { docs: string[]; name: string; type: { fields: { name: string; type: string; }[]; kind: string; }; repr?: undefined; serialization?: undefined; })[]; }; /** * @description withdraw funds from the specified pool including accrued rewards * @param signer signer / wallet object * @param options object including pool contract address, user wallet address, and more * @returns claim tx hash */ export declare function vaultRedeem(signer: Signer | Wallet, options: IContractWriteOptions & { year: string; month: string; day: string; receiverIndex: string; }): Promise; export declare enum VaultRedemptionStatus { AWAITING_COOLDOWN = "awaiting_cooldown", READY_TO_CLAIM = "ready_to_claim", /** * Solana withdrawal queue only: the request's fulfillment window has closed. * It can no longer be claimed, only cancelled, which returns its shares. */ EXPIRED = "expired" } /** * Request to redeem vault shares. For EVM-1 vaults this queues a standard * redemption (claimable later via `vaultRedeem`). For EVM-2 vaults the queued * `requestRedeem` escrows the shares in the vault via `transferFrom`, so this * also approves the receipt token when its allowance is short; the instant * path (`isInstantRedeem: true`) burns the caller's shares directly and sends * no approval. * * The receipt-token approval (EVM-2 queued path) is always waited on before * the redeem call, regardless of the caller's `wait` flag. * * @param signer ethers Signer / Wallet (or viem WalletClient via {@link setSigner}) * @param options Vault address, wallet, amount, optional `isInstantRedeem`, * optional `wait` to wait for the redeem receipt. * @returns Redeem transaction hash. * @throws AugustValidationError on invalid wallet/target/amount. * @throws AugustSDKError when the redeem submission or on-chain call fails. * * @example * ```ts * const hash = await augustSdk.evm.vaultRequestRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: '10', // 10 shares (UI units) * wait: true, * }); * ``` * * @example Instant redemption * ```ts * await augustSdk.evm.vaultRequestRedeem({ * target: vaultAddress, * wallet: walletAddress, * amount: '10', * isInstantRedeem: true, * }); * ``` */ export declare function vaultRequestRedeem(signer: Signer | Wallet, options: IContractWriteOptions): Promise; /** * @deprecated Renamed to {@link SWAP_ROUTER_ELIGIBLE_VAULTS} (itself now * superseded by {@link getSwapRouterEligibleVaults}, the on-chain-derived * resolver), and the semantics changed: this set no longer drives * `vaultDeposit` auto-routing (that branch was removed) — it only marks vaults * whose UI may offer the swap-router deposit surface. Kept as an alias for one * release; migrate to the async resolver. */ export declare const VAULTS_USING_SWAP_ROUTER: ReadonlySet; /** * Vault Receipt Symbol Mapping * @deprecated use getVaultMetadata to fetch vault symbols from the backend */ declare type VaultSymbols = 'predlp' | 'sentusd' | 'pregrid' | 'repouscc' | 'earnxrp' | 'tivkbtc' | 'tivusdt0' | 'supermon' | 'earnmon' | 'k3europ' | 'wmon/ausd' | 'wbtc/ausd' | 'earnausd_monad' | 'sausd' | 'farmbold' | 'sentuscc' | 'sentbtc' | 'svusdc' | 'apusdc' | 'testwethtsa' | 'tacusr' | 'upinjusdt' | 'tac-teth' | 'upausd' | 'taccbbtc' | 'xupusdc' | 'uptbtc' | 'gteth' | 'ageth' | 'upusdc' | 'hgeth' | 'upssylva' | 'hbbtc' | 'hbhype' | 'upazt' | 'susdt' | 'upedge' | 'coreusdc' | 'upcusdo' | 'shifteth' | 'upsusde' | 'uplbtc' | 'upavax' | 'tacrseth' | 'musd' | 'earnausd' | 'alpineusdcflagship' | 'alpinecoinshiftusdc' | 'upbtc' | 'upstrbtc' | 'maxiusr' | 'upgammausdc' | 'xhype' | 'wildusd' | 'alpinebtc' | 'prenusd' | 'upyzusd' | 'upnusd' | 'hlpe' | 'nemo eth yield'; /** * @deprecated Renamed to {@link isSwapRouterEligible} (itself now superseded by * {@link getSwapRouterEligibleVaults}, the on-chain-derived resolver). The * meaning also changed: it no longer implies `vaultDeposit` routes the vault * through the SwapRouter (that behavior was removed) — it only reports * swap-router *eligibility* for the opt-in deposit surface. Kept as an alias * for one release; migrate to the async resolver. */ export declare const vaultUsesSwapRouter: typeof isSwapRouterEligible; export declare function verifyAugustKey(key: string): Promise; export declare function verifyInfuraKey(key: string): Promise; /** * Convert a viem WalletClient to an ethers-compatible Signer * Uses the walletClient as a provider and wraps it for ethers compatibility * @param walletClient Viem WalletClient from wagmi or viem * @returns Ethers Signer that can be used with the SDK */ export declare function viemToEthersSigner(walletClient: any): Promise; /** * @param walletClient a wagmi-derived client (from useWalletClient) * @returns An ethers JsonRpcSigner object used in sdk.evm.setSigner */ export declare function walletClientToSigner(walletClient: WalletClient): Promise; export declare const WEBSERVER_ENDPOINTS: { default: { /** @deprecated No backend route. Removed in the next major release. */ hello: string; protected: string; }; auth: { verify: string; sign: string; login: string; nonce: string; refresh: string; }; subaccount: { list: (offset?: number, limit?: number) => string; /** @deprecated No backend route. Removed in the next major release. */ rewards: (subaccount: IAddress) => string; tokens: (subaccount: IAddress) => string; twap: { create: (subaccount: IAddress) => string; stop: (subaccount: IAddress, id: string) => string; fills: (subaccount: IAddress, id: string) => string; }; debank: (subaccount: IAddress) => string; health_factor: (subaccount: IAddress) => string; summary: (subaccount: IAddress) => string; /** @deprecated No backend route. Removed in the next major release. */ batch: (subaccount: IAddress) => string; loans: (subaccount: IAddress, side?: "BORROWER" | "LENDER" | "BOTH", active?: boolean) => string; cefi: (subaccount: IAddress) => string; otc_positions: (subaccount: IAddress) => string; loanByAddress: (loanAddress: string, chainId: number) => string; _: (subaccount: IAddress) => string; }; transactions: { v2: (subaccount: string, startTime?: string, endTime?: string) => string; }; otc: { positions: string; marginRequirements: (otcCounterpartyId?: string, payer?: string) => string; }; curator: { vaultSubaccounts: (vaultAddress: string) => string; vaultWhitelist: (vaultAddress: string) => string; }; timelockRequests: (vaultAddress: string, chainId: number, status?: string) => string; users: { get: string; }; dashboard: { loans: string; }; risk: { discountFactors: string; collateralExcessOrDeficit: (subaccount: string, tokenAddress: string, tokenChain: number, targetHealthFactor?: number) => string; collateralSimulation: string; }; prices: (symbol: string) => string; metrics: { pnl: (subaccount: IAddress, startTime?: string, endTime?: string) => string; vaultPerformanceFees: (params: { vaultAddress: string; annualizedFeesPct: number; nativeDenominated: boolean; calculationPeriod: string; startDate?: string; endDate?: string; }) => string; }; public: { integrations: { morpho: { apy: (subaccount: IAddress, vaultAddress: IAddress) => string; }; }; tokenizedVault: { loans: (vaultAddress: VaultAddress, chainId: number, active: boolean) => string; subaccountLoans: (vaultAddress: VaultAddress, chainId: number, active: boolean) => string; list: string; byVaultAddress: (vaultAddress: VaultAddress) => string; historicalApy: (vaultAddress: IAddress) => string; historicalTimeseries: (vaultAddress: IAddress, nDays?: number) => string; annualizedApy: (vaultAddress: IAddress) => string; summary: (vaultAddress: IAddress) => string; withdrawals: (chain: string, vaultAddress: IAddress) => string; debank: (vaultAddress: IAddress) => string; octav: (vaultAddress: IAddress) => string; userHistory: (vaultAddress: IAddress, wallet: IAddress) => string; archivedVaults: string; }; points: { byUserAddress: (userAddress: IAddress) => string; register: string; leaderboard: string; }; vaults: { pendingRedemptions: (vaultAddress: IAddress) => string; }; pnl: { unrealizedHistory: (vaultAddress: VaultAddress, limit?: number) => string; unrealizedLatest: string; }; revertReason: (txHash: string, chain: number) => string; oracleClassification: (vaultAddress: string, chainId: number) => string; transparency: { positions: (vaultAddress: string, chainId: number) => string; historicalAllocations: (vaultAddress: string, chainId: number, startDate?: string, endDate?: string) => string; fees: (vaultAddress: string, chainId: number) => string; ratioSeries: (vaultAddress: string, startDate?: string, endDate?: string, limit?: number) => string; smoothedApy: (vaultAddress: string, daysAgo: number, averagingPeriodDays: number, applySmoothing: boolean) => string; governanceRoles: (vaultAddress: string, chainId: number) => string; governancePermissions: (vaultAddress: string, chainId: number) => string; governanceTimelocks: (vaultAddress: string, chainId: number, status?: string) => string; governanceAuditLog: (vaultAddress: string, chainId: number, category?: string, before?: string, limit?: number) => string; }; }; upshift: { vaults: { metadata: string; }; }; }; export declare const WEBSERVER_URL: { production: string; staging: string; development: string; localhost: string; qa: string; public: string; upshift: string; }; /** * Withdrawal request with computed claimable date and current processing status. * The unique identifier is (receiver, claimableDate). * * @interface WithdrawalRequestStatus */ export declare interface WithdrawalRequestStatus { /** Transaction hash of the withdrawal request */ transactionHash: string; /** Block timestamp when the withdrawal was requested (seconds, UTC) */ requestTimestamp: number; /** Shares amount being redeemed */ shares: bigint; /** Receiver address for the withdrawal */ receiver: string; /** Computed claimable date in UTC (year, month, day) */ claimableDate: { year: number; month: number; day: number; }; /** Epoch timestamp when this withdrawal becomes claimable */ claimableEpoch: number; /** Current status of the withdrawal */ status: 'pending' | 'ready_to_claim' | 'processed'; /** Transaction hash of the processing transaction (if processed) */ processedTransactionHash?: string; /** Assets received (if processed) */ assetsReceived?: bigint; } /** * Higher-order function to wrap SDK methods with performance tracking. * Tracks method calls, timing, chain usage, and errors. * * @param methodName - Name of the method being wrapped * @param method - The original async method * @param getChainId - Function to get current chain ID * @returns Wrapped method with tracking */ export declare function withMethodTracking Promise>(methodName: string, method: T, getChainId?: () => number | undefined): T; /** * Wrap async operations with exponential backoff retry logic. * Retries on network errors with increasing delays between attempts. * @param fn - Async function to execute with retry logic * @param maxRetries - Maximum number of retry attempts * @param baseDelay - Initial delay in milliseconds (doubles each retry) * @param shouldRetry - Custom function to determine if error is retryable * @returns Result of successful function execution * @throws Last error if all retries exhausted */ export declare function withRetry(fn: () => Promise, maxRetries?: number, baseDelay?: number, shouldRetry?: (error: Error) => boolean): Promise; /** * Higher-order function to wrap synchronous SDK methods with tracking. * Uses breadcrumbs for tracking since spans require async context. * * @param methodName - Name of the method being wrapped * @param method - The original sync method * @param getChainId - Function to get current chain ID * @returns Wrapped method with tracking */ export declare function withSyncMethodTracking unknown>(methodName: string, method: T, getChainId?: () => number | undefined): T; export declare const WRAPPER_ADAPTOR: { 43114: IAddress; 1: IAddress; }; /** * Wrap an ethers signer so every transaction it sends carries the active * ERC-8021 attribution suffix (Base Builder Codes). * * Every ethers write in the SDK funnels through the wrapped signer's * `sendTransaction`, so this single wrap attributes all vault writes. The * wrapper is a Proxy — the caller's signer object is never mutated, so a * signer reused outside the SDK sends unattributed transactions. Attribution * state is read at send time, not wrap time; when no attribution is * configured (see `IAugustBase.attribution`) the wrapper is a pass-through. * * Plain value transfers (no calldata) are never attributed, and calldata * already ending in the ERC-8021 marker is left untouched. When the * configured `chains` list requires a chain check and the transaction does * not carry a `chainId`, the signer's provider network is consulted (one * cached RPC call); if that lookup fails the transaction is sent * unattributed. * * @param signer Normalized ethers Signer or Wallet. * @returns A proxied signer with an attribution-aware `sendTransaction`. */ export declare function wrapSignerWithAttribution(signer: T): T; export { }