/** * Verb Definitions and Conjugation * * Provides CRUD verbs with full conjugation and the conjugate() function * for auto-generating verb forms from base actions. * * @packageDocumentation */ import type { Verb } from './types.js'; /** * Standard CRUD verbs with pre-defined conjugations * * @example * ```ts * Verbs.create * // => { * // action: 'create', * // actor: 'creator', * // act: 'creates', * // activity: 'creating', * // result: 'creation', * // reverse: { at: 'createdAt', by: 'createdBy', in: 'createdIn', for: 'createdFor' }, * // inverse: 'delete', * // } * ``` */ export declare const Verbs: { readonly create: { readonly action: "create"; readonly actor: "creator"; readonly act: "creates"; readonly activity: "creating"; readonly result: "creation"; readonly reverse: { readonly at: "createdAt"; readonly by: "createdBy"; readonly in: "createdIn"; readonly for: "createdFor"; }; readonly inverse: "delete"; }; readonly update: { readonly action: "update"; readonly actor: "updater"; readonly act: "updates"; readonly activity: "updating"; readonly result: "update"; readonly reverse: { readonly at: "updatedAt"; readonly by: "updatedBy"; }; }; readonly delete: { readonly action: "delete"; readonly actor: "deleter"; readonly act: "deletes"; readonly activity: "deleting"; readonly result: "deletion"; readonly reverse: { readonly at: "deletedAt"; readonly by: "deletedBy"; }; readonly inverse: "create"; }; readonly publish: { readonly action: "publish"; readonly actor: "publisher"; readonly act: "publishes"; readonly activity: "publishing"; readonly result: "publication"; readonly reverse: { readonly at: "publishedAt"; readonly by: "publishedBy"; }; readonly inverse: "unpublish"; }; readonly archive: { readonly action: "archive"; readonly actor: "archiver"; readonly act: "archives"; readonly activity: "archiving"; readonly result: "archive"; readonly reverse: { readonly at: "archivedAt"; readonly by: "archivedBy"; }; readonly inverse: "unarchive"; }; readonly approve: { readonly action: "approve"; readonly actor: "approver"; readonly act: "approves"; readonly activity: "approving"; readonly result: "approval"; readonly reverse: { readonly at: "approvedAt"; readonly by: "approvedBy"; }; readonly inverse: "reject"; }; readonly reject: { readonly action: "reject"; readonly actor: "rejector"; readonly act: "rejects"; readonly activity: "rejecting"; readonly result: "rejection"; readonly reverse: { readonly at: "rejectedAt"; readonly by: "rejectedBy"; }; readonly inverse: "approve"; }; readonly assign: { readonly action: "assign"; readonly actor: "assigner"; readonly act: "assigns"; readonly activity: "assigning"; readonly result: "assignment"; readonly reverse: { readonly at: "assignedAt"; readonly by: "assignedBy"; readonly to: "assignedTo"; }; readonly inverse: "unassign"; }; readonly complete: { readonly action: "complete"; readonly actor: "completer"; readonly act: "completes"; readonly activity: "completing"; readonly result: "completion"; readonly reverse: { readonly at: "completedAt"; readonly by: "completedBy"; }; }; readonly submit: { readonly action: "submit"; readonly actor: "submitter"; readonly act: "submits"; readonly activity: "submitting"; readonly result: "submission"; readonly reverse: { readonly at: "submittedAt"; readonly by: "submittedBy"; }; }; readonly review: { readonly action: "review"; readonly actor: "reviewer"; readonly act: "reviews"; readonly activity: "reviewing"; readonly result: "review"; readonly reverse: { readonly at: "reviewedAt"; readonly by: "reviewedBy"; }; }; }; /** * Type representing all standard verb keys */ export type StandardVerbKey = keyof typeof Verbs; /** * Auto-conjugate a verb from just the base form * * Given just "publish", generates all forms: * - actor: publisher * - act: publishes * - activity: publishing * - result: publication * - reverse: { at: publishedAt, by: publishedBy, ... } * * If the verb is a known standard verb (from Verbs), returns the pre-defined version. * * @example * ```ts * conjugate('publish') * // => { action: 'publish', actor: 'publisher', act: 'publishes', activity: 'publishing', ... } * * conjugate('create') * // => { action: 'create', actor: 'creator', act: 'creates', activity: 'creating', ... } * * conjugate('validate') * // => { action: 'validate', actor: 'validator', act: 'validates', activity: 'validating', ... } * ``` */ export declare function conjugate(action: string): Verb; /** * Get reverse property names for a verb action * * @example * ```ts * getVerbFields('create') * // => { at: 'createdAt', by: 'createdBy', in: 'createdIn', for: 'createdFor' } * * getVerbFields('publish') * // => { at: 'publishedAt', by: 'publishedBy' } * ``` */ export declare function getVerbFields(action: keyof typeof Verbs): Record; /** * Check if an action is a known standard verb */ export declare function isStandardVerb(action: string): action is keyof typeof Verbs; /** * Get all standard verb names */ export declare function getStandardVerbs(): (keyof typeof Verbs)[]; //# sourceMappingURL=verb.d.ts.map