import { type SubmissionRecordErrorDetails } from '@overture-stack/lyric-data-model/models';
import { BaseDependencies } from '../../config/config.js';
import type { FilenameEntityPair } from '../../utils/schemas.js';
import { type FlattenedSubmissionData } from '../../utils/submissionResponseParser.js';
import { CommitSubmissionResult, type DeleteSubmissionResult, type EntityData, type PaginationOptions, type SubmissionActionType, SubmissionSummary, type SubmitDataResult, type SubmitFileResult } from '../../utils/types.js';
declare const submissionService: (dependencies: BaseDependencies) => {
    commitSubmission: (categoryId: number, submissionId: number, username: string) => Promise<CommitSubmissionResult>;
    deleteActiveSubmissionById: (submissionId: number, username: string, force: boolean) => Promise<DeleteSubmissionResult>;
    deleteActiveSubmissionEntity: (submissionId: number, username: string, filter: {
        actionType: SubmissionActionType;
        entityName: string;
        index: number | null;
    }) => Promise<SubmitDataResult>;
    getSubmissionsByCategory: (categoryId: number, paginationOptions: PaginationOptions, filterOptions: {
        onlyActive: boolean;
        username?: string;
        organization?: string;
    }) => Promise<{
        result: SubmissionSummary[];
        metadata: {
            totalRecords: number;
            errorMessage?: string;
        };
    }>;
    getSubmissionById: (submissionId: number) => Promise<SubmissionSummary | undefined>;
    getSubmissionDetailsById: ({ submissionId, paginationOptions, filterOptions, }: {
        submissionId: number;
        paginationOptions: PaginationOptions;
        filterOptions: {
            entityNames: string[];
            actionTypes: SubmissionActionType[];
        };
    }) => Promise<{
        data: FlattenedSubmissionData[];
        errors?: SubmissionRecordErrorDetails[];
    }>;
    getActiveSubmissionByOrganization: ({ categoryId, username, organization, }: {
        categoryId: number;
        username: string;
        organization: string;
    }) => Promise<SubmissionSummary | undefined>;
    getOrCreateActiveSubmission: (params: {
        username: string;
        categoryId: number;
        organization: string;
    }) => Promise<number>;
    submit: ({ data, categoryId, organization, username, }: {
        data: EntityData;
        categoryId: number;
        organization: string;
        username: string;
    }) => Promise<SubmitDataResult | {
        status: "UNKNOWN_CATEGORY";
        description: string;
    }>;
    submitFiles: ({ files, categoryId, organization, username, fileEntityMap, }: {
        files: Express.Multer.File[];
        categoryId: number;
        organization: string;
        username: string;
        fileEntityMap?: FilenameEntityPair[];
    }) => Promise<SubmitFileResult | {
        status: "UNKNOWN_CATEGORY";
        description: string;
    }>;
};
export default submissionService;
