import { UserMessageSent, GearApi, HexString, ProgramMetadata } from '@gear-js/api';
import { ISubmittableResult, IKeyringPair } from '@polkadot/types/types';
import { SignerOptions, SubmittableExtrinsic } from '@polkadot/api/types';
import { SimulateSwapResult } from '@subwallet/invariant-vara-sdk-wasm';
import { TypeRegistry } from '@polkadot/types';
import { TokenAmount, Price, QuoteResult, SqrtPrice, CrossTickEvent, InvariantEvent, SwapEvent, PositionCreatedEvent, PositionRemovedEvent, CalculateSwapResult, FeeTier, Percentage, Pool, PoolKey, Position, Tick, LiquidityTick, PositionTick, Tickmap, _calculateAmountDeltaResult, LiquidityBreakpoint, Liquidity } from './schema.js';
import { Network } from './network.js';
export { HexString } from '@gear-js/api';
export type Signer = string | IKeyringPair;
export type ActorId = Uint8Array | HexString;
export declare const initGearApi: (network: Network) => Promise<GearApi>;
export declare const subscribeToNewHeads: (api: GearApi) => Promise<VoidFunction>;
export declare const getWasm: (contractName: string) => Promise<any>;
export declare const createTypeByName: (meta: ProgramMetadata, type: string, payload: any) => import("@polkadot/types/types").Codec;
export declare const integerSafeCast: (value: bigint) => number;
export type Result<T> = {
    ok: T;
} | {
    err: string;
};
export declare const unwrapResult: <T>(result: Result<T>) => T;
export declare const convertTick: (tick: any) => Tick;
export declare const convertLiquidityTick: (tick: any) => LiquidityTick;
export declare const convertPositionTick: (tick: any) => PositionTick;
export declare const convertFeeTier: (feeTier: any) => FeeTier;
export declare const convertPoolKey: (poolKey: any) => PoolKey;
export declare const convertPool: (pool: any) => Pool;
export declare const convertPosition: (position: any) => Position;
export declare const convertPositions: (positions: any) => [Pool, [Position, number][]][];
export declare const convertPositionCreatedEvent: (positionEvent: any) => PositionCreatedEvent;
export declare const convertPositionRemovedEvent: (positionEvent: any) => PositionRemovedEvent;
export declare const convertSwapEvent: (swapEvent: any) => SwapEvent;
export declare const convertCrossTickEvent: (crossTickEvent: any) => CrossTickEvent;
export declare const convertCalculateSwapResult: (calculateSwapResult: any) => CalculateSwapResult;
export declare const convertQuoteResult: (quoteResult: any) => QuoteResult;
export interface IMethodReturnType<T> {
    msgId: HexString;
    blockHash: HexString;
    txHash: HexString;
    response: () => Promise<T>;
}
export interface ITransactionBuilder {
    signAndSend(): Promise<IMethodReturnType<any>>;
    withAccount(signer: Signer): this;
}
export declare class TransactionWrapper<U> {
    private txBuilder;
    private decodeCallback;
    private validateCallback;
    constructor(txBuilder: ITransactionBuilder);
    signAndSend(): Promise<U>;
    withAccount(signer: Signer): this;
    withDecode(decodeFn: (t: any) => U): this;
    withValidate(validateFn: (t: UserMessageSent) => string | null): this;
    get extrinsic(): SubmittableExtrinsic<'promise', ISubmittableResult>;
    get validation(): ((t: UserMessageSent) => string | null) | null;
}
export declare const validateFungibleTokenResponse: (message: UserMessageSent) => "Token response invalid" | null;
export declare const validateInvariantSingleDeposit: (message: UserMessageSent) => "Deposit response invalid" | null;
export declare const validateInvariantSingleWithdraw: (message: UserMessageSent) => "Deposit response invalid" | null;
export declare const validateInvariantVaraDeposit: (message: UserMessageSent) => "Deposit response invalid" | null;
export declare const validateInvariantVaraWithdraw: (message: UserMessageSent) => "Deposit response invalid" | null;
export declare const validateInvariantPairDeposit: (message: UserMessageSent) => "Deposit response invalid" | null;
export declare const validateInvariantPairWithdraw: (message: UserMessageSent) => "Deposit response invalid" | null;
export type SwapEventCallback = {
    ident: InvariantEvent.SwapEvent;
    callback: (event: SwapEvent) => void | Promise<void>;
};
export type CrossTickEventCallback = {
    ident: InvariantEvent.CrossTickEvent;
    callback: (event: CrossTickEvent) => void | Promise<void>;
};
export type PositionRemovedEventCallback = {
    ident: InvariantEvent.PositionRemovedEvent;
    callback: (event: PositionRemovedEvent) => void | Promise<void>;
};
export type PositionCreatedEventCallback = {
    ident: InvariantEvent.PositionCreatedEvent;
    callback: (event: PositionCreatedEvent) => void | Promise<void>;
};
export type InvariantEventCallback = SwapEventCallback | CrossTickEventCallback | PositionRemovedEventCallback | PositionCreatedEventCallback;
export declare const decodeEvent: (registry: TypeRegistry, payload: HexString, prefix: string) => any;
export declare const calculatePriceImpact: (startingSqrtPrice: SqrtPrice, endingSqrtPrice: SqrtPrice) => Percentage;
export declare const sqrtPriceToPrice: (sqrtPrice: SqrtPrice) => Price;
export declare const priceToSqrtPrice: (price: Price) => SqrtPrice;
export declare const calculateLiquidityBreakpoints: (ticks: (Tick | LiquidityTick)[]) => LiquidityBreakpoint[];
export declare const calculateSqrtPriceAfterSlippage: (sqrtPrice: SqrtPrice, slippage: Percentage, up: boolean) => SqrtPrice;
export declare function filterTicks<T extends Tick | LiquidityTick>(ticks: T[], tickIndex: bigint, xToY: boolean): T[];
export declare function filterTickmap(tickmap: Tickmap, tickSpacing: bigint, index: bigint, xToY: boolean): Tickmap;
export declare const delay: (delayMs: number) => Promise<unknown>;
export declare const calculateTokenAmounts: (pool: Pool, position: Position) => _calculateAmountDeltaResult;
export declare const _calculateTokenAmounts: (pool: Pool, position: Position, sign: boolean) => _calculateAmountDeltaResult;
export declare const newFeeTier: (fee: Percentage, tickSpacing: bigint) => FeeTier;
export declare const newPoolKey: (token0: HexString, token1: HexString, feeTier: FeeTier) => PoolKey;
export declare const calculateFee: (pool: Pool, position: Position, lowerTick: Tick, upperTick: Tick) => [TokenAmount, TokenAmount];
export declare const getLiquidityByX: (amountX: TokenAmount, lowerTick: bigint, upperTick: bigint, sqrtPrice: SqrtPrice, roundingUp: boolean) => any;
export declare const getLiquidityByY: (amountY: TokenAmount, lowerTick: bigint, upperTick: bigint, sqrtPrice: SqrtPrice, roundingUp: boolean) => any;
export declare const calculateTick: (sqrtPrice: SqrtPrice, tickSpacing: bigint) => bigint;
export declare const isTokenX: (token0: HexString, token1: HexString) => boolean;
export declare const getMinSqrtPrice: (tickSpacing: bigint) => SqrtPrice;
export declare const getMaxSqrtPrice: (tickSpacing: bigint) => SqrtPrice;
export declare const getMaxChunk: (tickSpacing: bigint) => bigint;
export declare const getMaxTick: (tickSpacing: bigint) => bigint;
export declare const getMinTick: (tickSpacing: bigint) => bigint;
export declare const toFeeGrowth: (val: bigint, scale: bigint) => bigint;
export declare const toLiquidity: (val: bigint, scale: bigint) => bigint;
export declare const toFixedPoint: (val: bigint, scale: bigint) => bigint;
export declare const toPercentage: (val: bigint, scale: bigint) => bigint;
export declare const toPrice: (val: bigint, scale: bigint) => bigint;
export declare const toSecondsPerLiquidity: (val: bigint, scale: bigint) => bigint;
export declare const toSqrtPrice: (val: bigint, scale: bigint) => bigint;
export declare const toTokenAmount: (val: bigint, scale: bigint) => bigint;
export declare const positionToTick: (chunk: bigint, bit: bigint, tickSpacing: bigint) => bigint;
export declare const calculateSqrtPrice: (tickIndex: bigint) => bigint;
export declare const simulateInvariantSwap: (tickmap: Tickmap, feeTier: FeeTier, pool: Pool, liquidityTicks: LiquidityTick[], xToY: boolean, amount: bigint, byAmountIn: boolean, sqrtPriceLimit: bigint) => SimulateSwapResult;
export declare const calculateFeeTierWithLinearRatio: (tickCount: bigint) => FeeTier;
export declare const calculateConcentration: (tickSpacing: number, minimumRange: number, n: number) => number;
export declare const calculateTickDelta: (tickSpacing: number, minimumRange: number, concentration: number) => number;
export declare const getConcentrationArray: (tickSpacing: number, minimumRange: number, currentTick: number) => number[];
export declare const calculateAmountDelta: (currentTickIndex: bigint, currentSqrtPrice: bigint, liquidity: bigint, roundingUp: boolean, upperTickIndex: bigint, lowerTickIndex: bigint) => bigint[];
export declare const calculateTokenAmountsWithSlippage: (tickSpacing: bigint, currentSqrtPrice: SqrtPrice, liquidity: Liquidity, lowerTickIndex: bigint, upperTickIndex: bigint, slippage: Percentage, roundingUp: boolean) => [bigint, bigint];
export declare class BatchError extends Error {
    failedTxs: Map<number, string>;
    constructor(failedTxs: Map<number, string>);
}
export declare const batchTxs: (api: GearApi, account: Signer, transactions: TransactionWrapper<any>[], options?: Partial<SignerOptions>) => Promise<UserMessageSent[]>;
