import { GlobalEmitter } from '../GlobalEmitter';
import ServiceFactory, { ServiceProvider, Service, ServiceMap } from '../services/ServiceFactory';
import { ApiClientFactory, ApiClient, ApiClientFactoryOptions } from '../types/apiClient.types';
export default abstract class AbstractStore implements ServiceProvider {
    protected cwd: string;
    protected homeDir: string;
    protected apiClientFactory: ApiClientFactory;
    protected emitter: GlobalEmitter;
    abstract name: string;
    private serviceFactory;
    constructor(options: StoreOptions);
    Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
    protected connectToApi(options?: ApiClientFactoryOptions): Promise<ApiClient>;
}
interface AbstractStoreOptions {
    serviceFactory: ServiceFactory;
    cwd: string;
    homeDir: string;
    apiClientFactory: ApiClientFactory;
    emitter: GlobalEmitter;
}
export type StoreOptions<Options extends Record<string, any> | undefined = undefined> = Options extends Record<string, any> ? AbstractStoreOptions & Options : AbstractStoreOptions;
export {};
