/**
 * File filtering for repertoire package copy operations.
 *
 * Security constraints:
 * - Only .md, .yaml, .yml files are copied
 * - Only files under facets/ or workflows/ top-level directories are copied
 * - Symbolic links are skipped (lstat check)
 * - Files exceeding MAX_FILE_SIZE (1 MB) are skipped
 * - Packages with more than MAX_FILE_COUNT files throw an error
 */
/** Allowed file extensions for repertoire package files. */
export declare const ALLOWED_EXTENSIONS: readonly [".md", ".yaml", ".yml"];
/** Top-level directories that are copied from a package. */
export declare const ALLOWED_DIRS: readonly ["facets", "workflows"];
/** Maximum single file size in bytes (1 MB). */
export declare const MAX_FILE_SIZE: number;
/** Maximum total file count per package. */
export declare const MAX_FILE_COUNT = 500;
export interface CopyTarget {
    /** Absolute path to the source file. */
    absolutePath: string;
    /** Relative path from the package root (e.g. "facets/personas/coder.md"). */
    relativePath: string;
}
/**
 * Check if a filename has an allowed extension.
 */
export declare function isAllowedExtension(filename: string): boolean;
/**
 * Collect all files to copy from a package root directory.
 *
 * Only files under facets/ and workflows/ top-level directories are included.
 * Symbolic links are skipped. Files over MAX_FILE_SIZE are skipped.
 * Throws if total file count exceeds MAX_FILE_COUNT.
 *
 * @param packageRoot - absolute path to the package root (respects takt-repertoire.yaml path)
 */
export declare function collectCopyTargets(packageRoot: string): CopyTarget[];
//# sourceMappingURL=file-filter.d.ts.map