import { Creatium } from 'creatium';

declare const core: Creatium;

declare type CoreParams = NonNullable<Parameters<typeof core.build>[0]>;

/**
 * Create project template.
 * @param   {CreateParams}    params - The parameters required for creation.
 * @param   {CreateOpts}      opts   - Optional configuration options.
 * @returns {Promise<object>}        - A promise that resolves to the result of the creation process.
 */
export declare const create: (params: CreateParams, opts?: CreateOpts) => Promise<{
    openEditor?: undefined;
    install?: undefined;
    input?: string | undefined;
    name?: undefined;
    output?: string | undefined;
}>;

export declare type CreateOpts = Parameters<typeof core.build>[1];

export declare type CreateParams = Prettify<Omit<CoreParams, 'input'> & {
    /** Input: teemplate key or path. */
    input?: typeof TEMPLATE[keyof typeof TEMPLATE];
}>;

declare type Prettify<T> = {
    [K in keyof T]: T[K];
} & {};

/** Templates ID. Identifiers values are equal to folder names. */
export declare const TEMPLATE: {
    readonly DEMO: "demo";
    readonly DEMO_TS: "demo-ts";
    readonly SKELETON: "skeleton";
    readonly SKELETON_TS: "skeleton-ts";
};

export { }
