export declare class AsterQLSchemaError extends Error { name: string; } export type JsonLiteral = string | number | boolean | null; export interface UnknownTypeNode { kind: "unknown"; } export interface NeverTypeNode { kind: "never"; } export interface NullTypeNode { kind: "null"; } export interface BooleanTypeNode { kind: "boolean"; } export interface NumberTypeNode { kind: "number"; } export interface StringTypeNode { kind: "string"; } export interface LiteralTypeNode { kind: "literal"; value: JsonLiteral; } export interface ArrayTypeNode { kind: "array"; of: TypeNode; } export interface TypeProperty { type: TypeNode; optional?: boolean; readonly?: boolean; description?: string; } export type TypePropertyInput = TypeNode | TypeProperty; export type TypePropertyMap = Record; export type TypePropertyInputMap = Record; export interface ObjectTypeNode { kind: "object"; props: TypePropertyMap; } export interface UnionTypeNode { kind: "union"; of: TypeNode[]; } export interface IntersectionTypeNode { kind: "intersection"; of: TypeNode[]; } export interface RecordTypeNode { kind: "record"; key: TypeNode; value: TypeNode; } export interface TupleTypeNode { kind: "tuple"; items: TypeNode[]; rest?: TypeNode; } export interface RefTypeNode { kind: "ref"; name: string; } export type TypeNode = UnknownTypeNode | NeverTypeNode | NullTypeNode | BooleanTypeNode | NumberTypeNode | StringTypeNode | LiteralTypeNode | ArrayTypeNode | ObjectTypeNode | UnionTypeNode | IntersectionTypeNode | RecordTypeNode | TupleTypeNode | RefTypeNode; export type TypeDefinitionMap = Record; export interface TypeSchema { root: TypeNode; definitions: TypeDefinitionMap; } export type TypeSchemaInput = TypeNode | { root: TypeNode; definitions?: TypeDefinitionMap; }; export interface TypePropertyOptions { optional?: boolean; readonly?: boolean; description?: string; } export interface TupleTypeOptions { rest?: TypeNode; } export declare function unknownType(): UnknownTypeNode; export declare function neverType(): NeverTypeNode; export declare function nullType(): NullTypeNode; export declare function booleanType(): BooleanTypeNode; export declare function numberType(): NumberTypeNode; export declare function stringType(): StringTypeNode; export declare function literalType(value: JsonLiteral): LiteralTypeNode; export declare function arrayType(of: TypeNode): ArrayTypeNode; export declare function prop(type: TypeNode, options?: TypePropertyOptions): TypeProperty; export declare function optionalProp(type: TypeNode, options?: Omit): TypeProperty; export declare function objectType(props?: TypePropertyInputMap): ObjectTypeNode; export declare function unionType(of: readonly TypeNode[]): UnionTypeNode; export declare function intersectionType(of: readonly TypeNode[]): IntersectionTypeNode; export declare function recordType(key: TypeNode, value: TypeNode): RecordTypeNode; export declare function tupleType(items: readonly TypeNode[], options?: TupleTypeOptions): TupleTypeNode; export declare function refType(name: string): RefTypeNode; export declare function nullableType(type: TypeNode): TypeNode; export declare function defineSchema(input: TypeSchemaInput): TypeSchema; export declare function normalizeSchema(input: TypeSchemaInput): TypeSchema; export declare function normalizeTypeNode(node: TypeNode): TypeNode; export declare function serializeTypeNode(node: TypeNode): string; export declare function serializeSchema(input: TypeSchemaInput): string; export declare function collectRefs(node: TypeNode): string[]; export declare function assertSchemaRefs(schema: TypeSchema): void; export declare function isTypeNode(value: TypePropertyInput | TypeSchemaInput): value is TypeNode; //# sourceMappingURL=index.d.ts.map