import { ZuiType } from 'llmz/dist/types';
import { BaseWorkflow, Typings } from '../workflow';
import { z } from '@botpress/sdk';
export type Item = z.infer<typeof Item>;
declare const Item: import("@botpress/sdk").ZodObject<{
    file: import("@botpress/sdk").ZodString;
    name: import("@botpress/sdk").ZodString;
    hash: import("@botpress/sdk").ZodString;
    size: import("@botpress/sdk").ZodNumber;
}, "strip", {
    name: string;
    size: number;
    hash: string;
    file: string;
}, {
    name: string;
    size: number;
    hash: string;
    file: string;
}>;
export type SyncInput = z.infer<typeof SyncInput>;
export declare const SyncInput: import("@botpress/sdk").ZodObject<{
    dsId: import("@botpress/sdk").ZodString;
    kbName: import("@botpress/sdk").ZodString;
    kbId: import("@botpress/sdk").ZodString;
    force: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodOptional<import("@botpress/sdk").ZodBoolean>>;
}, "strip", {
    kbId: string;
    kbName: string;
    dsId: string;
    force: boolean;
}, {
    kbId: string;
    kbName: string;
    dsId: string;
    force?: boolean | undefined;
}>;
export type SyncOutput = z.infer<typeof SyncOutput>;
export declare const SyncOutput: import("@botpress/sdk").ZodObject<{
    processed: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodNumber>;
    added: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    updated: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    deleted: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    errors: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").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;
}>;
export declare const createSyncWorkflow: <TState extends ZuiType = ZuiType>(props: {
    type: string;
    state: TState;
    handler: (props: Typings.HandlerProps<typeof SyncInput, typeof SyncOutput, TState>) => Promise<z.infer<typeof SyncOutput>>;
}) => BaseWorkflow<`data_source_sync_${string}`, import("@botpress/sdk").ZodObject<{
    dsId: import("@botpress/sdk").ZodString;
    kbName: import("@botpress/sdk").ZodString;
    kbId: import("@botpress/sdk").ZodString;
    force: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodOptional<import("@botpress/sdk").ZodBoolean>>;
}, "strip", {
    kbId: string;
    kbName: string;
    dsId: string;
    force: boolean;
}, {
    kbId: string;
    kbName: string;
    dsId: string;
    force?: boolean | undefined;
}>, import("@botpress/sdk").ZodObject<{
    processed: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodNumber>;
    added: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    updated: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    deleted: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").ZodObject<{
        file: import("@botpress/sdk").ZodString;
        name: import("@botpress/sdk").ZodString;
        hash: import("@botpress/sdk").ZodString;
        size: import("@botpress/sdk").ZodNumber;
    }, "strip", {
        name: string;
        size: number;
        hash: string;
        file: string;
    }, {
        name: string;
        size: number;
        hash: string;
        file: string;
    }>, "many">>;
    errors: import("@botpress/sdk").ZodDefault<import("@botpress/sdk").ZodArray<import("@botpress/sdk").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;
}>, TState, Record<string, import("../../types").ZuiType>>;
export declare abstract class DataSource {
    readonly id: string;
    readonly type: string;
    /**
     * The workflow that handles synchronization for this data source
     * Each data source type provides its own sync workflow implementation
     */
    abstract readonly syncWorkflow: BaseWorkflow<any>;
    /**
     * Get the serializable configuration for this data source.
     * Used for computing config hashes to detect changes.
     */
    abstract getConfig(): Record<string, unknown>;
    constructor(id: string, type: string);
}
export {};
//# sourceMappingURL=source-base.d.ts.map