import { Result } from 'ts-results'; import { CLErrorCodes, CLTypeTag } from './constants'; export interface ResultAndRemainder { result: Result; remainder?: Uint8Array; } export interface CLJSONFormat { bytes: string; cl_type: any; } export type ToBytesResult = Result; export declare const resultHelper: (arg1: Result, arg2?: Uint8Array) => ResultAndRemainder; export declare abstract class CLType { abstract linksTo: string; abstract tag: CLTypeTag; toBytes(): Uint8Array; toString(): string; toJSON(): unknown; } export declare abstract class ToBytes { abstract toBytes(): ToBytesResult; } export declare abstract class CLValue { isCLValue: boolean; abstract clType(): CLType; abstract value(): any; abstract data: any; toJSON(): any; } export declare class CLValueParsers { static fromJSON(json: any): Result; static fromBytes(bytes: Uint8Array, type: CLType): Result; static toJSON(value: CLValue): Result; static toBytes(value: CLValue): ToBytesResult; static toBytesWithType(value: CLValue): Result; static fromBytesWithType(rawBytes: Uint8Array): Result; } export declare abstract class CLValueBytesParsers { fromBytes(bytes: Uint8Array, innerType: CLType): Result; abstract fromBytesWithRemainder(bytes: Uint8Array, innerType?: CLType): ResultAndRemainder; abstract toBytes(val: CLValue): ToBytesResult; }