import "reflect-metadata";
import { AxiosInstance } from "axios";
import { Strategy, ApiInstanceOptions, VersioningOption, CacheStorage, ApiProxy, StandardResponseWithoutData, SnailServerStatusCodeRuleOptions, ResponseJsonData } from "../typings";
import { SnailApi } from "./snailApi";
import { SnailSse } from "./snailSse";
export declare const CacheStorageMap: Map<string, CacheStorage>;
export declare const CacheForMap: Map<string, string[]>;
export declare const ExpireSourceMap: Map<string, Set<string>>;
export declare const AxiosInstanceMap: Map<string, AxiosInstance>;
export declare const StrategyMap: Map<string, (new () => Strategy)[]>;
export declare const VersioningMap: Map<string, VersioningOption>;
export declare const ServerStatusCodeRuleMap: Map<string, SnailServerStatusCodeRuleOptions>;
export declare class SnailServer<RT extends StandardResponseWithoutData | ResponseJsonData = StandardResponseWithoutData, DK extends string = "data"> {
    private Name;
    private BaseURL;
    private Version;
    private EnableLog;
    constructor();
    private init;
    private initServerStatusCodeRule;
    private initLog;
    private initStrategy;
    private initVersioning;
    registerStrategies: (...strategys: Array<new () => Strategy>) => void;
    createApi<TApiClass extends SnailApi>(constructor: new (options: ApiInstanceOptions) => TApiClass): ApiProxy<TApiClass, RT, DK>;
    private initCacheManage;
    private initExpireSource;
    private initAxios;
    private getServerOptions;
    createSse<T extends SnailSse>(constructor: new (server: SnailServer) => T): SnailSse;
    get version(): string;
    get name(): string;
    get enableLog(): boolean;
    get baseUrl(): string;
}
