export type EnsureFunction = (...args: any[]) => any; export interface EnsureBaseOptions { name?: string; errorMessage?: string; errorCode?: number; Error?: ErrorConstructor; } export interface EnsureIsOptional { isOptional: boolean; } export interface EnsureDefault { default: T; } type EnsureOptions = EnsureBaseOptions & { isOptional?: boolean } & { default?: any }; type ValidationDatum = [argumentName: string, inputValue: any, ensureFunction: EnsureFunction, options?: object]; type ValidationDatumList = ValidationDatum[]; declare function ensure(...args: [...ValidationDatumList, EnsureOptions]): T; declare function ensure(...args: [...ValidationDatumList]): T; export default ensure;