import { type Address, type DecodedAbiFunctionOutputs, type FullContractState, type ProviderRpcClient } from 'everscale-inpage-provider';
import { type DexPoolType } from '../../models/dex';
import { type DexPairFeeParams, type DexPairFullDetails } from '../../models/dex-pair';
import { type DexStablePairAbi } from '../../models/dex-stable-pair/abi';
import { type CallId } from '../../types';
export interface DexStablePairCrossExchangePayloadAbiParams extends Partial<CallId> {
    deployWalletGrams?: string | number;
    expectedAmount: string | number;
    steps: {
        amount: string | number;
        root: Address | string;
    }[];
}
export interface DexStablePairCrossExchangePayloadV2AbiParams extends Partial<CallId> {
    cancelPayload?: string | null;
    deployWalletGrams?: string | number;
    expectedAmount: string | number;
    nextStepIndices: (string | number)[];
    outcoming: Address | string;
    recipient: Address | string;
    referrer?: Address | string;
    steps: {
        amount: string | number;
        nextStepIndices: (string | number)[];
        numerator: string | number;
        outcoming: Address | string;
        roots: (Address | string)[];
    }[];
    successPayload?: string | null;
    toNative?: boolean | null;
}
export interface DexStablePairExchangePayloadAbiParams extends Partial<CallId> {
    deployWalletGrams?: string | number;
    expectedAmount: string | number;
}
export interface DexStablePairExchangePayloadV2AbiParams extends Partial<CallId> {
    cancelPayload?: string | null;
    deployWalletGrams?: string | number;
    expectedAmount: string | number;
    recipient: Address | string;
    referrer?: Address | string;
    successPayload?: string | null;
    toNative?: boolean | null;
}
export interface DexStablePairDepositLiquidityPayloadAbiParams extends Partial<CallId> {
    deployWalletGrams?: string | number;
}
export interface DexStablePairDepositLiquidityPayloadV2AbiParams extends Partial<CallId> {
    cancelPayload?: string | null;
    deployWalletGrams?: string | number;
    expectedAmount: string | number;
    recipient: Address | string;
    referrer?: Address | string;
    successPayload?: string | null;
}
export interface DexStablePairWithdrawLiquidityPayloadAbiParams extends Partial<CallId> {
    deployWalletGrams?: string | number;
}
export interface DexStablePairWithdrawLiquidityPayloadV2AbiParams extends Partial<CallId> {
    cancelPayload?: string | null;
    deployWalletGrams?: string | number;
    expectedLeftAmount: string | number;
    expectedRightAmount: string | number;
    recipient: Address | string;
    referrer?: Address | string;
    successPayload?: string | null;
    toNative?: boolean | null;
}
export interface DexStablePairExpectedExchangeAbiParams {
    amount: string | number;
    spentTokenAddress: Address | string;
}
export interface DexStablePairExpectedSpendAmountAbiParams {
    receiveAmount: string | number;
    receiveTokenAddress: Address | string;
}
export interface DexStablePairExpectedDepositLiquidityV2AbiParams {
    amounts: (string | number)[];
}
export interface DexStablePairExpectedExchange {
    expectedAmount: string;
    expectedFee: string;
}
export interface DexStablePairExpectedSpendAmount {
    expectedAmount: string;
    expectedFee: string;
}
export interface DexStablePairFeeParams extends DexPairFeeParams {
}
export interface DexStablePairFullDetails extends DexPairFullDetails {
}
export declare abstract class DexStablePairUtils {
    static getDetails(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<DexStablePairFullDetails>;
    static getBalances(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<Map<string, string>>;
    static getFeeParams(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<DexPairFeeParams>;
    static isActive(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<boolean>;
    static getTokenRoots(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<DecodedAbiFunctionOutputs<typeof DexStablePairAbi, 'getTokenRoots'>>;
    static getTokenWallets(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<DecodedAbiFunctionOutputs<typeof DexStablePairAbi, 'getTokenWallets'>>;
    static getPoolType(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<DexPoolType>;
    static getRoot(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<Address>;
    static getVault(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<Address>;
    static getAccumulatedFees(connection: ProviderRpcClient, pairAddress: Address | string, cachedState?: FullContractState): Promise<string[]>;
    static buildCrossPairExchangePayload(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairCrossExchangePayloadAbiParams, cachedState?: FullContractState): Promise<string>;
    static buildCrossPairExchangePayloadV2(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairCrossExchangePayloadV2AbiParams, cachedState?: FullContractState): Promise<string>;
    static buildExchangePayload(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairExchangePayloadAbiParams, cachedState?: FullContractState): Promise<string>;
    static buildExchangePayloadV2(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairExchangePayloadV2AbiParams, cachedState?: FullContractState): Promise<string>;
    static buildDepositLiquidityPayload(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairDepositLiquidityPayloadAbiParams, cachedState?: FullContractState): Promise<string>;
    static buildDepositLiquidityPayloadV2(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairDepositLiquidityPayloadV2AbiParams, cachedState?: FullContractState): Promise<string>;
    static buildWithdrawLiquidityPayload(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairWithdrawLiquidityPayloadAbiParams, cachedState?: FullContractState): Promise<string>;
    static expectedDepositLiquidityV2(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairExpectedDepositLiquidityV2AbiParams, cachedState?: FullContractState): Promise<DecodedAbiFunctionOutputs<typeof DexStablePairAbi, 'expectedDepositLiquidityV2'>['value0']>;
    static expectedExchange(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairExpectedExchangeAbiParams, cachedState?: FullContractState): Promise<DexStablePairExpectedExchange>;
    static expectedSpendAmount(connection: ProviderRpcClient, pairAddress: Address | string, params: DexStablePairExpectedSpendAmountAbiParams, cachedState?: FullContractState): Promise<DexStablePairExpectedSpendAmount>;
}
