import stream from 'node:stream'; interface BranchObject { channel?: string | false; name: string; prerelease?: boolean | string; range?: string; } type BranchSpec$1 = BranchObject | string; type PluginSpec = string | [string, T]; interface Options { [name: string]: any; branches?: BranchSpec$1 | ReadonlyArray; ci?: boolean; dryRun?: boolean; extends?: ReadonlyArray | string; plugins?: ReadonlyArray; repositoryUrl?: string; tagFormat?: string; } interface Commit { author: { email: string; name: string; short: string; }; body: string; commit: { long: string; short: string; }; committer: { email: string; name: string; short: string; }; committerDate: string; hash: string; message: string; subject: string; tree: { long: string; short: string; }; } type CommonContext2 = CommonContext & { releases: Release[]; }; type CommonContext3 = CommonContext2 & { commits: Commit[]; lastRelease: Release; }; type CommonContext4 = CommonContext3 & { nextRelease: Release; }; interface BranchSpec { name: string; tags?: Tag[]; } interface Tag { channel?: string; gitHead?: string; gitTag?: string; version?: string; } interface Release { channel?: string | null; gitHead?: string; gitTag?: string; name?: string; type?: "build" | "major" | "minor" | "patch" | "premajor" | "preminor" | "prepatch" | "prerelease"; version: string; } interface CommonContext { branch: BranchSpec; branches: BranchSpec[]; cwd: string; env: "object"; logger: { error: (...message: string[]) => void; log: (...message: string[]) => void; success: (...message: string[]) => void; }; options: Options; stderr: stream.Writable; stdout: stream.Writable; } type PublishContext = CommonContext4; interface PluginConfig { keep?: string[]; pkgRoot?: string; } declare const publish: (pluginConfig: PluginConfig, context: PublishContext) => Promise; declare const success: (pluginConfig: PluginConfig, context: CommonContext) => Promise; export { publish, success };