import { TransactionInstruction, PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
export interface CollectProtocolFeeArgs {
    amount0Requested: BN;
    amount1Requested: BN;
}
export interface CollectProtocolFeeAccounts {
    /** Only admin or config owner can collect fee now */
    owner: PublicKey;
    /** Pool state stores accumulated protocol fee amount */
    poolState: PublicKey;
    /** Amm config account stores owner */
    ammConfig: PublicKey;
    /** The address that holds pool tokens for token_0 */
    tokenVault0: PublicKey;
    /** The address that holds pool tokens for token_1 */
    tokenVault1: PublicKey;
    /** The address that receives the collected token_0 protocol fees */
    recipientTokenAccount0: PublicKey;
    /** The address that receives the collected token_1 protocol fees */
    recipientTokenAccount1: PublicKey;
    /** The SPL program to perform token transfers */
    tokenProgram: PublicKey;
}
export declare const layout: any;
/**
 * Collect the protocol fee accrued to the pool
 *
 * # Arguments
 *
 * * `ctx` - The context of accounts
 * * `amount_0_requested` - The maximum amount of token_0 to send, can be 0 to collect fees in only token_1
 * * `amount_1_requested` - The maximum amount of token_1 to send, can be 0 to collect fees in only token_0
 *
 */
export declare function collectProtocolFee(args: CollectProtocolFeeArgs, accounts: CollectProtocolFeeAccounts): TransactionInstruction;
