interface ParserOptions<T> {
    defaultValue?: T;
    validate?: (value: T) => boolean;
}
interface Parser<T> {
    parse: (value: string) => T | undefined;
    serialize: (value: T) => string;
    validate?: (value: T) => boolean;
}
declare function parseAsTimestamp(options?: ParserOptions<number>): {
    parse: (value: string) => number | undefined;
    serialize: (value: number) => string;
    validate: ((value: number) => boolean) | undefined;
};
declare function parseAsIsoDateTime(options?: ParserOptions<Date>): {
    parse: (value: string) => Date | undefined;
    serialize: (value: Date) => string;
    validate: ((value: Date) => boolean) | undefined;
};
declare function parseAsStringEnum<T extends string>(enumValues: readonly T[], options?: ParserOptions<T>): {
    parse: (value: string) => T | undefined;
    serialize: (value: T) => T;
    validate: (value: T) => boolean;
};
declare function parseAsNumber(options?: ParserOptions<number> & {
    min?: number;
    max?: number;
}): {
    parse: (value: string) => number | undefined;
    serialize: (value: number) => string;
    validate: ((value: number) => boolean) | undefined;
};
declare function parseAsBoolean(options?: ParserOptions<boolean>): {
    parse: (value: string) => boolean | undefined;
    serialize: (value: boolean) => string;
    validate: ((value: boolean) => boolean) | undefined;
};

export { type Parser, type ParserOptions, parseAsBoolean, parseAsIsoDateTime, parseAsNumber, parseAsStringEnum, parseAsTimestamp };
