import * as _ton_ton from '@ton/ton'; import { Cell, ContractProvider, SenderArguments, Sender } from '@ton/ton'; import { AddressType, QueryIdType, AmountType } from '../../../../types.js'; import { Contract, ContractOptions } from '../../../core/Contract.js'; import { DEX_VERSION } from '../../constants.js'; interface VaultV2_1Options extends ContractOptions { gasConstants?: Partial; } /** * Token vault stores referral fees on a separate contract similar to an LP account. * This will allow us to decrease TX fees for swaps since users won't have to pay for additional Jetton transfer TX. * * Vault address is defined by router_address, owner_address and router_token_Wallet_address, * so, for each token, each user can have a dedicated vault contract. */ declare class VaultV2_1 extends Contract { static readonly version: DEX_VERSION; static readonly gasConstants: { withdrawFee: bigint; }; readonly gasConstants: { withdrawFee: bigint; }; constructor(address: AddressType, { gasConstants, ...options }?: VaultV2_1Options); createWithdrawFeeBody(params?: { queryId?: QueryIdType; }): Promise; /** * Build all data required to execute a `withdraw_fee` transaction. * * @param {ContractProvider} provider - {@link ContractProvider} instance * * @param {object | undefined} params - Optional tx params * @param {bigint | number | string | undefined} params.gasAmount - Optional; Custom transaction gas amount (in nanoTons) * @param {bigint | number | undefined} params.queryId - Optional; query id * * * @returns {SenderArguments} all data required to execute a `withdraw_fee` transaction. */ getWithdrawFeeTxParams(provider: ContractProvider, params?: { gasAmount?: AmountType; queryId?: QueryIdType; }): Promise; sendWithdrawFee(provider: ContractProvider, via: Sender, params: Parameters[1]): Promise; /** * Get the current state of the vault contract. * * @param {ContractProvider} provider - {@link ContractProvider} instance * * * @returns {Promise} structure containing the current state of the vault contract. */ getVaultData(provider: ContractProvider): Promise<{ ownerAddress: _ton_ton.Address; tokenAddress: _ton_ton.Address; routerAddress: _ton_ton.Address; depositedAmount: bigint; }>; } export { VaultV2_1, type VaultV2_1Options };