import type http from "node:http";
import type { Tracer } from "@opentelemetry/api";
import type { AiService } from "./ai-service/index.js";
import type { SnapshotManager } from "./ai-service/recording/snapshot-manager.js";
import type { GitService } from "./git-service/index.js";
import type { LockService } from "./lock-service/index.js";
import type { SyncService } from "./sync-service/index.js";
import type { Logger } from "./util/logger.js";
import type { OperationQueue } from "./util/operation-queue.js";
export type CheckAuthorization = (authorization: string | undefined) => Promise<{
    success: true;
} | {
    success: false;
    status: number;
    error: string;
}>;
export interface FileSyncPluginParams {
    fsOperationQueue: OperationQueue;
    syncService?: SyncService;
    lockService?: LockService;
    aiService?: AiService;
    gitService?: GitService;
    gitBootstrapFailed?: boolean;
    activateGitService?: () => Promise<GitService | undefined>;
    snapshotManager?: SnapshotManager;
    httpServer: http.Server;
    checkAuthorization: CheckAuthorization;
    tracer: Tracer;
    logger: Logger;
    /** The Superblocks base URL used to derive the domain for the GitHub workflow file. */
    superblocksBaseUrl?: string;
    /**
     * The actual application root directory (the directory containing
     * `.superblocks/`, `server/`, `client/`, etc.).
     *
     * SDK/fullstack apps set `root: "./client"` in their `vite.config.ts`,
     * which makes Vite's `config.root` resolve to the `client/` subdirectory
     * rather than the true app root. Operations that need the full app tree
     * (snapshot download, snapshot restore) must use this value instead of
     * `config.root`.
     *
     * Falls back to `config.root` when not provided.
     */
    appRootDir?: string;
    features?: {
        enableSessionRecording?: boolean;
    };
}
export type FileSyncPluginOptions = {
    legacyComponentsFolder?: string;
    isCustomBuildEnabled?: boolean;
};
export declare function setOptions(options: FileSyncPluginOptions): void;
export declare function getOptions(): FileSyncPluginOptions;
export declare function getLegacyComponentsFolder(): string;
export declare function isCustomBuildEnabled(): boolean;
//# sourceMappingURL=plugin-options.d.ts.map