import type { AccountMeta, PublicKey } from "@solana/web3.js";
export declare enum RemainingAccountsType {
    TransferHookA = "transferHookA",
    TransferHookB = "transferHookB",
    TransferHookReward = "transferHookReward",
    TransferHookInput = "transferHookInput",
    TransferHookIntermediate = "transferHookIntermediate",
    TransferHookOutput = "transferHookOutput",
    SupplementalTickArrays = "supplementalTickArrays",
    SupplementalTickArraysOne = "supplementalTickArraysOne",
    SupplementalTickArraysTwo = "supplementalTickArraysTwo",
    TransferHookDepositA = "transferHookDepositA",
    TransferHookDepositB = "transferHookDepositB",
    TransferHookWithdrawalA = "transferHookWithdrawalA",
    TransferHookWithdrawalB = "transferHookWithdrawalB"
}
type RemainingAccountsAnchorType = {
    transferHookA: object;
} | {
    transferHookB: object;
} | {
    transferHookReward: object;
} | {
    transferHookInput: object;
} | {
    transferHookIntermediate: object;
} | {
    transferHookOutput: object;
} | {
    supplementalTickArrays: object;
} | {
    supplementalTickArraysOne: object;
} | {
    supplementalTickArraysTwo: object;
} | {
    TransferHookDepositA: object;
} | {
    TransferHookDepositB: object;
} | {
    TransferHookWithdrawalA: object;
} | {
    TransferHookWithdrawalB: object;
};
export type RemainingAccountsSliceData = {
    accountsType: RemainingAccountsAnchorType;
    length: number;
};
export type RemainingAccountsInfoData = {
    slices: RemainingAccountsSliceData[];
};
export type OptionRemainingAccountsInfoData = RemainingAccountsInfoData | null;
export declare class RemainingAccountsBuilder {
    private remainingAccounts;
    private slices;
    addSlice(accountsType: RemainingAccountsType, accounts?: AccountMeta[]): this;
    build(): [OptionRemainingAccountsInfoData, AccountMeta[] | undefined];
}
export declare function toSupplementalTickArrayAccountMetas(tickArrayPubkeys: PublicKey[] | undefined): AccountMeta[] | undefined;
export {};
