import { type AgentCompletionReadinessDeps } from './agent-completion-readiness.js';
import type { AgentsIndex, CursorState } from './types.js';
export declare const AGENT_COMPLETION_PUSH_BODY = "\u0410\u0433\u0435\u043D\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043B \u0440\u0430\u0431\u043E\u0442\u0443";
export declare function suppressAgentCompletionPush(agentIdOrMs?: string | number, ms?: number): void;
export interface AgentCompletionPushPayload {
    agentId: string;
    chatTitle: string;
    body: string;
    origin: 'app' | 'cursor';
    commandId?: string;
}
export type AgentCompletionPushEmit = (payload: AgentCompletionPushPayload) => void;
export interface AgentCompletionPushDeps {
    readiness: AgentCompletionReadinessDeps;
    requestContentSync(agentId: string, state: CursorState): void;
}
/**
 * Push when sidebar loader off + archive/lenta ready for open-from-push.
 */
export declare class AgentCompletionPush {
    private emit;
    private agentsIndex;
    private getState;
    private deps;
    private prevWorking;
    private workingPolls;
    private confirmedWorking;
    private idlePolls;
    private lastEmitAt;
    private emittedThisSession;
    private pendingContent;
    private contentTimers;
    private lastSkipLogAt;
    private workStartSig;
    private appInitiated;
    private static readonly WORKING_POLLS_REQUIRED;
    private static readonly IDLE_POLLS_REQUIRED;
    private static readonly MIN_EMIT_GAP_MS;
    private static readonly CONTENT_WAIT_MAX_MS;
    private static readonly SKIP_LOG_GAP_MS;
    private static readonly STOPPED_IN_CURSOR_SUPPRESS_MS;
    /** Mark that work for this agent was initiated from the mobile app. */
    markAppInitiated(agentId: string, commandId: string): void;
    clearAppInitiated(agentId: string): void;
    constructor(emit: AgentCompletionPushEmit, agentsIndex: () => AgentsIndex | null, getState: () => CursorState, deps: AgentCompletionPushDeps);
    observe(state: CursorState): void;
    retryPendingContent(state: CursorState): void;
    private logSkip;
    private trackWorkingSessions;
    private detectIdleCompletions;
    private syncPrevWorking;
    private tryEmit;
    private scheduleContentTimeout;
    private clearContentTimer;
}
