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; }