import { O as OwnerWithId } from '../../shared/mwm.BzqItMuW.mjs';
import * as citty from 'citty';
import { PackageJson } from 'pkg-types';
import { replaceInFile } from 'replace-in-file';
import 'c12';

declare const main: citty.CommandDef<{
    template: {
        type: "string";
        description: string;
    };
    owner: {
        alias: string;
        type: "string";
        description: string;
    };
    name: {
        type: "string";
        description: string;
    };
    description: {
        alias: string;
        type: "string";
        description: string;
    };
    dir: {
        type: "string";
        description: string;
    };
    private: {
        type: "boolean";
        default: false;
        description: string;
    };
    keywords: {
        type: "string";
        description: string;
    };
    clone: {
        type: "boolean";
        description: string;
    };
    addRemoteTemplate: {
        alias: string;
        type: "boolean";
        description: string;
    };
    fixReplacements: {
        alias: string;
        type: "boolean";
        description: string;
    };
}>;

type ReplaceReplacement = {
    type: 'replace';
} & Parameters<typeof replaceInFile>[0];
type pkgReplacement = {
    type: 'pkg';
} & {
    replace(packageJson: PackageJson, repo: Repo): PackageJson;
};
type Replacement = ReplaceReplacement | pkgReplacement;
type Replacements = Replacement[];

interface Template {
    path: string;
    owner: string;
    repo: string;
    branch: string;
    getReplacements(input: Repo): Replacements;
}

type Args = Parameters<Required<typeof main>['run']>[0]['args'];
interface Repo {
    owner: OwnerWithId;
    name: string;
    description: string;
    path: string;
    private: boolean;
    keywords?: string[];
}

declare function deployRepo(arg: boolean, repo: Repo): Promise<string>;
declare function generate(args: Args, template: Template, repo: Repo): Promise<void>;

export { deployRepo, generate };
