import { logger } from "./logger";
import { ServerOptions } from "./server";
import { Plugin } from "./plugin";
import { BuildOptions } from "./build";
import { InternalResolveOptions, ResolveFn, ResolveOptions } from "./plugins/resolve";
import { DepHandler } from "./deps";
import { PackageCache } from "./package";
import { CSSOptions } from "./plugins/css";
export declare const DEFAULT_SERVER_PORT = 5858;
export declare const DEFAULT_WS_PORT = 25679;
export declare const FILE_SUFFIX = "joker";
export declare const ID_PREFIX = "/@id/";
export declare const FS_PREFIX = "/@fs/";
export declare const NULL_BYTE_PLACHOLDER = "__J00J__";
export declare const CLIENT_PLUBLIC_PATH = "/@joker.front/client";
export declare const INTERNAL_REQUEST: string[];
export declare const CLIENT_ENTRY: string;
export declare const CLIENT_DIR: string;
export declare const version: any;
export declare const ESBUILD_MODULES_TARGET: string[];
export declare const DEFAULT_EXTENSIONS: string[];
export declare const DEFAULT_MAIN_FIELDS: string[];
export interface Config {
    /**
     * Project root directory
     * @default process.cwd()
     */
    root?: string;
    /**
     * Public base path when serving in production
     * @default '/'
     */
    base?: string;
    /**
     * Execution mode
     * - 'server': Run development server only
     * - 'build': Build project without starting server
     * @default 'server'
     */
    command?: "server" | "build";
    /**
     * Environment mode (corresponds to process.env.NODE_ENV)
     * @default 'development'
     */
    mode?: string;
    /**
     * Development server configuration
     */
    server?: ServerOptions;
    /**
     * Build configuration
     */
    build?: BuildOptions;
    /**
     * Cache directory for dependencies and intermediate files
     * @default 'node_modules/.joker'
     */
    cacheDir?: string;
    /**
     * Public directory for static assets that are copied directly to output
     * Set to false to disable
     * @default 'public'
     */
    publicDir?: string | false;
    /**
     * Logging level
     * @default 'info'
     */
    logLevel?: logger.leve;
    /**
     * Enable esbuild for faster builds
     * @default true
     */
    esbuild?: boolean;
    /**
     * Additional file extensions to treat as assets
     */
    assetsInclude?: string[];
    /**
     * Plugins to extend the build system
     */
    plugins?: Plugin[] | Array<Plugin[]>;
    /**
     * Module resolution options
     */
    resolve?: ResolveOptions;
    /**
     * Global definitions available in source code via import.meta.define
     */
    define?: Record<string, any>;
    /**
     * CSS processing options
     */
    css?: CSSOptions;
}
export interface ResolvedConfig extends Required<Omit<Config, "plugins">> {
    createResolver: (option: Partial<InternalResolveOptions>) => ResolveFn;
    /**
     * 引用管理
     */
    depHandler: DepHandler;
    /**
     * package.json 解析缓存
     */
    packageCache: PackageCache;
    build: Required<BuildOptions>;
    configPath?: string;
    /**
     * packageJson 文件地址
     */
    pkgPath?: string;
    plugins: Plugin[];
}
export declare function resolveCliConfig(cliConfig: Config, command: Config["command"], configPath?: string | false): Promise<ResolvedConfig>;
export declare function getConfigHash(config: ResolvedConfig): string;
export declare const ASSET_TYPES: string[];
export declare function getClinetImport(config: ResolvedConfig): string;
