import AbstractSpruceTest from '@sprucelabs/test-utils';
import EventFaker from '../__tests__/support/EventFaker';
import AbstractAction from '../features/AbstractAction';
import { FeatureOptions } from '../features/AbstractFeature';
import ActionExecuter, { ActionExecuterOptions } from '../features/ActionExecuter';
import FeatureInstaller from '../features/FeatureInstaller';
import { FeatureActionResponse, FeatureCode } from '../features/features.types';
import { GlobalEmitter } from '../GlobalEmitter';
import SpyInterface from '../interfaces/SpyInterface';
import ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory';
import StoreFactory, { StoreCode, CreateStoreOptions, StoreFactoryOptions, StoreMap } from '../stores/StoreFactory';
import { ApiClientFactoryOptions } from '../types/apiClient.types';
import { CliBootOptions, OptionOverrides } from '../types/cli.types';
import WriterFactory from '../writers/WriterFactory';
import CommandFaker from './CommandFaker';
import FeatureFixture, { FeatureFixtureOptions } from './fixtures/FeatureFixture';
import GoFixture from './fixtures/GoFixture';
import MercuryFixture from './fixtures/MercuryFixture';
import OrganizationFixture from './fixtures/OrganizationFixture';
import PersonFixture from './fixtures/PersonFixture';
import SkillFixture from './fixtures/SkillFixture';
import ViewFixture from './fixtures/ViewFixture';
export default abstract class AbstractCliTest extends AbstractSpruceTest {
    protected static cliRoot: string;
    protected static homeDir: string;
    protected static commandFaker: CommandFaker;
    private static _ui;
    private static _emitter?;
    private static mercuryFixture?;
    private static personFixture?;
    private static organizationFixture?;
    private static skillFixture?;
    private static _featureInstaller?;
    private static viewFixture?;
    private static goFixture?;
    private static originalEnv;
    private static _writers?;
    protected static eventFaker: EventFaker;
    protected static beforeAll(): Promise<void>;
    protected static beforeEach(): Promise<void>;
    protected static afterEach(): Promise<void>;
    protected static afterAll(): Promise<void>;
    private static cleanTestDirsAndFiles;
    protected static clearFixtures(): void;
    protected static setCwd(cwd: string): void;
    protected static freshTmpDir(): string;
    protected static get ui(): SpyInterface;
    protected static get emitter(): GlobalEmitter;
    protected static set emitter(emitter: GlobalEmitter);
    protected static resolveTestPath(...pathAfterTestDirsAndFiles: string[]): string;
    protected static Cli(options?: CliBootOptions): Promise<import("../types/cli.types").CliInterface>;
    protected static linkLocalPackages(): Promise<void>;
    protected static Service<S extends Service>(type: S, cwd?: string): ServiceMap[S];
    protected static ServiceFactory(): ServiceFactory;
    protected static FeatureFixture(options?: Partial<FeatureFixtureOptions>): FeatureFixture;
    protected static getMercuryFixture(): MercuryFixture;
    protected static get people(): PersonFixture;
    protected static get go(): GoFixture;
    protected static getViewFixture(): ViewFixture;
    protected static get writers(): WriterFactory;
    private static WriterFactory;
    protected static skipInstallSkillPrompts<E extends () => Promise<FeatureActionResponse>>(execute?: E): Promise<E extends undefined ? undefined : FeatureActionResponse>;
    protected static getOrganizationFixture(): OrganizationFixture;
    protected static getSkillFixture(): SkillFixture;
    protected static resolveHashSprucePath(...filePath: string[]): string;
    protected static get featureInstaller(): FeatureInstaller;
    protected static set featureInstaller(installer: FeatureInstaller);
    protected static FeatureInstaller(options?: Partial<FeatureOptions>): FeatureInstaller;
    protected static StoreFactory(options?: Partial<StoreFactoryOptions>): StoreFactory;
    protected static Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
    protected static waitForInput(): Promise<void>;
    protected static assertIsFeatureInstalled(code: FeatureCode): Promise<void>;
    protected static assertValidActionResponseFiles(results: FeatureActionResponse): Promise<void>;
    protected static assertFilePassesTypeChecks(file: string): Promise<void>;
    protected static connectToApi(options?: ApiClientFactoryOptions): Promise<import("../types/apiClient.types").ApiClient>;
    protected static openInVsCode(options?: {
        file?: string;
        dir?: string;
        timeout?: number;
    }): Promise<void>;
    protected static openInFinder(options?: {
        file?: string;
        dir?: string;
        timeout?: number;
    }): Promise<void>;
    protected static log(...args: any[]): void;
    protected static Action<Action extends AbstractAction = AbstractAction, F extends FeatureCode = FeatureCode>(featureCode: F, actionCode: string, options?: ExecuterOptions): Action;
    protected static ActionExecuter(options?: ExecuterOptions): ActionExecuter;
    protected static selectOptionBasedOnLabel(label: string): void;
}
type ExecuterOptions = Partial<ActionExecuterOptions> & {
    optionOverrides?: OptionOverrides;
};
export {};
