import AgentStore from '../features/agent/stores/AgentStore';
import ConversationStore from '../features/conversation/stores/ConversationStore';
import EventStore from '../features/event/stores/EventStore';
import ListenerStore from '../features/event/stores/ListenerStore';
import OnboardingStore from '../features/onboard/stores/OnboardingStore';
import OrganizationStore from '../features/organization/stores/OrganizationStore';
import PermissionStore from '../features/permission/stores/PermissionStore';
import SchemaStore from '../features/schema/stores/SchemaStore';
import SkillStoreImpl, { SkillStoreOptions } from '../features/skill/stores/SkillStore';
import StoreStore from '../features/store/stores/StoreStore';
import ViewStore from '../features/view/stores/ViewStore';
import { GlobalEmitter } from '../GlobalEmitter';
import ServiceFactory from '../services/ServiceFactory';
import { ApiClientFactory } from '../types/apiClient.types';
export default class StoreFactory {
    private serviceFactory;
    private cwd;
    private homeDir;
    private apiClientFactory;
    private emitter;
    constructor(options: StoreFactoryOptions);
    Store<C extends StoreCode>(code: C, options?: CreateStoreOptions<C>): StoreMap[C];
}
interface UniversalOptions {
    cwd?: string;
    apiClientFactory?: ApiClientFactory;
}
export type CreateStoreOptions<Code extends StoreCode> = Code extends keyof StoreOptionsMap ? //@ts-ignore
StoreOptionsMap[Code] & UniversalOptions : UniversalOptions;
export interface StoreMap {
    onboarding: OnboardingStore;
    schema: SchemaStore;
    event: EventStore;
    skill: SkillStoreImpl;
    organization: OrganizationStore;
    conversation: ConversationStore;
    store: StoreStore;
    view: ViewStore;
    listener: ListenerStore;
    permission: PermissionStore;
    agent: AgentStore;
}
export type StoreCode = keyof StoreMap;
export interface StoreFactoryOptions {
    cwd: string;
    serviceFactory: ServiceFactory;
    homeDir: string;
    apiClientFactory: ApiClientFactory;
    emitter: GlobalEmitter;
}
export interface StoreOptionsMap {
    skill: SkillStoreOptions;
}
export {};
