/// <reference types="node" />
import { FlowBurnNft, FlowMintMultipleNft, FlowMintNft, FlowTransferNft, TransactionKMS, TransferFlow, TransferFlowCustomTx } from '../model';
export declare enum FlowTxType {
    CREATE_ACCOUNT = 0,
    ADD_PK_TO_ACCOUNT = 1,
    TRANSFER = 2,
    DEPLOY_NFT = 3,
    MINT_NFT = 4,
    MINT_MULTIPLE_NFT = 5,
    BURN_NFT = 6,
    TRANSFER_NFT = 7,
    CUSTOM_TX = 8
}
export declare const flowSign: (pk: string, msg: Buffer) => string;
export declare const getFlowSigner: (pk: string, address: string, keyId?: number) => {
    signer: (account: any) => any;
};
export declare const getFlowApiSigner: (isPayer: boolean) => {
    signer: (account: any) => Promise<any>;
    keyHash: string;
};
export declare const flowSignKMSTransaction: (tx: TransactionKMS, privateKeys: string[], testnet: boolean) => Promise<{
    txId: string;
}>;
/**
 * Create account on the FLOW network. It automatically creates 100 0-weight proposal keys, which are managed by Tatum API - index 1-100.
 * Main 1000 weight authorizer key is stored as a first one on index 0.
 * @param testnet if we use testnet or not
 * @param publicKey public key to assign to address as authorizer (1000 weight) key
 * @param signerAddress address of the authorizer creator of the address on the chain
 * @param signerPrivateKey private key of the authorizer creator of the address on the chain
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 */
export declare const flowCreateAccountFromPublicKey: (testnet: boolean, publicKey: string, signerAddress: string, signerPrivateKey: string, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
    address: string;
}>;
/**
 * Add public key to existing blockchain address with defined weight
 * @param testnet
 * @param publicKey key to add
 * @param signerAddress address of the authorizer key
 * @param signerPrivateKey key of the authorize key
 * @param weight defaults to 1000 - weight of the key
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 */
export declare const flowAddPublicKeyToAccount: (testnet: boolean, publicKey: string, signerAddress: string, signerPrivateKey: string, weight?: number, proposer?: ((...args: any[]) => any) | undefined, payer?: ((...args: any[]) => any) | undefined) => Promise<{
    txId: string;
    address: string;
}>;
export declare const getFlowNftMetadata: (testnet: boolean, account: string, id: string, tokenType: string) => Promise<any>;
export declare const getFlowNftTokenByAddress: (testnet: boolean, account: string, tokenType: string) => Promise<any>;
/**
 * Send Flow NFT mint token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
 * This operation is irreversible.
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns txId id of the transaction in the blockchain
 */
export declare const sendFlowNftMintToken: (testnet: boolean, body: FlowMintNft, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
    tokenId: string;
}>;
/**
 * Send Flow NFT mint multiple tokens transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
 * This operation is irreversible.
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns txId id of the transaction in the blockchain
 */
export declare const sendFlowNftMintMultipleToken: (testnet: boolean, body: FlowMintMultipleNft, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
    tokenId: number[];
}>;
/**
 * Send Flow NFT transfer token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
 * This operation is irreversible.
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns {txId: string, events: any[]} id of the transaction in the blockchain and events this tx produced
 */
export declare const sendFlowNftTransferToken: (testnet: boolean, body: FlowTransferNft, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
}>;
/**
 * Send Flow NFT burn token transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
 * This operation is irreversible.
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns txId id of the transaction in the blockchain
 */
export declare const sendFlowNftBurnToken: (testnet: boolean, body: FlowBurnNft, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
}>;
/**
 * Send custom transaction to the FLOW network
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns txId id of the transaction in the blockchain
 */
export declare const flowSendCustomTransaction: (testnet: boolean, body: TransferFlowCustomTx, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
    events: any[];
}>;
/**
 * Send FLOW or FUSD from account to account.
 * @param testnet
 * @param body content of the transaction to broadcast
 * @param proposer function to obtain proposer key from
 * @param payer function to obtain payer key from
 * @returns txId id of the transaction in the blockchain
 */
export declare const flowSendTransaction: (testnet: boolean, body: TransferFlow, proposer?: ((isPayer: boolean) => any) | undefined, payer?: ((isPayer: boolean) => any) | undefined) => Promise<{
    txId: string;
}>;
