/**
 * Marketplace Submission Service
 *
 * Handles skill submissions to the marketplace, including validation,
 * archive storage, and review workflow management.
 *
 * Submissions are stored locally in ~/.crewly/marketplace/submissions/
 * with a manifest.json tracking all submissions and their status.
 *
 * @module services/marketplace/marketplace-submission.service
 */
import type { MarketplaceSubmission, SubmissionsManifest, SubmissionStatus, MarketplaceOperationResult } from '../../types/marketplace.types.js';
/**
 * Loads the submissions manifest from disk.
 *
 * Returns an empty manifest if the file does not exist or is unparsable.
 *
 * @returns The submissions manifest
 */
export declare function loadSubmissionsManifest(): Promise<SubmissionsManifest>;
/**
 * Saves the submissions manifest to disk.
 *
 * Creates the submissions directory if it does not exist.
 *
 * @param manifest - The manifest to persist
 */
export declare function saveSubmissionsManifest(manifest: SubmissionsManifest): Promise<void>;
/**
 * Submits a skill package (tar.gz archive) to the marketplace for review.
 *
 * Performs the following steps:
 * 1. Verifies the archive exists and is a tar.gz
 * 2. Extracts and validates skill.json from the archive
 * 3. Checks for duplicate submissions
 * 4. Stores the archive in the submissions directory
 * 5. Creates a submission record in the manifest
 *
 * @param archivePath - Path to the tar.gz archive to submit
 * @returns Operation result with the submission record
 */
export declare function submitSkill(archivePath: string): Promise<MarketplaceOperationResult & {
    submission?: MarketplaceSubmission;
}>;
/**
 * Lists all submissions, optionally filtered by status.
 *
 * @param status - Optional status filter
 * @returns Array of submissions
 */
export declare function listSubmissions(status?: SubmissionStatus): Promise<MarketplaceSubmission[]>;
/**
 * Gets a single submission by ID.
 *
 * @param id - Submission ID
 * @returns The submission, or null if not found
 */
export declare function getSubmission(id: string): Promise<MarketplaceSubmission | null>;
/**
 * Reviews a submission — approving or rejecting it.
 *
 * When approved, the skill is added to the local registry and becomes
 * available for installation. When rejected, the archive is removed.
 *
 * @param id - Submission ID
 * @param action - 'approve' or 'reject'
 * @param notes - Optional review notes
 * @returns Operation result
 */
export declare function reviewSubmission(id: string, action: 'approve' | 'reject', notes?: string): Promise<MarketplaceOperationResult>;
//# sourceMappingURL=marketplace-submission.service.d.ts.map