/**
 * SearchParamsNormalizer - Normalizes search operation parameters
 *
 * Transforms raw search input parameters into the format expected
 * by PortfolioHandler.searchAll().
 *
 * Handles:
 * - Scope → sources array conversion
 * - Pagination (offset/limit → page/pageSize)
 * - Sort parameter normalization
 * - Filter parameter extraction
 *
 * @see Issue #243 - Unified search with normalizer architecture
 */
import type { Normalizer, NormalizerContext, NormalizerResult, NormalizedSearchParams } from './types.js';
/**
 * Raw input parameters for search operations.
 */
interface RawSearchParams {
    query?: unknown;
    scope?: unknown;
    type?: unknown;
    page?: unknown;
    limit?: unknown;
    pagination?: unknown;
    sort?: unknown;
    sortBy?: unknown;
    sortOrder?: unknown;
    filters?: unknown;
    options?: unknown;
    elementType?: unknown;
    fuzzyMatch?: unknown;
    includeKeywords?: unknown;
    includeTags?: unknown;
    includeTriggers?: unknown;
    includeDescriptions?: unknown;
}
/**
 * Normalizer for search operation parameters.
 *
 * Converts various input formats into a consistent structure
 * for the search handler.
 *
 * @example
 * ```typescript
 * const normalizer = new SearchParamsNormalizer();
 * const result = normalizer.normalize({
 *   query: 'creative writer',
 *   scope: ['local', 'collection'],
 *   pagination: { offset: 20, limit: 10 }
 * }, context);
 *
 * // Result:
 * // {
 * //   success: true,
 * //   params: {
 * //     query: 'creative writer',
 * //     sources: ['local', 'collection'],
 * //     page: 3,
 * //     pageSize: 10
 * //   }
 * // }
 * ```
 */
export declare class SearchParamsNormalizer implements Normalizer<RawSearchParams, NormalizedSearchParams> {
    readonly name = "searchParams";
    /**
     * Normalize search parameters.
     *
     * @param params - Raw input parameters
     * @param _context - Operation context (unused but available for future use)
     * @returns Normalized parameters or error
     */
    normalize(params: RawSearchParams, _context: NormalizerContext): NormalizerResult<NormalizedSearchParams>;
    /**
     * Normalize scope parameter to sources array.
     *
     * @param scope - Raw scope value (string, array, 'all', or undefined)
     * @returns Normalized sources array or error
     *
     * @example
     * normalizeScope(undefined)        // => ['local', 'github', 'collection']
     * normalizeScope('all')            // => ['local', 'github', 'collection']
     * normalizeScope('local')          // => ['local']
     * normalizeScope(['local', 'collection']) // => ['local', 'collection']
     */
    private normalizeScope;
    /**
     * Validate that all scope values are valid.
     *
     * @param scopes - Array of scope values to validate
     * @returns Validation result
     */
    private validateScopes;
    /**
     * Normalize pagination parameters.
     *
     * Handles both:
     * - Pagination object: { offset, limit }
     * - Top-level params: page, limit
     *
     * Converts offset-based to page-based pagination.
     *
     * @param params - Raw parameters
     * @returns Normalized page and pageSize
     *
     * @example
     * // Offset-based
     * normalizePagination({ pagination: { offset: 20, limit: 10 } })
     * // => { page: 3, pageSize: 10 }
     *
     * // Page-based
     * normalizePagination({ page: 2, limit: 25 })
     * // => { page: 2, pageSize: 25 }
     */
    private normalizePagination;
    /**
     * Normalize sort parameters.
     *
     * Handles:
     * - sort object: { field, order }
     * - sortBy/sortOrder top-level params
     *
     * @param params - Raw parameters
     * @returns Normalized sortBy and sortOrder
     *
     * @example
     * normalizeSort({ sort: { field: 'name', order: 'desc' } })
     * // => { sortBy: 'name', sortOrder: 'desc' }
     *
     * normalizeSort({ sortBy: 'created', sortOrder: 'asc' })
     * // => { sortBy: 'created', sortOrder: 'asc' }
     */
    private normalizeSort;
    /**
     * Normalize filter parameters.
     *
     * Extracts and validates filter values.
     *
     * @param filters - Raw filters object
     * @returns Normalized filters
     *
     * @example
     * normalizeFilters({ tags: ['ai', 'creative'], author: 'user123' })
     * // => { tags: ['ai', 'creative'], author: 'user123' }
     */
    private normalizeFilters;
    /**
     * Normalize search options.
     *
     * Handles both options object and legacy top-level boolean params.
     *
     * @param params - Raw parameters
     * @returns Normalized options
     */
    private normalizeOptions;
    /**
     * Normalize element type parameter.
     *
     * Handles both 'type' and legacy 'elementType' params.
     *
     * @param params - Raw parameters
     * @returns Normalized element type or undefined
     */
    private normalizeElementType;
}
export {};
//# sourceMappingURL=SearchParamsNormalizer.d.ts.map