import { MSBuildProject } from "./MSBuildProject.mjs";
import { NugetRegistryInfo } from "./NugetRegistryInfo.mjs";
import { Type } from "arktype";
import { Default } from "arktype/internal/attributes.ts";
//#region src/dotnet/helpers.d.ts
/**
 * Build a prepareCmd string from .NET projects.\
 * This will include a `dotnet publish` for each project's RID and TFM permutation,\
 * `dotnet pack` for each project with output paths separated by NuGet Source and PackageId,\
 * and `dotnet nuget sign` for each nupkg output directory.
 * @todo parse Solution files to publish all projects with default Publish parameters (as evaluated by MSBuild).
 * @param projectsToPublish An array of relative or full file paths of `.csproj`
 * projects  -OR- an array of {@link MSBuildProject} objects.
 * The project paths will be passed to `dotnet publish` commands.
 * @param projectsToPackAndPush
 *  Relative and/or full file paths of projects to pass to `dotnet pack`. If
 *  string[], only the default NuGet Source will be used. If GitHub, GitLab,
 *  etc. are also desired, pass {@link NugetRegistryInfo}[]
 * @param dotnetNugetSignOpts A {@link DotnetNugetSignOptions} object. The value
 * of the `--output` argument will be set to {@link ourDefaultPubDir} if `undefined`.
 * @returns A single string of CLI commands joined by ' && '
 */
declare function configurePrepareCmd(projectsToPublish: string[] | MSBuildProject[], projectsToPackAndPush?: string[] | NugetRegistryInfo[], dotnetNugetSignOpts?: typeof DotnetNugetSignOptions.inferIn): Promise<string>;
/**
 * Prepare the CLI command to push NuGet packages. This should added to the `publishCmd` option of `@semantic-release/exec`
 *
 * Ensure your verifyConditionsCmd is set to prevent releases failing due to bad tokens or packages!
 * See {@link NugetRegistryInfo#PackDummyPackage}, {@link NugetRegistryInfo#GetPushDummyCommand}
 * @param registryInfos an array of {@link NugetRegistryInfo} (or derived classes) instances.
 * @param packageOutputPath Default: `${cwd()}/publish`.\
 * The directory at which dotnet outputs the given projects' packages. Passed to
 * `dotnet pack` via the `--output` argument.
 * @returns a string of `dotnet pack` and `dotnet push` commands, joined by ' && '.
 */
declare function configureDotnetNugetPush(registryInfos: NugetRegistryInfo[], packageOutputPath?: string): string;
declare const DotnetNugetSignOptions: Type<{
  timestamper: Default<string, "https://rfc3161.ai.moda/">;
  certificatePassword?: string | undefined;
  hashAlgorithm?: string | undefined;
  output?: string | undefined;
  overwrite?: true | undefined;
  timestampHashAlgorithm?: string | undefined;
  verbosity?: "q" | "quiet" | "m" | "minimal" | "n" | "normal" | "d" | "detailed" | "diag" | "diagnostic";
} & ({
  certificatePath: string;
  certificateSubjectName: string;
} | {
  certificatePath: string;
  certificateFingerprint: string;
} | {
  certificateStoreName: string;
  certificateSubjectName: string;
} | {
  certificateStoreName: string;
  certificateFingerprint: string;
} | {
  certificateStoreLocation: string;
  certificateSubjectName: string;
} | {
  certificateStoreLocation: string;
  certificateFingerprint: string;
})>;
//#endregion
export { configureDotnetNugetPush, configurePrepareCmd };
//# sourceMappingURL=helpers.d.mts.map