import { m as NullishCoalesce } from "./types-DfTcxNtM.js"; import * as yup$1 from "yup"; //#region src/crud.d.ts type AccessType = "client" | "server" | "admin"; type CrudOperation = "create" | "read" | "update" | "delete"; type CrudlOperation = "create" | "read" | "update" | "delete" | "list"; type AccessTypeXCrudOperation = `${AccessType}${Capitalize}`; type AccessTypeXCrudlOperation = `${AccessType}${Capitalize}`; declare module 'yup' { interface CustomSchemaMetadata { openapiField?: { description?: string; exampleValue?: any; hidden?: boolean; onlyShowInOperations?: Capitalize[]; }; } } type ShownEndpointDocumentation = { summary: string; description: string; tags?: string[]; crudOperation?: Capitalize; }; type EndpointDocumentation = ({ hidden: true; } & Partial) | ({ hidden?: boolean; } & ShownEndpointDocumentation); type InnerCrudSchema = { createSchema: CreateSchema; createDocs: EndpointDocumentation | undefined; readSchema: ReadSchema; readDocs: EndpointDocumentation | undefined; listDocs: EndpointDocumentation | undefined; updateSchema: UpdateSchema; updateDocs: EndpointDocumentation | undefined; deleteSchema: DeleteSchema; deleteDocs: EndpointDocumentation | undefined; }; type CrudSchema = { client: ClientSchema; server: ServerSchema; admin: AdminSchema; hasCreate: boolean; hasRead: boolean; hasUpdate: boolean; hasDelete: boolean; }; type CrudSchemaCreationOptions = { [K in AccessTypeXCrudOperation as `${K}Schema`]?: yup$1.AnySchema }; type FillInOptionalsPrepareStep = { [K in keyof Required]: K extends keyof O ? O[K] : undefined }; type FillInOptionalsStep> = { clientCreateSchema: NullishCoalesce; clientReadSchema: NullishCoalesce; clientUpdateSchema: NullishCoalesce; clientDeleteSchema: NullishCoalesce; serverCreateSchema: NullishCoalesce; serverReadSchema: NullishCoalesce; serverUpdateSchema: NullishCoalesce; serverDeleteSchema: NullishCoalesce; adminCreateSchema: NullishCoalesce; adminReadSchema: NullishCoalesce; adminUpdateSchema: NullishCoalesce; adminDeleteSchema: NullishCoalesce; }; type FillInOptionals = FillInOptionalsStep>>>; type CrudSchemaFromOptionsInner> = CrudSchema, InnerCrudSchema, InnerCrudSchema>; type CrudSchemaFromOptions = CrudSchemaFromOptionsInner>; type InnerCrudTypeOf = (S['createSchema'] extends {} ? { Create: yup$1.InferType; } : {}) & (S['readSchema'] extends {} ? { Read: yup$1.InferType; } : {}) & (S['updateSchema'] extends {} ? { Update: yup$1.InferType; } : {}) & (S['deleteSchema'] extends {} ? { Delete: yup$1.InferType; } : {}) & (S['readSchema'] extends {} ? { List: { items: yup$1.InferType[]; is_paginated: boolean; pagination?: { next_cursor: string | null; }; }; } : {}); type CrudTypeOf = { Client: InnerCrudTypeOf; Server: InnerCrudTypeOf; Admin: InnerCrudTypeOf; }; type CrudDocsCreationOptions = { [X in AccessTypeXCrudlOperation]?: EndpointDocumentation }; declare function createCrud(options: SO & { docs?: CrudDocsCreationOptions; }): CrudSchemaFromOptions; //#endregion export { CrudSchema as a, CrudTypeOf as c, createCrud as d, CrudOperation as i, CrudlOperation as l, AccessTypeXCrudOperation as n, CrudSchemaCreationOptions as o, AccessTypeXCrudlOperation as r, CrudSchemaFromOptions as s, AccessType as t, EndpointDocumentation as u }; //# sourceMappingURL=crud-CqmEW9s6.d.ts.map