import { SettingsService, EnvService, AuthService } from '@sprucelabs/spruce-skill-utils';
import EventCacheService from '../features/event/services/EventCacheService';
import RemoteService from '../features/event/services/RemoteService';
import SchemaService from '../features/schema/services/SchemaService';
import VsCodeService from '../features/vscode/services/VsCodeService';
import BuildService from './BuildService';
import CommandServiceImpl from './CommandService';
import DependencyService from './DependencyService';
import ImportService from './ImportService';
import LintService from './LintService';
import PkgService from './PkgService';
import TypeCheckerService from './TypeCheckerService';
export default class ServiceFactory {
    static serviceClassOverides: Record<string, any>;
    static setServiceClass(name: Service, Class: any): void;
    Service<S extends Service>(cwd: string, type: S): ServiceMap[S];
    private buildImportService;
    static reset(): void;
    static setFactoryClass(name: string, Class: any): void;
}
export interface ServiceMap {
    pkg: PkgService;
    vsCode: VsCodeService;
    schema: SchemaService;
    lint: LintService;
    command: CommandServiceImpl;
    typeChecker: TypeCheckerService;
    import: ImportService;
    build: BuildService;
    settings: SettingsService;
    env: EnvService;
    auth: AuthService;
    remote: RemoteService;
    eventCache: EventCacheService;
    dependency: DependencyService;
}
export type Service = keyof ServiceMap;
export interface ServiceProvider {
    Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
}
