/**
 * Template Marketplace REST Controller
 *
 * Exposes CRUD endpoints for marketplace template lifecycle management.
 * Handles creation, listing, detail view, updating, archiving,
 * version management, and publishing of team configuration templates.
 *
 * @module controllers/marketplace/template-marketplace.controller
 */
import type { Request, Response } from 'express';
/**
 * POST /api/marketplace/templates - Create a new template.
 *
 * Creates a template in draft status with an initial 1.0.0 version.
 *
 * @param req - Express request with body: { name, description, author, category, tags?, pricing?, config?, icon?, metadata? }
 * @param res - Express response returning TemplateOperationResult
 *
 * @example
 * ```
 * POST /api/marketplace/templates
 * { "name": "E-commerce UGC Video Team", "description": "...", "author": "Crewly", "category": "content-creation" }
 * ```
 */
export declare const handleCreateTemplate: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * GET /api/marketplace/templates - List/search templates.
 *
 * Supports query parameters for filtering and sorting:
 * - category: Filter by template category
 * - status: Filter by publish status
 * - search: Free-text search
 * - author: Filter by author
 * - sort: Sort order (popular, rating, newest)
 *
 * @param req - Express request with optional query params
 * @param res - Express response returning { success, data: MarketplaceTemplate[] }
 *
 * @example
 * ```
 * GET /api/marketplace/templates?category=content-creation&sort=popular
 * ```
 */
export declare const handleListTemplates: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * GET /api/marketplace/templates/:id - Get template details.
 *
 * Returns full template detail including metadata and pricing.
 * Returns 404 if the template does not exist.
 *
 * @param req - Express request with params.id
 * @param res - Express response returning { success, data: MarketplaceTemplate } or 404
 */
export declare const handleGetTemplate: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * PUT /api/marketplace/templates/:id - Update template metadata.
 *
 * Updates mutable fields: name, description, category, tags, pricing, icon, metadata.
 * Cannot update archived templates.
 *
 * @param req - Express request with params.id and body with update fields
 * @param res - Express response returning TemplateOperationResult
 */
export declare const handleUpdateTemplate: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * DELETE /api/marketplace/templates/:id - Archive a template (soft delete).
 *
 * Sets the template status to 'archived'. Already archived templates
 * return an error.
 *
 * @param req - Express request with params.id
 * @param res - Express response returning TemplateOperationResult
 */
export declare const handleArchiveTemplate: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * POST /api/marketplace/templates/:id/versions - Add a new version.
 *
 * Creates a new version entry for the template with config and changelog.
 * The template's currentVersion is updated to the new semver.
 *
 * @param req - Express request with params.id and body: { semver, config, changelog }
 * @param res - Express response returning TemplateOperationResult
 *
 * @example
 * ```
 * POST /api/marketplace/templates/:id/versions
 * { "semver": "1.1.0", "config": {...}, "changelog": "Added new role" }
 * ```
 */
export declare const handleAddVersion: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * GET /api/marketplace/templates/:id/versions - List template versions.
 *
 * Returns all versions for a template, sorted newest first.
 * Returns 404 if the template does not exist.
 *
 * @param req - Express request with params.id
 * @param res - Express response returning { success, data: TemplateVersion[] }
 */
export declare const handleListVersions: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
/**
 * POST /api/marketplace/templates/:id/publish - Publish a template.
 *
 * Advances the template through the publish workflow:
 * draft -> review -> published.
 *
 * @param req - Express request with params.id
 * @param res - Express response returning TemplateOperationResult
 */
export declare const handlePublishTemplate: (req: Request, res: Response, next: import("express").NextFunction) => Promise<void>;
//# sourceMappingURL=template-marketplace.controller.d.ts.map