/**
 * This file is part of Swapable shared under AGPL-3.0
 * Copyright (C) 2021 Using Blockchain Ltd, Reg No.: 12658136, United Kingdom
 *
 * @package     Swapable
 * @author      Grégory Saive for Using Blockchain Ltd <greg@ubc.digital>
 * @license     AGPL-3.0
 */
import { PublicAccount } from 'symbol-sdk';
import { CommandOption, Reader, KeyProvider, TransactionParameters } from '../../index';
/**
 * @class Context
 * @package Swapable
 * @subpackage Contracts
 * @since v1.0.0
 * @description Class that describes a digital asset command execution context.
 */
export declare class Context {
    /**
     * @description Standard revision
     */
    revision: number;
    /**
     * @description Execution actor
     */
    actor: PublicAccount;
    /**
     * @description Blockchain reader adapter.
     */
    reader: Reader;
    /**
     * @description Blockchain key provider.
     */
    signer: KeyProvider;
    /**
     * @description Transaction parameters
     */
    parameters: TransactionParameters;
    /**
     * @description Execution parameters
     */
    protected argv: CommandOption[] | undefined;
    constructor(
    /**
     * @description Standard revision
     */
    revision: number, 
    /**
     * @description Execution actor
     */
    actor: PublicAccount, 
    /**
     * @description Blockchain reader adapter.
     */
    reader: Reader, 
    /**
     * @description Blockchain key provider.
     */
    signer: KeyProvider, 
    /**
     * @description Transaction parameters
     */
    parameters: TransactionParameters, 
    /**
     * @description Execution parameters
     */
    argv: CommandOption[] | undefined);
    /**
     * Read an input by its' `name` in `argv` options.
     *
     * @param   {string} name
     * @param   {Array<CommandOption>}   argv
     * @param   {any} defaultValue
     * @return  {CommandOption|undefined}
     */
    getInput<ValueType>(name: string, defaultValue: ValueType): ValueType;
    /**
     * Set the value of an input by its' `name` in `argv` options.
     *
     * @param   {string}      name
     * @param   {ValueType}   value
     * @return  {Context}
     */
    setInput<ValueType>(name: string, value: ValueType): Context;
}
