import * as ajv from 'ajv';
import * as _artipub_core from '@artipub/core';
import { PublishResult } from '@artipub/core';
import * as _artipub_shared from '@artipub/shared';
import { NativePublisherOption, NotionPublisherPluginOption, DevToPublisherPluginOption, GithubPicBedOption } from '@artipub/shared';

type PlatformOptions = {
    native?: NativePublisherOption;
    notion?: NotionPublisherPluginOption;
    devTo?: DevToPublisherPluginOption;
};
type PlatformAnswers = {
    [K in keyof PlatformOptions]: PlatformOptions[K];
};
interface ArticleConfig {
    githubOption: GithubPicBedOption;
    platforms: PlatformAnswers;
}
interface AddOrUpdateCommandOptions {
    config?: string;
}
interface ConfigCommandOptions {
    edit: boolean;
}
type ActionType = "Add" | "Update";
type RunResult = PublishResult[] | undefined | void | null;

declare const _default: {
    interact: {
        interactPrompt(): Promise<{
            githubAnswers: _artipub_shared.GithubPicBedOption;
            platformAnswers: PlatformAnswers;
        }>;
        promptForPlatform(platforms: string[]): Promise<string[]>;
    };
    command: {
        help(): void;
        answersToConfig(answers: {
            githubAnswers: _artipub_shared.GithubPicBedOption;
            platformAnswers: PlatformAnswers;
        }): ArticleConfig;
        updateArticle(type: ActionType, articlePath: string, config: ArticleConfig, pluginNameMapConfigPropertyName?: Record<string, string>): Promise<_artipub_core.PublishResult[]>;
        updateArticleToPlatform(articlePath: string, config: ArticleConfig, pluginNameMapConfigPropertyName?: Record<string, string>): Promise<_artipub_core.PublishResult[]>;
        validateConfig(config: any): boolean;
        saveConfigToUserHome(saveConfig: ArticleConfig): void;
        resolveConfigPath(configPath: string | undefined): string | undefined;
        confirmConfig(config: ArticleConfig): Promise<void>;
        handleAddOrUpdate(type: ActionType, articlePath: string, options: AddOrUpdateCommandOptions): Promise<RunResult>;
        openConfigFile(options: ConfigCommandOptions): void;
        clearCache(): void;
        registerCommands(resolve: (value?: RunResult) => RunResult, reject: (message: string) => void, args?: any): void;
    };
    run(args?: any): Promise<RunResult>;
    getHelpInfo(): string;
    projectName: any;
    nativePlatformSchema: ajv.JSONSchemaType<{
        destination_path: string;
        cdn_prefix?: string;
        res_domain?: string;
    }>;
    notionPlatformSchema: ajv.JSONSchemaType<{
        api_key: string;
        data_base_id?: string;
        page_id: string;
    }>;
    devToPlatformSchema: ajv.JSONSchemaType<{
        api_key: string;
        published?: boolean;
        series?: string;
        main_image?: string;
        description?: string;
        organization_id?: number;
    }>;
    schema: ajv.JSONSchemaType<{
        githubOption: {
            owner: string;
            repo: string;
            dir: string;
            branch: string;
            token: string;
            cdn_prefix: string;
            commit_author: string;
            commit_email: string;
        };
        platforms: {
            native?: {
                destination_path: string;
                cdn_prefix?: string;
                res_domain?: string;
            };
            notion?: {
                api_key: string;
                data_base_id?: string;
                page_id: string;
            };
            "dev.to"?: {
                api_key: string;
                published?: boolean;
                series?: string;
                main_image?: string;
                description?: string;
                organization_id?: number;
            };
        };
    }>;
    getConfigPath(dir: string): string | undefined;
    loadConfig(configPath: string): Promise<ArticleConfig>;
};

export { type ActionType, type AddOrUpdateCommandOptions, type ArticleConfig, type ConfigCommandOptions, type PlatformAnswers, type PlatformOptions, type RunResult, _default as default };
//# sourceMappingURL=index.d.ts.map
