import { Decimal, Duration, Future, GeometryPoint, GeometryLine, GeometryPolygon, GeometryMultiPoint, GeometryMultiLine, GeometryMultiPolygon, GeometryCollection, Range, BoundIncluded, BoundExcluded, RecordIdRange, RecordId, StringRecordId, Table, Uuid } from 'surrealdb';
import { z } from 'zod';

declare const DecimalSchema: z.ZodType<Decimal, z.ZodTypeDef, Decimal>;
declare const DurationSchema: z.ZodType<Duration, z.ZodTypeDef, Duration>;
declare const FutureSchema: z.ZodType<Future, z.ZodTypeDef, Future>;
declare const GeometryPointSchema: z.ZodType<GeometryPoint, z.ZodTypeDef, GeometryPoint>;
declare const GeometryLineSchema: z.ZodType<GeometryLine, z.ZodTypeDef, GeometryLine>;
declare const GeometryPolygonSchema: z.ZodType<GeometryPolygon, z.ZodTypeDef, GeometryPolygon>;
declare const GeometryMultiPointSchema: z.ZodType<GeometryMultiPoint, z.ZodTypeDef, GeometryMultiPoint>;
declare const GeometryMultiLineSchema: z.ZodType<GeometryMultiLine, z.ZodTypeDef, GeometryMultiLine>;
declare const GeometryMultiPolygonSchema: z.ZodType<GeometryMultiPolygon, z.ZodTypeDef, GeometryMultiPolygon>;
declare const GeometryCollectionSchema: z.ZodType<GeometryCollection, z.ZodTypeDef, GeometryCollection>;
declare function RangeSchema<Beg extends z.ZodTypeAny, End extends z.ZodTypeAny>(begValueSchema: Beg, endValueSchema: End): z.ZodEffects<z.ZodType<Range<z.TypeOf<Beg>, z.TypeOf<End>>, z.ZodTypeDef, Range<z.TypeOf<Beg>, z.TypeOf<End>>>, Range<z.TypeOf<Beg>, z.TypeOf<End>>, Range<z.TypeOf<Beg>, z.TypeOf<End>>>;
declare function BoundIncludedSchema<T extends z.ZodTypeAny>(valueSchema: T): z.ZodEffects<z.ZodType<BoundIncluded<T>, z.ZodTypeDef, BoundIncluded<T>>, BoundIncluded<T>, BoundIncluded<T>>;
declare function BoundExcludedSchema<T extends z.ZodTypeAny>(valueSchema: T): z.ZodEffects<z.ZodType<BoundExcluded<T>, z.ZodTypeDef, BoundExcluded<T>>, BoundExcluded<T>, BoundExcluded<T>>;
declare const RecordIdRangeSchema: z.ZodType<RecordIdRange<string>, z.ZodTypeDef, RecordIdRange<string>>;
declare function RecordIdRangeSchemaOf<Tb extends string>(table: Tb): z.ZodType<RecordIdRange<Tb>, z.ZodTypeDef, RecordIdRange<Tb>>;
declare const RecordIdSchema: z.ZodType<RecordId<string>, z.ZodTypeDef, RecordId<string>>;
declare function RecordIdSchemaOf<Tb extends string>(table: Tb): z.ZodType<RecordId<Tb>, z.ZodTypeDef, RecordId<Tb>>;
declare const StringRecordIdSchema: z.ZodType<StringRecordId, z.ZodTypeDef, StringRecordId>;
declare const RecordSchema: z.ZodObject<{
    id: z.ZodType<RecordId<string>, z.ZodTypeDef, RecordId<string>>;
}, "strip", z.ZodTypeAny, {
    id: RecordId<string>;
}, {
    id: RecordId<string>;
}>;
declare function RecordSchemaOf<Tb extends string>(table: Tb): z.ZodObject<{
    id: z.ZodType<RecordId<Tb>, z.ZodTypeDef, RecordId<Tb>>;
}, "strip", z.ZodTypeAny, {
    id: RecordId<Tb>;
}, {
    id: RecordId<Tb>;
}>;
declare const TableSchema: z.ZodType<Table<string>, z.ZodTypeDef, Table<string>>;
declare function TableSchemaOf<Tb extends string>(table: Tb): z.ZodType<Table<Tb>, z.ZodTypeDef, Table<Tb>>;
declare const UuidSchema: z.ZodType<Uuid, z.ZodTypeDef, Uuid>;
type Record = z.infer<typeof RecordSchema>;
type RecordOf<Tb extends string = string> = z.infer<ReturnType<typeof RecordSchemaOf<Tb>>>;

export { BoundExcludedSchema, BoundIncludedSchema, DecimalSchema, DurationSchema, FutureSchema, GeometryCollectionSchema, GeometryLineSchema, GeometryMultiLineSchema, GeometryMultiPointSchema, GeometryMultiPolygonSchema, GeometryPointSchema, GeometryPolygonSchema, RangeSchema, Record, RecordIdRangeSchema, RecordIdRangeSchemaOf, RecordIdSchema, RecordIdSchemaOf, RecordOf, RecordSchema, RecordSchemaOf, StringRecordIdSchema, TableSchema, TableSchemaOf, UuidSchema };
