/**
 * Unified recent activity — launcher-facing "pick up where you launched".
 *
 * Unlike live session state, this is launch oriented:
 * - one normalized row shape for IDE / CLI / ACP
 * - deduped by provider session when available, else by kind + providerType + workspace
 * - used only for quick-launch shortcuts
 */
import type { ProviderSummaryMetadata } from '../shared-types.js';
import type { RecentSessionBucket, SessionEntry } from '../shared-types.js';
import type { DaemonState } from './state-store.js';
export interface RecentActivityEntry {
    id: string;
    kind: 'ide' | 'cli' | 'acp';
    providerType: string;
    providerName: string;
    providerSessionId?: string;
    workspace?: string | null;
    summaryMetadata?: ProviderSummaryMetadata;
    title?: string;
    lastUsedAt: number;
}
export declare function buildRecentActivityKey(entry: Pick<RecentActivityEntry, 'kind' | 'providerType' | 'workspace'>): string;
export declare function buildRecentActivityKeyForEntry(entry: Pick<RecentActivityEntry, 'kind' | 'providerType' | 'workspace' | 'providerSessionId'>): string;
export declare function appendRecentActivity(state: DaemonState, entry: Omit<RecentActivityEntry, 'id' | 'lastUsedAt'> & {
    lastUsedAt?: number;
}): DaemonState;
export declare function getRecentActivity(state: DaemonState, limit?: number): RecentActivityEntry[];
export declare function buildSessionReadStateKey(sessionId: string, providerSessionId?: string | null): string;
export declare function getSessionSeenAt(state: DaemonState, sessionId: string, providerSessionId?: string | null): number;
export declare function getSessionSeenMarker(state: DaemonState, sessionId: string, providerSessionId?: string | null): string;
export declare function getSessionNotificationDismissal(state: DaemonState, sessionId: string, providerSessionId?: string | null): string;
export declare function getSessionNotificationUnreadOverride(state: DaemonState, sessionId: string, providerSessionId?: string | null): string;
export declare function dismissSessionNotification(state: DaemonState, sessionId: string, notificationId: string, providerSessionId?: string | null): DaemonState;
export declare function markSessionNotificationUnread(state: DaemonState, sessionId: string, notificationId: string, providerSessionId?: string | null): DaemonState;
export declare function getSessionNotificationTargetValue(session: Pick<SessionEntry, 'id' | 'providerSessionId'>): string;
export declare function getSessionCurrentNotificationId(session: Pick<SessionEntry, 'id' | 'providerSessionId' | 'inboxBucket' | 'unread' | 'lastMessageHash' | 'lastMessageAt' | 'lastUpdated' | 'status'>): string;
export declare function applySessionNotificationOverlay(session: Pick<SessionEntry, 'id' | 'providerSessionId' | 'inboxBucket' | 'unread' | 'lastMessageHash' | 'lastMessageAt' | 'lastUpdated' | 'status'>, overlay: {
    dismissedNotificationId?: string | null;
    unreadNotificationId?: string | null;
}): {
    unread: boolean;
    inboxBucket: RecentSessionBucket;
};
export declare function markSessionSeen(state: DaemonState, sessionId: string, seenAt?: number, completionMarker?: string | null, providerSessionId?: string | null): DaemonState;
