import { SmrtObject, SmrtObjectOptions } from '@happyvertical/smrt-core'; /** * Parsed permission slug components */ export interface ParsedPermissionSlug { /** Resource part (e.g., 'articles' from 'articles.create') */ resource: string; /** Action part (e.g., 'create' from 'articles.create') */ action: string; /** Whether the slug follows the valid 'resource.action[.scope...]' pattern */ isValid: boolean; } /** * Parse a permission slug into its resource and action components. * Valid format: 'resource.action[.scope...]' (e.g., 'articles.create' or * 'products.read.internal') * * @param slug - The permission slug to parse * @returns Parsed components with validation status */ export declare function parsePermissionSlug(slug: string): ParsedPermissionSlug; /** * Validate that a permission slug follows the 'resource.action[.scope...]' * pattern. * * @param slug - The slug to validate * @returns true if valid, false otherwise */ export declare function isValidPermissionSlug(slug: string): boolean; /** * Constructor options for {@link Permission}. */ export interface PermissionOptions extends SmrtObjectOptions { name?: string; description?: string; category?: string; } /** * Permission represents a named capability in the system. * * Permissions are defined by the application and assigned to roles. * Permission slugs follow the pattern: resource.action[.scope...] (e.g., * 'articles.create' or 'products.read.internal') * * @example * ```typescript * const permission = await permissions.create({ * slug: 'articles.create', * name: 'Create Articles', * description: 'Allows creating new articles', * category: 'articles' * }); * await permission.save(); * ``` */ export declare class Permission extends SmrtObject { /** * Display name for the permission */ name: string; /** * Description of what this permission allows */ description: string; /** * Category for grouping in UI (e.g., 'articles', 'users', 'settings') */ category: string; constructor(options?: PermissionOptions); /** * Parse the permission slug into resource and action components. * @returns Parsed slug with resource, action, and validation status */ parseSlug(): ParsedPermissionSlug; /** * Get the resource part of the permission slug * e.g., 'articles.create' -> 'articles' */ getResource(): string; /** * Get the action part of the permission slug * e.g., 'articles.create' -> 'create' */ getAction(): string; /** * Check if the permission slug is valid (follows 'resource.action' pattern) */ isValidSlug(): boolean; } //# sourceMappingURL=Permission.d.ts.map