import { PublicKey, TransactionInstruction, Connection } from '@solana/web3.js';
import BN from 'bn.js';
import type { TransactionHandler } from './transactionHandler';
type DeriveTransferNonceAccountConfig = {
    ethAddress: string;
    mintKey: PublicKey;
    claimableTokenProgramKey: PublicKey;
};
/**
 * Derives the 'transfer nonce account' - the account which contains the nonce for transfers
 * and is used to prevent replay attacks
 */
export declare const deriveTransferNonceAccount: ({ ethAddress, mintKey, claimableTokenProgramKey }: DeriveTransferNonceAccountConfig) => Promise<PublicKey>;
type TransferWAudioBalanceConfig = {
    amount: BN;
    senderEthAddress: string;
    senderEthPrivateKey: string;
    senderSolanaAddress: PublicKey;
    recipientSolanaAddress: string;
    claimableTokenPDA: PublicKey;
    solanaTokenProgramKey: PublicKey;
    connection: Connection;
    feePayerKey: PublicKey;
    claimableTokenProgramKey: PublicKey;
    mintKey: PublicKey;
    transactionHandler: TransactionHandler;
    instructionIndex?: number;
    nonceOffset?: number;
};
/**
 * transferWAudioBalance transfers wrapped Audio from one generated solana account to another.
 * For it to work, you have to have the eth private key belonging to the eth public key
 * that generated the solana account
 */
export declare function transferWAudioBalance(args: TransferWAudioBalanceConfig): Promise<{
    res: string | null;
    errorCode: string | number | null;
    error: string | null;
}>;
export declare const createTransferInstructions: ({ amount, senderEthAddress, senderEthPrivateKey, senderSolanaAddress, recipientSolanaAddress, claimableTokenPDA, solanaTokenProgramKey, feePayerKey, claimableTokenProgramKey, connection, mintKey, instructionIndex, nonceOffset }: Omit<TransferWAudioBalanceConfig, 'transactionHandler'>) => Promise<TransactionInstruction[]>;
export {};
