@ttctl/core 0.0.0 → 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +49 -9
  2. package/dist/__generated__/gateway.d.ts +4546 -0
  3. package/dist/__generated__/gateway.d.ts.map +1 -0
  4. package/dist/__generated__/gateway.js +9 -0
  5. package/dist/__generated__/gateway.js.map +1 -0
  6. package/dist/__generated__/talent-profile-zod-schemas.d.ts +1187 -0
  7. package/dist/__generated__/talent-profile-zod-schemas.d.ts.map +1 -0
  8. package/dist/__generated__/talent-profile-zod-schemas.js +1136 -0
  9. package/dist/__generated__/talent-profile-zod-schemas.js.map +1 -0
  10. package/dist/__generated__/talent-profile.d.ts +1397 -0
  11. package/dist/__generated__/talent-profile.d.ts.map +1 -0
  12. package/dist/__generated__/talent-profile.js +9 -0
  13. package/dist/__generated__/talent-profile.js.map +1 -0
  14. package/dist/__generated__/zod-schemas.d.ts +2895 -0
  15. package/dist/__generated__/zod-schemas.d.ts.map +1 -0
  16. package/dist/__generated__/zod-schemas.js +3121 -0
  17. package/dist/__generated__/zod-schemas.js.map +1 -0
  18. package/dist/__tests__/fixtures/profile/builders.d.ts +74 -0
  19. package/dist/__tests__/fixtures/profile/builders.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/profile/builders.js +196 -0
  21. package/dist/__tests__/fixtures/profile/builders.js.map +1 -0
  22. package/dist/__tests__/fixtures/profile/data.d.ts +39 -0
  23. package/dist/__tests__/fixtures/profile/data.d.ts.map +1 -0
  24. package/dist/__tests__/fixtures/profile/data.js +230 -0
  25. package/dist/__tests__/fixtures/profile/data.js.map +1 -0
  26. package/dist/__tests__/fixtures/profile/index.d.ts +9 -0
  27. package/dist/__tests__/fixtures/profile/index.d.ts.map +1 -0
  28. package/dist/__tests__/fixtures/profile/index.js +10 -0
  29. package/dist/__tests__/fixtures/profile/index.js.map +1 -0
  30. package/dist/__tests__/fixtures/profile/types.d.ts +53 -0
  31. package/dist/__tests__/fixtures/profile/types.d.ts.map +1 -0
  32. package/dist/__tests__/fixtures/profile/types.js +4 -0
  33. package/dist/__tests__/fixtures/profile/types.js.map +1 -0
  34. package/dist/auth/errors.d.ts +82 -0
  35. package/dist/auth/errors.d.ts.map +1 -0
  36. package/dist/auth/errors.js +68 -0
  37. package/dist/auth/errors.js.map +1 -0
  38. package/dist/auth.d.ts +192 -0
  39. package/dist/auth.d.ts.map +1 -0
  40. package/dist/auth.js +294 -0
  41. package/dist/auth.js.map +1 -0
  42. package/dist/config.d.ts +212 -0
  43. package/dist/config.d.ts.map +1 -0
  44. package/dist/config.js +349 -0
  45. package/dist/config.js.map +1 -0
  46. package/dist/configLock.d.ts +50 -0
  47. package/dist/configLock.d.ts.map +1 -0
  48. package/dist/configLock.js +88 -0
  49. package/dist/configLock.js.map +1 -0
  50. package/dist/configWriter.d.ts +97 -0
  51. package/dist/configWriter.d.ts.map +1 -0
  52. package/dist/configWriter.js +687 -0
  53. package/dist/configWriter.js.map +1 -0
  54. package/dist/index.d.ts +37 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +28 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/kill-switch.d.ts +161 -0
  59. package/dist/kill-switch.d.ts.map +1 -0
  60. package/dist/kill-switch.js +235 -0
  61. package/dist/kill-switch.js.map +1 -0
  62. package/dist/lib/date.d.ts +58 -0
  63. package/dist/lib/date.d.ts.map +1 -0
  64. package/dist/lib/date.js +104 -0
  65. package/dist/lib/date.js.map +1 -0
  66. package/dist/lib/diagnostic-log.d.ts +159 -0
  67. package/dist/lib/diagnostic-log.d.ts.map +1 -0
  68. package/dist/lib/diagnostic-log.js +186 -0
  69. package/dist/lib/diagnostic-log.js.map +1 -0
  70. package/dist/lib/package-version.d.ts +19 -0
  71. package/dist/lib/package-version.d.ts.map +1 -0
  72. package/dist/lib/package-version.js +38 -0
  73. package/dist/lib/package-version.js.map +1 -0
  74. package/dist/lib/redact.d.ts +153 -0
  75. package/dist/lib/redact.d.ts.map +1 -0
  76. package/dist/lib/redact.js +207 -0
  77. package/dist/lib/redact.js.map +1 -0
  78. package/dist/lib/text.d.ts +14 -0
  79. package/dist/lib/text.d.ts.map +1 -0
  80. package/dist/lib/text.js +21 -0
  81. package/dist/lib/text.js.map +1 -0
  82. package/dist/lib/wire-shape.d.ts +131 -0
  83. package/dist/lib/wire-shape.d.ts.map +1 -0
  84. package/dist/lib/wire-shape.js +376 -0
  85. package/dist/lib/wire-shape.js.map +1 -0
  86. package/dist/onepassword.d.ts +29 -0
  87. package/dist/onepassword.d.ts.map +1 -0
  88. package/dist/onepassword.js +112 -0
  89. package/dist/onepassword.js.map +1 -0
  90. package/dist/services/_shared/transport.d.ts +148 -0
  91. package/dist/services/_shared/transport.d.ts.map +1 -0
  92. package/dist/services/_shared/transport.js +102 -0
  93. package/dist/services/_shared/transport.js.map +1 -0
  94. package/dist/services/applications/index.d.ts +210 -0
  95. package/dist/services/applications/index.d.ts.map +1 -0
  96. package/dist/services/applications/index.js +240 -0
  97. package/dist/services/applications/index.js.map +1 -0
  98. package/dist/services/availability/index.d.ts +254 -0
  99. package/dist/services/availability/index.d.ts.map +1 -0
  100. package/dist/services/availability/index.js +310 -0
  101. package/dist/services/availability/index.js.map +1 -0
  102. package/dist/services/contracts/index.d.ts +132 -0
  103. package/dist/services/contracts/index.d.ts.map +1 -0
  104. package/dist/services/contracts/index.js +211 -0
  105. package/dist/services/contracts/index.js.map +1 -0
  106. package/dist/services/engagements/index.d.ts +504 -0
  107. package/dist/services/engagements/index.d.ts.map +1 -0
  108. package/dist/services/engagements/index.js +613 -0
  109. package/dist/services/engagements/index.js.map +1 -0
  110. package/dist/services/jobs/index.d.ts +490 -0
  111. package/dist/services/jobs/index.d.ts.map +1 -0
  112. package/dist/services/jobs/index.js +753 -0
  113. package/dist/services/jobs/index.js.map +1 -0
  114. package/dist/services/payments/index.d.ts +415 -0
  115. package/dist/services/payments/index.d.ts.map +1 -0
  116. package/dist/services/payments/index.js +636 -0
  117. package/dist/services/payments/index.js.map +1 -0
  118. package/dist/services/profile/__tests__/fixtures.d.ts +214 -0
  119. package/dist/services/profile/__tests__/fixtures.d.ts.map +1 -0
  120. package/dist/services/profile/__tests__/fixtures.js +176 -0
  121. package/dist/services/profile/__tests__/fixtures.js.map +1 -0
  122. package/dist/services/profile/basic/index.d.ts +390 -0
  123. package/dist/services/profile/basic/index.d.ts.map +1 -0
  124. package/dist/services/profile/basic/index.js +1007 -0
  125. package/dist/services/profile/basic/index.js.map +1 -0
  126. package/dist/services/profile/certifications/index.d.ts +74 -0
  127. package/dist/services/profile/certifications/index.d.ts.map +1 -0
  128. package/dist/services/profile/certifications/index.js +169 -0
  129. package/dist/services/profile/certifications/index.js.map +1 -0
  130. package/dist/services/profile/education/index.d.ts +73 -0
  131. package/dist/services/profile/education/index.d.ts.map +1 -0
  132. package/dist/services/profile/education/index.js +168 -0
  133. package/dist/services/profile/education/index.js.map +1 -0
  134. package/dist/services/profile/employment/index.d.ts +111 -0
  135. package/dist/services/profile/employment/index.d.ts.map +1 -0
  136. package/dist/services/profile/employment/index.js +202 -0
  137. package/dist/services/profile/employment/index.js.map +1 -0
  138. package/dist/services/profile/external/index.d.ts +219 -0
  139. package/dist/services/profile/external/index.d.ts.map +1 -0
  140. package/dist/services/profile/external/index.js +560 -0
  141. package/dist/services/profile/external/index.js.map +1 -0
  142. package/dist/services/profile/index.d.ts +24 -0
  143. package/dist/services/profile/index.d.ts.map +1 -0
  144. package/dist/services/profile/index.js +26 -0
  145. package/dist/services/profile/index.js.map +1 -0
  146. package/dist/services/profile/industries/index.d.ts +130 -0
  147. package/dist/services/profile/industries/index.d.ts.map +1 -0
  148. package/dist/services/profile/industries/index.js +292 -0
  149. package/dist/services/profile/industries/index.js.map +1 -0
  150. package/dist/services/profile/portfolio/index.d.ts +352 -0
  151. package/dist/services/profile/portfolio/index.d.ts.map +1 -0
  152. package/dist/services/profile/portfolio/index.js +833 -0
  153. package/dist/services/profile/portfolio/index.js.map +1 -0
  154. package/dist/services/profile/resume/index.d.ts +60 -0
  155. package/dist/services/profile/resume/index.d.ts.map +1 -0
  156. package/dist/services/profile/resume/index.js +212 -0
  157. package/dist/services/profile/resume/index.js.map +1 -0
  158. package/dist/services/profile/reviews/index.d.ts +137 -0
  159. package/dist/services/profile/reviews/index.d.ts.map +1 -0
  160. package/dist/services/profile/reviews/index.js +431 -0
  161. package/dist/services/profile/reviews/index.js.map +1 -0
  162. package/dist/services/profile/shared.d.ts +127 -0
  163. package/dist/services/profile/shared.d.ts.map +1 -0
  164. package/dist/services/profile/shared.js +155 -0
  165. package/dist/services/profile/shared.js.map +1 -0
  166. package/dist/services/profile/skills/index.d.ts +212 -0
  167. package/dist/services/profile/skills/index.d.ts.map +1 -0
  168. package/dist/services/profile/skills/index.js +461 -0
  169. package/dist/services/profile/skills/index.js.map +1 -0
  170. package/dist/services/profile/visas/index.d.ts +74 -0
  171. package/dist/services/profile/visas/index.d.ts.map +1 -0
  172. package/dist/services/profile/visas/index.js +306 -0
  173. package/dist/services/profile/visas/index.js.map +1 -0
  174. package/dist/services/timesheet/index.d.ts +326 -0
  175. package/dist/services/timesheet/index.d.ts.map +1 -0
  176. package/dist/services/timesheet/index.js +324 -0
  177. package/dist/services/timesheet/index.js.map +1 -0
  178. package/dist/services/translations.d.ts +79 -0
  179. package/dist/services/translations.d.ts.map +1 -0
  180. package/dist/services/translations.js +136 -0
  181. package/dist/services/translations.js.map +1 -0
  182. package/dist/transport-resilience.d.ts +136 -0
  183. package/dist/transport-resilience.d.ts.map +1 -0
  184. package/dist/transport-resilience.js +247 -0
  185. package/dist/transport-resilience.js.map +1 -0
  186. package/dist/transport.d.ts +408 -0
  187. package/dist/transport.d.ts.map +1 -0
  188. package/dist/transport.js +691 -0
  189. package/dist/transport.js.map +1 -0
  190. package/dist/types.d.ts +41 -0
  191. package/dist/types.d.ts.map +1 -0
  192. package/dist/types.js +18 -0
  193. package/dist/types.js.map +1 -0
  194. package/package.json +40 -12
  195. package/index.js +0 -7
@@ -0,0 +1,490 @@
1
+ import type { DryRunPreview } from "../../transport.js";
2
+ /**
3
+ * Jobs-domain error codes. Mirrors the `EngagementsError` /
4
+ * `ApplicationsError` shape per project convention.
5
+ *
6
+ * - `NO_VIEWER`: HTTP 200 + `data.viewer === null` (defensive — the
7
+ * gateway signals auth revoke differently, but kept for coverage).
8
+ * - `NOT_FOUND`: caller's job id doesn't resolve to a viewable job.
9
+ * Two wire shapes fold into this code: top-level `Record not found`
10
+ * GraphQL error AND `data.viewer.job === null`.
11
+ * - `GRAPHQL_ERROR`: top-level `errors[]` from the gateway, not
12
+ * auth-revoked and not `Record not found`.
13
+ * - `MUTATION_ERROR`: `MutationResult.errors[]` payload (operation
14
+ * succeeded at the GraphQL level, but the mutation itself reports
15
+ * per-field errors — validation, conflict, etc.).
16
+ * - `NETWORK_ERROR`, `UNKNOWN`: standard transport failure modes.
17
+ *
18
+ * Auth-revoked failures throw `AuthRevokedError` (cross-cutting
19
+ * `TtctlError` subclass per #77), not a code on this enum.
20
+ */
21
+ export type JobsErrorCode = "NO_VIEWER" | "NOT_FOUND" | "GRAPHQL_ERROR" | "MUTATION_ERROR" | "NETWORK_ERROR" | "WIRE_SHAPE_ERROR" | "UNKNOWN";
22
+ export declare class JobsError extends Error {
23
+ readonly code: JobsErrorCode;
24
+ readonly name = "JobsError";
25
+ constructor(code: JobsErrorCode, message: string, options?: {
26
+ cause?: unknown;
27
+ });
28
+ }
29
+ /**
30
+ * Reason identifier supplied with `MarkJobAsNotInterested`. The wire
31
+ * mutation marks `reason: String!` and rejects empty strings server-
32
+ * side. A free-text reason is accepted; canonical short reasons
33
+ * observed in the wild include `not_a_match`, `low_rate`,
34
+ * `wrong_commitment`, `wrong_location`, `other`. The mutation does not
35
+ * validate the value against a closed enum.
36
+ */
37
+ export interface NotInterestedOptions {
38
+ reason: string;
39
+ }
40
+ /**
41
+ * Per-mutation option object for the dry-run short-circuit (issue #162,
42
+ * mirroring the #52 reference pattern on `profile.basic.set()`). When
43
+ * `dryRun === true`, the mutation builds a {@link DryRunPreview} and
44
+ * returns `{ kind: "preview", preview }` WITHOUT invoking the gateway
45
+ * transport. Default `false` — the apply path runs and a
46
+ * `{ kind: "applied", result }` outcome is returned.
47
+ *
48
+ * Kept as a stand-alone interface (not a discriminated-union option) so
49
+ * future per-mutation options (e.g. a hypothetical idempotency-key
50
+ * parameter) can extend the same shape additively. The signature is
51
+ * deliberately uniform across the 7 jobs mutations.
52
+ */
53
+ export interface DryRunOptions {
54
+ /**
55
+ * When `true`, short-circuit before any transport call and return a
56
+ * {@link DryRunPreview}-bearing outcome instead of executing the
57
+ * mutation. Default: `false` — normal apply path.
58
+ */
59
+ dryRun?: boolean;
60
+ }
61
+ /**
62
+ * Apply-path outcome for a jobs interest-state mutation
63
+ * (`save` / `unsave` / `markViewed` / `notInterested` / `clearInterest`).
64
+ * Wraps the server-confirmed `JobInterestState` in a discriminated
65
+ * union so callers can branch deterministically between the apply path
66
+ * (`kind: "applied"`) and the dry-run path (`kind: "preview"`, see
67
+ * {@link JobsDryRunPreviewOutcome}).
68
+ */
69
+ export interface JobInterestAppliedOutcome {
70
+ kind: "applied";
71
+ result: JobInterestState;
72
+ }
73
+ /**
74
+ * Dry-run outcome shared by every jobs mutation. Carries a
75
+ * {@link DryRunPreview} (operation name, surface, transport, endpoint,
76
+ * variables payload, redacted headers) — emitted verbatim by the CLI's
77
+ * dry-run envelope (`emitDryRunSuccess` in
78
+ * `packages/cli/src/lib/envelopes.ts`).
79
+ */
80
+ export interface JobsDryRunPreviewOutcome {
81
+ kind: "preview";
82
+ preview: DryRunPreview;
83
+ }
84
+ /**
85
+ * Discriminated-union return type for {@link save}. The
86
+ * apply path returns the post-mutation {@link JobInterestState} wrapped
87
+ * in `{ kind: "applied", result }`; the dry-run path returns a
88
+ * {@link DryRunPreview} wrapped in `{ kind: "preview", preview }`.
89
+ *
90
+ * Pre-1.0 the pre-#162 return type (`Promise<JobInterestState>`) no
91
+ * longer exists — callers must branch on `outcome.kind` to access either
92
+ * `outcome.result` or `outcome.preview`. The MCP layer (and any future
93
+ * consumer) updates in lockstep with this rename.
94
+ */
95
+ export type SaveOutcome = JobInterestAppliedOutcome | JobsDryRunPreviewOutcome;
96
+ /**
97
+ * Discriminated-union return type for {@link unsave}. Identical shape
98
+ * to {@link SaveOutcome} since `unsave` delegates to {@link
99
+ * clearInterest} (same wire operation `JobClearInterest`).
100
+ */
101
+ export type UnsaveOutcome = JobInterestAppliedOutcome | JobsDryRunPreviewOutcome;
102
+ /**
103
+ * Discriminated-union return type for {@link markViewed}.
104
+ */
105
+ export type MarkViewedOutcome = JobInterestAppliedOutcome | JobsDryRunPreviewOutcome;
106
+ /**
107
+ * Discriminated-union return type for {@link notInterested}.
108
+ */
109
+ export type NotInterestedOutcome = JobInterestAppliedOutcome | JobsDryRunPreviewOutcome;
110
+ /**
111
+ * Discriminated-union return type for {@link clearInterest}.
112
+ */
113
+ export type ClearInterestOutcome = JobInterestAppliedOutcome | JobsDryRunPreviewOutcome;
114
+ /**
115
+ * Apply-path outcome for {@link searchSubscriptionSave}. Carries the
116
+ * post-mutation {@link SearchSubscriptionState} (the active filters, or
117
+ * `{ active: false, filters: null }` if the server unexpectedly reports
118
+ * no subscription after a successful `start`).
119
+ */
120
+ export interface SearchSubscriptionSaveAppliedOutcome {
121
+ kind: "applied";
122
+ result: SearchSubscriptionState;
123
+ }
124
+ /**
125
+ * Discriminated-union return type for {@link searchSubscriptionSave}.
126
+ */
127
+ export type SearchSubscriptionSaveOutcome = SearchSubscriptionSaveAppliedOutcome | JobsDryRunPreviewOutcome;
128
+ /**
129
+ * Apply-path outcome for {@link searchSubscriptionRemove}. Carries the
130
+ * `{ terminated: true }` confirmation that the wire's idempotent
131
+ * `terminate` mutation returns.
132
+ */
133
+ export interface SearchSubscriptionRemoveAppliedOutcome {
134
+ kind: "applied";
135
+ result: {
136
+ terminated: true;
137
+ };
138
+ }
139
+ /**
140
+ * Discriminated-union return type for {@link searchSubscriptionRemove}.
141
+ */
142
+ export type SearchSubscriptionRemoveOutcome = SearchSubscriptionRemoveAppliedOutcome | JobsDryRunPreviewOutcome;
143
+ /**
144
+ * Filter inputs for {@link list}. All fields fold into the captured
145
+ * operation's variables. Empty arrays / undefined are passed through as
146
+ * `null` so the wire defaults apply.
147
+ */
148
+ export interface ListOptions {
149
+ /** Skill names — AND across entries. */
150
+ skills?: string[];
151
+ /** Free-text keywords — AND across entries. */
152
+ keywords?: string[];
153
+ /** Skills to EXCLUDE from matching. */
154
+ excludeSkills?: string[];
155
+ /** Keywords to EXCLUDE from matching. */
156
+ excludeKeywords?: string[];
157
+ /** Job commitment slugs (e.g. `FULL_TIME`, `PART_TIME`). */
158
+ commitments?: string[];
159
+ /** Job work types (e.g. `REMOTE`, `ONSITE`). */
160
+ workTypes?: string[];
161
+ /** Estimated lengths (e.g. `SHORT_TERM`, `LONG_TERM`). */
162
+ estimatedLengths?: string[];
163
+ /**
164
+ * Sort target — wire accepts `visible_at`, `posted_at`, etc.
165
+ * Defaults to whatever the server picks when omitted.
166
+ */
167
+ sortTarget?: string;
168
+ /**
169
+ * 1-indexed page number (issue #138). Translated to the wire's
170
+ * 0-indexed `eligibleJobs.page` argument by {@link buildListVariables}.
171
+ * Default `1` when omitted (the wire's `page: 0`).
172
+ */
173
+ page?: number;
174
+ /**
175
+ * Items per page (issue #138). Forwarded verbatim to the wire's
176
+ * `eligibleJobs.pageSize` argument. Default `20` when omitted,
177
+ * matching the pre-#138 hardcoded value.
178
+ */
179
+ perPage?: number;
180
+ }
181
+ /**
182
+ * Page wrapper returned by {@link list}, {@link saved}, and {@link
183
+ * notInterestedList}. Carries the projected items plus the
184
+ * server-reported `totalCount` and the resolved `page` / `perPage`
185
+ * (i.e., the effective values used in the query, after defaults).
186
+ *
187
+ * The CLI layer (`packages/cli/src/commands/jobs/list.ts`) uses
188
+ * `totalCount` to derive `pageInfo.totalPages` and
189
+ * `pageInfo.hasNextPage` for the offset-style envelope (issue #138).
190
+ *
191
+ * Why not return `JobListItem[]` directly: pre-#138 the caller could
192
+ * not present pagination metadata because the operation hardcoded
193
+ * `page: 0, pageSize: 20`; with the wiring change, callers MUST have
194
+ * access to `totalCount` to render the "Page X of Y" footer and to
195
+ * populate the JSON envelope's `pageInfo`. Returning a structured
196
+ * value is cheaper than threading the metadata through a side channel.
197
+ */
198
+ export interface JobListPage {
199
+ items: JobListItem[];
200
+ totalCount: number;
201
+ /** 1-indexed page number actually requested. */
202
+ page: number;
203
+ /** Items per page actually requested. */
204
+ perPage: number;
205
+ }
206
+ /**
207
+ * Default values for {@link ListOptions} pagination fields when the
208
+ * caller does not specify them. Mirrors the pre-#138 hardcoded values
209
+ * in `JOBS_LIST_QUERY` (`page: 0, pageSize: 20` on the wire — `page:
210
+ * 1, perPage: 20` user-facing). Exposed so tests can assert against
211
+ * the same constants the production code uses.
212
+ */
213
+ export declare const DEFAULT_PAGE: 1;
214
+ export declare const DEFAULT_PER_PAGE: 20;
215
+ /**
216
+ * Single-row projection for jobs listings (browse + saved-list +
217
+ * not-interested-list + viewed-list).
218
+ */
219
+ export interface JobListItem {
220
+ id: string;
221
+ title: string | null;
222
+ url: string | null;
223
+ client: {
224
+ id: string;
225
+ fullName: string | null;
226
+ } | null;
227
+ commitment: {
228
+ slug: string;
229
+ } | null;
230
+ workType: {
231
+ slug: string;
232
+ } | null;
233
+ specialization: {
234
+ title: string;
235
+ } | null;
236
+ expectedHours: number | null;
237
+ maxRate: number | null;
238
+ startDate: string | null;
239
+ postedWhen: string | null;
240
+ viewed: boolean | null;
241
+ saved: boolean | null;
242
+ notInterested: boolean | null;
243
+ }
244
+ /**
245
+ * Detail-view shape for `jobs show <id>`. Extends {@link JobListItem}
246
+ * with descriptive fields and client metadata. Field selection is
247
+ * conservative — fields the CLI / MCP renders.
248
+ */
249
+ export interface JobDetail extends JobListItem {
250
+ descriptionMd: string | null;
251
+ minimumHoursPerBillingCycle: number | null;
252
+ isCoaching: boolean | null;
253
+ isToptalProject: boolean | null;
254
+ semiMonthlyBilling: boolean | null;
255
+ positionsCount: number | null;
256
+ jobTimeZone: {
257
+ verbose: string | null;
258
+ hoursOverlap: number | null;
259
+ workingTimeFrom: string | null;
260
+ workingTimeTo: string | null;
261
+ } | null;
262
+ client: (JobListItem["client"] & {
263
+ city: string | null;
264
+ countryName: string | null;
265
+ industry: string | null;
266
+ isEnterprise: boolean | null;
267
+ website: string | null;
268
+ linkedin: string | null;
269
+ teamSize: {
270
+ value: string | null;
271
+ } | null;
272
+ }) | null;
273
+ skills: {
274
+ id: string;
275
+ name: string;
276
+ rating: number | null;
277
+ isOptional: boolean | null;
278
+ }[];
279
+ languages: {
280
+ id: string;
281
+ name: string | null;
282
+ }[];
283
+ }
284
+ /**
285
+ * State payload returned by every mutation that toggles a job's
286
+ * interest signals. Reflects the post-mutation server state.
287
+ */
288
+ export interface JobInterestState {
289
+ id: string;
290
+ saved: boolean | null;
291
+ notInterested: boolean | null;
292
+ viewed: boolean | null;
293
+ }
294
+ /**
295
+ * Filter inputs for the job-search subscription. Mirrors the wire's
296
+ * `StartJobsSearchSubscription` variables. All fields optional —
297
+ * omitting one passes `null` to the server, which interprets as
298
+ * "no constraint on this axis".
299
+ */
300
+ export interface SearchSubscriptionFilters {
301
+ skills?: string[];
302
+ keywords?: string[];
303
+ excludeSkills?: string[];
304
+ excludeKeywords?: string[];
305
+ commitments?: string[];
306
+ workTypes?: string[];
307
+ estimatedLengths?: string[];
308
+ excludeUnspecifiedBudget?: boolean;
309
+ }
310
+ /**
311
+ * State of the user's single job-search subscription. `null` value of
312
+ * `filters` means no active subscription (the user has not started
313
+ * one, or terminated the active one).
314
+ *
315
+ * Note (R2): the wire shape carries a single subscription per viewer —
316
+ * there is no list of named subscriptions. The CLI's `search list` /
317
+ * `search save --name` / `search remove <id>` surface adapts to this
318
+ * cardinality (returns 0-or-1; name is advisory; remove id is ignored).
319
+ */
320
+ export interface SearchSubscriptionState {
321
+ active: boolean;
322
+ filters: SearchSubscriptionFilters | null;
323
+ }
324
+ /**
325
+ * Browse current job opportunities (default sort, paginated).
326
+ *
327
+ * Filters fold straight through to the wire (`eligibleJobs`
328
+ * arguments). Empty arrays / undefined values pass as `null`, letting
329
+ * the server apply its defaults.
330
+ *
331
+ * Pagination (#138): `opts.page` (1-indexed) and `opts.perPage` are
332
+ * forwarded to the wire's 1-indexed `eligibleJobs.page` and
333
+ * `pageSize`. Defaults: `page: 1, perPage: 20`. The wire's `page` is
334
+ * 1-indexed — see {@link buildListVariables} for the empirical
335
+ * findings from #138 E2E verification. Returns a {@link
336
+ * JobListPage} carrying `totalCount` so callers can render
337
+ * offset-style pagination metadata.
338
+ */
339
+ export declare function list(token: string, opts?: ListOptions): Promise<JobListPage>;
340
+ /**
341
+ * Fetch a single job by id. Throws `JobsError("NOT_FOUND")` for two
342
+ * wire shapes: top-level `Record not found` GraphQL error AND a
343
+ * successful response with `viewer.job === null`.
344
+ */
345
+ export declare function show(token: string, id: string): Promise<JobDetail>;
346
+ /**
347
+ * List saved jobs (the bookmark / favorites view).
348
+ *
349
+ * Implementation: `eligibleJobs` with `filter: { saved: { eq: true } }`
350
+ * — the same projection as {@link list} so the CLI can reuse the table
351
+ * renderer.
352
+ *
353
+ * Pagination (#138): accepts `opts.page` / `opts.perPage`; returns
354
+ * a {@link JobListPage} for offset-style envelope rendering.
355
+ */
356
+ export declare function saved(token: string, opts?: ListOptions): Promise<JobListPage>;
357
+ /**
358
+ * List jobs marked as not-interested. Implementation: `eligibleJobs`
359
+ * with `filter: { notInterested: { eq: true } }`.
360
+ *
361
+ * Pagination (#138): accepts `opts.page` / `opts.perPage`; returns
362
+ * a {@link JobListPage} for offset-style envelope rendering.
363
+ */
364
+ export declare function notInterestedList(token: string, opts?: ListOptions): Promise<JobListPage>;
365
+ /**
366
+ * List jobs marked as viewed.
367
+ *
368
+ * **R1 — Wire-shape gap**: the `eligibleJobs` query exposes filters
369
+ * only for `saved` and `notInterested`, not `viewed`. This function
370
+ * fetches the requested page of jobs ({@link list}) and applies a
371
+ * client-side filter on the `viewed` boolean. The result is scoped to
372
+ * the items the server returned on that page — pagination shifts the
373
+ * underlying fetch window, but the client-side filter on `viewed`
374
+ * still happens AFTER the page is returned, so the resulting list can
375
+ * be shorter than `perPage`. A wire-level filter would be the right
376
+ * long-term fix and is tracked as a follow-up.
377
+ *
378
+ * Pagination (#138): accepts `opts.page` / `opts.perPage`. The
379
+ * returned {@link JobListPage} carries the `totalCount` of the
380
+ * underlying paginated fetch (pre-filter) — `items.length` reflects
381
+ * the post-filter shape and can be smaller.
382
+ */
383
+ export declare function viewedList(token: string, opts?: ListOptions): Promise<JobListPage>;
384
+ /**
385
+ * Mark a job as saved (bookmark). The wire mutation
386
+ * (`MarkJobAsSaved`) toggles `saved=true` and clears `notInterested=false`
387
+ * if it was set — the server's interest-status model is one-of-three
388
+ * (`saved` | `not-interested` | `cleared`).
389
+ *
390
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
391
+ * builds a {@link DryRunPreview} of the mutation without invoking the
392
+ * gateway transport and returns it wrapped in {@link
393
+ * JobsDryRunPreviewOutcome}. The bearer token is redacted per the
394
+ * `DryRunPreview` contract; the `jobID` variable carries the caller's
395
+ * literal id (no sibling read needed for this surface).
396
+ */
397
+ export declare function save(token: string, id: string, options?: DryRunOptions): Promise<SaveOutcome>;
398
+ /**
399
+ * Clear all interest-status flags on a job. The CLI exposes this as
400
+ * `jobs unsave <id>` (matching the AC) — semantically it also clears
401
+ * `notInterested` because the wire only offers one path
402
+ * (`ClearJobInterestStatus`) to clear EITHER signal. Callers wanting
403
+ * the "remove saved without affecting not-interested" semantics aren't
404
+ * supported by the wire; they would need to re-mark not-interested
405
+ * after.
406
+ *
407
+ * Delegates to {@link clearInterest} (same wire operation
408
+ * `JobClearInterest`) — the dry-run preview therefore reports
409
+ * `operationName: "JobClearInterest"`. The CLI envelope's
410
+ * surface-level `operation` field is `jobs.unsave` (kept distinct so
411
+ * users see the verb they invoked).
412
+ */
413
+ export declare function unsave(token: string, id: string, options?: DryRunOptions): Promise<UnsaveOutcome>;
414
+ /**
415
+ * Mark a job as not-interested with the supplied reason. The wire
416
+ * mutation (`MarkJobAsNotInterested`) toggles `notInterested=true`
417
+ * and clears `saved=false` if it was set.
418
+ *
419
+ * `reason` is server-side `String!` — rejects empty strings with
420
+ * `code=blank, key=reason`. Caller must supply a non-empty value; the
421
+ * wire does not validate against a closed enum, so free-text is fine.
422
+ *
423
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
424
+ * builds a {@link DryRunPreview} of the mutation without invoking the
425
+ * gateway transport and returns it wrapped in {@link
426
+ * JobsDryRunPreviewOutcome}. The `reason` variable is preserved in the
427
+ * preview's variables payload (it carries no session-bound material) so
428
+ * callers can verify the wire-shape end-to-end.
429
+ */
430
+ export declare function notInterested(token: string, id: string, opts: NotInterestedOptions, options?: DryRunOptions): Promise<NotInterestedOutcome>;
431
+ /**
432
+ * Mark a job as viewed (UX-only signal — typically the UI auto-marks
433
+ * on detail-page open; this surface lets the CLI do it explicitly).
434
+ *
435
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
436
+ * builds a {@link DryRunPreview} of the mutation without invoking the
437
+ * gateway transport and returns it wrapped in {@link
438
+ * JobsDryRunPreviewOutcome}.
439
+ */
440
+ export declare function markViewed(token: string, id: string, options?: DryRunOptions): Promise<MarkViewedOutcome>;
441
+ /**
442
+ * Clear the interest-status flags (both `saved` and `notInterested`)
443
+ * on a job. The wire's "undo" path for either save or not-interested.
444
+ *
445
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
446
+ * builds a {@link DryRunPreview} of the mutation without invoking the
447
+ * gateway transport and returns it wrapped in {@link
448
+ * JobsDryRunPreviewOutcome}.
449
+ */
450
+ export declare function clearInterest(token: string, id: string, options?: DryRunOptions): Promise<ClearInterestOutcome>;
451
+ /**
452
+ * Show the current job-search subscription state. Returns
453
+ * `{ active: false, filters: null }` when no subscription is active.
454
+ *
455
+ * **R2**: the wire models a single subscription per viewer — there is
456
+ * no list. The CLI's `search list` maps this to a 0-or-1 envelope.
457
+ */
458
+ export declare function searchSubscriptionShow(token: string): Promise<SearchSubscriptionState>;
459
+ /**
460
+ * Start the job-search subscription with the supplied filters. If a
461
+ * subscription is already active, the wire's `start` mutation replaces
462
+ * it (the server does NOT error on "already subscribed").
463
+ *
464
+ * Returns the post-mutation subscription state.
465
+ *
466
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
467
+ * builds a {@link DryRunPreview} of the mutation without invoking the
468
+ * gateway transport and returns it wrapped in {@link
469
+ * JobsDryRunPreviewOutcome}. The filters payload is normalised
470
+ * identically to the apply path so the preview's `variables` reflect
471
+ * the exact wire shape that WOULD have been sent.
472
+ */
473
+ export declare function searchSubscriptionSave(token: string, filters: SearchSubscriptionFilters, options?: DryRunOptions): Promise<SearchSubscriptionSaveOutcome>;
474
+ /**
475
+ * Terminate the active job-search subscription. The wire's `terminate`
476
+ * mutation is idempotent — terminating a non-active subscription
477
+ * returns `success: true` with no errors.
478
+ *
479
+ * Returns `{ terminated: true }` on success. The post-terminate
480
+ * subscription state is implicit (`active: false`) and is not re-
481
+ * fetched here.
482
+ *
483
+ * Dry-run path (issue #162): when invoked with `options.dryRun === true`,
484
+ * builds a {@link DryRunPreview} of the mutation without invoking the
485
+ * gateway transport and returns it wrapped in {@link
486
+ * JobsDryRunPreviewOutcome}. The variables payload is `{}` (the wire
487
+ * `terminate` mutation takes no variables).
488
+ */
489
+ export declare function searchSubscriptionRemove(token: string, options?: DryRunOptions): Promise<SearchSubscriptionRemoveOutcome>;
490
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/jobs/index.ts"],"names":[],"mappings":"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"}