import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
import { BaseCoin as CoinConfig } from '@bitgo/statics';
import { AtaInitializationBuilder } from './ataInitializationBuilder';
import { CloseAtaBuilder } from './closeAtaBuilder';
import { RecoverNestedAtaBuilder } from './recoverNestedAtaBuilder';
import { CustomInstructionBuilder } from './customInstructionBuilder';
import { StakingActivateBuilder } from './stakingActivateBuilder';
import { StakingAuthorizeBuilder } from './stakingAuthorizeBuilder';
import { StakingDeactivateBuilder } from './stakingDeactivateBuilder';
import { StakingDelegateBuilder } from './stakingDelegateBuilder';
import { StakingRawMsgAuthorizeBuilder } from './stakingRawMsgAuthorizeBuilder';
import { StakingWithdrawBuilder } from './stakingWithdrawBuilder';
import { TokenTransferBuilder } from './tokenTransferBuilder';
import { Transaction } from './transaction';
import { TransactionBuilder } from './transactionBuilder';
import { TransferBuilder } from './transferBuilder';
import { TransferBuilderV2 } from './transferBuilderV2';
import { WalletInitializationBuilder } from './walletInitializationBuilder';
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
    constructor(_coinConfig: Readonly<CoinConfig>);
    /**
     * Returns a proper builder for the given encoded transaction
     *
     * @param { string} raw - Encoded transaction in base64 string format
     */
    from(raw: string): TransactionBuilder | StakingRawMsgAuthorizeBuilder;
    /** @inheritdoc */
    getWalletInitializationBuilder(tx?: Transaction): WalletInitializationBuilder;
    /** @inheritdoc */
    getTransferBuilder(tx?: Transaction): TransferBuilder;
    /** @inheritdoc */
    getTokenTransferBuilder(tx?: Transaction): TokenTransferBuilder;
    /**
     * Returns the transfer builder V2 to create a funds transfer transaction
     */
    getTransferBuilderV2(tx?: Transaction): TransferBuilderV2;
    /**
     * Returns the staking builder to create a staking account and also a delegate in one transaction.
     * once the tx reach the network it will automatically by activated on next epoch
     *
     * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
     *
     * @param {Transaction} tx - the transaction to be used to initialize the builder
     * @returns {StakingDeactivateBuilder} - the initialized staking activate builder
     */
    getStakingActivateBuilder(tx?: Transaction): StakingActivateBuilder;
    /**
     * Returns the builder to create a staking deactivate transaction.
     * Deactivated is set in the current epoch + cooldown
     * The account's stake will ramp down to zero by that epoch, and the lamports will be available for withdrawal.
     *
     * @see https://docs.solana.com/cluster/stake-delegation-and-rewards#stake-warmup-cooldown-withdrawal
     *
     * @param {Transaction} tx - the transaction to be used to initialize the builder
     * @returns {StakingDeactivateBuilder} - the initialized staking deactivate builder
     */
    getStakingDeactivateBuilder(tx?: Transaction): StakingDeactivateBuilder;
    /**
     * Returns the builder to create a staking withdraw transaction.
     * once the staking account reach 0 SOL it will not be traceable anymore by the network
     *
     * @see https://docs.solana.com/staking/stake-accounts#destroying-a-stake-account
     *
     * @param {Transaction} tx - the transaction to be used to intialize the builder
     * @returns {StakingWithdrawBuilder} - the initialized staking withdraw builder
     */
    getStakingWithdrawBuilder(tx?: Transaction): StakingWithdrawBuilder;
    /**
     * Returns the builder to authorized staking account.
     *
     * @param {Transaction} tx - the transaction to be used to intialize the builder
     * @returns {StakingAuthorizeBuilder} - the initialized staking authorize builder
     */
    getStakingAuthorizeBuilder(tx?: Transaction): StakingAuthorizeBuilder;
    /**
     * Returns the builder to delegate staking account.
     *
     * @param {Transaction} tx - the transaction to be used to delegate staking account
     * @returns {StakingDelegateBuilder} - the staking delegate builder
     */
    getStakingDelegateBuilder(tx?: Transaction): StakingDelegateBuilder;
    /**
     * Returns the raw message builder to authorized staking account.
     *
     * @param {Transaction} tx - the transaction to be used to intialize the builder
     * @returns {StakingWithdrawBuilder} - the initialized staking authorize builder
     */
    getStakingRawMsgAuthorizeBuilder(tx?: Transaction): StakingRawMsgAuthorizeBuilder;
    /**
     * Returns the builder to create a create associated token account transaction.
     */
    getAtaInitializationBuilder(tx?: Transaction): AtaInitializationBuilder;
    /**
     * Returns the builder to create a close associated token account transaction.
     */
    getCloseAtaInitializationBuilder(tx?: Transaction): CloseAtaBuilder;
    /**
     * Returns the builder to recover tokens from a nested ATA (an ATA owned by another ATA).
     */
    getRecoverNestedAtaBuilder(tx?: Transaction): RecoverNestedAtaBuilder;
    /**
     * Returns the builder to create transactions with custom Solana instructions.
     */
    getCustomInstructionBuilder(tx?: Transaction): CustomInstructionBuilder;
    /**
     * Initialize the builder with the given transaction
     *
     * @param {Transaction | undefined} tx - the transaction used to initialize the builder
     * @param {TransactionBuilder} builder - the builder to be initialized
     * @returns {TransactionBuilder} the builder initialized
     */
    private initializeBuilder;
    /** Parse the transaction from a raw transaction
     *
     * @param {string} rawTransaction - the raw tx
     * @returns {Transaction} parsed transaction
     */
    private parseTransaction;
}
//# sourceMappingURL=transactionBuilderFactory.d.ts.map