import { SpruceSchemas } from '@sprucelabs/spruce-core-schemas';
import AbstractStore, { StoreOptions } from '../../../stores/AbstractStore';
import { CurrentSkill, RegisteredSkill } from '../../../types/cli.types';
export default class SkillStoreImpl extends AbstractStore implements SkillStore {
    readonly name = "skill";
    private static currentSkill?;
    constructor(options: StoreOptions<SkillStoreOptions>);
    static clearCurrentSkill(): void;
    register(values: CreateSkill, options?: RegisterSkillOptions): Promise<RegisteredSkill>;
    private assertInSkill;
    loadCurrentSkill(): Promise<CurrentSkill>;
    publish(options?: PublishOptions): Promise<void>;
    isCurrentSkillRegistered(): Promise<boolean>;
    getGoModuleName(options?: {
        shouldIncludePathFromCwd?: boolean;
    }): string;
    private getNamespaceFromPkg;
    private isGoModule;
    loadCurrentSkillsNamespace(): Promise<Capitalize<string>>;
    setCurrentSkillsNamespace(namespace: string): Promise<void>;
    private getEventNamespaceForNotRegistered;
    private getSkillDescriptionFromPkg;
    unregisterSkill(skillId?: string): Promise<void>;
    fetchMySkills(): Promise<Pick<import("@sprucelabs/schema").SchemaStaticValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false>>, "id" | "name" | "description" | "slug" | "isPublished" | "canBeInstalled" | "dateCreated" | "dateDeleted">[]>;
    static setCurrentSkill(skill: CurrentSkill): void;
    fetchAllSkills(query?: {
        shouldOnlyShowMine?: boolean;
        namespaces?: string[];
    }): Promise<Pick<import("@sprucelabs/schema").SchemaStaticValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false, import("@sprucelabs/schema").SchemaOptionalFieldNames<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema>, import("@sprucelabs/schema").StaticSchemaAllValues<SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkillSchema, false>>, "id" | "name" | "description" | "slug" | "isPublished" | "canBeInstalled" | "dateCreated" | "dateDeleted">[]>;
}
export interface CreateSkill {
    name: string;
    slug?: string;
    description?: string;
    isPublished?: boolean;
}
export interface RegisterSkillOptions {
    isRegisteringCurrentSkill?: boolean;
}
export interface SkillStoreOptions {
}
export interface SkillStore {
    name: 'skill';
    register(values: CreateSkill, options?: RegisterSkillOptions): Promise<RegisteredSkill>;
    loadCurrentSkill(): Promise<CurrentSkill>;
    isCurrentSkillRegistered(): Promise<boolean>;
    setCurrentSkillsNamespace(namespace: string): Promise<void>;
    fetchMySkills(): Promise<ListSkill[]>;
    fetchAllSkills(query?: {
        shouldOnlyShowMine?: boolean;
        namespaces?: string[];
    }): Promise<ListSkill[]>;
    unregisterSkill(skillId?: string): Promise<void>;
    publish(options?: {
        isInstallable?: boolean;
    }): Promise<void>;
}
type ListSkill = SpruceSchemas.Mercury.v2020_12_25.ListSkillsSkill;
export interface PublishOptions {
    isInstallable?: boolean;
}
export {};
