declare type Type = ArrayType | LogicalType | Primitive | RecordType | UnionType; declare type RequiredType = ArrayType | LogicalType | RecordType | UnionType | Boolean | Int | Long | String | Double; declare type Boolean = "boolean" & { _ts: boolean; }; declare type Int = "int" & { _ts: number; }; declare type Long = "long" & { _ts: number; }; declare type Null = "null" & { _ts: null; }; declare type String = "string" & { _ts: string; }; declare type Double = "double" & { _ts: number; }; declare type Primitive = Boolean | Int | Long | Null | String | Double; declare type LogicalType = { type: Type; logicalType: string; } & { _ts: unknown; }; declare type RecordType = { type: "record"; name: string; fields: Field[]; } & { _ts: unknown; }; declare type ArrayType = { type: "array"; items: Type; } & { _ts: unknown; }; declare type UnionType = Type[] & { _ts: unknown; }; declare type RequiredField = { type: T; doc?: string; _ts: T; }; declare type DefaultedField = { type: T; doc?: string; default: T; _ts: T | null | undefined; }; declare type NullableField = { type: T; doc?: string; default: null; _ts: T | null | undefined; }; declare type Field = RequiredField | NullableField | DefaultedField; declare type Schema = RecordType; export { ArrayType, Boolean, Field, RequiredField, NullableField, DefaultedField, Int, LogicalType, Long, Double, Null, Primitive, RecordType, RequiredType, Schema, String, Type, UnionType, };