import { ResolverActions } from "../../utils/enums";
import { AttachmentDataProvider } from "./attachment-resolver.data.model";
import { BaseMetadata } from "./base-metadata.data.model";
import { RecorderAnnotation } from "./recorder-annotation.data.model";
import { ResolverConfig, ResolverResponse } from "./resolver.data.model";
import { Attachment } from "./attachment.model";
import { Transcription } from "./transcription.data.model";
import { User } from "./user.data.model";
export interface RecorderAnnotationDataProvider {
    get?: (request: GetRecorderResolverRequest) => Promise<ResolverResponse<Record<string, PartialRecorderAnnotation>>>;
    save?: (request: SaveRecorderResolverRequest) => Promise<ResolverResponse<SaveRecorderResolverData | undefined>>;
    delete?: (request: DeleteRecorderResolverRequest) => Promise<ResolverResponse<undefined>>;
    config?: ResolverConfig;
    uploadChunks?: boolean;
    storage?: AttachmentDataProvider;
}
export interface GetRecorderResolverRequest {
    organizationId: string;
    recorderAnnotationIds?: string[];
    documentIds?: string[];
}
export interface SaveRecorderResolverRequest {
    recorderAnnotation: Record<string, PartialRecorderAnnotation>;
    event?: ResolverActions;
    metadata?: BaseMetadata;
}
export interface SaveRecorderResolverData {
    transcription?: Transcription;
    attachment?: Attachment | null;
    attachments?: Attachment[];
}
export interface DeleteRecorderResolverRequest {
    recorderAnnotationId: string;
    metadata?: BaseMetadata;
    event?: ResolverActions;
}
export interface PartialRecorderAnnotation {
    annotationId: string;
    metadata?: BaseMetadata;
    from?: User;
    transcription?: Transcription;
    attachment?: Attachment | null;
    attachments?: Attachment[];
    chunkUrls?: Record<number, string>;
    recordingEditVersions?: Record<number, PartialRecorderAnnotationEditVersion>;
    [key: string]: any;
}
export interface PartialRecorderAnnotationEditVersion {
    from?: User;
    attachment?: Attachment | null;
    attachments?: Attachment[];
    transcription?: Transcription;
}
export interface PartialRecorderAnnotationResult {
    strippedData: Record<string, PartialRecorderAnnotation> | null;
    originalData: RecorderAnnotation | null;
    eventType?: ResolverActions;
}
