import type * as hkt from 'schemata-ts/internal/schemable'; import { type Schemable } from 'schemata-ts/Schemable'; declare const SchemaSymbol: unique symbol; type SchemaSymbol = typeof SchemaSymbol; /** * @since 1.0.0 * @category Model */ export interface Schema { readonly [SchemaSymbol]: SchemaSymbol; readonly input: (_: I) => I; readonly output: (_: O) => O; readonly runSchema: (S: Schemable) => hkt.SchemableKind; } /** * @since 2.1.0 * @category Implementation */ export declare class SchemaImplementation implements Schema { /** @since 2.0.0 */ readonly [SchemaSymbol]: SchemaSymbol; /** @since 2.0.0 */ readonly input: (_: I) => I; /** @since 2.0.0 */ readonly output: (_: O) => O; /** @since 2.0.0 */ readonly runSchema: (S: Schemable) => hkt.SchemableKind; protected constructor(runSchema: (S: Schemable) => hkt.SchemableKind); } /** * @since 2.0.0 * @category Guards */ export declare const isSchema: (u: unknown) => u is Schema; /** * Extract the output of a schema * * @since 1.0.0 * @category Type Helpers */ export type TypeOf = S extends Schema ? A : never; /** * Extract the output of a schema. * * Alias of `TypeOf` * * @since 1.0.0 * @category Type Helpers */ export type OutputOf = TypeOf; /** * Extract the input type of a schema. * * @since 1.0.0 * @category Type Helpers */ export type InputOf = S extends Schema ? I : never; /** * @since 1.0.0 * @category Utilities */ export declare const memoize: (f: (a: A) => B) => (a: A) => B; export {}; //# sourceMappingURL=Schema.d.ts.map