import type { ConfigManager } from '../config/manager.js';
import type { SecretsManager } from '../config/secrets.js';
import type { ServiceRegistry } from '../config/service-registry.js';
import type { AgentRecord } from '../tools/agent/index.js';
import type { AgentManager } from '../tools/agent/index.js';
import type { ControlPlaneGateway, SharedSessionBroker } from '../control-plane/index.js';
import type { RouteBindingManager, ChannelPolicyManager } from '../channels/index.js';
import type { GenericWebhookAdapterContext, SurfaceAdapterContext } from '../adapters/index.js';
import type { AutomationManager } from '../automation/index.js';
import type { ChannelPolicyDecision, ChannelIngressPolicyInput } from '../channels/index.js';
import type { RuntimeEventBus } from '../runtime/events/index.js';
import type { CompanionChatManager } from '../companion/companion-chat-manager.js';
interface DaemonSurfaceActionContext {
    readonly serviceRegistry: ServiceRegistry;
    readonly secretsManager: Pick<SecretsManager, 'get' | 'getGlobalHome'>;
    readonly configManager: ConfigManager;
    readonly routeBindings: RouteBindingManager;
    readonly sessionBroker: SharedSessionBroker;
    readonly channelPolicy: ChannelPolicyManager;
    readonly controlPlaneGateway: ControlPlaneGateway;
    readonly runtimeBus: RuntimeEventBus;
    readonly companionChatManager: CompanionChatManager | null;
    readonly automationManager: AutomationManager;
    readonly agentManager: AgentManager;
    readonly trySpawnAgent: (input: Parameters<AgentManager['spawn']>[0], logLabel?: string, sessionId?: string) => AgentRecord | Response;
    readonly queueSurfaceReplyFromBinding: (binding: import('../automation/routes.js').AutomationRouteBinding | undefined, input: {
        readonly agentId: string;
        readonly task: string;
        readonly agentTask?: string | undefined;
        readonly workflowChainId?: string | undefined;
        readonly sessionId?: string | undefined;
    }) => void;
    readonly queueWebhookReply: (input: {
        readonly agentId: string;
        readonly task: string;
        readonly sessionId?: string | undefined;
        readonly routeId?: string | undefined;
        readonly callbackUrl?: string | undefined;
        readonly callbackCorrelationId?: string | undefined;
        readonly callbackSignature?: import('./types.js').PendingSurfaceReply['callbackSignature'] | undefined;
    }) => void;
    readonly surfaceDeliveryEnabled: (surface: 'slack' | 'discord' | 'ntfy' | 'webhook' | 'homeassistant' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix') => boolean;
    readonly signWebhookPayload: (body: string, secret: string) => string;
    readonly handleApprovalAction: (approvalId: string, action: 'claim' | 'approve' | 'deny' | 'cancel', req: Request) => Promise<Response>;
    readonly resolveDefaultProviderModel?: (() => {
        provider: string;
        model: string;
    } | null) | undefined;
}
export declare class DaemonSurfaceActionHelper {
    private readonly context;
    private static readonly NTFY_CHAT_REPLY_TTL_MS;
    private readonly pendingNtfyChatReplies;
    private ntfyChatReplyUnsubscribers;
    private ntfyRemoteSessionId;
    constructor(context: DaemonSurfaceActionContext);
    buildSurfaceAdapterContext(): SurfaceAdapterContext;
    buildGenericWebhookAdapterContext(): GenericWebhookAdapterContext;
    authorizeSurfaceIngress(input: ChannelIngressPolicyInput): Promise<ChannelPolicyDecision>;
    parseSurfaceControlCommand(text: string): {
        readonly action: 'status' | 'cancel' | 'retry';
        readonly id: string;
    } | null;
    performSurfaceControlCommand(command: {
        readonly action: 'status' | 'cancel' | 'retry';
        readonly id: string;
    }): Promise<string>;
    performInteractiveSurfaceAction(actionId: string, surface: 'slack' | 'discord', req: Request): Promise<string>;
    private publishConversationFollowup;
    private queueNtfyChatReply;
    private ensureNtfyChatReplyListeners;
    private matchNtfyChatReplyTurn;
    private readNtfyOriginMessageId;
    private deliverNtfyChatReply;
    private findPendingNtfyChatReplyForPrompt;
    private findPendingNtfyChatReplyForMessageId;
    private takeNtfyChatReply;
    private cleanupExpiredNtfyChatReplies;
    private postNtfyRemoteChatMessage;
    private runNtfyRemoteChatTurn;
    private postHomeAssistantChatMessage;
    private publishHomeAssistantChatReply;
    private publishNtfyReply;
    private resolveNtfyToken;
}
export {};
//# sourceMappingURL=surface-actions.d.ts.map