import { Container } from "@gajae-code/tui"; import { type GjcLifecycleContext } from "../../extensibility/gjc-plugins/lifecycle"; import { type GjcRuntimeSnapshotProvider } from "../../extensibility/gjc-plugins/runtime-quarantine"; import type { GjcBundleIdentity, GjcBundleSummary, GjcLifecycleResult, GjcReviewedUpdateToken, GjcToggleResult, GjcUpdateApplyResult, GjcUpdatePreview } from "../../extensibility/gjc-plugins/types"; /** Injectable lifecycle boundary; Settings never reads registries or executes bundle code. */ export interface GjcBundleLifecyclePort { listGjcBundles(ctx: GjcLifecycleContext): Promise; getGjcBundle(ctx: GjcLifecycleContext, identity: GjcBundleIdentity): Promise>; previewGjcBundleUpdate(ctx: GjcLifecycleContext, identity: GjcBundleIdentity): Promise>; applyGjcBundleUpdate(ctx: GjcLifecycleContext, token: GjcReviewedUpdateToken): Promise>; setGjcBundleEnabled(ctx: GjcLifecycleContext, identity: GjcBundleIdentity, enabled: boolean): Promise>; setGjcBundleSurfaceEnabled(ctx: GjcLifecycleContext, identity: GjcBundleIdentity, surfaceId: string, enabled: boolean): Promise>; } export interface GjcBundleSettingsDependencies { lifecycle?: GjcBundleLifecyclePort; runtimeSnapshotProvider?: GjcRuntimeSnapshotProvider; activationGeneration?: number; } export interface GjcBundleSettingsCallbacks { onClose: () => void; onBundlesChanged?: () => void; onRenderRequested?: () => void; } export type GjcBundleSettingsState = "loading" | "error" | "empty" | "list" | "detail" | "unsupported-source" | "update-review" | "update-confirm" | "update-running" | "update-result" | "stale-result" | "quarantined-blocked" | "mutation-in-flight-locked"; /** Scope-qualified, lifecycle-backed Settings UI for installed GJC bundles. */ export declare class GjcBundleSettingsComponent extends Container { #private; private readonly callbacks; private readonly dependencies; constructor(cwd: string, callbacks: GjcBundleSettingsCallbacks, dependencies?: GjcBundleSettingsDependencies); get stateId(): GjcBundleSettingsState; get navigationLocked(): boolean; dispose(): void; handleInput(data: string): void; }