import { type AccessLevel, type AppAccess } from "../app-access.js"; import type { AppId } from "../ids.js"; /** * The in-memory reference `AppAccess`, alongside `memoryStoreAdapter` and * `memoryKnowledgeAdapter`: every conformance kit core ships gets one * implementation core itself can mount, so the RULE and a working example of it * ship together and the kit is proven executable before any host wires a real * store to it. * * It holds rows in maps and nothing else. Every DECISION comes from the pure * half of `can()` in ../app-access.ts — `accessForPath`, `grantMatches`, * `strongerLevel`, `holdsLevel`, `parseGrantPrincipal` — which is the same set * `appAccess(store)` in @vendoai/vendo/store applies. That is the point: this is a * second store, never a second rule, so it cannot drift from the real one on * anything `appAccessConformance` asks about. */ export interface MemoryAppAccess { access: AppAccess; /** Put an app row owned by `subject` (a person, or an org id). */ seedApp(appId: AppId, subject: string): Promise; /** Put a grant row directly, WITHOUT the owner gate — for setting a world up. */ seedGrant(appId: AppId, principal: string, level: AccessLevel): Promise; } export declare function memoryAppAccess(): MemoryAppAccess;