///
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
import BigNumber from 'bignumber.js';
import { DelegateOrUndelegeteMessage, FeeData, MessageData, SendMessage, WithdrawDelegatorRewardsMessage } from './iface';
import { Transaction } from './transaction';
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
protected _transaction: Transaction;
protected _sequence: number;
protected _messages: MessageData[];
protected _gasBudget: FeeData;
private _accountNumber?;
private _signature;
private _chainId?;
private _publicKey?;
private _signer;
private _memo?;
constructor(_coinConfig: Readonly);
/**
* The transaction type.
*/
protected abstract get transactionType(): TransactionType;
/** @inheritdoc */
protected get transaction(): Transaction;
/** @inheritdoc */
protected set transaction(transaction: Transaction);
/** @inheritDoc */
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
/**
* Sets gas budget of this transaction
* Gas budget consist of fee amount and gas limit. Division feeAmount/gasLimit represents
* the gas-fee and it should be more than minimum required gas-fee to process the transaction
* @param {FeeData} gasBudget
* @returns {TransactionBuilder} this transaction builder
*/
gasBudget(gasBudget: FeeData): this;
/**
* Sets sequence of this transaction.
* @param {number} sequence - sequence data for tx signer
* @returns {TransactionBuilder} This transaction builder
*/
sequence(sequence: number): this;
/**
* Sets messages to the transaction body. Message type will be different based on the transaction type
* - For @see TransactionType.StakingActivate required type is @see DelegateOrUndelegeteMessage
* - For @see TransactionType.StakingDeactivate required type is @see DelegateOrUndelegeteMessage
* - For @see TransactionType.Send required type is @see SendMessage
* - For @see TransactionType.StakingWithdraw required type is @see WithdrawDelegatorRewardsMessage
* @param {(SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]} messages
* @returns {TransactionBuilder} This transaction builder
*/
abstract messages(messages: (SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]): this;
publicKey(publicKey: string | undefined): this;
accountNumber(accountNumber: number | undefined): this;
chainId(chainId: string | undefined): this;
memo(memo: string | undefined): this;
/**
* Initialize the transaction builder fields using the decoded transaction data
* @param {Transaction} tx the transaction data
*/
initBuilder(tx: Transaction): void;
/** @inheritdoc */
protected fromImplementation(rawTransaction: string): Transaction;
/** @inheritdoc */
protected buildImplementation(): Promise;
/** @inheritdoc */
protected signImplementation(key: BaseKey): Transaction;
validateAddress(address: BaseAddress, addressFormat?: string): void;
/** @inheritdoc */
validateValue(value: BigNumber): void;
/** @inheritdoc */
validateKey(key: BaseKey): void;
/** @inheritdoc */
validateRawTransaction(rawTransaction: string): void;
/** @inheritdoc */
validateTransaction(transaction: Transaction): void;
}
//# sourceMappingURL=transactionBuilder.d.ts.map