import { Result } from "@webiny/feature/api"; import type { Role, GetRoleInput, ListRolesInput } from "./types.js"; import type { SecurityPermission } from "../../../../types/security.js"; import { RoleNotFoundError, RoleStorageError } from "./errors.js"; export interface IRolesRepositoryErrors { base: RoleNotFoundError | RoleStorageError; } type RepositoryError = IRolesRepositoryErrors[keyof IRolesRepositoryErrors]; export interface IRolesRepository { get(params: GetRoleInput): Promise>; list(params: ListRolesInput): Promise>; create(data: Role): Promise>; update(data: Role): Promise>; delete(role: Role): Promise>; } /** Persist and retrieve security roles. */ export declare const RolesRepository: import("@webiny/di").Abstraction; export declare namespace RolesRepository { type Interface = IRolesRepository; type Error = RepositoryError; } export type CodeRole = { name: string; slug: string; description: string; permissions: SecurityPermission[]; system?: boolean; }; export interface IRoleFactory { execute(): Promise; } /** Provide code-defined security roles with permissions. */ export declare const RoleFactory: import("@webiny/di").Abstraction; export declare namespace RoleFactory { type Interface = IRoleFactory; type Return = Promise; type Role = CodeRole; } export {};