/**
 * This code was AUTOGENERATED using the Codama library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun Codama to update it.
 *
 * @see https://github.com/codama-idl/codama
 */
import { fetchEncodedAccount, fetchEncodedAccounts, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from '@solana/kit';
import { type KaminoRewardInfo, type KaminoRewardInfoArgs, type Price, type PriceArgs, type RebalanceRaw, type RebalanceRawArgs, type WithdrawalCaps, type WithdrawalCapsArgs } from '../types';
export declare const WHIRLPOOL_STRATEGY_DISCRIMINATOR: Uint8Array<ArrayBuffer>;
export declare function getWhirlpoolStrategyDiscriminatorBytes(): ReadonlyUint8Array<ArrayBuffer>;
export type WhirlpoolStrategy = {
    discriminator: ReadonlyUint8Array;
    adminAuthority: Address;
    globalConfig: Address;
    baseVaultAuthority: Address;
    baseVaultAuthorityBump: bigint;
    pool: Address;
    poolTokenVaultA: Address;
    poolTokenVaultB: Address;
    tickArrayLower: Address;
    tickArrayUpper: Address;
    position: Address;
    positionMint: Address;
    positionMetadata: Address;
    positionTokenAccount: Address;
    tokenAVault: Address;
    tokenBVault: Address;
    deprecated0: Array<Address>;
    deprecated1: Array<bigint>;
    tokenAMint: Address;
    tokenBMint: Address;
    tokenAMintDecimals: bigint;
    tokenBMintDecimals: bigint;
    tokenAAmounts: bigint;
    tokenBAmounts: bigint;
    tokenACollateralId: bigint;
    tokenBCollateralId: bigint;
    deprecated2: Address;
    deprecated3: Address;
    sharesMint: Address;
    sharesMintDecimals: bigint;
    sharesMintAuthority: Address;
    sharesMintAuthorityBump: bigint;
    sharesIssued: bigint;
    status: bigint;
    reward0Amount: bigint;
    reward0Vault: Address;
    reward0CollateralId: bigint;
    reward0Decimals: bigint;
    reward1Amount: bigint;
    reward1Vault: Address;
    reward1CollateralId: bigint;
    reward1Decimals: bigint;
    reward2Amount: bigint;
    reward2Vault: Address;
    reward2CollateralId: bigint;
    reward2Decimals: bigint;
    depositCapUsd: bigint;
    feesACumulative: bigint;
    feesBCumulative: bigint;
    reward0AmountCumulative: bigint;
    reward1AmountCumulative: bigint;
    reward2AmountCumulative: bigint;
    depositCapUsdPerIxn: bigint;
    withdrawalCapA: WithdrawalCaps;
    withdrawalCapB: WithdrawalCaps;
    maxPriceDeviationBps: bigint;
    swapVaultMaxSlippageBps: number;
    swapVaultMaxSlippageFromReferenceBps: number;
    strategyType: bigint;
    padding0: bigint;
    withdrawFee: bigint;
    feesFee: bigint;
    reward0Fee: bigint;
    reward1Fee: bigint;
    reward2Fee: bigint;
    positionTimestamp: bigint;
    kaminoRewards: Array<KaminoRewardInfo>;
    strategyDex: bigint;
    raydiumProtocolPositionOrBaseVaultAuthority: Address;
    allowDepositWithoutInvest: bigint;
    raydiumPoolConfigOrBaseVaultAuthority: Address;
    depositBlocked: number;
    creationStatus: number;
    investBlocked: number;
    /** share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1 */
    shareCalculationMethod: number;
    withdrawBlocked: number;
    reservedFlag2: number;
    localAdminBlocked: number;
    flashVaultSwapAllowed: number;
    referenceSwapPriceA: Price;
    referenceSwapPriceB: Price;
    isCommunity: number;
    rebalanceType: number;
    padding1: ReadonlyUint8Array;
    rebalanceRaw: RebalanceRaw;
    padding2: ReadonlyUint8Array;
    tokenAFeesFromRewardsCumulative: bigint;
    tokenBFeesFromRewardsCumulative: bigint;
    strategyLookupTable: Address;
    lastSwapUnevenStepTimestamp: bigint;
    farm: Address;
    rebalancesCap: WithdrawalCaps;
    swapUnevenAuthority: Address;
    tokenATokenProgram: Address;
    tokenBTokenProgram: Address;
    pendingAdmin: Address;
    maxDeviationFromRefPriceOnInvestBps: number;
    padding3: number;
    lastInvestSlot: bigint;
    padding4: bigint;
    padding5: Array<bigint>;
    padding6: Array<bigint>;
    padding7: Array<bigint>;
    padding8: Array<bigint>;
};
export type WhirlpoolStrategyArgs = {
    adminAuthority: Address;
    globalConfig: Address;
    baseVaultAuthority: Address;
    baseVaultAuthorityBump: number | bigint;
    pool: Address;
    poolTokenVaultA: Address;
    poolTokenVaultB: Address;
    tickArrayLower: Address;
    tickArrayUpper: Address;
    position: Address;
    positionMint: Address;
    positionMetadata: Address;
    positionTokenAccount: Address;
    tokenAVault: Address;
    tokenBVault: Address;
    deprecated0: Array<Address>;
    deprecated1: Array<number | bigint>;
    tokenAMint: Address;
    tokenBMint: Address;
    tokenAMintDecimals: number | bigint;
    tokenBMintDecimals: number | bigint;
    tokenAAmounts: number | bigint;
    tokenBAmounts: number | bigint;
    tokenACollateralId: number | bigint;
    tokenBCollateralId: number | bigint;
    deprecated2: Address;
    deprecated3: Address;
    sharesMint: Address;
    sharesMintDecimals: number | bigint;
    sharesMintAuthority: Address;
    sharesMintAuthorityBump: number | bigint;
    sharesIssued: number | bigint;
    status: number | bigint;
    reward0Amount: number | bigint;
    reward0Vault: Address;
    reward0CollateralId: number | bigint;
    reward0Decimals: number | bigint;
    reward1Amount: number | bigint;
    reward1Vault: Address;
    reward1CollateralId: number | bigint;
    reward1Decimals: number | bigint;
    reward2Amount: number | bigint;
    reward2Vault: Address;
    reward2CollateralId: number | bigint;
    reward2Decimals: number | bigint;
    depositCapUsd: number | bigint;
    feesACumulative: number | bigint;
    feesBCumulative: number | bigint;
    reward0AmountCumulative: number | bigint;
    reward1AmountCumulative: number | bigint;
    reward2AmountCumulative: number | bigint;
    depositCapUsdPerIxn: number | bigint;
    withdrawalCapA: WithdrawalCapsArgs;
    withdrawalCapB: WithdrawalCapsArgs;
    maxPriceDeviationBps: number | bigint;
    swapVaultMaxSlippageBps: number;
    swapVaultMaxSlippageFromReferenceBps: number;
    strategyType: number | bigint;
    padding0: number | bigint;
    withdrawFee: number | bigint;
    feesFee: number | bigint;
    reward0Fee: number | bigint;
    reward1Fee: number | bigint;
    reward2Fee: number | bigint;
    positionTimestamp: number | bigint;
    kaminoRewards: Array<KaminoRewardInfoArgs>;
    strategyDex: number | bigint;
    raydiumProtocolPositionOrBaseVaultAuthority: Address;
    allowDepositWithoutInvest: number | bigint;
    raydiumPoolConfigOrBaseVaultAuthority: Address;
    depositBlocked: number;
    creationStatus: number;
    investBlocked: number;
    /** share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1 */
    shareCalculationMethod: number;
    withdrawBlocked: number;
    reservedFlag2: number;
    localAdminBlocked: number;
    flashVaultSwapAllowed: number;
    referenceSwapPriceA: PriceArgs;
    referenceSwapPriceB: PriceArgs;
    isCommunity: number;
    rebalanceType: number;
    padding1: ReadonlyUint8Array;
    rebalanceRaw: RebalanceRawArgs;
    padding2: ReadonlyUint8Array;
    tokenAFeesFromRewardsCumulative: number | bigint;
    tokenBFeesFromRewardsCumulative: number | bigint;
    strategyLookupTable: Address;
    lastSwapUnevenStepTimestamp: number | bigint;
    farm: Address;
    rebalancesCap: WithdrawalCapsArgs;
    swapUnevenAuthority: Address;
    tokenATokenProgram: Address;
    tokenBTokenProgram: Address;
    pendingAdmin: Address;
    maxDeviationFromRefPriceOnInvestBps: number;
    padding3: number;
    lastInvestSlot: number | bigint;
    padding4: number | bigint;
    padding5: Array<number | bigint>;
    padding6: Array<number | bigint>;
    padding7: Array<number | bigint>;
    padding8: Array<number | bigint>;
};
/** Gets the encoder for {@link WhirlpoolStrategyArgs} account data. */
export declare function getWhirlpoolStrategyEncoder(): FixedSizeEncoder<WhirlpoolStrategyArgs>;
/** Gets the decoder for {@link WhirlpoolStrategy} account data. */
export declare function getWhirlpoolStrategyDecoder(): FixedSizeDecoder<WhirlpoolStrategy>;
/** Gets the codec for {@link WhirlpoolStrategy} account data. */
export declare function getWhirlpoolStrategyCodec(): FixedSizeCodec<WhirlpoolStrategyArgs, WhirlpoolStrategy>;
export declare function decodeWhirlpoolStrategy<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<WhirlpoolStrategy, TAddress>;
export declare function decodeWhirlpoolStrategy<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<WhirlpoolStrategy, TAddress>;
export declare function fetchWhirlpoolStrategy<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<Account<WhirlpoolStrategy, TAddress>>;
export declare function fetchMaybeWhirlpoolStrategy<TAddress extends string = string>(rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig): Promise<MaybeAccount<WhirlpoolStrategy, TAddress>>;
export declare function fetchAllWhirlpoolStrategy(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<Account<WhirlpoolStrategy>[]>;
export declare function fetchAllMaybeWhirlpoolStrategy(rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig): Promise<MaybeAccount<WhirlpoolStrategy>[]>;
export declare function getWhirlpoolStrategySize(): number;
//# sourceMappingURL=whirlpoolStrategy.d.ts.map