import { Transaction, TransactionBuilder } from '@bitgo/abstract-substrate';
import { TransactionType } from '@bitgo/sdk-core';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
export declare class TokenTransferBuilder extends TransactionBuilder {
    protected _destinationColdkey: string;
    protected _hotkey: string;
    protected _originNetuid: string;
    protected _destinationNetuid: string;
    protected _alphaAmount: string;
    constructor(_coinConfig: Readonly<CoinConfig>);
    /**
     * Construct a transaction to transfer stake
     * @returns {UnsignedTransaction} an unsigned transfer stake transaction
     */
    protected buildTransaction(): UnsignedTransaction;
    /** @inheritdoc */
    protected get transactionType(): TransactionType;
    /**
     * Set the amount to transfer
     * @param {string} amount to transfer
     * @returns {TokenTransferBuilder} This builder.
     */
    amount(amount: string): this;
    /**
     * Set the validator hot key address
     * @param {string} hotkey address of validator
     * @returns {TokenTransferBuilder} This builder.
     */
    hotkey(address: string): this;
    /**
     * Set the destination cold key address
     * @param {string} address of the destination cold key
     * @returns {TokenTransferBuilder} This builder.
     */
    destinationColdkey(address: string): this;
    /**
     * Set the origin netuid of the subnet (root network is 0)
     * @param {string} netuid of subnet
     * @returns {TokenTransferBuilder} This builder.
     */
    originNetuid(netuid: string): this;
    /**
     * Set the destination netuid of the subnet (root network is 0)
     * @param {string} netuid of subnet
     * @returns {TokenTransferBuilder} This builder.
     */
    destinationNetuid(netuid: string): this;
    /** @inheritdoc */
    protected fromImplementation(rawTransaction: string): Transaction;
    /** @inheritdoc */
    validateTransaction(_: Transaction): void;
    /**
     * Helper method to validate whether tx params have the correct type and format
     * @param {string} destinationColdkey destination cold key address
     * @param {string} hotkey hotkey address of the validator
     * @param {string} originNetuid netuid of the origin subnet
     * @param {string} destinationNetuid netuid of the destination subnet
     * @param {string} alphaAmount amount to transfer
     * @throws {InvalidTransactionError} if validation fails
     */
    private validateFields;
    /** @inheritdoc */
    validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
    /**
     * Construct a transaction to transfer stake
     *
     * @param {Interface.TransferStakeArgs} args arguments to be passed to the transferStake method
     * @param {Interface.CreateBaseTxInfo} info txn info required to construct the transferStake txn
     * @returns {UnsignedTransaction} an unsigned stake transaction
     */
    private transferStake;
}
//# sourceMappingURL=tokenTransferBuilder.d.ts.map