import { Writable } from 'node:stream'; import { ReleaseType } from 'semver'; interface PackageManifest { [key: string]: unknown; dependencies?: Record; devDependencies?: Record; name: string; optionalDependencies?: Record; peerDependencies?: Record; private?: boolean; version: string; } interface Commit { [key: string]: unknown; committerDate: Date; gitTags: string; hash: string; message: string; subject: string; } interface Package { _analyzed?: boolean; _branch?: string; _depsUpdated?: boolean; _lastRelease?: Release; _nextRelease?: Release; _nextType?: ReleaseType | null; _prepared?: boolean; _preRelease?: string | null; _published?: boolean; _ready?: boolean; deps: string[]; dir: string; localDeps: Package[]; manifest: PackageManifest; name: string; options: Record; path: string; plugins: PluginFunctions; result?: ReleaseResult | false; } interface Release { [key: string]: unknown; channel?: string; gitHead?: string; gitTag?: string; notes?: string; version: string; } interface ReleaseResult { [key: string]: unknown; commits?: Commit[]; lastRelease?: Release; nextRelease?: Release; releases?: Release[]; } interface PluginFunctions { analyzeCommits?: (context: SemanticReleaseContext) => Promise; generateNotes?: (context: SemanticReleaseContext) => Promise; prepare?: (context: SemanticReleaseContext) => Promise; publish?: (context: SemanticReleaseContext) => Promise; verifyConditions?: (context: SemanticReleaseContext) => Promise; verifyRelease?: (context: SemanticReleaseContext) => Promise; } interface SemanticReleaseContext { [key: string]: unknown; branch?: Branch; commits?: Commit[]; cwd: string; env: Record; lastRelease?: Release; logger?: Record; nextRelease?: Release; options: Record & { _pkgOptions?: Record; }; stderr: Writable; stdout: Writable; } interface Branch { [key: string]: unknown; name: string; prerelease?: string | null; } type ReleaseStrategy = "patch" | "minor" | "major" | "inherit"; interface MultiReleaseConfig { [key: string]: unknown; branches?: string[] | string; ci?: boolean; debug?: boolean; deps?: { bump?: "override" | "satisfy" | "inherit"; prefix?: string; release?: ReleaseStrategy | { major?: Omit; minor?: Omit; patch?: Omit; }; }; dryRun?: boolean; firstParent?: boolean; ignorePackages?: string[]; ignorePrivate?: boolean; sequentialInit?: boolean; sequentialPrepare?: boolean; silent?: boolean; tagFormat?: string; } interface InputOptions { [key: string]: unknown; } interface Flags extends MultiReleaseConfig { [key: string]: unknown; logLevel?: string; } declare const multiSemanticRelease: (paths?: string[] | null, inputOptions?: InputOptions, { cwd, env: environment, stderr, stdout }?: { cwd?: string; env?: NodeJS.ProcessEnv; stderr?: NodeJS.WriteStream; stdout?: NodeJS.WriteStream; }, flags?: Flags) => Promise; export { multiSemanticRelease as default };