import { type ZodType } from 'zod'; import { RepoTherapyUtilBase } from './base.js'; import type RepoTherapy from './repo-therapy.js'; import type { ValueTypeDefinition } from '../generated/types/value-types.js'; export type BaseMeta = { nullable: boolean; strict: boolean; }; type ChainableProps = {}, Self extends RTValueTypeBase = RTValueTypeBase, ForceReturn extends keyof Self = keyof Self> = { [K in keyof Required]: K extends 'default' ? (x: (Metadata & BaseMeta)[K]) => Chainable : Required<(Metadata & BaseMeta)>[K] extends boolean ? () => Chainable : (x: (Metadata & BaseMeta)[K]) => Chainable; } & { [K in Exclude<{ [K in keyof Self]: K extends `_${string}` ? never : K; }[keyof Self], 'parse' | 'chainable' | 'init' | 'typeDefinitionStr' | 'mock' | 'extend'>]: Self[K] extends infer A extends (...args: any[]) => unknown | unknown[] ? (...args: Parameters) => K extends ForceReturn ? ReturnType : Chainable : never; }; type Chainable = {}, Self extends RTValueTypeBase = RTValueTypeBase, ForceReturn extends keyof Self = keyof Self> = ((v: unknown) => ReturnType) & ChainableProps & { typeDefinition: () => string; metadata: () => Metadata & { baseType: string; description: string; }; mock: (useDefault?: boolean) => ReturnType; extend: >(metadata: NewMeta) => Chainable; }; export type Options = {}, CustomOptions extends object = {}, Self extends RTValueTypeBase = RTValueTypeBase> = { metadata: Metadata; forceReturn?: (keyof Self & string)[]; }; type BaseType = 'string' | 'number' | 'boolean' | 'object' | 'array'; type PrimitiveType = T extends BaseType ? T : T extends `${infer Inner}[]` ? PrimitiveType extends never ? never : T : never; export default abstract class RTValueTypeBase = {}, CustomOptions extends object = {}, Self extends RTValueTypeBase = RTValueTypeBase, ForceReturn extends keyof Self = keyof Self> extends RepoTherapyUtilBase & CustomOptions, Self> { protected abstract _baseType: PrimitiveType; protected abstract _type: string; get typeDefinitionStr(): string; static valueDefinition: string[]; protected readonly _description: string; protected _schema: ZodType; protected abstract _init(): ZodType; protected abstract _unstrict(value: unknown): T; constructor(repoTherapy: RepoTherapy, description: string, options?: Partial>); protected _preParse(value: unknown): unknown; protected _postParse(value: T): T; private _bindMetaSetter; _lock(): void; extend>(metadata: NewMeta): this; protected _getDefault(): T; mock(useDefault?: boolean): T | undefined; parse(value: unknown): T; chainable(): Chainable; } export declare class RTValueType { static loader(repoTherapy: RepoTherapy): Promise; static generateTypeDefinition(repoTherapy: RepoTherapy): Promise; } export {}; //# sourceMappingURL=value-type.d.ts.map