/**
 * Plugin Configuration Templates Types
 *
 * @since v1.69.0
 */
/**
 * Template category types
 */
export type TemplateCategory = 'general' | 'performance' | 'security' | 'economy' | 'permissions' | 'network' | 'minigames' | 'world' | 'chat' | 'admin';
/**
 * Variable types supported in templates
 */
export type TemplateVariableType = 'string' | 'number' | 'boolean' | 'select' | 'list' | 'secret';
/**
 * File application modes
 */
export type TemplateFileMode = 'replace' | 'merge' | 'append';
/**
 * Template variable definition
 */
export interface TemplateVariable {
    name: string;
    type: TemplateVariableType;
    label: string;
    description?: string;
    default?: unknown;
    required?: boolean;
    options?: Array<{
        label: string;
        value: unknown;
    }>;
    validation?: string;
}
/**
 * Template file definition
 */
export interface TemplateFile {
    path: string;
    content: string;
    mode: TemplateFileMode;
    condition?: string;
}
/**
 * Template metadata
 */
export interface TemplateMetadata {
    createdAt: string;
    updatedAt: string;
    downloads?: number;
    rating?: number;
    usageCount?: number;
}
/**
 * Full configuration template
 */
export interface ConfigTemplate {
    id: string;
    name: string;
    description: string;
    version: string;
    author: string;
    plugins: string[];
    minPluginVersions?: Record<string, string>;
    files: TemplateFile[];
    variables: TemplateVariable[];
    extends?: string;
    tags: string[];
    category: TemplateCategory;
    metadata: TemplateMetadata;
    source: 'local' | 'builtin' | 'marketplace';
    isOfficial?: boolean;
}
/**
 * Template validation result
 */
export interface TemplateValidationResult {
    valid: boolean;
    errors: TemplateValidationError[];
    warnings: TemplateValidationWarning[];
}
/**
 * Template validation error
 */
export interface TemplateValidationError {
    field: string;
    message: string;
    code: TemplateErrorCode;
}
/**
 * Template validation warning
 */
export interface TemplateValidationWarning {
    field: string;
    message: string;
    suggestion?: string;
}
/**
 * Template error codes
 */
export type TemplateErrorCode = 'MISSING_REQUIRED_FIELD' | 'INVALID_ID' | 'INVALID_VERSION' | 'INVALID_VARIABLE_TYPE' | 'INVALID_VARIABLE_NAME' | 'INVALID_FILE_PATH' | 'INVALID_CONDITION' | 'INVALID_VALIDATION_REGEX' | 'DUPLICATE_VARIABLE' | 'DUPLICATE_FILE' | 'CIRCULAR_INHERITANCE' | 'MISSING_PARENT_TEMPLATE' | 'UNDEFINED_VARIABLE';
/**
 * Variable values for template rendering
 */
export type TemplateVariableValues = Record<string, unknown>;
/**
 * Template render result
 */
export interface TemplateRenderResult {
    success: boolean;
    files: RenderedFile[];
    errors: RenderError[];
}
/**
 * Rendered file content
 */
export interface RenderedFile {
    path: string;
    content: string;
    mode: TemplateFileMode;
}
/**
 * Render error
 */
export interface RenderError {
    file: string;
    line?: number;
    message: string;
    variable?: string;
}
/**
 * Template search options
 */
export interface TemplateSearchOptions {
    query?: string;
    category?: TemplateCategory;
    plugins?: string[];
    tags?: string[];
    source?: ConfigTemplate['source'];
    author?: string;
    sortBy?: 'name' | 'rating' | 'downloads' | 'updated' | 'created';
    sortOrder?: 'asc' | 'desc';
    limit?: number;
    offset?: number;
}
/**
 * Template search result
 */
export interface TemplateSearchResult {
    templates: ConfigTemplate[];
    total: number;
    hasMore: boolean;
}
/**
 * Template storage configuration
 */
export interface TemplateStorageConfig {
    localDir: string;
    maxTemplates: number;
    autoSave: boolean;
}
/**
 * Template application options
 */
export interface TemplateApplyOptions {
    backup?: boolean;
    dryRun?: boolean;
    selectedFiles?: string[];
    skipValidation?: boolean;
}
/**
 * Template application result
 */
export interface TemplateApplyResult {
    success: boolean;
    appliedFiles: string[];
    skippedFiles: string[];
    errors: ApplyError[];
    backupPath?: string;
}
/**
 * Apply error
 */
export interface ApplyError {
    file: string;
    message: string;
    code: 'WRITE_FAILED' | 'MERGE_FAILED' | 'BACKUP_FAILED' | 'PERMISSION_DENIED';
}
/**
 * Default storage configuration
 */
export declare const DEFAULT_STORAGE_CONFIG: TemplateStorageConfig;
/**
 * Template category display info
 */
export declare const CATEGORY_INFO: Record<TemplateCategory, {
    label: string;
    icon: string;
}>;
/**
 * Valid ID pattern
 */
export declare const TEMPLATE_ID_PATTERN: RegExp;
/**
 * Valid variable name pattern
 */
export declare const VARIABLE_NAME_PATTERN: RegExp;
/**
 * Version pattern (semver)
 */
export declare const VERSION_PATTERN: RegExp;
//# sourceMappingURL=template-types.d.ts.map