import { MutexInterface } from 'async-mutex';
import { Locks } from './locks.cjs';
import { CacheStack } from './stack/cache-stack.cjs';
import { GetSetFactory } from '../types/helpers.cjs';
import { CacheStackWriter } from './stack/cache-stack-writer.cjs';
import { CacheEntryOptions } from './cache-entry/cache-entry-options.cjs';
import '../../events-BJQnbTp3.cjs';
import '../types/bus.cjs';
import '@boringnode/bus/types/main';
import '../bus/bus.cjs';
import './facades/local-cache.cjs';
import './cache-entry/cache-entry.cjs';
import '../../mastercache-CD6UEBYT.cjs';
import '../types/driver.cjs';
import '../types/provider.cjs';
import '../types/options/methods-options.cjs';
import '../types/options/options.cjs';
import 'typescript-log';
import '../types/options/drivers-options.cjs';
import 'knex';
import 'kysely';
import '@aws-sdk/client-dynamodb';
import 'ioredis';
import 'orchid-orm';
import './facades/remote-cache.cjs';
import '../drivers/base-driver.cjs';
import '../mastercache-options.cjs';

/**
 * Factory Runner is responsible for executing factories
 */
declare class FactoryRunner {
    #private;
    constructor(stack: CacheStack, stackWriter: CacheStackWriter, locks: Locks);
    saveBackgroundFactoryResult(key: string, factoryResult: unknown, options: CacheEntryOptions, lockReleaser: MutexInterface.Releaser): Promise<void>;
    writeFactoryResult(key: string, item: unknown, options: CacheEntryOptions, lockReleaser: MutexInterface.Releaser): Promise<void>;
    run(key: string, factory: GetSetFactory, hasFallback: boolean, options: CacheEntryOptions, lockReleaser: MutexInterface.Releaser): Promise<any>;
}

export { FactoryRunner };
