import type { JenkinsConfig } from './config.js'; export declare function basicAuth(username: string, token: string): string; export declare function baseUrl(cfg: JenkinsConfig): string; export declare function authHeaders(cfg: JenkinsConfig): Record; /** * CSRF crumb (best-effort). crumb issuer 비활성이거나 API 토큰으로 면제되면 빈 객체. * 구버전 Jenkins / 비밀번호 인증 환경에서 POST 403 방지. */ export declare function getCrumb(cfg: JenkinsConfig): Promise>; /** crumb 조회 결과 — `disabled` 는 crumb issuer 가 꺼져 있음(404), `failed` 는 그 밖의 모든 실패. */ export type CrumbResult = { kind: 'ok'; headers: Record; } | { kind: 'disabled'; } | { kind: 'failed'; status?: number; }; /** * crumb 을 결과 종류와 함께 돌려준다. getCrumb 은 이것의 best-effort 판(실패 = 빈 객체)이다. * jenkins_trigger_build 는 `redirect: 'manual'` 로 불러 인증 헤더를 단 채 다른 곳으로 따라가지 않고, * `failed` 면 POST 하지 않는다. */ export declare function requestCrumb(cfg: JenkinsConfig, options?: { redirect?: RequestRedirect; maxAttempts?: number; }): Promise; /** * 엄격한 잡 경로 검사 — 빌드 도구(jenkins_trigger_build · jenkins_get_build_status)의 입력 스키마가 쓴다. * * jobUrl 은 세그먼트마다 encodePathSegment 로 인코딩하고 `.`/`..` 를 거부하지만, 옛 도구 호환 때문에 * 빈 세그먼트(`a//b`, 끝의 `/`)는 조용히 버린다. 빌드를 **실행**하는 경로에서는 그런 모호함도 받지 않는다: * 빈·공백뿐인 세그먼트, `.`/`..`, 백슬래시(일부 프록시가 `/` 로 바꾼다), 제어 문자를 모두 거절한다. */ export declare function isStrictJobPath(jobPath: string): boolean; /** * 잡 경로를 Jenkins URL 로 바꾼다. 폴더는 `/` 로 구분한다. * "my-app" -> /job/my-app * "team-folder/my-app" -> /job/team-folder/job/my-app * 세그먼트는 encodePathSegment 로 인코딩한다 — `..` 세그먼트가 URL 정규화로 상위 경로(다른 잡)를 * 가리키지 못하게 거부한다. */ export declare function jobUrl(cfg: JenkinsConfig, jobPath: string): string; /** * createItem 은 "부모 컨테이너" 에 POST 하고 leaf 이름을 쿼리로 넘긴다. * 루트 잡이면 부모가 Jenkins 루트, 폴더 안이면 폴더 URL. */ export declare function createItemUrl(cfg: JenkinsConfig, jobPath: string): string; /** 실패 응답의 본문 일부를 붙여 에러를 만든다. Jenkins 는 원인을 본문에만 담는 경우가 많다. */ export declare function jenkinsError(prefix: string, res: Response): Promise;