import { Address, Balance, Call, EcdsaSignature, Ed25519Signature, ExtrinsicEra, Index, MultiSignature, Sr25519Signature } from '../../../interfaces/runtime';
import { ExtrinsicPayloadValue, IExtrinsicSignature, IKeyringPair, SignatureOptions } from '../../../types';
import { ExtrinsicSignatureOptions } from '../types';
import Compact from '../../../codec/Compact';
import Struct from '../../../codec/Struct';
import ExtrinsicPayloadV4 from './ExtrinsicPayload';
/**
 * @name ExtrinsicSignatureV4
 * @description
 * A container for the [[Signature]] associated with a specific [[Extrinsic]]
 */
export default class ExtrinsicSignatureV4 extends Struct implements IExtrinsicSignature {
    constructor(value: ExtrinsicSignatureV4 | Uint8Array | undefined, { isSigned }?: ExtrinsicSignatureOptions);
    static decodeExtrinsicSignature(value: ExtrinsicSignatureV4 | Uint8Array | undefined, isSigned?: boolean): ExtrinsicSignatureV4 | Uint8Array;
    /**
     * @description The length of the value when encoded as a Uint8Array
     */
    readonly encodedLength: number;
    /**
     * @description `true` if the signature is valid
     */
    readonly isSigned: boolean;
    /**
     * @description The [[ExtrinsicEra]] (mortal or immortal) this signature applies to
     */
    readonly era: ExtrinsicEra;
    /**
     * @description The [[Index]] for the signature
     */
    readonly nonce: Compact<Index>;
    /**
     * @description The actual [[EcdsaSignature]], [[Ed25519Signature]] or [[Sr25519Signature]]
     */
    readonly signature: EcdsaSignature | Ed25519Signature | Sr25519Signature;
    /**
     * @description The raw [[MultiSignature]]
     */
    readonly multiSignature: MultiSignature;
    /**
     * @description The [[Address]] that signed
     */
    readonly signer: Address;
    /**
     * @description The [[Balance]] tip
     */
    readonly tip: Compact<Balance>;
    protected injectSignature(signer: Address, signature: MultiSignature, { era, nonce, tip }: ExtrinsicPayloadV4): IExtrinsicSignature;
    /**
     * @description Adds a raw signature
     */
    addSignature(signer: Address | Uint8Array | string, signature: Uint8Array | string, payload: ExtrinsicPayloadValue | Uint8Array | string): IExtrinsicSignature;
    /**
     * @description Generate a payload and applies the signature from a keypair
     */
    sign(method: Call, account: IKeyringPair, { blockHash, era, genesisHash, nonce, runtimeVersion: { specVersion }, tip }: SignatureOptions): IExtrinsicSignature;
    /**
     * @description Encodes the value as a Uint8Array as per the SCALE specifications
     * @param isBare true when the value has none of the type-specific prefixes (internal)
     */
    toU8a(isBare?: boolean): Uint8Array;
}
