import type { MergeStrategy } from '../config/types' ; import type { BranchStatus , PrState , VulnerabilityAlert } from '../types' ; type VulnerabilityKey = string ; type VulnerabilityRangeKey = string ; type VulnerabilityPatch = string ; export type AggregatedVulnerabilities = Record < VulnerabilityKey , Record < VulnerabilityRangeKey , VulnerabilityPatch > > ; export interface PlatformParams { endpoint ? : string ; token ? : string ; username ? : string ; password ? : string ; gitAuthor ? : string ; } export interface PlatformResult { endpoint : string ; renovateUsername ? : string ; gitAuthor ? : string ; } export interface RepoResult { defaultBranch : string ; isFork : boolean ; } export type GitUrlOption = 'default' | 'ssh' | 'endpoint' ; export interface RepoParams { repository : string ; endpoint ? : string ; gitUrl ? : GitUrlOption ; forkMode ? : string ; forkToken ? : string ; includeForks ? : boolean ; renovateUsername ? : string ; cloneSubmodules ? : boolean ; ignorePrAuthor ? : boolean ; } /**
 *
 */ export interface Pr { body ? : string ; sourceBranch : string ; canMerge ? : boolean ; canMergeReason ? : string ; createdAt ? : string ; closedAt ? : string ; displayNumber ? : string ; hasAssignees ? : boolean ; hasReviewers ? : boolean ; isConflicted ? : boolean ; labels ? : string [ ] ; number ? : number ; reviewers ? : string [ ] ; sha ? : string ; sourceRepo ? : string ; state : string ; targetBranch ? : string ; title : string ; isDraft ? : boolean ; } /**
 * TODO: Proper typing
 */ export interface Issue { body ? : string ; number ? : number ; state ? : string ; title ? : string ; } export type PlatformPrOptions = { azureAutoApprove ? : boolean ; azureWorkItemId ? : number ; bbUseDefaultReviewers ? : boolean ; gitLabIgnoreApprovals ? : boolean ; usePlatformAutomerge ? : boolean ; } ; export interface CreatePRConfig { sourceBranch : string ; targetBranch : string ; prTitle : string ; prBody : string ; labels ? : string [ ] | null ; platformOptions ? : PlatformPrOptions ; draftPR ? : boolean ; } export interface UpdatePrConfig { number : number ; platformOptions ? : PlatformPrOptions ; prTitle : string ; prBody ? : string ; state ? : PrState . Open | PrState . Closed ; } export interface EnsureIssueConfig { title : string ; reuseTitle ? : string ; body : string ; labels ? : string [ ] ; once ? : boolean ; shouldReOpen ? : boolean ; confidential ? : boolean ; } export interface BranchStatusConfig { branchName : string ; context : string ; description : string ; state : BranchStatus ; url ? : string ; } export interface FindPRConfig { branchName : string ; prTitle ? : string | null ; state ? : PrState . Open | PrState . Closed | PrState . NotOpen | PrState . All ; refreshCache ? : boolean ; } export interface MergePRConfig { branchName ? : string ; id : number ; strategy ? : MergeStrategy ; } export interface EnsureCommentConfig { number : number ; topic : string ; content : string ; } export interface EnsureCommentRemovalConfigByTopic { number : number ; topic : string ; } export interface EnsureCommentRemovalConfigByContent { number : number ; content : string ; } export interface EnsureCommentRemovalConfig { number : number ; content ? : string ; topic ? : string ; } export type EnsureIssueResult = 'updated' | 'created' ; export interface Platform { findIssue ( title ) : Promise < Issue | null > ; getIssueList ( ) : Promise < Issue [ ] > ; getIssue ? ( number , useCache ? ) : Promise < Issue > ; getVulnerabilityAlerts ( ) : Promise < VulnerabilityAlert [ ] > ; getRawFile ( fileName , repoName ? , branchOrTag ? ) : Promise < string | null > ; getJsonFile ( fileName , repoName ? , branchOrTag ? ) : Promise < any | null > ; initRepo ( config ) : Promise < RepoResult > ; getPrList ( ) : Promise < Pr [ ] > ; ensureIssueClosing ( title ) : Promise < void > ; ensureIssue ( issueConfig ) : Promise < EnsureIssueResult | null > ; massageMarkdown ( prBody ) : string ; updatePr ( prConfig ) : Promise < void > ; mergePr ( config ) : Promise < boolean > ; addReviewers ( number , reviewers ) : Promise < void > ; addAssignees ( number , assignees ) : Promise < void > ; createPr ( prConfig ) : Promise < Pr > ; getRepos ( ) : Promise < string [ ] > ; getRepoForceRebase ( ) : Promise < boolean > ; deleteLabel ( number , label ) : Promise < void > ; setBranchStatus ( branchStatusConfig ) : Promise < void > ; getBranchStatusCheck ( branchName , context ) : Promise < BranchStatus | null > ; ensureCommentRemoval ( ensureCommentRemoval ) : Promise < void > ; ensureComment ( ensureComment ) : Promise < boolean > ; getPr ( number ) : Promise < Pr > ; findPr ( findPRConfig ) : Promise < Pr > ; refreshPr ? ( number ) : Promise < void > ; getBranchStatus ( branchName ) : Promise < BranchStatus > ; getBranchPr ( branchName ) : Promise < Pr | null > ; initPlatform ( config ) : Promise < PlatformResult > ; filterUnavailableUsers ? ( users ) : Promise < string [ ] > ; }