import type { MaxLength, MinLength, Minimum, MySQL, Type, TypeAnnotation, TypiaFormat, TsfDatabaseFieldTag, TsfTypeTag, TsfTypiaTag, TsfValidatorTag } from '../reflection';
export type DateString = string & TypiaFormat<'date'> & TsfDatabaseFieldTag<{
    type: 'DATE';
}> & TsfTypeTag<'string', 'date'>;
export type OnUpdate<T extends string> = TypeAnnotation<'tsf:onUpdate', T>;
export type HasDefault = TypeAnnotation<'tsf:hasDefault'>;
export type WithDefault<T> = T & HasDefault;
export type UuidString = string & TypiaFormat<'uuid'> & TsfTypeTag<'string', 'uuidString'>;
export type { UUID } from '../reflection';
export type UnsignedNumber = number & Minimum<0>;
export declare class Coordinate {
    x: number;
    y: number;
}
export type MySQLCoordinate = Coordinate & MySQL<{
    type: 'point';
}>;
export type NullableMySQLCoordinate = (Coordinate & MySQL<{
    type: 'point';
}>) | null;
export type Length<T extends number> = string & MinLength<T> & MaxLength<T> & TsfTypiaTag<'string', 'tsf:length', T>;
export type ValidDate = Date & TsfValidatorTag<'object', 'validDate'>;
export type TrimmedString = string & TsfTypiaTag<'string', 'tsf:trim'>;
export type NonEmptyTrimmedString = TrimmedString & MinLength<1>;
export declare function getFirstTypeAnnotation(t: Type, ...names: string[]): Type | undefined;
export declare const EMAIL_REGEX: RegExp;
export type EmailAddress = string & TypiaFormat<'email'>;
//# sourceMappingURL=type-annotations.d.ts.map