///
import { Account, AddressString, Attribute, AttributeModel, Block, ClaimTransaction, ContractTransaction, GetOptions, Hash256String, Input, InputModel, InputOutput, InvocationTransaction, InvocationTransactionModel, InvokeSendUnsafeReceiveTransactionOptions, IterOptions, NetworkType, Output, OutputModel, Param, ParamJSON, RawAction, RawCallReceipt, RawInvocationData, RawInvokeReceipt, ScriptBuilderParam, SourceMaps, Transaction, TransactionBaseModel, TransactionOptions, TransactionReceipt, TransactionResult, Transfer, UserAccount, UserAccountID, Witness, WitnessModel } from '@neo-one/client-common';
import BigNumber from 'bignumber.js';
import { Observable } from 'rxjs';
export interface InvokeMethodOptions {
readonly contract: AddressString;
readonly params: ReadonlyArray;
readonly invokeMethod: string;
}
export interface InvokeRawOptions {
readonly invokeMethodOptionsOrScript: InvokeMethodOptions | Buffer;
readonly transfers?: readonly FullTransfer[];
readonly options?: TransactionOptions;
readonly verify?: boolean;
readonly onConfirm: (options: {
readonly transaction: Transaction;
readonly data: RawInvocationData;
readonly receipt: TransactionReceipt;
}) => Promise | T;
readonly method: string;
readonly scripts?: readonly WitnessModel[];
readonly labels?: Record;
readonly rawInputs?: readonly Input[];
readonly rawOutputs?: readonly Output[];
readonly sourceMaps?: SourceMaps;
readonly reorderOutputs?: (outputs: readonly Output[]) => readonly Output[];
}
export interface ExecuteInvokeScriptOptions {
readonly script: Buffer;
readonly from: UserAccountID;
readonly attributes: readonly Attribute[];
readonly inputs: readonly InputOutput[];
readonly outputs: readonly Output[];
readonly rawInputs: readonly Input[];
readonly rawOutputs: readonly Output[];
readonly gas: BigNumber;
readonly scripts: readonly WitnessModel[];
readonly verify: boolean;
readonly reorderOutputs: (outputs: readonly Output[]) => readonly Output[];
readonly onConfirm: (options: {
readonly transaction: Transaction;
readonly data: RawInvocationData;
readonly receipt: TransactionReceipt;
}) => Promise | T;
readonly sourceMaps?: SourceMaps;
}
export interface ExecuteInvokeMethodOptions extends ExecuteInvokeScriptOptions {
readonly invokeMethodOptions: InvokeMethodOptions;
}
export interface ExecuteInvokeClaimOptions {
readonly contract: AddressString;
readonly inputs: readonly InputOutput[];
readonly outputs: readonly Output[];
readonly unclaimed: readonly Input[];
readonly amount: BigNumber;
readonly attributes: readonly Attribute[];
readonly method: string;
readonly params: ReadonlyArray;
readonly paramsZipped: ReadonlyArray;
readonly from: UserAccountID;
readonly sourceMaps?: SourceMaps;
}
export interface Provider {
readonly networks$: Observable;
readonly getNetworks: () => readonly NetworkType[];
readonly getUnclaimed: (network: NetworkType, address: AddressString) => Promise<{
readonly unclaimed: readonly Input[];
readonly amount: BigNumber;
}>;
readonly getUnspentOutputs: (network: NetworkType, address: AddressString) => Promise;
readonly getTransactionReceipt: (network: NetworkType, hash: Hash256String, options?: GetOptions) => Promise;
readonly getInvocationData: (network: NetworkType, hash: Hash256String) => Promise;
readonly testInvoke: (network: NetworkType, transaction: InvocationTransactionModel) => Promise;
readonly call: (network: NetworkType, contract: AddressString, method: string, params: ReadonlyArray) => Promise;
readonly getBlockCount: (network: NetworkType) => Promise;
readonly getTransaction: (network: NetworkType, hash: Hash256String) => Promise;
readonly getOutput: (network: NetworkType, input: Input) => Promise