import { loopAgentSteps } from './run-agent-step';
import { getAgentTemplate } from './templates/agent-registry';
import type { AgentTemplate } from './templates/types';
import type { ClientAction } from '@levelcode/common/actions';
import type { RequestToolCallFn, SendActionFn } from '@levelcode/common/types/contracts/client';
import type { Logger } from '@levelcode/common/types/contracts/logger';
import type { ParamsExcluding } from '@levelcode/common/types/function-params';
import type { PrintModeEvent } from '@levelcode/common/types/print-mode';
import type { SessionState, AgentOutput } from '@levelcode/common/types/session-state';
export declare function mainPrompt(params: {
    action: ClientAction<'prompt'>;
    onResponseChunk: (chunk: string | PrintModeEvent) => void;
    localAgentTemplates: Record<string, AgentTemplate>;
    requestToolCall: RequestToolCallFn;
    logger: Logger;
} & ParamsExcluding<typeof loopAgentSteps, 'userInputId' | 'spawnParams' | 'agentState' | 'prompt' | 'content' | 'agentType' | 'fingerprintId' | 'fileContext' | 'ancestorRunIds'> & ParamsExcluding<typeof getAgentTemplate, 'agentId'>): Promise<{
    sessionState: SessionState;
    output: AgentOutput;
}>;
export declare function callMainPrompt(params: {
    action: ClientAction<'prompt'>;
    promptId: string;
    sendAction: SendActionFn;
    logger: Logger;
    signal: AbortSignal;
} & ParamsExcluding<typeof mainPrompt, 'localAgentTemplates' | 'onResponseChunk'>): Promise<{
    sessionState: SessionState;
    output: AgentOutput;
}>;
