import type { TSchema, SchemaOptions } from '../schema/index.mjs'; import type { Static } from '../static/index.mjs'; import type { Ensure } from '../helpers/index.mjs'; import type { TReadonlyOptional } from '../readonly-optional/index.mjs'; import type { TReadonly } from '../readonly/index.mjs'; import type { TOptional } from '../optional/index.mjs'; import { Kind } from '../symbols/index.mjs'; type StaticReturnType = Static; type StaticParameter = T extends TReadonlyOptional ? [Readonly>?] : T extends TReadonly ? [Readonly>] : T extends TOptional ? [Static?] : [ Static ]; type StaticParameters = (T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? StaticParameters]> : Acc); type StaticConstructor = Ensure) => StaticReturnType>; export interface TConstructor extends TSchema { [Kind]: 'Constructor'; static: StaticConstructor; type: 'Constructor'; parameters: T; returns: U; } /** `[JavaScript]` Creates a Constructor type */ export declare function Constructor(parameters: [...T], returns: U, options?: SchemaOptions): TConstructor; export {};