import type { DevToolActionDto, DevToolDatabaseSummaryDto, DevToolDeploySummaryDto, DevToolPageDto, DevToolProcessDto, DevToolTaskDto, DevToolTaskStatusDto, DevToolsOverviewDto } from "../dto/dev-tools.dto.js";
export declare const DevToolsWsEvent: {
    readonly EVENT: "dev-tools:event";
    readonly JOIN: "join-dev-tools";
    readonly LEAVE: "leave-dev-tools";
    readonly KEEPALIVE: "keepalive-dev-tools";
    readonly ROOM: "dev-tools";
};
export type DevToolsRealtimeScope = "global" | "local" | "current" | "release";
export interface DevToolsJoinPayload {
    page?: DevToolPageDto | "all";
    contextKey?: string | null;
}
export interface NormalizedDevToolsJoinPayload {
    page: DevToolPageDto | "all";
    contextKey: string | null;
}
export interface ResolveDevToolsRealtimeContextKeyInput {
    scope: DevToolsRealtimeScope;
    releaseName?: string | null;
}
export interface ParsedDevToolsRealtimeContextKey {
    contextKey: string;
    scope: DevToolsRealtimeScope;
    releaseName: string | null;
    runtimeScope: "current" | "release" | null;
}
export declare function normalizeDevToolsRealtimeContextKey(value: string | null | undefined): string | null;
export declare function resolveDevToolsRealtimeContextKey(input: ResolveDevToolsRealtimeContextKeyInput): string;
export declare function parseDevToolsRealtimeContextKey(value: string | null | undefined): ParsedDevToolsRealtimeContextKey | null;
export declare function matchDevToolsRealtimeContextKey(expected: string | null | undefined, actual: string | null | undefined): boolean;
export declare function normalizeDevToolsJoinPayload(input?: DevToolsJoinPayload | null): NormalizedDevToolsJoinPayload;
export declare function buildDevToolsRealtimeSubscriptionKey(input?: DevToolsJoinPayload | null): string;
export declare function buildDevToolsRealtimePageRoom(page: DevToolPageDto | "all"): string;
export declare function buildDevToolsRealtimeContextRoom(page: DevToolPageDto | "all", contextKey: string | null | undefined): string | null;
export declare function buildDevToolsRealtimeAllContextRoom(contextKey: string | null | undefined): string | null;
export declare function resolveDevToolsRealtimeSubscriptionRooms(input?: DevToolsJoinPayload | null): string[];
export type DevToolsRealtimeKind = "page-snapshot" | "task-updated" | "summary-updated" | "runtime-updated" | "log-chunk" | "terminal-output" | "terminal-exit";
export interface DevToolsPageSnapshotPayload {
    page: DevToolPageDto | "all";
    kind: "page-snapshot";
    occurredAt: string;
    contextKey?: string | null;
    overview: DevToolsOverviewDto;
}
export interface DevToolsTaskUpdatedPayload {
    page: "all";
    kind: "task-updated";
    occurredAt: string;
    contextKey?: string | null;
    task: DevToolTaskDto;
}
export interface DevToolsSummaryUpdatedPayload {
    page: "all";
    kind: "summary-updated";
    occurredAt: string;
    deploySummary?: DevToolDeploySummaryDto | null;
    databaseSummary?: DevToolDatabaseSummaryDto | null;
}
export interface DevToolsRuntimeUpdatedPayload {
    page: "runtime";
    kind: "runtime-updated";
    occurredAt: string;
    contextKey?: string | null;
    taskId: string | null;
    taskActionId: string | null;
    taskStatus: DevToolTaskStatusDto | null;
    processKeys: string[];
    logProcessKeys: string[];
    actions?: DevToolActionDto[];
    tasks?: DevToolTaskDto[];
    processes?: DevToolProcessDto[];
}
export interface DevToolsLogChunkPayload {
    page: "runtime";
    kind: "log-chunk";
    occurredAt: string;
    contextKey?: string | null;
    processKey: string;
    content: string;
    cursor: number;
    resetRequired: boolean;
    truncated: boolean;
}
export interface DevToolsTerminalOutputPayload {
    page: "runtime";
    kind: "terminal-output";
    occurredAt: string;
    sessionId: string;
    processKey: string;
    chunk: string;
}
export interface DevToolsTerminalExitPayload {
    page: "runtime";
    kind: "terminal-exit";
    occurredAt: string;
    sessionId: string;
    processKey: string;
    exitCode: number | null;
}
export type DevToolsWsPayload = DevToolsPageSnapshotPayload | DevToolsTaskUpdatedPayload | DevToolsSummaryUpdatedPayload | DevToolsRuntimeUpdatedPayload | DevToolsLogChunkPayload | DevToolsTerminalOutputPayload | DevToolsTerminalExitPayload;
export declare function resolveDevToolsRealtimePayloadRooms(payload: DevToolsWsPayload): string[];
export type DevToolsWsEvents = {
    [DevToolsWsEvent.EVENT]: DevToolsWsPayload;
};
