import type { BkndConfig } from "bknd/adapter";
import { type BkndModeConfig } from "./shared";
import { type MaybePromise, type Merge } from "..";
export type BkndHybridModeOptions = {
    /**
     * Reader function to read the configuration from the file system.
     * This is required for hybrid mode to work.
     */
    reader?: (path: string) => MaybePromise<string | object>;
    /**
     * Provided secrets to be merged into the configuration
     */
    secrets?: Record<string, any>;
};
export type HybridBkndConfig<Args = any> = BkndModeConfig<Args, BkndHybridModeOptions>;
export type HybridMode<AdapterConfig extends BkndConfig> = AdapterConfig extends BkndConfig<infer Args> ? BkndModeConfig<Args, Merge<BkndHybridModeOptions & AdapterConfig>> : never;
export declare function hybrid<Config extends BkndConfig, Args = Config extends BkndConfig<infer A> ? A : unknown>(hybridConfig: HybridMode<Config>): BkndConfig<Args>;
