/**
 * Submission Queue
 *
 * File-based queue for marketplace skill submissions.
 * Skills flow: discovered -> queued -> scanning -> tier1_passed/failed -> tier2_pending -> verified/rejected
 *
 * Features:
 * - File-based persistence at .specweave/state/skill-submissions.json
 * - Deduplication by repo full name
 * - Status transition validation
 * - Backup before write (.bak file)
 * - Recovery from corrupted JSON
 * - Filtering and pagination
 * - Aggregated insights/analytics
 */
import type { GitHubRepoInfo, SkillSubmission, SubmissionStatus, SubmissionFilter, PaginatedSubmissions, SubmissionInsights } from './submission-queue-types.js';
export declare class SubmissionQueue {
    private projectPath;
    private filePath;
    private data;
    constructor(projectPath: string);
    /**
     * Reload data from disk (useful when external processes write to the file).
     */
    reload(): void;
    /**
     * Add a submission to the queue from GitHub repo info.
     * Deduplicates by repoFullName -- returns existing entry if already present.
     */
    addSubmission(info: GitHubRepoInfo): SkillSubmission;
    /**
     * Update the status of a submission.
     * Validates that the transition is allowed.
     * Returns null if the ID is not found or transition is invalid.
     */
    updateStatus(id: string, newStatus: SubmissionStatus): SkillSubmission | null;
    /**
     * Approve a submission (set status to verified).
     * Only works from approvable statuses (tier1_passed, tier2_pending).
     */
    approve(id: string): SkillSubmission | null;
    /**
     * Reject a submission with a reason.
     * Can reject from any non-terminal status.
     */
    reject(id: string, reason: string): SkillSubmission | null;
    /**
     * Update data fields on a submission (skillContent, tier1Result, etc.).
     * Does NOT change status — use updateStatus() for that.
     */
    updateFields(id: string, fields: Partial<Pick<SkillSubmission, 'skillContent' | 'tier1Result' | 'tier2Result'>>): SkillSubmission | null;
    /**
     * Get a single submission by ID.
     */
    getById(id: string): SkillSubmission | null;
    /**
     * Get submissions with optional filtering and pagination.
     */
    getSubmissions(filter: SubmissionFilter): PaginatedSubmissions;
    /**
     * Get aggregated insights about the submission pipeline.
     */
    getInsights(): SubmissionInsights;
    /**
     * Load queue data from disk with backup recovery.
     */
    private load;
    /**
     * Save queue data to disk.
     * Creates a .bak backup of the previous file before writing.
     */
    private save;
}
//# sourceMappingURL=submission-queue.d.ts.map