import type { TeamRepresentationSelection } from '../team-group-contract.js'; import type { ArkmeSessionCredentials } from '../keychain-store.js'; import type { ArkmeGroupAiPolishMutationResult, ArkmeGroupAiPolishNotice, ArkmeGroupAiPolishRuleCandidate, ArkmeGroupAiPolishSnapshot, ArkmeGroupAiPolishThreadMessage, ArkmeRecordCaptureContext, ArkmeSourceSendResult, ArkmeTimelineItem } from '../types.js'; import { ServiceRuntime } from './service.js'; import { SourceService } from './source-service.js'; export interface ArkmeAiPolishConfigSnapshot { enabled: boolean; canManage: boolean; viewerRole: number; activeRuleUid: string; activeRuleName: string; updatedAtMillis: number; rules: Array<{ ruleUid: string; name: string; ruleText: string; ruleVersion: number; threadMessages: ArkmeGroupAiPolishThreadMessage[]; }>; } export interface ArkmeAiPolishChatPort { sendChatSourceTextRaw(sourceRef: string, chatSessionUid: string, text: string, recordUid: string, relationUid: string, session: ArkmeSessionCredentials, initialAiPolish?: Record, contentPayload?: Record, signal?: AbortSignal, options?: { representation?: TeamRepresentationSelection; sendAtMillis?: number; agentAuthored?: boolean; recordDurationMillis?: number; captureContext?: ArkmeRecordCaptureContext; }): Promise; } export declare class GroupAiPolishService { private readonly runtime; private readonly source; private readonly chat; private readonly aiPolishConfirmations; private readonly aiPolishRetries; constructor(runtime: ServiceRuntime, source: SourceService, chat: ArkmeAiPolishChatPort); dispose(): void; private invalidateAiPolishReadCache; inspectGroupAiPolish(sourceRef: string, options?: { signal?: AbortSignal; }): Promise; inspectGroupAiPolishByName(groupName: string, options?: { signal?: AbortSignal; }): Promise; readGroupAiPolishNotices(sourceRef: string, options?: { signal?: AbortSignal; }): Promise; generateGroupAiPolishRuleForSource(sourceRef: string, requirement: string, options?: { signal?: AbortSignal; threadMessages?: readonly ArkmeGroupAiPolishThreadMessage[]; targetRuleRef?: string; }): Promise; generateGroupAiPolishRule(groupName: string, requirement: string, options?: { signal?: AbortSignal; threadMessages?: readonly ArkmeGroupAiPolishThreadMessage[]; targetRuleRef?: string; }): Promise; confirmEnableGroupAiPolish(confirmationRef: string, options?: { signal?: AbortSignal; }): Promise; private permissionDenied; prepareEnableGroupAiPolishForSource(sourceRef: string, ruleName?: string, options?: { signal?: AbortSignal; }): Promise; prepareEnableGroupAiPolishRuleForSource(sourceRef: string, ruleRef: string, options?: { signal?: AbortSignal; }): Promise; prepareEnableGroupAiPolish(groupName: string, ruleName?: string, options?: { signal?: AbortSignal; }): Promise; prepareDisableGroupAiPolishForSource(sourceRef: string, options?: { signal?: AbortSignal; }): Promise; prepareDisableGroupAiPolish(groupName: string, options?: { signal?: AbortSignal; }): Promise; confirmDisableGroupAiPolish(confirmationRef: string, options?: { signal?: AbortSignal; }): Promise; retryGroupAiPolish(retryRef: string, options?: { signal?: AbortSignal; }): Promise; sendGroupSourceTextWithAiPolish(sourceRef: string, chatSessionUid: string, originalText: string, recordUid: string, relationUid: string, session: ArkmeSessionCredentials, options?: { representation?: TeamRepresentationSelection; sendAtMillis?: number; agentAuthored?: boolean; recordDurationMillis?: number; captureContext?: ArkmeRecordCaptureContext; contentPayload?: Record; signal?: AbortSignal; }): Promise; private withFailedAiPolishRetry; timelineAiPolish(record: Record, payload: Record): ArkmeTimelineItem['aiPolish'] | undefined; queryGroupAiPolishConfig(chatSessionUid: string, session: ArkmeSessionCredentials, signal?: AbortSignal, fresh?: boolean): Promise; groupAiPolishSnapshot(sourceRef: string, groupName: string, config: ArkmeAiPolishConfigSnapshot): ArkmeGroupAiPolishSnapshot; queryGroupAiPolishNotices(chatSessionUid: string, session: ArkmeSessionCredentials, signal?: AbortSignal): Promise; private resolveUniqueGroupByName; private requireAiPolishConfirmation; private cleanupAiPolishState; private aiPolishTextResult; } //# sourceMappingURL=group-ai-polish-service.d.ts.map