export type CustomTypeCheck = (input: unknown) => input is T; export type CustomCoerce = (input: unknown) => T | null; export type CustomTransform = (input: T) => T; export type CustomValidate = (input: T) => boolean; export interface IsCustomOptions { typecheck: CustomTypeCheck; validate?: CustomValidate; } export interface CustomOptions { typecheck: CustomTypeCheck; coerce?: CustomCoerce; transform?: CustomTransform; validate?: CustomValidate; defaultTypecheckError?: string; defaultValidateError?: string; }