/** * ACL — dwa poziomy. * * Structural: czy user widzi dashboard/widget/sekcję (guard przed renderem). * Behavioral: czy user może wykonać akcję / edytować pole (runtime check). * * ACL to tylko PIERWSZA z trzech warstw autoryzacji (AuthZ = ACL × Mandate × Compliance). * UI enforces UX; backend MUSI reweryfikować każde ACL dla bezpieczeństwa. */ import type { Observable } from 'rxjs'; /** Stabilny klucz uprawnienia z katalogu `config/acl.json`. */ export type AclKey = string & { readonly _brand: 'AclKey'; }; export declare const asAclKey: (value: string) => AclKey; export interface AclDecision { readonly allowed: boolean; readonly reason?: string; } export interface AclService { /** Sync check — używany przy renderze, musi być szybki. */ can(key: AclKey): boolean; /** Async check — gdy decyzja wymaga round-tripa do backendu (rzadko). */ check(key: AclKey): Promise; /** Strumień zmian — re-render przy zmianie uprawnień (np. po step-up). */ readonly changes$: Observable; } export declare const ACL_SERVICE: import("../index.js").EchelonToken; //# sourceMappingURL=index.d.ts.map