import { type Address, type DecodedAbiFunctionInputs, type DelayedMessageExecution, type FullContractState, type ProviderRpcClient, type SendInternalParams } from 'everscale-inpage-provider';
import { type VaultTokenOwnerAbiParams } from '../../models/vault-token-wallet';
import { type VaultTokenRootAbi } from '../../models/vault-token/abi';
import { type VaultTokenData } from '../../models/vault-token/VaultToken';
export interface VaultTokenDeployWalletAbiParams {
    deployWalletValue?: string | number;
    walletOwner: Address | string;
}
export interface VaultTokenBurnAbiParams {
    amount: string | number;
    callbackTo: Address | string;
    payload: string;
    remainingGasTo: Address | string;
    walletOwner: Address | string;
}
export interface VaultTokenMintAbiParams {
    amount: string | number;
    deployWalletValue?: string | number;
    notify?: boolean;
    payload?: string;
    recipient: Address | string;
    remainingGasTo: Address | string;
}
export interface VaultTokenTransferOwnershipAbiParams {
    callbacks?: [address: Address, value: {
        payload: string;
        value: string | number;
    }][];
    newOwner: Address | string;
    remainingGasTo: Address | string;
}
export declare abstract class VaultTokenUtils {
    static deployWallet(provider: ProviderRpcClient, tokenAddress: Address | string, params: VaultTokenDeployWalletAbiParams, args?: Partial<SendInternalParams>): Promise<DelayedMessageExecution>;
    static burn(provider: ProviderRpcClient, tokenAddress: Address | string, params: VaultTokenBurnAbiParams, args?: Partial<SendInternalParams>): Promise<DelayedMessageExecution>;
    static mint(provider: ProviderRpcClient, tokenAddress: Address | string, params: VaultTokenMintAbiParams, args?: Partial<SendInternalParams>): Promise<DelayedMessageExecution>;
    static transferOwnership(provider: ProviderRpcClient, tokenAddress: Address | string, params: VaultTokenTransferOwnershipAbiParams, args: Partial<SendInternalParams>): Promise<DelayedMessageExecution>;
    static disableBurnByRoot(provider: ProviderRpcClient, tokenAddress: Address | string, args: Pick<SendInternalParams, 'from'> & Omit<Partial<SendInternalParams>, 'from'>): Promise<DelayedMessageExecution>;
    static disableMint(provider: ProviderRpcClient, tokenAddress: Address | string, args: Pick<SendInternalParams, 'from'> & Omit<Partial<SendInternalParams>, 'from'>): Promise<DelayedMessageExecution>;
    static setBurnPaused(provider: ProviderRpcClient, tokenAddress: Address | string, params: Omit<DecodedAbiFunctionInputs<typeof VaultTokenRootAbi, 'setBurnPaused'>, 'answerId'>, args: Pick<SendInternalParams, 'from'> & Omit<Partial<SendInternalParams>, 'from'>): Promise<DelayedMessageExecution>;
    static getDetails(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<VaultTokenData | undefined>;
    static getDecimals(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<number>;
    static getSymbol(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<string>;
    static getName(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<string>;
    static rootOwnerAddress(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<Address>;
    static totalSupply(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<string>;
    static burnPaused(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<boolean>;
    static burnByRootDisabled(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<boolean>;
    static mintDisabled(connection: ProviderRpcClient, tokenAddress: Address | string, cachedState?: FullContractState): Promise<boolean>;
    /**
     * Returns expected token wallet address
     * @param {ProviderRpcClient} connection
     * @param {VaultTokenOwnerAbiParams} params
     * @param {FullContractState} [cachedState]
     * @returns Promise<Address>
     */
    static walletOf(connection: ProviderRpcClient, params: VaultTokenOwnerAbiParams, cachedState?: FullContractState): Promise<Address>;
}
