import { Import } from './Import'; export interface AstNode { readonly val: T; readonly len: number; byteLength(): number; } export declare class NullAstNode implements AstNode { readonly val: null; readonly len = 1; byteLength(): number; } export declare class BoolAstNode implements AstNode { readonly val: boolean; readonly len = 1; constructor(val: boolean); byteLength(): number; } export declare class UintAstNode implements AstNode { readonly val: number; readonly len: number; constructor(val: number); byteLength(): number; } export declare class NintAstNode implements AstNode { readonly val: number; readonly len: number; constructor(val: number); byteLength(): number; } export declare class FloatAstNode implements AstNode { readonly val: number; readonly len: number; constructor(val: number); byteLength(): number; } export declare class StrAstNode implements AstNode { readonly val: string; readonly len: number; constructor(val: string); byteLength(): number; } export declare class BinAstNode implements AstNode { readonly val: Uint8Array; readonly len: number; constructor(val: Uint8Array); byteLength(): number; } export declare class ArrAstNode implements AstNode[] | null> { readonly val: AstNode[] | null; readonly len: number; constructor(val: AstNode[] | null); byteLength(): number; } export declare class ObjAstNode implements AstNode> | null> { readonly val: Map> | null; readonly len: number; constructor(val: Map> | null); byteLength(): number; } export declare class AnnotationAstNode implements AstNode> { readonly val: AstNode; readonly annotations: number[]; readonly len: number; readonly annotationLen: number; constructor(val: AstNode, annotations: number[]); byteLength(): number; } export declare const toAst: (val: unknown, symbols: Import) => AstNode;