import { Address } from '../../Wallet/entities/Address';
import { FeeLevel } from './FeeLevel';
import { BroadcastedTransaction } from './BroadcastedTransaction';
import { CurrencyAmount } from '../CurrencyUtils';
import { CurrencyFee } from './CurrencyFee';
import { CurrencyInfo } from '../CurrencyInfo';
export declare abstract class Transaction<CI extends CurrencyInfo> {
    readonly fromAddress: string;
    readonly toAddress: string;
    readonly amount: CurrencyAmount<CI>;
    protected constructor(fromAddress: Address, toAddress: Address, amount: CurrencyAmount<CI>);
    protected abstract buildSuggestedFees(): Promise<Record<FeeLevel, CurrencyFee<CI>>>;
    protected _suggestedFees: Record<FeeLevel, CurrencyFee<CI>>;
    getSuggestedFees(): Promise<Record<FeeLevel, CurrencyFee<CI>>>;
    abstract broadcast(fee: FeeLevel | unknown): Promise<BroadcastedTransaction>;
    abstract fee(...args: unknown[]): Promise<CurrencyFee<CI>>;
}
