import type { FastifyInstance, FastifyPluginCallback } from 'fastify';
import type { ResolvedCliOptions } from '../../utils/config/cli-options';
export type FileMap = Record<string, {
    content: Buffer;
    filename?: string;
    sourceMap?: Buffer;
    isOfType?: 'function' | 'action';
}>;
/** Configuration options */
export type FastifyAppFunctionPluginOptions = {
    /** Absolute path to the app */
    baseDir: string;
    /** Absolute path to the app functions */
    functionsDir: string;
    /** The base path where the app functions are served under */
    apiBasePath: string;
    /** A function that provides a token */
    getToken: () => Promise<string>;
    /** The environment URL */
    environmentUrl: string;
    /** The app ID */
    appId: string;
    /** The app version */
    appVersion: string;
    /** The app Name */
    appName: string;
    /** The tenant ID */
    tenantId?: string;
    /** Localhost endpoint URL */
    devProxyUrl: string;
    /** Either ExecutionMode.RUNTIME or ExecutionMode.RUNTIME_SIMULATOR */
    executionMode: ExecutionMode;
};
export declare const enum ExecutionMode {
    RUNTIME_SIMULATOR = "runtime-simulator",
    RUNTIME = "js-runtime"
}
/** Factory function for creating the fastify app function plugin */
export declare function fastifyAppFunctionPlugin(
/** Options for the fastify plugin */
options: FastifyAppFunctionPluginOptions): Promise<{
    plugin: FastifyPluginCallback;
    update: (fileMap: FileMap, reset?: boolean) => void;
}>;
/** Returns updateFunctions */
export declare function executeUpdateFunctions(fileMap: FileMap): void;
/** Helper function that will register new function plugin on the fastify server */
export declare function registerFunctionPlugin(options: ResolvedCliOptions, server: FastifyInstance): Promise<void>;
