export declare type Value = unknown; export declare type AnyArgs = unknown[]; export declare type Class = { new (...args: A): T; }; export declare class BaseStringifyError extends Error { x: Value; cause: string; constructor(x: Value, cause: string); message: string; name: string; } export declare type BaseStringifyErrorClass = new (x: Value, cause: string) => BaseStringifyError; export declare class BaseParseError extends Error { s: string; pos: number; cause: string; constructor(s: string, pos: number, cause: string); message: string; name: string; } export declare type BaseParseErrorClass = new (s: string, pos: number, cause: string) => BaseParseError; export declare type HowNext = boolean | [boolean, number] | null | Error; export declare type PartialCb = (isText: boolean, part: string, pos: number) => HowNext; export declare type BackrefCb = (idx: number) => Value; export declare type HaverefCb = (x: Value) => number | null; export declare type Splitter = (x: T) => A; export declare type Creator = (args: A) => T; export declare type Precreator = () => T; export declare type Postcreator = (x: T, args: A) => T | null | undefined; export interface Connector { by: Class; split: Splitter; create?: Creator; precreate?: Precreator; postcreate?: Postcreator; name?: string; hasCreate?: boolean; } export interface FactoryOptions { connectors?: Record>; } export interface OpOptions { howNext?: HowNext; cb?: PartialCb; backrefCb?: BackrefCb; haverefCb?: HaverefCb; } interface AddonStringifier { escape(s: string): string; stringify(x: Value, haverefCb?: HaverefCb | null): string; getTypeid(x: Value): number; connectorOfValue(value: V): Connector; } interface AddonParser { unescape(s: string): string; parse(s: string, backrefCb?: BackrefCb | null): Value; parsePartial(s: string, howNext: HowNext, cb: PartialCb, backrefCb?: BackrefCb | null): Value; connectorOfCname(cname: string): Connector; } export interface AddonFactory { Stringifier: new (err: BaseStringifyErrorClass, opt: FactoryOptions) => AddonStringifier; Parser: new (err: BaseParseErrorClass, opt: FactoryOptions) => AddonParser; } export {};