import { z } from '@botpress/sdk';
import { DataSource } from './source-base';
import type { ExtraFileTags } from './source-base';
type DirectorySourceOptions = {
    id?: string;
    filter?: (filePath: string) => boolean;
    /**
     * Extra tags applied to every file ingested by this source, on top of the
     * well-known KB/source identity tags. Either a static record or a function
     * resolved per upload. Reserved keys are ignored.
     *
     * @example { tags: { team: 'docs' } }
     */
    tags?: ExtraFileTags;
};
export declare class DirectorySource extends DataSource {
    private _directoryPath;
    private _filterFn;
    constructor(id: string, directoryPath: string, options?: DirectorySourceOptions);
    /** Get the directory path for this source */
    get directoryPath(): string;
    /** Get the filter function for this source */
    get filterFn(): ((filePath: string) => boolean) | undefined;
    /** Get serializable configuration for change detection */
    getConfig(): Record<string, unknown>;
    get syncWorkflow(): import("../workflow").BaseWorkflow<`data_source_sync_${string}`, z.ZodObject<{
        dsId: z.ZodString;
        kbName: z.ZodString;
        kbId: z.ZodString;
        force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    }, "strip", {
        kbId: string;
        kbName: string;
        dsId: string;
        force: boolean;
    }, {
        kbId: string;
        kbName: string;
        dsId: string;
        force?: boolean | undefined;
    }>, z.ZodObject<{
        processed: z.ZodDefault<z.ZodNumber>;
        added: z.ZodDefault<z.ZodArray<z.ZodObject<{
            file: z.ZodString;
            name: z.ZodString;
            hash: z.ZodString;
            size: z.ZodNumber;
        }, "strip", {
            name: string;
            size: number;
            hash: string;
            file: string;
        }, {
            name: string;
            size: number;
            hash: string;
            file: string;
        }>, "many">>;
        updated: z.ZodDefault<z.ZodArray<z.ZodObject<{
            file: z.ZodString;
            name: z.ZodString;
            hash: z.ZodString;
            size: z.ZodNumber;
        }, "strip", {
            name: string;
            size: number;
            hash: string;
            file: string;
        }, {
            name: string;
            size: number;
            hash: string;
            file: string;
        }>, "many">>;
        deleted: z.ZodDefault<z.ZodArray<z.ZodObject<{
            file: z.ZodString;
            name: z.ZodString;
            hash: z.ZodString;
            size: z.ZodNumber;
        }, "strip", {
            name: string;
            size: number;
            hash: string;
            file: string;
        }, {
            name: string;
            size: number;
            hash: string;
            file: string;
        }>, "many">>;
        errors: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    }, "strip", {
        processed: number;
        added: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[];
        updated: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[];
        deleted: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[];
        errors: string[];
    }, {
        processed?: number | undefined;
        added?: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[] | undefined;
        updated?: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[] | undefined;
        deleted?: {
            name: string;
            size: number;
            hash: string;
            file: string;
        }[] | undefined;
        errors?: string[] | undefined;
    }>, z.ZodObject<{}, "strip", {}, {}>, Record<string, import("../../types").ZuiType>, Record<string, import("../../types").ZuiType>>;
    static fromPath(directoryPath: string, options?: DirectorySourceOptions): DirectorySource;
}
export {};
//# sourceMappingURL=source-directory.d.ts.map