import { AuthorizationResponse } from './gate'; import type { UserModel as OrmUserModel } from '@stacksjs/orm'; /** * Discover and register policies from app/Policies directory */ export declare function discoverPolicies(): Promise; /** * Register inline gates from Gates.ts */ export declare function registerGates(): Promise; /** * Initialize authorization system */ export declare function initializeAuthorization(): Promise; // Use the row/instance shape from orm so policies operate on the // authenticated user object, not the User class constructor. declare type UserModel = OrmUserModel; export declare abstract class BasePolicy { before?(user: UserModel | null, ability: string): boolean | null | Promise; viewAny?(user: UserModel | null): boolean | Promise | AuthorizationResponse; view?(user: UserModel | null, model: T): boolean | Promise | AuthorizationResponse; create?(user: UserModel | null): boolean | Promise | AuthorizationResponse; update?(user: UserModel | null, model: T): boolean | Promise | AuthorizationResponse; delete?(user: UserModel | null, model: T): boolean | Promise | AuthorizationResponse; restore?(user: UserModel | null, model: T): boolean | Promise | AuthorizationResponse; forceDelete?(user: UserModel | null, model: T): boolean | Promise | AuthorizationResponse; protected allow(message?: string): AuthorizationResponse; protected deny(message?: string, code?: string): AuthorizationResponse; protected denyIf(condition: boolean, message?: string): AuthorizationResponse | boolean; protected denyUnless(condition: boolean, message?: string): AuthorizationResponse | boolean; protected allowIf(condition: boolean, message?: string): AuthorizationResponse | boolean; } export { AuthorizationResponse };