import type { ArkmeExtensionInstallStore } from './install-store.js'; import type { ArkmeInstalledExtension } from './types.js'; export type DesktopRuntimeEnvironment = 'prod' | 'test'; export type DesktopExtensionQuarantinePhase = 'pending' | 'active' | 'restored' | 'resolved'; export interface DesktopExtensionQuarantineEntry { packageName: string; dependencySpec: string; originalBundleIndex: number; synchronizedAtMillis?: number; notificationDismissedAtMillis?: number; reenableRequestedAtMillis?: number; resolvedAtMillis?: number; } export interface DesktopExtensionQuarantineReceipt { schemaVersion: 1; quarantineId: string; environment: DesktopRuntimeEnvironment; phase: DesktopExtensionQuarantinePhase; mode: 'targeted' | 'local-safe-mode'; createdAtMillis: number; updatedAtMillis: number; runtimeReleaseId?: string; failureSummary: string; failureLogTail: string; entries: DesktopExtensionQuarantineEntry[]; } export interface ArkmeDesktopQuarantineEntryView { packageName: string; extensionId?: string; dismissed: boolean; resolved: boolean; } export interface ArkmeDesktopQuarantineStatus { active: boolean; quarantineId?: string; mode?: 'targeted' | 'local-safe-mode'; failureSummary?: string; failureLogTail?: string; entries: ArkmeDesktopQuarantineEntryView[]; } interface InstallStoreLike { list(): ArkmeInstalledExtension[]; get(extensionId: string): ArkmeInstalledExtension | undefined; put(item: ArkmeInstalledExtension): void; } interface ArkmeDesktopExtensionQuarantineOptions { dshHome: string; environment: DesktopRuntimeEnvironment; installStore: Pick | InstallStoreLike; setProfileEnabled(packageName: string, enabled: boolean): Promise; requestRestart(input: { packageName: string; previousProfileIncluded: false; }): Promise; isPackageActive(packageName: string): boolean | Promise; now?: () => number; } export declare class ArkmeDesktopExtensionQuarantine { private readonly options; private readonly now; constructor(options: ArkmeDesktopExtensionQuarantineOptions); reconcile(): Promise; status(): Promise; dismiss(packageName: string): Promise; reenable(packageName: string): Promise; resolveActive(): Promise; health(packageName: string): Promise<{ profileEnabled: boolean; active: boolean; }>; private activeReceiptForPackage; private installedByPackage; private profileContains; private readReceipts; private writeStoredReceipt; } export declare function parseDesktopExtensionQuarantineReceipt(text: string): DesktopExtensionQuarantineReceipt; export {}; //# sourceMappingURL=desktop-quarantine.d.ts.map