import type { FnDefArgs } from '../../lib/ffi.types.js';
import type { IKoffiLib, KoffiFunction, MultipleChoiceMapperList, MultipleChoiceMapperSet } from '../../lib/types.js';
export declare class LoaderCache {
    static readonly cacheLibMap: Map<string, IKoffiLib>;
    static readonly regCacheMap: WeakMap<IKoffiLib, Map<string, Map<FnDefArgs, KoffiFunction>>>;
    static readonly multipleChoiceMapperList: WeakMap<IKoffiLib, MultipleChoiceMapperList>;
    /**
     * Get function by definition arguments of the function
     */
    static getFuncByDefArgs(lib: IKoffiLib, fnName: string, defArgs: FnDefArgs): KoffiFunction | undefined;
    /**
     * Get function definition arguments
     */
    static getFnDefArgs(lib: IKoffiLib, fnName: string): FnDefArgs[];
    static getLibByName(dllName: string): IKoffiLib | undefined;
    static setLibByName(dllName: string, lib: IKoffiLib): void;
    static removeLibByName(dllName: string): void;
    static getRegisteredFunc(lib: IKoffiLib, fnName: string): KoffiFunction | undefined;
    /**
     *
     * @note return Map<FnDefArgs, KoffiFunction> | undefined
     */
    static getRegisteredFuncMap(lib: IKoffiLib, fnName: string): Map<FnDefArgs, KoffiFunction> | undefined;
    static setRegisteredFuncToCache(lib: IKoffiLib, name: string, fn: KoffiFunction, defArgs: FnDefArgs): void;
    static removeRegisteredFuncFromCache(lib: IKoffiLib, name: string): void;
    /**
     * Get multiple choice list mapper by function name, return Set
     *
     */
    static getMultipleChoiceListMapperSet(lib: IKoffiLib, fnName: string): MultipleChoiceMapperSet | undefined;
    static updateMultipleChoiceListMapper(lib: IKoffiLib, fnMapperList: MultipleChoiceMapperList): void;
    static removeMultipleChoiceListMapper(lib: IKoffiLib, fnName: string): void;
}
//# sourceMappingURL=loader.cache.d.ts.map