/**
 * DeploymentStatusProvider
 *
 * Wraps the dashboard with a shared deployment-status store seeded from
 * SSR data (ListDeploymentsUseCase via get-graph-data). All components
 * that call `useDeployAction(targetId)` subscribe to the same store, so
 * the "click Run on node → tab shows URL instantly" bug and the
 * "URL lost after refresh" bug are both resolved by construction.
 *
 * All business logic lives in use cases on the backend. This provider
 * owns only UI state transitions: which entries are hydrated, which are
 * loading, which have errors, and which need polling.
 */
import { type ReactNode } from 'react';
import type { DeploymentStatusEntry } from '../../../../packages/core/src/application/ports/output/services/deployment-service.interface.js';
import { DeploymentStatusStore, type DeploymentEntryState, EMPTY_ENTRY } from './deployment-status-store.js';
export interface DeployActionInput {
    targetId: string;
    targetType: 'feature' | 'repository' | 'application';
    repositoryPath: string;
    branch?: string;
}
interface DeploymentContextValue {
    store: DeploymentStatusStore;
    deploy: (input: DeployActionInput) => Promise<void>;
    stop: (targetId: string) => Promise<void>;
    ensureHydrated: (targetId: string) => void;
}
export declare function DeploymentStatusProvider({ initialDeployments, children, }: {
    initialDeployments: DeploymentStatusEntry[];
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function useDeploymentStatusContext(): DeploymentContextValue;
/**
 * Non-throwing variant used by presentational hooks (e.g. useDeployAction)
 * that may render inside Storybook or other isolated contexts without
 * a provider. Returns a stub store/actions that do nothing.
 */
export declare function useDeploymentStatusContextOptional(): DeploymentContextValue;
export { EMPTY_ENTRY, type DeploymentEntryState };
//# sourceMappingURL=deployment-status-provider.d.ts.map