import { FunctionArgumentMetadataLatest, FunctionMetadataLatest } from '../../interfaces/metadata';
import { AnyU8a, ArgsDef, Codec, IMethod, Registry } from '../../types';
import Struct from '../../codec/Struct';
import U8aFixed from '../../codec/U8aFixed';
/**
 * @name CallIndex
 * @description
 * A wrapper around the `[sectionIndex, methodIndex]` value that uniquely identifies a method
 */
export declare class CallIndex extends U8aFixed {
    constructor(registry: Registry, value?: AnyU8a);
}
/**
 * @name Call
 * @description
 * Extrinsic function descriptor, as defined in
 * {@link https://github.com/paritytech/wiki/blob/master/Extrinsic.md#the-extrinsic-format-for-node}.
 */
export default class Call extends Struct implements IMethod {
    protected _meta: FunctionMetadataLatest;
    constructor(registry: Registry, value: any, meta?: FunctionMetadataLatest);
    /**
     * Decode input to pass into constructor.
     *
     * @param value - Value to decode, one of:
     * - hex
     * - Uint8Array
     * - {@see DecodeMethodInput}
     * @param _meta - Metadata to use, so that `injectMethods` lookup is not
     * necessary.
     * @internal
     */
    private static decodeCall;
    /** @internal */
    private static decodeCallViaObject;
    /** @internal */
    private static decodeCallViaU8a;
    static filterOrigin(meta?: FunctionMetadataLatest): FunctionArgumentMetadataLatest[];
    /**
     * Get a mapping of `argument name -> argument type` for the function, from
     * its metadata.
     *
     * @param meta - The function metadata used to get the definition.
     * @internal
     */
    private static getArgsDef;
    /**
     * @description The arguments for the function call
     */
    get args(): Codec[];
    /**
     * @description The argument definitions
     */
    get argsDef(): ArgsDef;
    /**
     * @description The encoded `[sectionIndex, methodIndex]` identifier
     */
    get callIndex(): Uint8Array;
    /**
     * @description The encoded data
     */
    get data(): Uint8Array;
    /**
     * @description `true` if the `Origin` type is on the method (extrinsic method)
     */
    get hasOrigin(): boolean;
    /**
     * @description The [[FunctionMetadata]]
     */
    get meta(): FunctionMetadataLatest;
    /**
     * @description Returns the name of the method
     */
    get methodName(): string;
    /**
     * @description Returns the module containing the method
     */
    get sectionName(): string;
    /**
     * @description Returns the base runtime type name for this instance
     */
    toRawType(): string;
}
