/**
 * Fireblocks API
 * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.  - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
 *
 * The version of the OpenAPI document: 1.6.2
 * Contact: developers@fireblocks.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { DestinationTransferPeerPath } from './destination-transfer-peer-path';
import { ExtraParameters } from './extra-parameters';
import { SourceTransferPeerPath } from './source-transfer-peer-path';
import { TransactionOperation } from './transaction-operation';
import { TransactionRequestAmount } from './transaction-request-amount';
import { TransactionRequestDestination } from './transaction-request-destination';
import { TransactionRequestFee } from './transaction-request-fee';
import { TransactionRequestGasLimit } from './transaction-request-gas-limit';
import { TransactionRequestGasPrice } from './transaction-request-gas-price';
import { TransactionRequestNetworkFee } from './transaction-request-network-fee';
import { TransactionRequestNetworkStaking } from './transaction-request-network-staking';
import { TransactionRequestPriorityFee } from './transaction-request-priority-fee';
import { TravelRuleCreateTransactionRequest } from './travel-rule-create-transaction-request';
import { UtxoSelectionParams } from './utxo-selection-params';
/**
 *
 * @export
 * @interface TransactionRequest
 */
export interface TransactionRequest {
    /**
     *
     * @type {TransactionOperation}
     * @memberof TransactionRequest
     */
    'operation'?: TransactionOperation;
    /**
     * Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.
     * @type {string}
     * @memberof TransactionRequest
     */
    'note'?: string;
    /**
     * This parameter allows you to add a unique ID of your own to help prevent duplicate transactions. No specific format is required for this parameter. After you submit a transaction with an external ID, Fireblocks will automatically reject all future transactions with the same ID. Using an external ID primarily helps in situations where, even though a submitted transaction responds with an error due to an internet outage,  the transaction was still sent to and processed on the blockchain.  Use the [Get a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/gettransactionbyexternalid)  endpoint to validate whether these transactions have been processed.
     * @type {string}
     * @memberof TransactionRequest
     */
    'externalTxId'?: string;
    /**
     * The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/gettrlinksupportedasset#/)
     * @type {string}
     * @memberof TransactionRequest
     */
    'assetId'?: string;
    /**
     *
     * @type {SourceTransferPeerPath}
     * @memberof TransactionRequest
     */
    'source'?: SourceTransferPeerPath;
    /**
     *
     * @type {DestinationTransferPeerPath}
     * @memberof TransactionRequest
     */
    'destination'?: DestinationTransferPeerPath;
    /**
     * For UTXO based blockchains, you can send a single transaction to multiple destinations.
     * @type {Array<TransactionRequestDestination>}
     * @memberof TransactionRequest
     */
    'destinations'?: Array<TransactionRequestDestination>;
    /**
     *
     * @type {TransactionRequestAmount}
     * @memberof TransactionRequest
     */
    'amount'?: TransactionRequestAmount;
    /**
     * \"When set to `true`, the fee will be deducted from the requested amount.\"  **Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account.
     * @type {boolean}
     * @memberof TransactionRequest
     */
    'treatAsGrossAmount'?: boolean;
    /**
     * For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.     **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation.
     * @type {boolean}
     * @memberof TransactionRequest
     */
    'forceSweep'?: boolean;
    /**
     * For UTXO, EVM-based, or Solana blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below.
     * @type {string}
     * @memberof TransactionRequest
     */
    'feeLevel'?: TransactionRequestFeeLevelEnum;
    /**
     *
     * @type {TransactionRequestFee}
     * @memberof TransactionRequest
     */
    'fee'?: TransactionRequestFee;
    /**
     *
     * @type {TransactionRequestPriorityFee}
     * @memberof TransactionRequest
     */
    'priorityFee'?: TransactionRequestPriorityFee;
    /**
     * When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations.
     * @type {boolean}
     * @memberof TransactionRequest
     */
    'failOnLowFee'?: boolean;
    /**
     * The maximum fee (gas price or fee per byte) that should be payed for the transaction.  In case the current value of the requested `feeLevel` is higher than this requested maximum fee.  Represented by a numeric string for accurate precision.
     * @type {string}
     * @memberof TransactionRequest
     */
    'maxFee'?: string;
    /**
     * For BTC-based blockchains only. The maximum fee (in the units of the fee-paying asset) that should be paid for the transaction.
     * @type {string}
     * @memberof TransactionRequest
     */
    'maxTotalFee'?: string;
    /**
     *
     * @type {TransactionRequestGasLimit}
     * @memberof TransactionRequest
     */
    'gasLimit'?: TransactionRequestGasLimit;
    /**
     *
     * @type {TransactionRequestGasPrice}
     * @memberof TransactionRequest
     */
    'gasPrice'?: TransactionRequestGasPrice;
    /**
     *
     * @type {TransactionRequestNetworkFee}
     * @memberof TransactionRequest
     */
    'networkFee'?: TransactionRequestNetworkFee;
    /**
     * For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.
     * @type {string}
     * @memberof TransactionRequest
     */
    'replaceTxByHash'?: string;
    /**
     *
     * @type {ExtraParameters}
     * @memberof TransactionRequest
     */
    'extraParameters'?: ExtraParameters;
    /**
     *
     * @type {UtxoSelectionParams}
     * @memberof TransactionRequest
     */
    'utxoSelectionParams'?: UtxoSelectionParams;
    /**
     * The ID for AML providers to associate the owner of funds with transactions.
     * @type {string}
     * @memberof TransactionRequest
     */
    'customerRefId'?: string;
    /**
     *
     * @type {TravelRuleCreateTransactionRequest}
     * @memberof TransactionRequest
     */
    'travelRuleMessage'?: TravelRuleCreateTransactionRequest;
    /**
     * The ID of the travel rule message from any travel rule provider. Used for travel rule supporting functionality to associate transactions with existing travel rule messages.
     * @type {string}
     * @memberof TransactionRequest
     */
    'travelRuleMessageId'?: string;
    /**
     * This feature is no longer supported.
     * @type {boolean}
     * @memberof TransactionRequest
     * @deprecated
     */
    'autoStaking'?: boolean;
    /**
     *
     * @type {TransactionRequestNetworkStaking}
     * @memberof TransactionRequest
     * @deprecated
     */
    'networkStaking'?: TransactionRequestNetworkStaking;
    /**
     *
     * @type {TransactionRequestNetworkStaking}
     * @memberof TransactionRequest
     * @deprecated
     */
    'cpuStaking'?: TransactionRequestNetworkStaking;
    /**
     * - Override the default gasless configuration by sending true\\false
     * @type {boolean}
     * @memberof TransactionRequest
     */
    'useGasless'?: boolean;
}
export declare const TransactionRequestFeeLevelEnum: {
    readonly Low: "LOW";
    readonly Medium: "MEDIUM";
    readonly High: "HIGH";
};
export type TransactionRequestFeeLevelEnum = typeof TransactionRequestFeeLevelEnum[keyof typeof TransactionRequestFeeLevelEnum];
