import { AST, LiteralValue } from "@fncts/schema/AST";
import { Schema, OptionalSchema } from "@fncts/schema/Schema/definition";
import { ASTAnnotation } from "@fncts/schema/ASTAnnotation";
import { Vector } from "@fncts/base/collection/immutable/Vector";
import { Parser } from "@fncts/schema/Parser/definition";
import { ASTAnnotationMap } from "@fncts/schema/ASTAnnotationMap";
import { Refinement } from "@fncts/base/data/Refinement/definition";
import { Predicate } from "@fncts/base/data/Predicate/definition";
import { Maybe } from "@fncts/base/data/Maybe/definition";
import { ParseResult } from "@fncts/schema/ParseResult";
import type { ParseOptions } from "../AST.js";
import type { Brand, Validation } from "@fncts/base/data/Branded";
/**
* @tsplus static fncts.schema.SchemaOps fromAST
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function make(ast: AST): Schema;
/**
* @tsplus pipeable fncts.schema.Schema annotate
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function annotate(annotation: ASTAnnotation, value: V): (self: Schema) => Schema;
/**
* @tsplus static fncts.schema.SchemaOps declaration
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function declaration(typeParameters: Vector>, decode: (...typeParameters: ReadonlyArray>) => Parser, encode: (...typeParameters: ReadonlyArray>) => Parser, annotations?: ASTAnnotationMap): Schema;
/**
* @tsplus pipeable fncts.schema.Schema filter
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function filter(refinement: Refinement): (self: Schema) => Schema;
export declare function filter(predicate: Predicate): (self: Schema) => Schema;
/**
* @tsplus pipeable fncts.schema.Schema brand
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function brand(validation: Validation): (self: Schema) => Schema>;
/**
* @tsplus static fncts.schema.SchemaOps literal
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare function literal>(...literals: Literals): Schema;
/**
* @tsplus static fncts.schema.SchemaOps never
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const never: Schema;
/**
* @tsplus static fncts.schema.SchemaOps unknown
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const unknown: Schema;
/**
* @tsplus static fncts.schema.SchemaOps any
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const any: Schema;
/**
* @tsplus static fncts.schema.SchemaOps undefined
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const _undefined: Schema;
export { _undefined as undefined };
/**
* @tsplus static fncts.schema.SchemaOps null
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const _null: Schema;
export { _null as null };
/**
* @tsplus static fncts.schema.SchemaOps void
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const _void: Schema;
export { _void as void };
/**
* @tsplus static fncts.schema.SchemaOps string
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const string: Schema;
/**
* @tsplus static fncts.schema.SchemaOps number
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const number: Schema;
/**
* @tsplus static fncts.schema.SchemaOps boolean
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const boolean: Schema;
/**
* @tsplus static fncts.schema.SchemaOps bigint
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const bigint: Schema;
/**
* @tsplus static fncts.schema.SchemaOps symbol
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const symbol: Schema;
/**
* @tsplus static fncts.schema.SchemaOps object
* @tsplus implicit
* @tsplus location "@fncts/schema/Schema/api"
*/
export declare const object: Schema