import { r as DaoCoreConfig } from "../types.daocore-kp8IyikH.js";
import { a as CommitmentScope, n as CommitmentExtractionBatchResult, r as CommitmentExtractionItem } from "../types-B3lUN4pX.js";

//#region src/commitments/runtime.d.ts
type TimerHandle = ReturnType<typeof setTimeout>;
type ModelRef = {
  provider: string;
  model: string;
};
type CommitmentExtractionEnqueueInput = CommitmentScope & {
  cfg?: DaoCoreConfig;
  nowMs?: number;
  userText: string;
  assistantText?: string;
  sourceMessageId?: string;
  sourceRunId?: string;
};
type CommitmentExtractionRuntime = {
  extractBatch?: (params: {
    cfg?: DaoCoreConfig;
    items: CommitmentExtractionItem[];
  }) => Promise<CommitmentExtractionBatchResult>;
  resolveDefaultModel?: (params: {
    cfg: DaoCoreConfig;
    agentId?: string;
  }) => ModelRef;
  setTimer?: (callback: () => void, delayMs: number) => TimerHandle;
  clearTimer?: (timer: TimerHandle) => void;
  forceInTests?: boolean;
};
declare function configureCommitmentExtractionRuntime(next: CommitmentExtractionRuntime): void;
declare function resetCommitmentExtractionRuntimeForTests(): void;
declare function enqueueCommitmentExtraction(input: CommitmentExtractionEnqueueInput): boolean;
declare function drainCommitmentExtractionQueue(): Promise<number>;
//#endregion
export { configureCommitmentExtractionRuntime, drainCommitmentExtractionQueue, enqueueCommitmentExtraction, resetCommitmentExtractionRuntimeForTests };