@cavuno/board 1.7.0 → 1.9.0

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.
package/dist/index.d.mts CHANGED
@@ -345,6 +345,12 @@ interface components {
345
345
  /** @description Number of companies on the board in this market. */
346
346
  companyCount: number;
347
347
  };
348
+ CompanyMarketRef: {
349
+ /** @description Display name of the market. */
350
+ name: string;
351
+ /** @description Source slug for the market. Use it as the `:market` segment of the market-scoped company browse. */
352
+ slug: string;
353
+ };
348
354
  CompanyPublic: {
349
355
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the company endpoints (e.g. `GET /v1/companies/{id}`). */
350
356
  id: string;
@@ -369,6 +375,10 @@ interface components {
369
375
  publishedJobCount: number;
370
376
  links: components["schemas"]["PublicCompanyLinks"];
371
377
  };
378
+ CompanyPublicDetail: components["schemas"]["CompanyPublic"] & {
379
+ /** @description Markets (sectors) this company operates in, each with its source slug. Empty when the company has no markets. */
380
+ markets: components["schemas"]["CompanyMarketRef"][];
381
+ };
372
382
  CompanySummary: {
373
383
  /** @description Unique identifier for the object. Use this value as the `{id}` path parameter for the company endpoints (e.g. `GET /v1/companies/{id}`). */
374
384
  id: string;
@@ -877,6 +887,87 @@ interface components {
877
887
  address: string | null;
878
888
  } | null;
879
889
  };
890
+ LocationSalaryDetail: {
891
+ /** @enum {string} */
892
+ object: "location_salary_detail";
893
+ /** @description Immutable English source place slug — the salary-stats key. */
894
+ sourceSlug: string;
895
+ /** @description Board-language canonical URL slug — the starter 308 target. */
896
+ canonicalSlug: string;
897
+ placeName: string;
898
+ placeId: string;
899
+ adminLevel: string;
900
+ countryCode: string;
901
+ overallSalary: {
902
+ avgMin: number;
903
+ avgMax: number;
904
+ medianMin: number;
905
+ medianMax: number;
906
+ p25Min: number;
907
+ p75Max: number;
908
+ jobCount: number;
909
+ } | null;
910
+ childLocations: {
911
+ placeName: string;
912
+ placeSlug: string;
913
+ countryCode: string;
914
+ avgSalaryMin: number;
915
+ avgSalaryMax: number;
916
+ medianSalaryMin: number;
917
+ medianSalaryMax: number;
918
+ p25SalaryMin: number;
919
+ p75SalaryMax: number;
920
+ jobCount: number;
921
+ currency: string;
922
+ }[];
923
+ childLocationsByRegion: {
924
+ regionName: string;
925
+ regionSlug: string;
926
+ cities: {
927
+ placeName: string;
928
+ placeSlug: string;
929
+ countryCode: string;
930
+ avgSalaryMin: number;
931
+ avgSalaryMax: number;
932
+ medianSalaryMin: number;
933
+ medianSalaryMax: number;
934
+ p25SalaryMin: number;
935
+ p75SalaryMax: number;
936
+ jobCount: number;
937
+ currency: string;
938
+ }[];
939
+ }[];
940
+ topCategories: {
941
+ avgSalaryMin: number;
942
+ avgSalaryMax: number;
943
+ jobCount: number;
944
+ categorySlug: string;
945
+ categoryName: string;
946
+ }[];
947
+ topSkills: {
948
+ avgSalaryMin: number;
949
+ avgSalaryMax: number;
950
+ jobCount: number;
951
+ skillSlug: string;
952
+ skillName: string;
953
+ }[];
954
+ siblingLocations: {
955
+ placeName: string;
956
+ placeSlug: string;
957
+ countryCode: string;
958
+ avgSalaryMin: number;
959
+ avgSalaryMax: number;
960
+ medianSalaryMin: number;
961
+ medianSalaryMax: number;
962
+ p25SalaryMin: number;
963
+ p75SalaryMax: number;
964
+ jobCount: number;
965
+ currency: string;
966
+ }[];
967
+ boardOverallAvgMin: number | null;
968
+ boardOverallAvgMax: number | null;
969
+ currency: string;
970
+ };
880
971
  MediaGet: components["schemas"]["MediaUpload"] & {
881
972
  /** @description Time at which the file was uploaded. ISO 8601 datetime. */
882
973
  uploadedAt: string;
@@ -1145,6 +1236,8 @@ interface components {
1145
1236
  PublicCompaniesSearchBody: {
1146
1237
  /** @description Free-text search query matched against company name. Up to 200 characters. */
1147
1238
  query?: string;
1239
+ /** @description Scope the results to companies in a single market (sector), by the market slug. Resolves a board-language or English slug; an unknown slug returns 404. Use `GET /boards/:identifier/companies/markets/:market` to resolve a slug to its canonical form first. */
1240
+ marketSlug?: string;
1148
1241
  /** @description An opaque pagination cursor returned in the `nextCursor` field of a previous response. Pass it back to fetch the next page of results. */
1149
1242
  cursor?: string | null;
1150
1243
  /** @description A limit on the number of objects to be returned. Limit can range between 1 and 100. */
@@ -1449,7 +1542,7 @@ interface components {
1449
1542
  /** @enum {string} */
1450
1543
  object: "taxonomy_resolution";
1451
1544
  /** @enum {string} */
1452
- type: "category" | "skill" | "place";
1545
+ type: "category" | "skill" | "place" | "market";
1453
1546
  /** @description Immutable English source slug — the semantic-search key. */
1454
1547
  sourceSlug: string;
1455
1548
  /** @description Board-language URL slug (the `<link rel=canonical>` target). */
@@ -1642,6 +1735,69 @@ interface components {
1642
1735
  /** @description Stripe billing-portal configuration ID used for self-serve plan management. Pass `null` to clear. */
1643
1736
  jobAccessStripePortalConfigId?: string | unknown | unknown;
1644
1737
  };
1738
+ SkillSalaryDetail: {
1739
+ /** @enum {string} */
1740
+ object: "skill_salary_detail";
1741
+ /** @description Immutable English source slug — the salary-stats key. */
1742
+ sourceSlug: string;
1743
+ /** @description Board-language canonical URL slug — the starter 308 target. */
1744
+ canonicalSlug: string;
1745
+ skillName: string;
1746
+ overallSalary: {
1747
+ avgMin: number;
1748
+ avgMax: number;
1749
+ medianMin: number;
1750
+ medianMax: number;
1751
+ p25Min: number;
1752
+ p75Max: number;
1753
+ jobCount: number;
1754
+ } | null;
1755
+ bySeniority: {
1756
+ seniority: string;
1757
+ avgSalaryMin: number;
1758
+ avgSalaryMax: number;
1759
+ jobCount: number;
1760
+ boardAvgMin: number | null;
1761
+ boardAvgMax: number | null;
1762
+ diffPercent: number | null;
1763
+ }[];
1764
+ topCompanies: {
1765
+ avgSalaryMin: number;
1766
+ avgSalaryMax: number;
1767
+ jobCount: number;
1768
+ companySlug: string;
1769
+ companyName: string;
1770
+ logoPath: string | null;
1771
+ }[];
1772
+ topLocations: {
1773
+ avgSalaryMin: number;
1774
+ avgSalaryMax: number;
1775
+ jobCount: number;
1776
+ placeName: string;
1777
+ placeSlug: string;
1778
+ countryCode: string;
1779
+ }[];
1780
+ topTitles: {
1781
+ avgSalaryMin: number;
1782
+ avgSalaryMax: number;
1783
+ jobCount: number;
1784
+ categorySlug: string;
1785
+ categoryName: string;
1786
+ }[];
1787
+ relatedSkills: {
1788
+ avgSalaryMin: number;
1789
+ avgSalaryMax: number;
1790
+ jobCount: number;
1791
+ skillSlug: string;
1792
+ skillName: string;
1793
+ }[];
1794
+ totalLocationCount: number;
1795
+ boardOverallAvgMin: number | null;
1796
+ boardOverallAvgMax: number | null;
1797
+ boardMedianMin: number | null;
1798
+ boardMedianMax: number | null;
1799
+ currency: string;
1800
+ };
1645
1801
  /** @description Geo for place resolutions; `null` for category/skill. */
1646
1802
  TaxonomyGeo: {
1647
1803
  lat: number | null;
@@ -1653,6 +1809,75 @@ interface components {
1653
1809
  locality: string | null;
1654
1810
  placeType: string | null;
1655
1811
  } | null;
1812
+ TitleSalaryDetail: {
1813
+ /** @enum {string} */
1814
+ object: "title_salary_detail";
1815
+ /** @description Immutable English source slug — the salary-stats key. */
1816
+ sourceSlug: string;
1817
+ /** @description Board-language canonical URL slug — the starter 308 target. */
1818
+ canonicalSlug: string;
1819
+ categoryName: string;
1820
+ overallSalary: {
1821
+ avgMin: number;
1822
+ avgMax: number;
1823
+ p25Min: number;
1824
+ p75Max: number;
1825
+ jobCount: number;
1826
+ } | null;
1827
+ bySeniority: {
1828
+ seniority: string;
1829
+ avgSalaryMin: number;
1830
+ avgSalaryMax: number;
1831
+ jobCount: number;
1832
+ boardAvgMin: number | null;
1833
+ boardAvgMax: number | null;
1834
+ boardMedianMin: number | null;
1835
+ boardMedianMax: number | null;
1836
+ boardP25Min: number | null;
1837
+ boardP75Min: number | null;
1838
+ boardP25Max: number | null;
1839
+ boardP75Max: number | null;
1840
+ diffPercent: number | null;
1841
+ }[];
1842
+ topCompanies: {
1843
+ avgSalaryMin: number;
1844
+ avgSalaryMax: number;
1845
+ jobCount: number;
1846
+ companySlug: string;
1847
+ companyName: string;
1848
+ logoPath: string | null;
1849
+ }[];
1850
+ topLocations: {
1851
+ avgSalaryMin: number;
1852
+ avgSalaryMax: number;
1853
+ jobCount: number;
1854
+ placeName: string;
1855
+ placeSlug: string;
1856
+ countryCode: string;
1857
+ }[];
1858
+ topSkills: {
1859
+ avgSalaryMin: number;
1860
+ avgSalaryMax: number;
1861
+ jobCount: number;
1862
+ skillSlug: string;
1863
+ skillName: string;
1864
+ }[];
1865
+ relatedTitles: {
1866
+ avgSalaryMin: number;
1867
+ avgSalaryMax: number;
1868
+ jobCount: number;
1869
+ categorySlug: string;
1870
+ categoryName: string;
1871
+ }[];
1872
+ totalLocationCount: number;
1873
+ boardOverallAvgMin: number | null;
1874
+ boardOverallAvgMax: number | null;
1875
+ boardMedianMin: number | null;
1876
+ boardMedianMax: number | null;
1877
+ boardP25Min: number | null;
1878
+ boardP75Max: number | null;
1879
+ currency: string;
1880
+ };
1656
1881
  TokenRequest: {
1657
1882
  /**
1658
1883
  * @description OAuth grant type. Either `authorization_code` to exchange an authorization code for a new token pair, or `refresh_token` to exchange a refresh token for a new token pair.
@@ -1934,9 +2159,12 @@ type Seniority = NonNullable<PublicJob['seniority']>;
1934
2159
  type EducationRequirement = PublicJob['educationRequirements'][number];
1935
2160
  type RemotePermit = PublicJob['remotePermits'][number];
1936
2161
  type RemoteTimezone = PublicJob['remoteTimezones'][number];
1937
- /** Derived category/skill suggestion on the jobs browse list (ADR-0037 §8). */
2162
+ /**
2163
+ * Derived suggestion on a browse list (ADR-0037 §8): jobs surface `category`
2164
+ * and `skill` terms; the companies list surfaces `market` terms.
2165
+ */
1938
2166
  interface RelatedSearch {
1939
- type: 'category' | 'skill';
2167
+ type: 'category' | 'skill' | 'market';
1940
2168
  slug: string;
1941
2169
  term: string;
1942
2170
  count: number;
@@ -2094,7 +2322,7 @@ declare function isConflict(e: unknown): e is BoardApiError;
2094
2322
  * constant because the package is platform-neutral and cannot read
2095
2323
  * package.json at runtime.
2096
2324
  */
2097
- declare const SDK_VERSION = "1.7.0";
2325
+ declare const SDK_VERSION = "1.9.0";
2098
2326
 
2099
2327
  type BoardUser = Schemas['BoardUser'];
2100
2328
  type BoardAuthSession = Schemas['BoardAuthSession'];
@@ -2189,8 +2417,18 @@ type BlogSimilarQuery = {
2189
2417
  type BlogSearchBody = Schemas['PublicBlogSearchBody'];
2190
2418
 
2191
2419
  type PublicCompany = Schemas['CompanyPublic'];
2420
+ /** A market (sector) a company operates in — name + its source slug. */
2421
+ type CompanyMarketRef = Schemas['CompanyMarketRef'];
2422
+ /** The company DETAIL shape — `PublicCompany` plus `markets` (detail-only). */
2423
+ type PublicCompanyDetail = Schemas['CompanyPublicDetail'];
2424
+ /** The companies browse list — `PublicCompany`s + `market` `relatedSearches`. */
2425
+ interface CompanyListEnvelope extends ListEnvelope<PublicCompany> {
2426
+ relatedSearches?: RelatedSearch[];
2427
+ }
2192
2428
  type CompaniesListQuery = {
2193
2429
  cursor?: string;
2430
+ /** Scope to a single market (sector) by slug. Unknown slugs 404. */
2431
+ marketSlug?: string;
2194
2432
  /** 1–100. */
2195
2433
  limit?: number;
2196
2434
  };
@@ -2297,6 +2535,20 @@ type PlacesListQuery = {
2297
2535
  limit?: number;
2298
2536
  };
2299
2537
 
2538
+ /** A job title's salary breakdown (overall + by-seniority + top rails). */
2539
+ type TitleSalaryDetail = Schemas['TitleSalaryDetail'];
2540
+ /** A skill's salary breakdown. */
2541
+ type SkillSalaryDetail = Schemas['SkillSalaryDetail'];
2542
+ /** A place's salary breakdown (city overall + siblings, or area child cities). */
2543
+ type LocationSalaryDetail = Schemas['LocationSalaryDetail'];
2544
+ /**
2545
+ * Board-language overlay for a salary read. `en` (the default) is the identity
2546
+ * fast-path; a non-`en` locale overlays board-language names + canonical slugs.
2547
+ */
2548
+ type SalaryDetailQuery = {
2549
+ locale?: string;
2550
+ };
2551
+
2300
2552
  interface CreateBoardClientOptions {
2301
2553
  baseUrl: string;
2302
2554
  /** Board identifier: `pk_…` key (provisioned default) | `boards_…` ID | slug. */
@@ -2540,18 +2792,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2540
2792
  }>>;
2541
2793
  };
2542
2794
  companies: {
2543
- list(query?: CompaniesListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2544
- id: string;
2545
- object: "public_company";
2546
- name: string;
2547
- slug: string;
2548
- website: string | null;
2549
- logoUrl: string | null;
2550
- description: string | null;
2551
- jobCount: number;
2552
- publishedJobCount: number;
2553
- links: components["schemas"]["PublicCompanyLinks"];
2554
- }>>;
2795
+ list(query?: CompaniesListQuery, options?: FetchOptions): Promise<CompanyListEnvelope>;
2555
2796
  retrieve(companySlug: string, query?: Record<string, never>, options?: FetchOptions): Promise<{
2556
2797
  id: string;
2557
2798
  object: "public_company";
@@ -2563,6 +2804,8 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2563
2804
  jobCount: number;
2564
2805
  publishedJobCount: number;
2565
2806
  links: components["schemas"]["PublicCompanyLinks"];
2807
+ } & {
2808
+ markets: components["schemas"]["CompanyMarketRef"][];
2566
2809
  }>;
2567
2810
  search(body: CompaniesSearchBody, query?: Record<string, never>, options?: FetchOptions): Promise<SearchEnvelope<{
2568
2811
  id: string;
@@ -2589,12 +2832,22 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2589
2832
  publishedJobCount: number;
2590
2833
  links: components["schemas"]["PublicCompanyLinks"];
2591
2834
  }>>;
2592
- markets(query?: CompanyMarketsListQuery, options?: FetchOptions): Promise<ListEnvelope<{
2835
+ markets: ((query?: CompanyMarketsListQuery, options?: FetchOptions) => Promise<ListEnvelope<{
2593
2836
  object: "company_market";
2594
2837
  slug: string;
2595
2838
  name: string;
2596
2839
  companyCount: number;
2597
- }>>;
2840
+ }>>) & {
2841
+ resolve(market: string, options?: FetchOptions): Promise<{
2842
+ object: "taxonomy_resolution";
2843
+ type: "category" | "skill" | "place" | "market";
2844
+ sourceSlug: string;
2845
+ canonicalSlug: string;
2846
+ displayName: string;
2847
+ redirectTo: string | null;
2848
+ geo: components["schemas"]["TaxonomyGeo"];
2849
+ }>;
2850
+ };
2598
2851
  };
2599
2852
  blog: {
2600
2853
  posts: {
@@ -2797,7 +3050,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2797
3050
  categories: {
2798
3051
  resolve(slug: string, options?: FetchOptions): Promise<{
2799
3052
  object: "taxonomy_resolution";
2800
- type: "category" | "skill" | "place";
3053
+ type: "category" | "skill" | "place" | "market";
2801
3054
  sourceSlug: string;
2802
3055
  canonicalSlug: string;
2803
3056
  displayName: string;
@@ -2808,7 +3061,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2808
3061
  skills: {
2809
3062
  resolve(slug: string, options?: FetchOptions): Promise<{
2810
3063
  object: "taxonomy_resolution";
2811
- type: "category" | "skill" | "place";
3064
+ type: "category" | "skill" | "place" | "market";
2812
3065
  sourceSlug: string;
2813
3066
  canonicalSlug: string;
2814
3067
  displayName: string;
@@ -2830,7 +3083,7 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2830
3083
  }>>;
2831
3084
  resolve(slug: string, options?: FetchOptions): Promise<{
2832
3085
  object: "taxonomy_resolution";
2833
- type: "category" | "skill" | "place";
3086
+ type: "category" | "skill" | "place" | "market";
2834
3087
  sourceSlug: string;
2835
3088
  canonicalSlug: string;
2836
3089
  displayName: string;
@@ -2904,7 +3157,219 @@ declare function createBoardClient(options: CreateBoardClientOptions): {
2904
3157
  success: boolean;
2905
3158
  }>;
2906
3159
  };
3160
+ salaries: {
3161
+ titles: {
3162
+ retrieve(categorySlug: string, query?: SalaryDetailQuery, options?: FetchOptions): Promise<{
3163
+ object: "title_salary_detail";
3164
+ sourceSlug: string;
3165
+ canonicalSlug: string;
3166
+ categoryName: string;
3167
+ overallSalary: {
3168
+ avgMin: number;
3169
+ avgMax: number;
3170
+ p25Min: number;
3171
+ p75Max: number;
3172
+ jobCount: number;
3173
+ } | null;
3174
+ bySeniority: {
3175
+ seniority: string;
3176
+ avgSalaryMin: number;
3177
+ avgSalaryMax: number;
3178
+ jobCount: number;
3179
+ boardAvgMin: number | null;
3180
+ boardAvgMax: number | null;
3181
+ boardMedianMin: number | null;
3182
+ boardMedianMax: number | null;
3183
+ boardP25Min: number | null;
3184
+ boardP75Min: number | null;
3185
+ boardP25Max: number | null;
3186
+ boardP75Max: number | null;
3187
+ diffPercent: number | null;
3188
+ }[];
3189
+ topCompanies: {
3190
+ avgSalaryMin: number;
3191
+ avgSalaryMax: number;
3192
+ jobCount: number;
3193
+ companySlug: string;
3194
+ companyName: string;
3195
+ logoPath: string | null;
3196
+ }[];
3197
+ topLocations: {
3198
+ avgSalaryMin: number;
3199
+ avgSalaryMax: number;
3200
+ jobCount: number;
3201
+ placeName: string;
3202
+ placeSlug: string;
3203
+ countryCode: string;
3204
+ }[];
3205
+ topSkills: {
3206
+ avgSalaryMin: number;
3207
+ avgSalaryMax: number;
3208
+ jobCount: number;
3209
+ skillSlug: string;
3210
+ skillName: string;
3211
+ }[];
3212
+ relatedTitles: {
3213
+ avgSalaryMin: number;
3214
+ avgSalaryMax: number;
3215
+ jobCount: number;
3216
+ categorySlug: string;
3217
+ categoryName: string;
3218
+ }[];
3219
+ totalLocationCount: number;
3220
+ boardOverallAvgMin: number | null;
3221
+ boardOverallAvgMax: number | null;
3222
+ boardMedianMin: number | null;
3223
+ boardMedianMax: number | null;
3224
+ boardP25Min: number | null;
3225
+ boardP75Max: number | null;
3226
+ currency: string;
3227
+ }>;
3228
+ };
3229
+ skills: {
3230
+ retrieve(skillSlug: string, query?: SalaryDetailQuery, options?: FetchOptions): Promise<{
3231
+ object: "skill_salary_detail";
3232
+ sourceSlug: string;
3233
+ canonicalSlug: string;
3234
+ skillName: string;
3235
+ overallSalary: {
3236
+ avgMin: number;
3237
+ avgMax: number;
3238
+ medianMin: number;
3239
+ medianMax: number;
3240
+ p25Min: number;
3241
+ p75Max: number;
3242
+ jobCount: number;
3243
+ } | null;
3244
+ bySeniority: {
3245
+ seniority: string;
3246
+ avgSalaryMin: number;
3247
+ avgSalaryMax: number;
3248
+ jobCount: number;
3249
+ boardAvgMin: number | null;
3250
+ boardAvgMax: number | null;
3251
+ diffPercent: number | null;
3252
+ }[];
3253
+ topCompanies: {
3254
+ avgSalaryMin: number;
3255
+ avgSalaryMax: number;
3256
+ jobCount: number;
3257
+ companySlug: string;
3258
+ companyName: string;
3259
+ logoPath: string | null;
3260
+ }[];
3261
+ topLocations: {
3262
+ avgSalaryMin: number;
3263
+ avgSalaryMax: number;
3264
+ jobCount: number;
3265
+ placeName: string;
3266
+ placeSlug: string;
3267
+ countryCode: string;
3268
+ }[];
3269
+ topTitles: {
3270
+ avgSalaryMin: number;
3271
+ avgSalaryMax: number;
3272
+ jobCount: number;
3273
+ categorySlug: string;
3274
+ categoryName: string;
3275
+ }[];
3276
+ relatedSkills: {
3277
+ avgSalaryMin: number;
3278
+ avgSalaryMax: number;
3279
+ jobCount: number;
3280
+ skillSlug: string;
3281
+ skillName: string;
3282
+ }[];
3283
+ totalLocationCount: number;
3284
+ boardOverallAvgMin: number | null;
3285
+ boardOverallAvgMax: number | null;
3286
+ boardMedianMin: number | null;
3287
+ boardMedianMax: number | null;
3288
+ currency: string;
3289
+ }>;
3290
+ };
3291
+ locations: {
3292
+ retrieve(locationSlug: string, query?: SalaryDetailQuery, options?: FetchOptions): Promise<{
3293
+ object: "location_salary_detail";
3294
+ sourceSlug: string;
3295
+ canonicalSlug: string;
3296
+ placeName: string;
3297
+ placeId: string;
3298
+ adminLevel: string;
3299
+ countryCode: string;
3300
+ overallSalary: {
3301
+ avgMin: number;
3302
+ avgMax: number;
3303
+ medianMin: number;
3304
+ medianMax: number;
3305
+ p25Min: number;
3306
+ p75Max: number;
3307
+ jobCount: number;
3308
+ } | null;
3309
+ childLocations: {
3310
+ placeName: string;
3311
+ placeSlug: string;
3312
+ countryCode: string;
3313
+ avgSalaryMin: number;
3314
+ avgSalaryMax: number;
3315
+ medianSalaryMin: number;
3316
+ medianSalaryMax: number;
3317
+ p25SalaryMin: number;
3318
+ p75SalaryMax: number;
3319
+ jobCount: number;
3320
+ currency: string;
3321
+ }[];
3322
+ childLocationsByRegion: {
3323
+ regionName: string;
3324
+ regionSlug: string;
3325
+ cities: {
3326
+ placeName: string;
3327
+ placeSlug: string;
3328
+ countryCode: string;
3329
+ avgSalaryMin: number;
3330
+ avgSalaryMax: number;
3331
+ medianSalaryMin: number;
3332
+ medianSalaryMax: number;
3333
+ p25SalaryMin: number;
3334
+ p75SalaryMax: number;
3335
+ jobCount: number;
3336
+ currency: string;
3337
+ }[];
3338
+ }[];
3339
+ topCategories: {
3340
+ avgSalaryMin: number;
3341
+ avgSalaryMax: number;
3342
+ jobCount: number;
3343
+ categorySlug: string;
3344
+ categoryName: string;
3345
+ }[];
3346
+ topSkills: {
3347
+ avgSalaryMin: number;
3348
+ avgSalaryMax: number;
3349
+ jobCount: number;
3350
+ skillSlug: string;
3351
+ skillName: string;
3352
+ }[];
3353
+ siblingLocations: {
3354
+ placeName: string;
3355
+ placeSlug: string;
3356
+ countryCode: string;
3357
+ avgSalaryMin: number;
3358
+ avgSalaryMax: number;
3359
+ medianSalaryMin: number;
3360
+ medianSalaryMax: number;
3361
+ p25SalaryMin: number;
3362
+ p75SalaryMax: number;
3363
+ jobCount: number;
3364
+ currency: string;
3365
+ }[];
3366
+ boardOverallAvgMin: number | null;
3367
+ boardOverallAvgMax: number | null;
3368
+ currency: string;
3369
+ }>;
3370
+ };
3371
+ };
2907
3372
  };
2908
3373
  type BoardSdk = ReturnType<typeof createBoardClient>;
2909
3374
 
2910
- export { ACCESS_TOKEN_KEY, type Awaitable, BOARD_ACCESS_GRANT_KEY, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type CompaniesListQuery, type CompaniesSearchBody, type CompanyJobsListQuery, type CompanyMarket, type CompanyMarketsListQuery, type CompanySimilarQuery, type CreateBoardClientOptions, type CustomStorage, type EducationRequirement, type EmbedJobsQuery, type EmploymentType, type FetchOptions, type ForgotPasswordBody, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type Logger, type LoginBody, type LogoutBody, type OfficeLocation, type PlacesListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type ResetPasswordBody, SDK_VERSION, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type Seniority, type StorageMode, type StorefrontPagination, type TaxonomyGeo, type TaxonomyResolution, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };
3375
+ export { ACCESS_TOKEN_KEY, type Awaitable, BOARD_ACCESS_GRANT_KEY, type BlogAuthorEmbed, type BlogPostsListQuery, type BlogSearchBody, type BlogSimilarQuery, type BlogTagEmbed, type BoardAccessGrant, BoardApiError, type BoardAuthSession, BoardClient, type BoardRequest, type BoardSdk, type BoardSeo, type BoardUser, type CompaniesListQuery, type CompaniesSearchBody, type CompanyJobsListQuery, type CompanyListEnvelope, type CompanyMarket, type CompanyMarketRef, type CompanyMarketsListQuery, type CompanySimilarQuery, type CreateBoardClientOptions, type CustomStorage, type EducationRequirement, type EmbedJobsQuery, type EmploymentType, type FetchOptions, type ForgotPasswordBody, type JobAlertConfirmation, type JobAlertDeletePreferenceInput, type JobAlertFiltersInput, type JobAlertFrequency, type JobAlertManageQuery, type JobAlertManageResult, type JobAlertManageState, type JobAlertManageTokenInput, type JobAlertPreference, type JobAlertRemoteOption, type JobAlertResendResult, type JobAlertStoredFilters, type JobAlertSubscribeInput, type JobAlertSubscription, type JobAlertUpdatePreferenceInput, type JobCardListEnvelope, type JobCardSearchEnvelope, type JobCompany, type JobsListQuery, type JobsSearchBody, type LegalEntity, type LegalPageType, type ListEnvelope, type LocationSalaryDetail, type Logger, type LoginBody, type LogoutBody, type OfficeLocation, type PlacesListQuery, type PublicBlogAdjacentPosts, type PublicBlogAuthor, type PublicBlogPost, type PublicBlogPostSummary, type PublicBlogTag, type PublicBoard, type PublicBoardAnalytics, type PublicBoardFeatures, type PublicBoardTheme, type PublicCompany, type PublicCompanyDetail, type PublicJob, type PublicJobCard, type PublicLegalPage, type PublicPlace, REFRESH_TOKEN_KEY, type RedirectResolution, type RefreshBody, type RegisterBody, type RelatedSearch, type RemoteOption, type RemotePermit, type RemoteTimezone, type ResetPasswordBody, SDK_VERSION, type SalaryDetailQuery, type SaveJobBody, type SavedJob, type SavedJobsListQuery, type SearchEnvelope, type Seniority, type SkillSalaryDetail, type StorageMode, type StorefrontPagination, type TaxonomyGeo, type TaxonomyResolution, type TitleSalaryDetail, type VerifyEmailBody, createBoardClient, isBoardApiError, isBoardPasswordRequired, isConflict, isForbidden, isNotFound, isRateLimited, isUnauthorized, isValidationError };