const activeChatGenerations = new Map();
export function claimChatGeneration(conversationId, abortController = null, generationId = null) {
    if (activeChatGenerations.has(conversationId))
        return null;
    const token = Symbol(conversationId);
    activeChatGenerations.set(conversationId, { token, abortController, generationId });
    return () => {
        if (activeChatGenerations.get(conversationId)?.token === token) {
            activeChatGenerations.delete(conversationId);
        }
    };
}
export function hasActiveChatGeneration(conversationId) {
    return activeChatGenerations.has(conversationId);
}
export function getActiveChatGeneration(conversationId) {
    const active = activeChatGenerations.get(conversationId);
    if (!active)
        return null;
    return { generationId: active.generationId };
}
export function setActiveChatGenerationId(conversationId, generationId) {
    const active = activeChatGenerations.get(conversationId);
    if (!active)
        return false;
    active.generationId = generationId;
    return true;
}
export function cancelActiveChatGeneration(conversationId) {
    const active = activeChatGenerations.get(conversationId);
    if (!active?.abortController)
        return false;
    if (!active.abortController.signal.aborted) {
        active.abortController.abort();
    }
    return true;
}
export function cancelAndReleaseActiveChatGeneration(conversationId) {
    const active = activeChatGenerations.get(conversationId);
    if (!active)
        return false;
    if (active.abortController && !active.abortController.signal.aborted) {
        active.abortController.abort();
    }
    activeChatGenerations.delete(conversationId);
    return true;
}
export function clearActiveChatGenerationsForTest() {
    if (process.env.NODE_ENV !== "test" && process.env.VITEST !== "true")
        return;
    activeChatGenerations.clear();
}
//# sourceMappingURL=chat-generation-locks.js.map