import { Structure } from '../../marshmallow/index.js';
import * as BN from 'bn.js';
import * as _solana_web3_js from '@solana/web3.js';
import '../../marshmallow/buffer-layout.js';

declare const ClmmConfigLayout: Structure<number | number[] | _solana_web3_js.PublicKey | Buffer | BN[], "", {
    owner: _solana_web3_js.PublicKey;
    bump: number;
    index: number;
    protocolFeeRate: number;
    tradeFeeRate: number;
    tickSpacing: number;
    fundFeeRate: number;
    fundOwner: _solana_web3_js.PublicKey;
}>;
declare const ObservationItemLayout: Structure<number | BN | BN[], "", {
    blockTimestamp: number;
    tickCumulative: BN;
}>;
declare const ObservationLayout: Structure<number | boolean | _solana_web3_js.PublicKey | Buffer | BN | BN[] | {
    blockTimestamp: number;
    tickCumulative: BN;
}[], "", {
    poolId: _solana_web3_js.PublicKey;
    initialized: boolean;
    recentEpoch: BN;
    observationIndex: number;
    observations: {
        blockTimestamp: number;
        tickCumulative: BN;
    }[];
}>;
declare const DynamicFeeInfoLayout: Structure<number | number[] | BN, "", {
    filterPeriod: number;
    decayPeriod: number;
    reductionFactor: number;
    dynamicFeeControl: number;
    maxVolatilityAccumulator: number;
    tickSpacingIndexReference: number;
    volatilityReference: number;
    volatilityAccumulator: number;
    lastUpdateTimestamp: BN;
}>;
declare const RewardInfoLayout: Structure<number | _solana_web3_js.PublicKey | BN, "", {
    state: number;
    creator: _solana_web3_js.PublicKey;
    mint: _solana_web3_js.PublicKey;
    endTime: BN;
    openTime: BN;
    lastUpdateTime: BN;
    emissionsPerSecondX64: BN;
    totalEmissioned: BN;
    claimed: BN;
    vault: _solana_web3_js.PublicKey;
    growthGlobalX64: BN;
}>;
declare const PoolInfoLayout: Structure<number | _solana_web3_js.PublicKey | Buffer | BN | BN[] | {
    filterPeriod: number;
    decayPeriod: number;
    reductionFactor: number;
    dynamicFeeControl: number;
    maxVolatilityAccumulator: number;
    tickSpacingIndexReference: number;
    volatilityReference: number;
    volatilityAccumulator: number;
    lastUpdateTimestamp: BN;
} | {
    state: number;
    creator: _solana_web3_js.PublicKey;
    mint: _solana_web3_js.PublicKey;
    endTime: BN;
    openTime: BN;
    lastUpdateTime: BN;
    emissionsPerSecondX64: BN;
    totalEmissioned: BN;
    claimed: BN;
    vault: _solana_web3_js.PublicKey;
    growthGlobalX64: BN;
}[], "", {
    liquidity: BN;
    rewardInfos: {
        state: number;
        creator: _solana_web3_js.PublicKey;
        mint: _solana_web3_js.PublicKey;
        endTime: BN;
        openTime: BN;
        lastUpdateTime: BN;
        emissionsPerSecondX64: BN;
        totalEmissioned: BN;
        claimed: BN;
        vault: _solana_web3_js.PublicKey;
        growthGlobalX64: BN;
    }[];
    creator: _solana_web3_js.PublicKey;
    bump: number;
    startTime: BN;
    tickSpacing: number;
    recentEpoch: BN;
    configId: _solana_web3_js.PublicKey;
    mintA: _solana_web3_js.PublicKey;
    mintB: _solana_web3_js.PublicKey;
    vaultA: _solana_web3_js.PublicKey;
    vaultB: _solana_web3_js.PublicKey;
    observationId: _solana_web3_js.PublicKey;
    mintDecimalsA: number;
    mintDecimalsB: number;
    sqrtPriceX64: BN;
    tickCurrent: number;
    feeGrowthGlobalX64A: BN;
    feeGrowthGlobalX64B: BN;
    protocolFeesTokenA: BN;
    protocolFeesTokenB: BN;
    status: number;
    feeOn: number;
    tickArrayBitmap: Buffer;
    fundFeesTokenA: BN;
    fundFeesTokenB: BN;
    dynamicFeeInfo: {
        filterPeriod: number;
        decayPeriod: number;
        reductionFactor: number;
        dynamicFeeControl: number;
        maxVolatilityAccumulator: number;
        tickSpacingIndexReference: number;
        volatilityReference: number;
        volatilityAccumulator: number;
        lastUpdateTimestamp: BN;
    };
}>;
declare const PositionRewardInfoLayout: Structure<BN, "", {
    growthInsideLastX64: BN;
    rewardAmountOwed: BN;
}>;
declare const PersonalPositionLayout: Structure<number | _solana_web3_js.PublicKey | Buffer | BN | BN[] | {
    growthInsideLastX64: BN;
    rewardAmountOwed: BN;
}[], "", {
    liquidity: BN;
    rewardInfos: {
        growthInsideLastX64: BN;
        rewardAmountOwed: BN;
    }[];
    bump: number;
    poolId: _solana_web3_js.PublicKey;
    recentEpoch: BN;
    nftMint: _solana_web3_js.PublicKey;
    tickLower: number;
    tickUpper: number;
    feeGrowthInsideLastX64A: BN;
    feeGrowthInsideLastX64B: BN;
    tokenFeesOwedA: BN;
    tokenFeesOwedB: BN;
}>;
declare const ProtocolPositionLayout: Structure<number | _solana_web3_js.PublicKey | Buffer | BN | BN[], "", {
    liquidity: BN;
    bump: number;
    poolId: _solana_web3_js.PublicKey;
    recentEpoch: BN;
    tickLower: number;
    tickUpper: number;
    feeGrowthInsideLastX64A: BN;
    feeGrowthInsideLastX64B: BN;
    tokenFeesOwedA: BN;
    tokenFeesOwedB: BN;
    rewardGrowthInside: BN[];
}>;
declare const TickLayout: Structure<number | number[] | BN | BN[], "", {
    tick: number;
    liquidityNet: BN;
    liquidityGross: BN;
    feeGrowthOutsideX64A: BN;
    feeGrowthOutsideX64B: BN;
    rewardGrowthsOutsideX64: BN[];
    orderPhase: BN;
    ordersAmount: BN;
    partFilledOrdersRemaining: BN;
    unfilledRatioX64: BN;
}>;
declare const TickArrayLayout: Structure<number | number[] | _solana_web3_js.PublicKey | Buffer | BN | {
    tick: number;
    liquidityNet: BN;
    liquidityGross: BN;
    feeGrowthOutsideX64A: BN;
    feeGrowthOutsideX64B: BN;
    rewardGrowthsOutsideX64: BN[];
    orderPhase: BN;
    ordersAmount: BN;
    partFilledOrdersRemaining: BN;
    unfilledRatioX64: BN;
}[], "", {
    poolId: _solana_web3_js.PublicKey;
    recentEpoch: BN;
    startTickIndex: number;
    ticks: {
        tick: number;
        liquidityNet: BN;
        liquidityGross: BN;
        feeGrowthOutsideX64A: BN;
        feeGrowthOutsideX64B: BN;
        rewardGrowthsOutsideX64: BN[];
        orderPhase: BN;
        ordersAmount: BN;
        partFilledOrdersRemaining: BN;
        unfilledRatioX64: BN;
    }[];
    initializedTickCount: number;
}>;
declare const OperationLayout: Structure<number | _solana_web3_js.PublicKey[] | Buffer, "", {
    bump: number;
    operationOwners: _solana_web3_js.PublicKey[];
    whitelistMints: _solana_web3_js.PublicKey[];
}>;
declare const LimitOrderLayout: Structure<number | boolean | _solana_web3_js.PublicKey | Buffer | BN | BN[], "", {
    owner: _solana_web3_js.PublicKey;
    poolId: _solana_web3_js.PublicKey;
    openTime: BN;
    tick: number;
    orderPhase: BN;
    unfilledRatioX64: BN;
    zeroForOne: boolean;
    totalAmount: BN;
    filledAmount: BN;
    settleBase: BN;
    settleOutput: BN;
}>;
declare const TickArrayBitmapExtensionLayout: Structure<_solana_web3_js.PublicKey | Buffer, "", {
    poolId: _solana_web3_js.PublicKey;
    positiveTickArrayBitmap: Buffer;
    negativeTickArrayBitmap: Buffer;
}>;
declare const DynamicFeeConfigLayout: Structure<number | Buffer | BN[], "", {
    index: number;
    filterPeriod: number;
    decayPeriod: number;
    reductionFactor: number;
    dynamicFeeControl: number;
    maxVolatilityAccumulator: number;
}>;
declare const LimitOrderNonceLayout: Structure<number | _solana_web3_js.PublicKey | Buffer | BN | BN[], "", {
    wallet: _solana_web3_js.PublicKey;
    nonceIndex: number;
    orderNonce: BN;
}>;
declare const LockPositionLayout: Structure<number | _solana_web3_js.PublicKey | BN | BN[], "", {
    owner: _solana_web3_js.PublicKey;
    bump: number;
    poolId: _solana_web3_js.PublicKey;
    positionId: _solana_web3_js.PublicKey;
    nftAccount: _solana_web3_js.PublicKey;
}>;
declare const LockClPositionLayoutV2: Structure<number | _solana_web3_js.PublicKey | Buffer | BN | BN[], "", {
    bump: number;
    poolId: _solana_web3_js.PublicKey;
    recentEpoch: BN;
    positionId: _solana_web3_js.PublicKey;
    nftAccount: _solana_web3_js.PublicKey;
    lockOwner: _solana_web3_js.PublicKey;
    lockNftMint: _solana_web3_js.PublicKey;
}>;
declare type ClmmPositionLayout = ReturnType<typeof PersonalPositionLayout.decode>;

export { ClmmConfigLayout, ClmmPositionLayout, DynamicFeeConfigLayout, DynamicFeeInfoLayout, LimitOrderLayout, LimitOrderNonceLayout, LockClPositionLayoutV2, LockPositionLayout, ObservationItemLayout, ObservationLayout, OperationLayout, PersonalPositionLayout, PoolInfoLayout, PositionRewardInfoLayout, ProtocolPositionLayout, RewardInfoLayout, TickArrayBitmapExtensionLayout, TickArrayLayout, TickLayout };
