///
import { SCALECompatAddressType } from '../../../compat/SubstrateCompatAddress';
import { SubstrateNetwork } from '../../../SubstrateNetwork';
import { SCALEAccountId } from './type/SCALEAccountId';
import { SCALEArray } from './type/SCALEArray';
import { SCALEBoolean } from './type/SCALEBoolean';
import { SCALEBytes } from './type/SCALEBytes';
import { SCALECompactInt } from './type/SCALECompactInt';
import { SCALEData } from './type/SCALEData';
import { SCALEEnum } from './type/SCALEEnum';
import { SCALEEra } from './type/SCALEEra';
import { SCALEHash } from './type/SCALEHash';
import { SCALEInt } from './type/SCALEInt';
import { SCALEMultiAddress, SCALEMultiAddressType } from './type/SCALEMultiAddress';
import { SCALEOptional } from './type/SCALEOptional';
import { SCALEString } from './type/SCALEString';
import { SCALETuple } from './type/SCALETuple';
import { SCALEType } from './type/SCALEType';
export declare type DecoderMethod = (network: Network, runtimeVersion: number | undefined, hex: string) => SCALEDecodeResult;
export declare type DecoderPartialMethod = (hex: string) => SCALEDecodeResult;
export interface SCALEDecodeResult {
bytesDecoded: number;
decoded: T;
}
export declare class SCALEDecoder {
private readonly network;
private readonly runtimeVersion;
private hex;
constructor(network: Network, runtimeVersion: number | undefined, bytes: string | Uint8Array | Buffer);
decodeNextAccount(): SCALEDecodeResult;
decodeNextAccountId(byteLength?: number): SCALEDecodeResult>;
decodeNextArray(decoderMethod: DecoderMethod): SCALEDecodeResult>;
decodeNextBoolean(): SCALEDecodeResult;
decodeNextBytes(): SCALEDecodeResult;
decodeNextCompactInt(): SCALEDecodeResult;
decodeNextEra(): SCALEDecodeResult;
decodeNextHash(bitLength: number): SCALEDecodeResult;
decodeNextInt(bitLength: number): SCALEDecodeResult;
decodeNextMultiAccount(type?: T): SCALEDecodeResult>;
decodeNextOptional(decoderMethod: DecoderMethod): SCALEDecodeResult>;
decodeNextString(): SCALEDecodeResult;
decodeNextTuple(firstDecoderMethod: DecoderMethod, secondDecoderMethod: DecoderMethod): SCALEDecodeResult>;
decodeNextEnum(getEnumValue: (value: number) => T | null): SCALEDecodeResult>;
decodeNextData(): SCALEDecodeResult;
decodeNextObject(decoderMethod: DecoderMethod): SCALEDecodeResult;
private decodeNextValuePartial;
private decodeNextValue;
private moveCursor;
}