import type { BedrockHealth, BedrockMemorySnapshot, BedrockTargetKind } from '../../../../packages/core/src/domain/generated/output.js';
export type BedrockEnableResult = {
    ok: true;
} | {
    ok: false;
    code: string;
    remediation: string;
};
export type BedrockLifecycleResult = {
    ok: true;
    stdout: string;
} | {
    ok: false;
    code: string;
    remediation: string;
};
/**
 * Server actions injected by the page wrapping this panel. Stories
 * pass deterministic stand-ins so every state is renderable without a
 * real DI container.
 */
export interface BedrockMemoryPanelActions {
    enable: (kind: BedrockTargetKind, id: string) => Promise<BedrockEnableResult>;
    sync: (kind: BedrockTargetKind, id: string) => Promise<BedrockLifecycleResult>;
    ship: (kind: BedrockTargetKind, id: string) => Promise<BedrockLifecycleResult>;
    refreshSnapshot: (kind: BedrockTargetKind, id: string) => Promise<BedrockMemorySnapshot | null>;
}
export interface BedrockMemoryPanelProps {
    /** Which kind of entity owns this bedrock memory store. */
    targetKind: BedrockTargetKind;
    /** Owning entity id (Application.id / Repository.id / Feature.id). */
    targetId: string;
    /** Human-readable label shown in the card header (e.g. "my-app"). */
    targetLabel: string;
    /** Persisted enable flag, seeded from the entity. */
    initialEnabled: boolean;
    /** Initial memory snapshot (SSR-fetched). Null when the panel is loading. */
    initialSnapshot: BedrockMemorySnapshot | null;
    /** Initial doctor result, if known. Null hides the health row. */
    initialHealth: BedrockHealth | null;
    /** Server action overrides — Storybook injects stand-ins; pages pass real actions. */
    actions: BedrockMemoryPanelActions;
}
export declare function BedrockMemoryPanel({ targetKind, targetId, targetLabel, initialEnabled, initialSnapshot, initialHealth, actions, }: BedrockMemoryPanelProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=bedrock-memory-panel.d.ts.map