import type { FilesSource } from "../../blueprint/Resources/FileStore";
import type { Maybe } from "../../common/Maybe";
export interface FilesSourceValidationBase {
    isValid: boolean;
    validFiles: string[];
}
export interface ValidFilesSourceValidation extends FilesSourceValidationBase {
    isValid: true;
}
export interface InvalidFilesSourceValidation extends FilesSourceValidationBase {
    isValid: false;
    invalidFiles: InvalidPath[];
}
export declare type FilesSourceValidation = InvalidFilesSourceValidation | ValidFilesSourceValidation;
export interface InvalidPath {
    path: string;
    reason: string;
}
export interface ValidationContext {
    projectDir: string;
    checkExistence?: true;
}
export declare type FilesSourceValidator<TFilesSource extends FilesSource> = (source: TFilesSource, context: ValidationContext) => Promise<FilesSourceValidation>;
export declare function existenceValidation(path: string, checkExistence: Maybe<boolean>): Promise<Maybe<InvalidFilesSourceValidation>>;
