import type { PermissionMode, PermissionsFile, PermissionsStore } from "@dawn-ai/permissions"; /** What a backend needs in order to build a store: the config-seeded lists plus the resolved mode. */ export interface PermissionsStoreInit { readonly config: PermissionsFile | undefined; readonly mode: PermissionMode; } /** * The contract every PermissionsStore must satisfy. Run against the file-backed * node store (tmpdir, always) and any other backend (e.g. Postgres, gated) so * they cannot drift. Pass vitest's `describe`; `makeStore` returns a FRESH * store — no config entries beyond `init.config`, no prior runtime grants. * * Runtime grants are seeded through `addAllow` rather than by writing the * backing store directly: that is the only portable way to reach the "runtime" * half of the state machine, since where those entries live (a JSON file, a * table) is exactly what differs between backends. */ export declare function runPermissionsStoreConformance(opts: { readonly name: string; readonly makeStore: (init: PermissionsStoreInit) => Promise | PermissionsStore; readonly describe: (name: string, fn: () => void) => void; readonly close?: (store: PermissionsStore) => Promise | void; }): void; //# sourceMappingURL=permissions-conformance.d.ts.map