/// <reference types="node" />
import { PublicKey, Connection } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface WhirlpoolStrategyFields {
    adminAuthority: PublicKey;
    globalConfig: PublicKey;
    baseVaultAuthority: PublicKey;
    baseVaultAuthorityBump: BN;
    pool: PublicKey;
    poolTokenVaultA: PublicKey;
    poolTokenVaultB: PublicKey;
    tickArrayLower: PublicKey;
    tickArrayUpper: PublicKey;
    position: PublicKey;
    positionMint: PublicKey;
    positionMetadata: PublicKey;
    positionTokenAccount: PublicKey;
    tokenAVault: PublicKey;
    tokenBVault: PublicKey;
    tokenAVaultAuthority: PublicKey;
    tokenBVaultAuthority: PublicKey;
    tokenAVaultAuthorityBump: BN;
    tokenBVaultAuthorityBump: BN;
    tokenAMint: PublicKey;
    tokenBMint: PublicKey;
    tokenAMintDecimals: BN;
    tokenBMintDecimals: BN;
    tokenAAmounts: BN;
    tokenBAmounts: BN;
    tokenACollateralId: BN;
    tokenBCollateralId: BN;
    scopePrices: PublicKey;
    scopeProgram: PublicKey;
    sharesMint: PublicKey;
    sharesMintDecimals: BN;
    sharesMintAuthority: PublicKey;
    sharesMintAuthorityBump: BN;
    sharesIssued: BN;
    status: BN;
    reward0Amount: BN;
    reward0Vault: PublicKey;
    reward0CollateralId: BN;
    reward0Decimals: BN;
    reward1Amount: BN;
    reward1Vault: PublicKey;
    reward1CollateralId: BN;
    reward1Decimals: BN;
    reward2Amount: BN;
    reward2Vault: PublicKey;
    reward2CollateralId: BN;
    reward2Decimals: BN;
    depositCapUsd: BN;
    feesACumulative: BN;
    feesBCumulative: BN;
    reward0AmountCumulative: BN;
    reward1AmountCumulative: BN;
    reward2AmountCumulative: BN;
    depositCapUsdPerIxn: BN;
    withdrawalCapA: types.WithdrawalCapsFields;
    withdrawalCapB: types.WithdrawalCapsFields;
    maxPriceDeviationBps: BN;
    swapVaultMaxSlippageBps: number;
    swapVaultMaxSlippageFromReferenceBps: number;
    strategyType: BN;
    padding0: BN;
    withdrawFee: BN;
    feesFee: BN;
    reward0Fee: BN;
    reward1Fee: BN;
    reward2Fee: BN;
    positionTimestamp: BN;
    kaminoRewards: Array<types.KaminoRewardInfoFields>;
    strategyDex: BN;
    raydiumProtocolPositionOrBaseVaultAuthority: PublicKey;
    allowDepositWithoutInvest: BN;
    raydiumPoolConfigOrBaseVaultAuthority: PublicKey;
    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: types.PriceFields;
    referenceSwapPriceB: types.PriceFields;
    isCommunity: number;
    rebalanceType: number;
    padding1: Array<number>;
    rebalanceRaw: types.RebalanceRawFields;
    padding2: Array<number>;
    tokenAFeesFromRewardsCumulative: BN;
    tokenBFeesFromRewardsCumulative: BN;
    strategyLookupTable: PublicKey;
    lastSwapUnevenStepTimestamp: BN;
    padding3: BN;
    padding4: Array<BN>;
    padding5: Array<BN>;
    padding6: Array<BN>;
    padding7: Array<BN>;
}
export interface WhirlpoolStrategyJSON {
    adminAuthority: string;
    globalConfig: string;
    baseVaultAuthority: string;
    baseVaultAuthorityBump: string;
    pool: string;
    poolTokenVaultA: string;
    poolTokenVaultB: string;
    tickArrayLower: string;
    tickArrayUpper: string;
    position: string;
    positionMint: string;
    positionMetadata: string;
    positionTokenAccount: string;
    tokenAVault: string;
    tokenBVault: string;
    tokenAVaultAuthority: string;
    tokenBVaultAuthority: string;
    tokenAVaultAuthorityBump: string;
    tokenBVaultAuthorityBump: string;
    tokenAMint: string;
    tokenBMint: string;
    tokenAMintDecimals: string;
    tokenBMintDecimals: string;
    tokenAAmounts: string;
    tokenBAmounts: string;
    tokenACollateralId: string;
    tokenBCollateralId: string;
    scopePrices: string;
    scopeProgram: string;
    sharesMint: string;
    sharesMintDecimals: string;
    sharesMintAuthority: string;
    sharesMintAuthorityBump: string;
    sharesIssued: string;
    status: string;
    reward0Amount: string;
    reward0Vault: string;
    reward0CollateralId: string;
    reward0Decimals: string;
    reward1Amount: string;
    reward1Vault: string;
    reward1CollateralId: string;
    reward1Decimals: string;
    reward2Amount: string;
    reward2Vault: string;
    reward2CollateralId: string;
    reward2Decimals: string;
    depositCapUsd: string;
    feesACumulative: string;
    feesBCumulative: string;
    reward0AmountCumulative: string;
    reward1AmountCumulative: string;
    reward2AmountCumulative: string;
    depositCapUsdPerIxn: string;
    withdrawalCapA: types.WithdrawalCapsJSON;
    withdrawalCapB: types.WithdrawalCapsJSON;
    maxPriceDeviationBps: string;
    swapVaultMaxSlippageBps: number;
    swapVaultMaxSlippageFromReferenceBps: number;
    strategyType: string;
    padding0: string;
    withdrawFee: string;
    feesFee: string;
    reward0Fee: string;
    reward1Fee: string;
    reward2Fee: string;
    positionTimestamp: string;
    kaminoRewards: Array<types.KaminoRewardInfoJSON>;
    strategyDex: string;
    raydiumProtocolPositionOrBaseVaultAuthority: string;
    allowDepositWithoutInvest: string;
    raydiumPoolConfigOrBaseVaultAuthority: string;
    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: types.PriceJSON;
    referenceSwapPriceB: types.PriceJSON;
    isCommunity: number;
    rebalanceType: number;
    padding1: Array<number>;
    rebalanceRaw: types.RebalanceRawJSON;
    padding2: Array<number>;
    tokenAFeesFromRewardsCumulative: string;
    tokenBFeesFromRewardsCumulative: string;
    strategyLookupTable: string;
    lastSwapUnevenStepTimestamp: string;
    padding3: string;
    padding4: Array<string>;
    padding5: Array<string>;
    padding6: Array<string>;
    padding7: Array<string>;
}
export declare class WhirlpoolStrategy {
    readonly adminAuthority: PublicKey;
    readonly globalConfig: PublicKey;
    readonly baseVaultAuthority: PublicKey;
    readonly baseVaultAuthorityBump: BN;
    readonly pool: PublicKey;
    readonly poolTokenVaultA: PublicKey;
    readonly poolTokenVaultB: PublicKey;
    readonly tickArrayLower: PublicKey;
    readonly tickArrayUpper: PublicKey;
    readonly position: PublicKey;
    readonly positionMint: PublicKey;
    readonly positionMetadata: PublicKey;
    readonly positionTokenAccount: PublicKey;
    readonly tokenAVault: PublicKey;
    readonly tokenBVault: PublicKey;
    readonly tokenAVaultAuthority: PublicKey;
    readonly tokenBVaultAuthority: PublicKey;
    readonly tokenAVaultAuthorityBump: BN;
    readonly tokenBVaultAuthorityBump: BN;
    readonly tokenAMint: PublicKey;
    readonly tokenBMint: PublicKey;
    readonly tokenAMintDecimals: BN;
    readonly tokenBMintDecimals: BN;
    readonly tokenAAmounts: BN;
    readonly tokenBAmounts: BN;
    readonly tokenACollateralId: BN;
    readonly tokenBCollateralId: BN;
    readonly scopePrices: PublicKey;
    readonly scopeProgram: PublicKey;
    readonly sharesMint: PublicKey;
    readonly sharesMintDecimals: BN;
    readonly sharesMintAuthority: PublicKey;
    readonly sharesMintAuthorityBump: BN;
    readonly sharesIssued: BN;
    readonly status: BN;
    readonly reward0Amount: BN;
    readonly reward0Vault: PublicKey;
    readonly reward0CollateralId: BN;
    readonly reward0Decimals: BN;
    readonly reward1Amount: BN;
    readonly reward1Vault: PublicKey;
    readonly reward1CollateralId: BN;
    readonly reward1Decimals: BN;
    readonly reward2Amount: BN;
    readonly reward2Vault: PublicKey;
    readonly reward2CollateralId: BN;
    readonly reward2Decimals: BN;
    readonly depositCapUsd: BN;
    readonly feesACumulative: BN;
    readonly feesBCumulative: BN;
    readonly reward0AmountCumulative: BN;
    readonly reward1AmountCumulative: BN;
    readonly reward2AmountCumulative: BN;
    readonly depositCapUsdPerIxn: BN;
    readonly withdrawalCapA: types.WithdrawalCaps;
    readonly withdrawalCapB: types.WithdrawalCaps;
    readonly maxPriceDeviationBps: BN;
    readonly swapVaultMaxSlippageBps: number;
    readonly swapVaultMaxSlippageFromReferenceBps: number;
    readonly strategyType: BN;
    readonly padding0: BN;
    readonly withdrawFee: BN;
    readonly feesFee: BN;
    readonly reward0Fee: BN;
    readonly reward1Fee: BN;
    readonly reward2Fee: BN;
    readonly positionTimestamp: BN;
    readonly kaminoRewards: Array<types.KaminoRewardInfo>;
    readonly strategyDex: BN;
    readonly raydiumProtocolPositionOrBaseVaultAuthority: PublicKey;
    readonly allowDepositWithoutInvest: BN;
    readonly raydiumPoolConfigOrBaseVaultAuthority: PublicKey;
    readonly depositBlocked: number;
    readonly creationStatus: number;
    readonly investBlocked: number;
    /** share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1 */
    readonly shareCalculationMethod: number;
    readonly withdrawBlocked: number;
    readonly reservedFlag2: number;
    readonly localAdminBlocked: number;
    readonly flashVaultSwapAllowed: number;
    readonly referenceSwapPriceA: types.Price;
    readonly referenceSwapPriceB: types.Price;
    readonly isCommunity: number;
    readonly rebalanceType: number;
    readonly padding1: Array<number>;
    readonly rebalanceRaw: types.RebalanceRaw;
    readonly padding2: Array<number>;
    readonly tokenAFeesFromRewardsCumulative: BN;
    readonly tokenBFeesFromRewardsCumulative: BN;
    readonly strategyLookupTable: PublicKey;
    readonly lastSwapUnevenStepTimestamp: BN;
    readonly padding3: BN;
    readonly padding4: Array<BN>;
    readonly padding5: Array<BN>;
    readonly padding6: Array<BN>;
    readonly padding7: Array<BN>;
    static readonly discriminator: Buffer;
    static readonly layout: any;
    constructor(fields: WhirlpoolStrategyFields);
    static fetch(c: Connection, address: PublicKey): Promise<WhirlpoolStrategy | null>;
    static fetchMultiple(c: Connection, addresses: PublicKey[]): Promise<Array<WhirlpoolStrategy | null>>;
    static decode(data: Buffer): WhirlpoolStrategy;
    toJSON(): WhirlpoolStrategyJSON;
    static fromJSON(obj: WhirlpoolStrategyJSON): WhirlpoolStrategy;
}
