zagora
Version:
A minimalist & robust way to create type-safe and error-safe never throwing functions & libraries in TypeScript - with input/output validation and typed errors. Based on StandardSchema-compliant validation libraries. No batteries, no routers, it's just fu
84 lines (83 loc) • 22.2 kB
TypeScript
import { StandardSchemaV1 } from "@standard-schema/spec";
//#region src/utils.d.ts
declare class ZagoraError extends Error {
readonly type: "ZAGORA_ERROR";
readonly issues?: readonly StandardSchemaV1.Issue[];
readonly cause?: unknown;
readonly reason: string;
constructor(message: string, options?: {
issues?: readonly StandardSchemaV1.Issue[];
cause?: unknown;
reason?: string;
});
static fromIssues(issues: readonly StandardSchemaV1.Issue[]): ZagoraError;
static fromCaughtError(caught: unknown, reason?: string): ZagoraError;
}
declare function createDualResult<TData, TErr, TIsDefined extends boolean>(data: TData, error: TErr, isDefined: TIsDefined): ZagoraResult<TData, TErr, TIsDefined>;
//#endregion
//#region src/types.d.ts
type ZagoraMetadata<THandler = unknown> = {
inputSchema: StandardSchemaV1 | null;
outputSchema: StandardSchemaV1 | null;
errorSchema: Record<string, StandardSchemaV1> | null;
handlerFn: THandler;
};
type ZagoraConfig = {
errorsFirst?: boolean;
};
type ZagoraResult<TData, TErr, TIsDefined extends boolean> = [TData, TErr, TIsDefined] & {
data: TData;
error: TErr;
isDefined: TIsDefined;
};
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
type IsOptional<T> = undefined extends T ? true : false;
type AllOptional<T extends any[]> = T extends [infer H, ...infer R] ? IsOptional<H> extends true ? AllOptional<R> : false : true;
type OverloadedByPrefixes<T extends any[], R> = UnionToIntersection<ValuePrefixes<T> extends infer P ? P extends any[] ? P extends [] ? AllOptional<T> extends true ? (...args: P) => R : never : (...args: P) => R : never : never>;
type ValidateOutput = [unknown, null] | [null, ZagoraError];
type MaybeAsyncValidateOutput<TIsSync extends boolean> = TIsSync extends true ? ValidateOutput : Promise<ValidateOutput>;
type ValidateError = {
error: unknown;
isTyped: boolean;
};
type MaybeAsyncValidateError<TIsSync extends boolean> = TIsSync extends true ? ValidateError : Promise<ValidateError>;
type ValuePrefixes<T extends any[]> = T extends [infer H, ...infer R] ? [] | [H, ...ValuePrefixes<R>] : [];
type ZagoraInferInput<T extends StandardSchemaV1> = StandardSchemaV1.InferInput<T>;
type ZagoraInferOutput<T extends StandardSchemaV1> = StandardSchemaV1.InferOutput<T>;
type ZagoraErrorHelpers<T extends Record<string, StandardSchemaV1>> = { [K in keyof T]: (error: Omit<ZagoraInferInput<T[K]>, "type">) => [null, ZagoraInferOutput<T[K]>] };
type ZagoraBaseResult<Output extends StandardSchemaV1 | null = null, ErrSchema extends Record<string, StandardSchemaV1> | null = null> = ErrSchema extends Record<string, StandardSchemaV1> ? ZagoraResult<Output extends StandardSchemaV1 ? ZagoraInferOutput<Output> : unknown, null, false> | ZagoraResult<null, { [K in keyof ErrSchema]: ZagoraInferOutput<ErrSchema[K]> }[keyof ErrSchema], true> | ZagoraResult<null, ZagoraError, false> : ZagoraResult<Output extends StandardSchemaV1 ? ZagoraInferOutput<Output> : unknown, null, false> | ZagoraResult<null, ZagoraError, false>;
//#endregion
//#region src/index.d.ts
declare function zagora(): Zagora<null, null, null, undefined>;
declare function zagora<C extends ZagoraConfig>(config: C): Zagora<null, null, null, C>;
declare class Zagora<InputSchema extends StandardSchemaV1 | null = null, Output extends StandardSchemaV1 | null = null, ErrSchema extends Record<string, StandardSchemaV1> | null = null, Config extends ZagoraConfig | undefined = undefined> {
private _inputSchema;
private _outputSchema;
private _errorSchema;
private _config;
"~zagora": ZagoraMetadata;
constructor(config?: Config);
input<T extends StandardSchemaV1>(schema: T): Zagora<T, Output, ErrSchema, Config>;
output<NewOut extends StandardSchemaV1>(schema: NewOut): Zagora<InputSchema, NewOut, ErrSchema, Config>;
errors<NewErr extends Record<string, StandardSchemaV1>>(schema: NewErr): Zagora<InputSchema, Output, NewErr, Config>;
handler<IS extends StandardSchemaV1 = (InputSchema extends StandardSchemaV1 ? InputSchema : never), OutputArgs = ZagoraInferInput<IS>>(impl: ErrSchema extends Record<string, StandardSchemaV1> ? Config extends {
errorsFirst: true;
} ? OutputArgs extends readonly any[] ? (...args: [ZagoraErrorHelpers<ErrSchema>, ...OutputArgs]) => any : (errors: ZagoraErrorHelpers<ErrSchema>, arg: OutputArgs) => any : OutputArgs extends readonly any[] ? (...args: [...OutputArgs, ZagoraErrorHelpers<ErrSchema>]) => any : (arg: OutputArgs, errors: ZagoraErrorHelpers<ErrSchema>) => any : OutputArgs extends readonly any[] ? (...args: OutputArgs) => any : (arg: OutputArgs) => any): (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? UnionToIntersection<ValuePrefixes<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends infer P ? P extends any[] ? P extends [] ? AllOptional<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends true ? (...args: P) => Promise<ZagoraBaseResult<Output, ErrSchema>> : never : (...args: P) => Promise<ZagoraBaseResult<Output, ErrSchema>> : never : never> & ((...args: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) => Promise<ZagoraBaseResult<Output, ErrSchema>>) : (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) extends Record<string, any> ? ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>) & UnionToIntersection<((IsOptional<Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)> extends true ? true : false) extends true ? () => Promise<ZagoraBaseResult<Output, ErrSchema>> : never) | ((args_0: Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)) => Promise<ZagoraBaseResult<Output, ErrSchema>>)> : ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>) & UnionToIntersection<((IsOptional<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>> extends true ? true : false) extends true ? () => Promise<ZagoraBaseResult<Output, ErrSchema>> : never) | ((args_0: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>)>) & Zagora<IS, Output, ErrSchema, Config> & {
"~zagora": ZagoraMetadata<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? UnionToIntersection<ValuePrefixes<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends infer P ? P extends any[] ? P extends [] ? AllOptional<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends true ? (...args: P) => Promise<ZagoraBaseResult<Output, ErrSchema>> : never : (...args: P) => Promise<ZagoraBaseResult<Output, ErrSchema>> : never : never> & ((...args: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) => Promise<ZagoraBaseResult<Output, ErrSchema>>) : (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) extends Record<string, any> ? ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>) & UnionToIntersection<((IsOptional<Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)> extends true ? true : false) extends true ? () => Promise<ZagoraBaseResult<Output, ErrSchema>> : never) | ((args_0: Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)) => Promise<ZagoraBaseResult<Output, ErrSchema>>)> : ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>) & UnionToIntersection<((IsOptional<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>> extends true ? true : false) extends true ? () => Promise<ZagoraBaseResult<Output, ErrSchema>> : never) | ((args_0: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => Promise<ZagoraBaseResult<Output, ErrSchema>>)>>;
};
handlerSync<IS extends StandardSchemaV1 = (InputSchema extends StandardSchemaV1 ? InputSchema : never), OutputArgs = ZagoraInferInput<IS>>(impl: ErrSchema extends Record<string, StandardSchemaV1> ? Config extends {
errorsFirst: true;
} ? OutputArgs extends readonly any[] ? (...args: [ZagoraErrorHelpers<ErrSchema>, ...OutputArgs]) => any : (errors: ZagoraErrorHelpers<ErrSchema>, arg: OutputArgs) => any : OutputArgs extends readonly any[] ? (...args: [...OutputArgs, ZagoraErrorHelpers<ErrSchema>]) => any : (arg: OutputArgs, errors: ZagoraErrorHelpers<ErrSchema>) => any : OutputArgs extends readonly any[] ? (...args: OutputArgs) => any : (arg: OutputArgs) => any): (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? UnionToIntersection<ValuePrefixes<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends infer P ? P extends any[] ? P extends [] ? AllOptional<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends true ? (...args: P) => ZagoraBaseResult<Output, ErrSchema> : never : (...args: P) => ZagoraBaseResult<Output, ErrSchema> : never : never> & ((...args: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) => ZagoraBaseResult<Output, ErrSchema>) : (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) extends Record<string, any> ? ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>) & UnionToIntersection<((IsOptional<Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)> extends true ? true : false) extends true ? () => ZagoraBaseResult<Output, ErrSchema> : never) | ((args_0: Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)) => ZagoraBaseResult<Output, ErrSchema>)> : ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>) & UnionToIntersection<((IsOptional<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>> extends true ? true : false) extends true ? () => ZagoraBaseResult<Output, ErrSchema> : never) | ((args_0: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>)>) & Zagora<IS, Output, ErrSchema, Config> & {
"~zagora": ZagoraMetadata<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? UnionToIntersection<ValuePrefixes<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends infer P ? P extends any[] ? P extends [] ? AllOptional<(StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) extends readonly any[] ? [...StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never] : never> extends true ? (...args: P) => ZagoraBaseResult<Output, ErrSchema> : never : (...args: P) => ZagoraBaseResult<Output, ErrSchema> : never : never> & ((...args: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> : never) => ZagoraBaseResult<Output, ErrSchema>) : (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) extends Record<string, any> ? ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>) & UnionToIntersection<((IsOptional<Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)> extends true ? true : false) extends true ? () => ZagoraBaseResult<Output, ErrSchema> : never) | ((args_0: Record<string, any> & (StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>)) => ZagoraBaseResult<Output, ErrSchema>)> : ((arg: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>) & UnionToIntersection<((IsOptional<StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>> extends true ? true : false) extends true ? () => ZagoraBaseResult<Output, ErrSchema> : never) | ((args_0: StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never> extends readonly any[] ? never : StandardSchemaV1.InferInput<InputSchema extends StandardSchemaV1<unknown, unknown> ? InputSchema : never>) => ZagoraBaseResult<Output, ErrSchema>)>>;
};
private createHandlerSync;
private createHandlerAsync;
private validateInputSync;
private validateInput;
private handleTupleDefaults;
private validateOutput;
private validateError;
private createErrorHelpers;
}
//#endregion
export { AllOptional, IsOptional, MaybeAsyncValidateError, MaybeAsyncValidateOutput, OverloadedByPrefixes, UnionToIntersection, ValidateError, ValidateOutput, ValuePrefixes, Zagora, ZagoraBaseResult, ZagoraConfig, ZagoraError, ZagoraErrorHelpers, ZagoraInferInput, ZagoraInferOutput, ZagoraMetadata, ZagoraResult, createDualResult, zagora };