Files
agentic-dev-template/packages/core-consent/src/consent.interface.ts
Danijel Martinek 7dd46b68b2 feat(core-consent): add PayloadConsent, RecordingConsent and DI binders
Implements the Payload-backed IConsent that reads/writes users.consentState
and emits CONSENT_GRANT/CONSENT_WITHDRAW audit entries via injected auditLog.
Adds RecordingConsent test double in core-testing for unit-test injection.
Adds bindProductionConsent/bindDevSeedConsent DI binders and InMemoryConsent
for dev/seed contexts. Contract tests cover grant/withdraw/isGranted round-trip,
audit entry shape, metadata persistence (bannerVersion/policyVersion/method),
and getCategories reflection of state.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 12:39:31 +00:00

27 lines
891 B
TypeScript

import type {
ConsentCategory,
UserConsentState,
ConsentGrantMeta,
} from "./consent-types";
/**
* Vendor-neutral consent management interface.
*
* Feature binders that receive a consent instance operate through this
* interface. Concrete implementations (Payload-backed, in-memory, etc.) are
* wired at DI bind time and never imported by feature packages directly.
*/
export interface IConsent {
/** Synchronous check — true when the subject has granted the category. */
isGranted(category: ConsentCategory): boolean;
/** Record a consent grant for the given category. */
grant(category: ConsentCategory, meta?: ConsentGrantMeta): Promise<void>;
/** Record a consent withdrawal for the given category. */
withdraw(category: ConsentCategory): Promise<void>;
/** Return the full list of per-category consent states. */
getCategories(): UserConsentState[];
}