import Fixed64 from '../common/fixed64';
import { Address } from '../crypto/address';
import { Signable } from '../crypto/signable';
import { StringReader } from '../utils';
import Payload from './payload/payload';
import { TransactionAttribute } from './txAttribute';
import { TxSignature } from './txSignature';
export declare enum TxType {
    BookKeeper = 2,
    Claim = 3,
    Deploy = 208,
    Invoke = 209,
    Enrollment = 4,
    Vote = 5,
    InvokeWasm = 210
}
export declare const TxName: {
    BookKeeper: string;
    Claim: string;
    Deploy: string;
    Invoke: string;
    Enrollment: string;
    Vote: string;
};
/**
 * @deprecated. Transaction fee.
 */
export declare class Fee {
    static deserialize(sr: StringReader): Fee;
    amount: Fixed64;
    payer: Address;
    serialize(): string;
}
export declare class Transaction implements Signable {
    static deserialize(hexstring: string): Transaction;
    /**
     * Transaction type
     */
    type: TxType;
    /**
     * Version of transaction
     */
    version: number;
    /**
     * Payload of transaction
     */
    payload: Payload;
    /**
     * Random hex string. 4 bytes.
     */
    nonce: string;
    /**
     * @deprecated
     */
    txAttributes: TransactionAttribute[];
    /**
     * Gas price
     */
    gasPrice: Fixed64;
    /**
     * Gas limit
     */
    gasLimit: Fixed64;
    /**
     * Address to pay for gas
     */
    payer: Address;
    /**
     * Array of signatures
     */
    sigs: TxSignature[];
    constructor();
    /**
     * Serialize transaction to hex string
     * The result is used to send to blockchain.
     */
    serialize(): string;
    /**
     * Serialize transaction data exclueds signatures
     */
    serializeUnsignedData(): string;
    /**
     * Serialize signatures
     */
    serializeSignedData(): string;
    /**
     * Get the signable content
     */
    getSignContent(): string;
    /**
     * Get the hash of transaction
     * @deprecated Use getSignContent instead
     */
    getHash(): string;
}
