import { TransactionBody, TransactionBuilder, TransactionHash, TransactionWitnessSet, Vkeywitnesses } from '@emurgo/cardano-serialization-lib-nodejs';
import BigNumber from 'bignumber.js';
import { AdaUtxo, FromAddress, FromUTXO, To, TransactionKMS, TransferAdaBlockchain } from '../model';
/**
 * Prepare a signed Ada transaction with the private key locally. Nothing is broadcasted to the blockchain.
 * @param transferAdaBlockchain content of the transaction to prepare.
 * @returns raw transaction data in hex, to be broadcasted to blockchain.
 */
export declare const prepareAdaTransaction: (transferAdaBlockchain: TransferAdaBlockchain) => Promise<string>;
/**
 * Send Ada transaction to the blockchain. This method broadcasts signed transaction to the blockchain.
 * This operation is irreversible.
 * @param body content of the transaction to broadcast
 * @returns transaction id of the transaction in the blockchain
 */
export declare const sendAdaTransaction: (body: TransferAdaBlockchain) => Promise<import("../model").TransactionHash>;
/**
 * Sign Ada pending transaction from Tatum KMS
 * @param tx pending transaction from KMS
 * @param privateKeys private keys to sign transaction with.
 * @returns transaction data to be broadcast to blockchain.
 */
export declare const signAdaKMSTransaction: (tx: TransactionKMS, privateKeys: string[]) => Promise<string>;
export declare const addOutputs: (transactionBuilder: TransactionBuilder, tos: To[]) => BigNumber;
export declare const addFee: (txBuilder: TransactionBuilder, feeInLovelace: BigNumber) => void;
export declare const addChangeIfNeeded: (txBuilder: TransactionBuilder, changeAddress: string) => void;
export declare const addInputs: (transactionBuilder: TransactionBuilder, transferAdaBlockchain: TransferAdaBlockchain) => Promise<{
    amount: BigNumber;
    privateKeysToSign: (string | undefined)[];
}>;
export declare const addAddressInputs: (transactionBuilder: TransactionBuilder, fromAddresses: FromAddress[]) => Promise<{
    amount: BigNumber;
    privateKeysToSign: (string | undefined)[];
}>;
export declare const addAddressInputsWithoutPrivateKey: (transactionBuilder: TransactionBuilder, fromAddresses: {
    address: string;
}[]) => Promise<BigNumber>;
export declare const addInputsPrivateKeys: (froms: FromAddress[] | FromUTXO[]) => Promise<(string | undefined)[]>;
export declare const addUtxoInputs: (transactionBuilder: TransactionBuilder, fromUTXOs: FromUTXO[]) => Promise<{
    amount: BigNumber;
    privateKeysToSign: (string | undefined)[];
}>;
export declare const addOutputLovelace: (transactionBuilder: TransactionBuilder, address: string, amount: string) => void;
export declare const addOutputAda: (transactionBuilder: TransactionBuilder, address: string, amount: string | number) => string;
export declare const addInput: (transactionBuilder: TransactionBuilder, utxo: AdaUtxo, address: string) => void;
export declare const initTransactionBuilder: () => Promise<TransactionBuilder>;
export declare const createWitnesses: (transactionBody: TransactionBody, transferAdaBlockchain: TransferAdaBlockchain) => TransactionWitnessSet;
export declare const makeWitness: (privateKey: string, txHash: TransactionHash, vKeyWitnesses: Vkeywitnesses) => void;
export declare const processFeeAndRest: (transactionBuilder: TransactionBuilder, fromAmountInLovelace: BigNumber, toAmountInLovelace: BigNumber, transferAdaBlockchain: TransferAdaBlockchain) => Promise<void>;
export declare const signTransaction: (transactionBuilder: TransactionBuilder, transferAdaBlockchain: TransferAdaBlockchain, privateKeysToSign: (string | undefined)[]) => string;
export declare const lovelaceToAda: (lovelace: string | number) => string;
export declare const adaToLovelace: (ada: string | number) => string;
