import { Address, Cell, Contract, type ContractProvider, type Sender } from '@ton/core';
import { Position } from './Position';
import { Asset, BasicPayoutConfig, PayNative, PoolReward, PoolStorage, Q120X120 } from './abi';
import { PoolStatusCode } from './consts';
import { StateInit } from '@ton/ton';
export interface PoolData {
status: PoolStatusCode;
depositActive: boolean;
swapActive: boolean;
assetX: Asset;
assetY: Asset;
walletsByAssets: Map
;
assetsByWallets: Map;
walletsResolutions: Map;
baseFeeBPS: number;
reserveX: bigint;
reserveY: bigint;
liquidity: bigint;
protocolFeeX: bigint;
protocolFeeY: bigint;
creatorFeeX: bigint;
creatorFeeY: bigint;
xFeePerLiquidity: Q120X120;
yFeePerLiquidity: Q120X120;
rewards: Map;
}
export declare abstract class Pool implements Contract {
readonly address: Address;
readonly init?: StateInit | undefined;
protected constructor(address: Address, init?: StateInit | undefined);
getFullState(provider: ContractProvider): Promise<{
codeHash: Buffer;
storage: PoolStorage;
}>;
getData(provider: ContractProvider): Promise;
getPosition(provider: ContractProvider, ownerAddress: Address): Promise;
sendPayNative(provider: ContractProvider, via: Sender, input: PayNative.Input, extraGas?: bigint): Promise;
sendInit(provider: ContractProvider, via: Sender, { queryId, customPayload, }?: {
queryId?: bigint;
customPayload?: Cell | null;
}, extraGas?: bigint): Promise;
sendClaimPositionFees(provider: ContractProvider, via: Sender, { queryId, excessesTo }: {
queryId?: bigint;
excessesTo: Address;
}): Promise;
sendWithdraw(provider: ContractProvider, via: Sender, { queryId, liquidity, minimalXOut, minimalYOut, autoClaimFees, payoutConfig, }: {
queryId?: bigint;
liquidity: bigint;
minimalXOut?: bigint;
minimalYOut?: bigint;
autoClaimFees?: boolean;
payoutConfig?: BasicPayoutConfig;
}): Promise;
}