@bowmark/web 1.17.0 → 1.19.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/generated/library.d.ts +848 -22
- package/dist/generated/validators.js +1039 -73
- package/package.json +1 -1
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// rather than imported. An `import` or `export` at the top level of this file would
|
|
6
6
|
// turn it into a module and every declaration below would stop being global.
|
|
7
7
|
//
|
|
8
|
-
// Manifest version:
|
|
9
|
-
// 45 capabilities,
|
|
8
|
+
// Manifest version: 91a69720e3caaa44f20031f9902b213daadc2093c895452fe8b71d88e0c2380c
|
|
9
|
+
// 45 capabilities, 379 providers, 936 typed functions, 20 refused.
|
|
10
10
|
// 51,715 family members, sharing 2 interface(s) — declared once and pointed at, never repeated per member.
|
|
11
11
|
//
|
|
12
12
|
// REFUSED — these functions are real and callable, and their declared arguments
|
|
@@ -2228,18 +2228,48 @@ type CallOptions = {
|
|
|
2228
2228
|
* news coverage, with real publication dates and the outlet's name. ONE ENGINE TODAY (Bing),
|
|
2229
2229
|
* so if it is down this fails rather than degrading — it throws, and never reports an outage
|
|
2230
2230
|
* as zero results. Two things that engine cannot do, measured on `web`: it never returns an
|
|
2231
|
-
* empty list even when nothing matches
|
|
2231
|
+
* empty list even when nothing matches — including for a long-tail query it has nothing
|
|
2232
|
+
* confident to say about, e.g. an obscure company name plus "pricing" — and it ignores search
|
|
2233
|
+
* operators like site:. `warnings` now flags the extreme case of the first — every returned
|
|
2234
|
+
* row sharing not one word with the query, or every row matching only a generic word like
|
|
2235
|
+
* "pricing" while the name you searched for is absent from all of them — but a
|
|
2236
|
+
* partially-relevant substitution is not caught. A THIRD limit, measured 2026-09-11 and the
|
|
2237
|
+
* one that hits ordinary research: it answers a MULTI-WORD query by reducing it to the single
|
|
2238
|
+
* most popular word in it and returning that word's results — "React useEffect dependency
|
|
2239
|
+
* array" comes back as React's homepage — and quoting, shortening or site-scoping the query
|
|
2240
|
+
* does not change it. `warnings` now flags four shapes. Three read the words: no returned row
|
|
2241
|
+
* sharing a word with the query, every row matching only a generic word like "pricing", or
|
|
2242
|
+
* fewer than half the query's subject words appearing anywhere in the results. The fourth asks
|
|
2243
|
+
* the engine the SAME query twice down the same exit — an answer that differs the second time
|
|
2244
|
+
* is a random decoy, because an answerable query is stable across repeats (measured
|
|
2245
|
+
* 2026-09-12). A merely partial substitution is still not caught.
|
|
2232
2246
|
*/
|
|
2233
2247
|
interface Unit {
|
|
2234
2248
|
/**
|
|
2235
2249
|
* Searches the web and returns ranked results — title, destination URL, snippet — from the
|
|
2236
2250
|
* first engine in the chain that answers. `engine` names which one that was, and `warnings`
|
|
2237
2251
|
* names any that were tried and failed first. Feed a result's `url` straight to
|
|
2238
|
-
* bowmark.read.page to actually read it.
|
|
2239
|
-
* engine NEVER returns an empty list, so results are its best offer rather than proof
|
|
2240
|
-
* matched
|
|
2241
|
-
*
|
|
2242
|
-
*
|
|
2252
|
+
* bowmark.read.page to actually read it. THREE THINGS TO KNOW BEFORE YOU TRUST THE ROWS. (1)
|
|
2253
|
+
* The engine NEVER returns an empty list, so results are its best offer rather than proof
|
|
2254
|
+
* anything matched — a long-tail query (an obscure company name plus "pricing", say) can come
|
|
2255
|
+
* back with ten confident rows about something else entirely. (2) It IGNORES operators — a
|
|
2256
|
+
* `site:example.com` query is not scoped to that site. (3) MEASURED 2026-09-11, AND THE ONE
|
|
2257
|
+
* THAT HITS ORDINARY RESEARCH: it answers a MULTI-WORD query by reducing it to the single most
|
|
2258
|
+
* popular word in it and returning that word's results. "React useEffect dependency array"
|
|
2259
|
+
* comes back as React's own homepage, and a nine-word query naming a company, a job and a
|
|
2260
|
+
* protocol came back as the results for the one two-letter acronym in it. Quoting the proper
|
|
2261
|
+
* noun, shortening the query and site-scoping it were all tried on the same queries and all
|
|
2262
|
+
* returned the identical substituted set, so rewriting the query does not help — search the
|
|
2263
|
+
* ONE thing you most need, or read a URL you already know. `warnings` flags four shapes. Three
|
|
2264
|
+
* read the words: no row sharing a single word with the query, every row matching only a
|
|
2265
|
+
* generic word like "pricing" while the subject you named is absent, or fewer than half the
|
|
2266
|
+
* query's subject words appearing anywhere in the results. The fourth reads the engine's own
|
|
2267
|
+
* behaviour and is the reliable one: the query is asked TWICE down the same exit, and an
|
|
2268
|
+
* answer that comes back different the second time is a random decoy rather than a bad ranking
|
|
2269
|
+
* — measured 2026-09-12, an answerable query repeats identically while an unanswerable one
|
|
2270
|
+
* returns a fresh unrelated set every time. A partially-relevant substitution is still not
|
|
2271
|
+
* caught. When every engine fails this THROWS rather than returning zero rows, because no
|
|
2272
|
+
* engine reached is not the same as nothing found.
|
|
2243
2273
|
*/
|
|
2244
2274
|
web(query: string | { query: string, limit?: number }, limit?: number, options?: CallOptions): Promise<SearchWebResult>;
|
|
2245
2275
|
|
|
@@ -2611,23 +2641,80 @@ interface ForecastResult {
|
|
|
2611
2641
|
}
|
|
2612
2642
|
|
|
2613
2643
|
declare namespace BowmarkCapability_web_form_fields {
|
|
2614
|
-
// ── Inspect
|
|
2644
|
+
// ── Inspect, fill and drive a multi-step web form — the unit's own declarations, verbatim ──
|
|
2615
2645
|
|
|
2616
|
-
interface FormField { name: string | null; label: string | null; type: string; required: boolean }
|
|
2617
|
-
interface InspectedForm { action: string | null; method: string; fields: FormField[] }
|
|
2618
|
-
|
|
2646
|
+
interface FormField { name: string | null; label: string | null; type: string; required: boolean; options?: string[] }
|
|
2647
|
+
interface InspectedForm { action: string | null; method: string; fields: FormField[]; frameUrl?: string | null }
|
|
2648
|
+
|
|
2649
|
+
type FormOptions = {
|
|
2650
|
+
strategy?: "auto" | "fetch" | "browser" // default "auto" — plain GET, browser only if it found nothing
|
|
2651
|
+
open?: string // the control that opens the form: a CSS selector or its visible text
|
|
2652
|
+
timeoutMs?: number // default 30000
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
type FormInspectionResult = {
|
|
2656
|
+
url: string
|
|
2657
|
+
title: string | null
|
|
2658
|
+
forms: InspectedForm[]
|
|
2659
|
+
fieldCount: number
|
|
2660
|
+
servedBy: "fetch" | "browser" // which rung paid for this
|
|
2661
|
+
escalated: boolean // the GET was tried and found nothing
|
|
2662
|
+
escalationReason: string | null // set even under strategy:"fetch", so under-reading is visible
|
|
2663
|
+
openedWith: string | null // the control that was clicked to reveal the form
|
|
2664
|
+
multiStep: boolean // more steps follow; the count is the visible step only
|
|
2665
|
+
stepLabel: string | null // the form's own "Step 2 of 4", when it prints one
|
|
2666
|
+
warnings: string[]
|
|
2667
|
+
}
|
|
2668
|
+
|
|
2669
|
+
type FormFillOptions = {
|
|
2670
|
+
open?: string // the control that opens the form, if you already know it
|
|
2671
|
+
timeoutMs?: number // default 30000
|
|
2672
|
+
advance?: boolean // click "Next"/"Continue" once values are written. default false
|
|
2673
|
+
submit?: boolean // click the control that COMMITS the form. default false. wins over advance
|
|
2674
|
+
}
|
|
2675
|
+
|
|
2676
|
+
type FormFillResult = {
|
|
2677
|
+
url: string
|
|
2678
|
+
filled: string[] // the values keys that matched a field and were written
|
|
2679
|
+
notFound: string[] // the values keys nothing on the page matched
|
|
2680
|
+
advanced: boolean // a Next/Continue control was found and clicked
|
|
2681
|
+
submitted: boolean // a submit/book/place-order control was found and clicked
|
|
2682
|
+
openedWith: string | null
|
|
2683
|
+
multiStep: boolean // the step now on screen continues past this one
|
|
2684
|
+
stepLabel: string | null
|
|
2685
|
+
warnings: string[]
|
|
2686
|
+
}
|
|
2619
2687
|
|
|
2620
2688
|
/**
|
|
2621
|
-
*
|
|
2622
|
-
*
|
|
2689
|
+
* Inventories every field a web form asks for — label, name, type, choices and required-ness —
|
|
2690
|
+
* including a booking or quote widget that only appears after a click and mounts in its own
|
|
2691
|
+
* iframe. `getFields` is read-only. `fillForm` writes answers into those same fields and can
|
|
2692
|
+
* click 'Next'/'Continue' to advance a multi-step flow, or the control that finally commits it
|
|
2693
|
+
* — one call, one step; call it again for the next step.
|
|
2623
2694
|
*/
|
|
2624
2695
|
interface Unit {
|
|
2625
2696
|
/**
|
|
2626
|
-
* Reads a
|
|
2627
|
-
*
|
|
2628
|
-
*
|
|
2697
|
+
* Reads a page and returns its forms plus a total field count, each field with its label,
|
|
2698
|
+
* name, type, choices and required-ness. Takes a plain GET first and opens a browser only when
|
|
2699
|
+
* that finds no fields — then it clicks the control that reveals the form (a `Book Online`
|
|
2700
|
+
* button, say) and reads the widget's own cross-origin iframe. It clicks exactly that one
|
|
2701
|
+
* control: it never types, never picks an option and never submits, so a multi-step flow comes
|
|
2702
|
+
* back as the visible step plus `multiStep: true`.
|
|
2703
|
+
*/
|
|
2704
|
+
getFields(url: string, options?: FormOptions): Promise<FormInspectionResult>;
|
|
2705
|
+
|
|
2706
|
+
/**
|
|
2707
|
+
* Opens the page (and the booking/quote widget behind a button, exactly as `getFields` does),
|
|
2708
|
+
* then writes `values` into whatever fields match — keyed by a field's `name` or a word or two
|
|
2709
|
+
* of its label, matched fuzzily so the site's own wording doesn't have to be exact. Always
|
|
2710
|
+
* opens a browser: filling is an interaction, not a read. Pass `advance: true` to click
|
|
2711
|
+
* 'Next'/'Continue' once everything is written, or `submit: true` to click the control that
|
|
2712
|
+
* actually commits the form (submit wins if both are set). One call is one step — call it
|
|
2713
|
+
* again with the next step's `values` to walk a wizard forward. `notFound` names any `values`
|
|
2714
|
+
* key nothing on the page matched, so a caller who guessed a label wrong sees that rather than
|
|
2715
|
+
* silence.
|
|
2629
2716
|
*/
|
|
2630
|
-
|
|
2717
|
+
fillForm(url: string, values: Record<string, string>, options?: FormFillOptions): Promise<FormFillResult>;
|
|
2631
2718
|
}
|
|
2632
2719
|
}
|
|
2633
2720
|
|
|
@@ -3279,6 +3366,32 @@ interface abercrombieStockQuery {
|
|
|
3279
3366
|
}
|
|
3280
3367
|
}
|
|
3281
3368
|
|
|
3369
|
+
declare namespace BowmarkProvider_abqplumb {
|
|
3370
|
+
// ── Albuquerque Plumbing, Heating & Cooling — the unit's own declarations, verbatim ──
|
|
3371
|
+
interface AbqPlumbIssueType { id: number; name: string; division: string | null; }
|
|
3372
|
+
interface AbqPlumbServiceType { id: number; name: string; issueTypes: AbqPlumbIssueType[]; }
|
|
3373
|
+
interface AbqPlumbAppointmentRequest { serviceTypeId: number; issueTypeId: number; }
|
|
3374
|
+
interface AbqPlumbAppointmentSlot { startTime: string; endTime: string; }
|
|
3375
|
+
|
|
3376
|
+
/**
|
|
3377
|
+
* Albuquerque Plumbing, Heating & Cooling's public booking-widget services and live
|
|
3378
|
+
* appointment slots, with no customer details needed.
|
|
3379
|
+
*/
|
|
3380
|
+
interface Unit {
|
|
3381
|
+
/**
|
|
3382
|
+
* Lists the services and issue types in ABQ Plumb's own booking widget. The entry point:
|
|
3383
|
+
* getAvailability takes a serviceTypeId and issueTypeId this returns.
|
|
3384
|
+
*/
|
|
3385
|
+
listServices(): Promise<AbqPlumbServiceType[]>;
|
|
3386
|
+
|
|
3387
|
+
/**
|
|
3388
|
+
* Returns ABQ Plumb's currently-open appointment slots for one service and issue type from
|
|
3389
|
+
* listServices. This reads availability only; it never submits a booking.
|
|
3390
|
+
*/
|
|
3391
|
+
getAvailability(input: AbqPlumbAppointmentRequest): Promise<AbqPlumbAppointmentSlot[]>;
|
|
3392
|
+
}
|
|
3393
|
+
}
|
|
3394
|
+
|
|
3282
3395
|
declare namespace BowmarkProvider_acerentacar {
|
|
3283
3396
|
// ── ACE Rent A Car — the unit's own declarations, verbatim ──
|
|
3284
3397
|
interface AcerentacarSearchArgs { pickupLocationCode: string; pickupDate: string; dropoffDate: string; pickupTime?: string; dropoffTime?: string; }
|
|
@@ -5938,6 +6051,9 @@ interface BingSearchResult {
|
|
|
5938
6051
|
query: string;
|
|
5939
6052
|
results: BingWebResult[];
|
|
5940
6053
|
warnings: string[];
|
|
6054
|
+
substituted: boolean // true when any of the four checks below judged these
|
|
6055
|
+
// rows to answer a DIFFERENT query. The machine-readable
|
|
6056
|
+
// form of the verdict warnings states in prose
|
|
5941
6057
|
}
|
|
5942
6058
|
|
|
5943
6059
|
interface BingNewsSearchResult {
|
|
@@ -5955,13 +6071,40 @@ interface BingNewsSearchResult {
|
|
|
5955
6071
|
interface Unit {
|
|
5956
6072
|
/**
|
|
5957
6073
|
* Searches the web and returns the ten results Bing ranked first, with title, destination URL,
|
|
5958
|
-
* snippet and date.
|
|
5959
|
-
*
|
|
5960
|
-
*
|
|
5961
|
-
*
|
|
6074
|
+
* snippet and date. THREE LIMITS. (1) It NEVER returns an empty list — a query of three
|
|
6075
|
+
* invented words came back with ten confident, unrelated rows, and a long-tail query (an
|
|
6076
|
+
* obscure company name plus "pricing", say) can get the same substituted treatment. (2) It
|
|
6077
|
+
* IGNORES search operators, so `site:reddit.com …` is not scoped to reddit. (3) MEASURED
|
|
6078
|
+
* 2026-09-11, and the one that hits ordinary research: it answers a MULTI-WORD query by
|
|
6079
|
+
* reducing it to the single most popular word in it and returning that word's results — "React
|
|
6080
|
+
* useEffect dependency array" comes back as React's own homepage, and a nine-word query naming
|
|
6081
|
+
* a company, a job and a protocol came back as the results for the one two-letter acronym in
|
|
6082
|
+
* it. Quoting the proper noun, shortening the query and site-scoping it were all tried and all
|
|
6083
|
+
* returned the identical substituted set, so rewriting the query does not help. `warnings`
|
|
6084
|
+
* flags four shapes. Three read the words: no row sharing a single word with the query, every
|
|
6085
|
+
* row matching only a generic word like "pricing" while the thing you named is absent, or
|
|
6086
|
+
* fewer than half the query's subject words appearing anywhere in the results. The fourth
|
|
6087
|
+
* reads Bing's own behaviour and is the reliable one — the query is asked TWICE down the same
|
|
6088
|
+
* exit, and an answer that differs the second time is a random decoy, because a query Bing can
|
|
6089
|
+
* actually answer is stable across repeats (measured 2026-09-12: 1.00 repeat overlap on every
|
|
6090
|
+
* answerable query, 0.00 on every unanswerable one, nothing in between). A partially-relevant
|
|
6091
|
+
* result set is still not caught, so treat the rows as Bing's best offer rather than as proof
|
|
6092
|
+
* anything matched.
|
|
5962
6093
|
*/
|
|
5963
6094
|
searchWeb(args: { query: string, limit?: number }): Promise<BingSearchResult>;
|
|
5964
6095
|
|
|
6096
|
+
/**
|
|
6097
|
+
* Searches the web through a browser to bing.com instead of reading the RSS feed — same
|
|
6098
|
+
* results shape. It does NOT fix relevance: measured 2026-09-12 from the fleet's own egress,
|
|
6099
|
+
* it substitutes on exactly the queries the RSS feed substitutes on, on a residential exit and
|
|
6100
|
+
* a datacenter one alike (the earlier claim that a browser answers multi-word queries
|
|
6101
|
+
* correctly was measured from a laptop and confounded the client with the network). Kept as a
|
|
6102
|
+
* standby that can rescue a query the primary drops. Expensive: holds a browser pool slot for
|
|
6103
|
+
* ~4s per call. Use searchWeb instead, and let the search capability choose when to fall back
|
|
6104
|
+
* to this version.
|
|
6105
|
+
*/
|
|
6106
|
+
searchWebBrowser(args: { query: string, limit?: number }): Promise<BingSearchResult>;
|
|
6107
|
+
|
|
5965
6108
|
/**
|
|
5966
6109
|
* Searches news coverage and returns stories with the headline, the outlet's own article URL,
|
|
5967
6110
|
* a summary, a real publication timestamp, the publisher name and a thumbnail. Use this rather
|
|
@@ -7187,6 +7330,133 @@ interface CabinsforyouSearchArgs {
|
|
|
7187
7330
|
}
|
|
7188
7331
|
}
|
|
7189
7332
|
|
|
7333
|
+
declare namespace BowmarkProvider_cal_com {
|
|
7334
|
+
// ── Cal.com — the unit's own declarations, verbatim ──
|
|
7335
|
+
interface CalComEventType {
|
|
7336
|
+
slug: string;
|
|
7337
|
+
title: string;
|
|
7338
|
+
id: number;
|
|
7339
|
+
lengthInMinutes: number | null;
|
|
7340
|
+
description: string | null;
|
|
7341
|
+
url: string;
|
|
7342
|
+
}
|
|
7343
|
+
|
|
7344
|
+
interface CalComEventTypesResult {
|
|
7345
|
+
username: string;
|
|
7346
|
+
eventTypes: CalComEventType[];
|
|
7347
|
+
}
|
|
7348
|
+
|
|
7349
|
+
interface CalComSlot {
|
|
7350
|
+
start: string;
|
|
7351
|
+
}
|
|
7352
|
+
|
|
7353
|
+
interface CalComDay {
|
|
7354
|
+
date: string;
|
|
7355
|
+
slots: CalComSlot[];
|
|
7356
|
+
}
|
|
7357
|
+
|
|
7358
|
+
interface CalComAvailabilityOptions {
|
|
7359
|
+
daysAhead?: number;
|
|
7360
|
+
}
|
|
7361
|
+
|
|
7362
|
+
interface CalComAvailabilityResult {
|
|
7363
|
+
username: string;
|
|
7364
|
+
eventType: CalComEventType;
|
|
7365
|
+
days: CalComDay[];
|
|
7366
|
+
otherEventTypes: CalComEventType[];
|
|
7367
|
+
}
|
|
7368
|
+
|
|
7369
|
+
/**
|
|
7370
|
+
* Cal.com's own documented, keyless public API — the event types a booking page offers and the
|
|
7371
|
+
* real, currently-open time slots for one of them — no browser, no key.
|
|
7372
|
+
*/
|
|
7373
|
+
interface Unit {
|
|
7374
|
+
/**
|
|
7375
|
+
* Lists every event type a Cal.com username currently publishes — the entry point. Takes the
|
|
7376
|
+
* bare username (e.g. "humanlayer") or the full url a caller was given (e.g.
|
|
7377
|
+
* "https://cal.com/humanlayer"), and returns each event's title, slug, id and length.
|
|
7378
|
+
*/
|
|
7379
|
+
getEventTypes(username: string): Promise<CalComEventTypesResult>;
|
|
7380
|
+
|
|
7381
|
+
/**
|
|
7382
|
+
* Returns the real, currently-open time slots for one Cal.com event type — accepts a bare
|
|
7383
|
+
* username ("humanlayer"), a username url, or a specific event url
|
|
7384
|
+
* ("https://cal.com/humanlayer/code"). Given a bare username, it picks that username's first
|
|
7385
|
+
* event type and reports the rest in `otherEventTypes`.
|
|
7386
|
+
*/
|
|
7387
|
+
getAvailability(username: string, opts?: CalComAvailabilityOptions): Promise<CalComAvailabilityResult>;
|
|
7388
|
+
}
|
|
7389
|
+
}
|
|
7390
|
+
|
|
7391
|
+
declare namespace BowmarkProvider_calendly {
|
|
7392
|
+
// ── Calendly — the unit's own declarations, verbatim ──
|
|
7393
|
+
interface CalendlyEventType {
|
|
7394
|
+
slug: string;
|
|
7395
|
+
name: string;
|
|
7396
|
+
uuid: string;
|
|
7397
|
+
url: string;
|
|
7398
|
+
description: string | null;
|
|
7399
|
+
}
|
|
7400
|
+
|
|
7401
|
+
interface CalendlyProfile {
|
|
7402
|
+
slug: string;
|
|
7403
|
+
name: string;
|
|
7404
|
+
timezone: string;
|
|
7405
|
+
}
|
|
7406
|
+
|
|
7407
|
+
interface CalendlyEventTypesResult {
|
|
7408
|
+
profile: CalendlyProfile;
|
|
7409
|
+
eventTypes: CalendlyEventType[];
|
|
7410
|
+
}
|
|
7411
|
+
|
|
7412
|
+
interface CalendlySlot {
|
|
7413
|
+
startTime: string;
|
|
7414
|
+
inviteesRemaining: number;
|
|
7415
|
+
}
|
|
7416
|
+
|
|
7417
|
+
interface CalendlyDay {
|
|
7418
|
+
date: string;
|
|
7419
|
+
status: string; // the site's own labels — read the values off a result, never guess one from prose
|
|
7420
|
+
slots: CalendlySlot[];
|
|
7421
|
+
}
|
|
7422
|
+
|
|
7423
|
+
interface CalendlyAvailabilityOptions {
|
|
7424
|
+
timezone?: string;
|
|
7425
|
+
daysAhead?: number;
|
|
7426
|
+
}
|
|
7427
|
+
|
|
7428
|
+
interface CalendlyAvailabilityResult {
|
|
7429
|
+
profileSlug: string;
|
|
7430
|
+
eventType: CalendlyEventType;
|
|
7431
|
+
timezone: string;
|
|
7432
|
+
days: CalendlyDay[];
|
|
7433
|
+
otherEventTypes: CalendlyEventType[];
|
|
7434
|
+
}
|
|
7435
|
+
|
|
7436
|
+
/**
|
|
7437
|
+
* Calendly's own public booking-widget data — the event types a scheduling page offers and the
|
|
7438
|
+
* real, currently-open time slots for one of them — read straight off the widget's
|
|
7439
|
+
* undocumented JSON endpoints, no browser, no key.
|
|
7440
|
+
*/
|
|
7441
|
+
interface Unit {
|
|
7442
|
+
/**
|
|
7443
|
+
* Lists every event type a Calendly profile currently offers — the entry point. Takes the bare
|
|
7444
|
+
* profile slug a person books under (e.g. "jason-frazier") or the full url a caller was given
|
|
7445
|
+
* (e.g. "https://calendly.com/jason-frazier"), and returns each event's name, slug, uuid and
|
|
7446
|
+
* its own bookable url.
|
|
7447
|
+
*/
|
|
7448
|
+
getEventTypes(profile: string): Promise<CalendlyEventTypesResult>;
|
|
7449
|
+
|
|
7450
|
+
/**
|
|
7451
|
+
* Returns the real, currently-open time slots for one Calendly event type — accepts a bare
|
|
7452
|
+
* profile slug ("jason-frazier"), a profile url, or a specific event url
|
|
7453
|
+
* ("https://calendly.com/jason-frazier/15min"). Given a bare profile, it picks that profile's
|
|
7454
|
+
* first event type and reports the rest in `otherEventTypes`.
|
|
7455
|
+
*/
|
|
7456
|
+
getAvailability(profile: string, opts?: CalendlyAvailabilityOptions): Promise<CalendlyAvailabilityResult>;
|
|
7457
|
+
}
|
|
7458
|
+
}
|
|
7459
|
+
|
|
7190
7460
|
declare namespace BowmarkProvider_caliberhealth {
|
|
7191
7461
|
// ── Caliber Healthcare Solutions — the unit's own declarations, verbatim ──
|
|
7192
7462
|
// Caliber Healthcare Solutions' OWN shapes — not a capability contract.
|
|
@@ -10551,6 +10821,7 @@ interface DentalplansPlanListing {
|
|
|
10551
10821
|
monthlyPrice: number;
|
|
10552
10822
|
dentistsNearYou: number | null;
|
|
10553
10823
|
detailUrl: string;
|
|
10824
|
+
checkoutUrl: string | null;
|
|
10554
10825
|
}
|
|
10555
10826
|
|
|
10556
10827
|
interface DentalplansSearchResult {
|
|
@@ -11400,6 +11671,78 @@ interface ebayItem {
|
|
|
11400
11671
|
}
|
|
11401
11672
|
}
|
|
11402
11673
|
|
|
11674
|
+
declare namespace BowmarkProvider_elase {
|
|
11675
|
+
// ── Elase Med Spa — the unit's own declarations, verbatim ──
|
|
11676
|
+
interface ElaseLocationLink {
|
|
11677
|
+
slug: string;
|
|
11678
|
+
url: string;
|
|
11679
|
+
}
|
|
11680
|
+
|
|
11681
|
+
interface ElaseLocation {
|
|
11682
|
+
slug: string;
|
|
11683
|
+
name: string;
|
|
11684
|
+
url: string;
|
|
11685
|
+
centerId: string; // the id listServices and checkAvailability take
|
|
11686
|
+
phone: string | null;
|
|
11687
|
+
address: string | null;
|
|
11688
|
+
hours: string | null;
|
|
11689
|
+
}
|
|
11690
|
+
|
|
11691
|
+
interface ElaseService {
|
|
11692
|
+
id: string; // the id checkAvailability takes
|
|
11693
|
+
name: string;
|
|
11694
|
+
description: string | null;
|
|
11695
|
+
durationMinutes: number | null;
|
|
11696
|
+
price: number | null;
|
|
11697
|
+
}
|
|
11698
|
+
|
|
11699
|
+
interface ElaseSlot {
|
|
11700
|
+
time: string; // an ISO-ish "YYYY-MM-DDTHH:mm:ss" local time
|
|
11701
|
+
}
|
|
11702
|
+
|
|
11703
|
+
interface ElaseAvailability {
|
|
11704
|
+
centerId: string;
|
|
11705
|
+
serviceId: string;
|
|
11706
|
+
date: string;
|
|
11707
|
+
slots: ElaseSlot[]; // verbatim — empty is a real answer (fully booked / closed)
|
|
11708
|
+
}
|
|
11709
|
+
|
|
11710
|
+
/**
|
|
11711
|
+
* Elase Med Spa's real location directory, live per-location service catalog, and real
|
|
11712
|
+
* open-slot appointment availability — the same Zenoti booking backend the site's own widget
|
|
11713
|
+
* calls. Rung 9/11, no browser.
|
|
11714
|
+
*/
|
|
11715
|
+
interface Unit {
|
|
11716
|
+
/**
|
|
11717
|
+
* Reads the live list of every Elase Med Spa location (slug + page URL) off the site's own
|
|
11718
|
+
* /locations/ directory.
|
|
11719
|
+
*/
|
|
11720
|
+
listLocations(): Promise<ElaseLocationLink[]>;
|
|
11721
|
+
|
|
11722
|
+
/**
|
|
11723
|
+
* Resolves a slug/neighborhood query (e.g. "sugar-house") to the matching real Elase
|
|
11724
|
+
* location(s) — name, address, phone, hours, and the Zenoti centerId listServices and
|
|
11725
|
+
* checkAvailability need. Call listLocations() first for the real slugs.
|
|
11726
|
+
*/
|
|
11727
|
+
findLocation(query: string): Promise<ElaseLocation[]>;
|
|
11728
|
+
|
|
11729
|
+
/**
|
|
11730
|
+
* Reads one location's real, live service catalog — pass a `centerId` from findLocation(), and
|
|
11731
|
+
* an optional search string (e.g. "botox", "consultation") to narrow it; omit it for the full
|
|
11732
|
+
* catalog.
|
|
11733
|
+
*/
|
|
11734
|
+
listServices(centerId: string, query?: string): Promise<ElaseService[]>;
|
|
11735
|
+
|
|
11736
|
+
/**
|
|
11737
|
+
* Checks real, live open time slots for one service at one location on one "YYYY-MM-DD" date —
|
|
11738
|
+
* the same live check Elase's own Zenoti booking widget makes before showing bookable times.
|
|
11739
|
+
* An empty `slots` array is the site's real answer (fully booked or closed that day), not an
|
|
11740
|
+
* error.
|
|
11741
|
+
*/
|
|
11742
|
+
checkAvailability(centerId: string, serviceId: string, date: string): Promise<ElaseAvailability>;
|
|
11743
|
+
}
|
|
11744
|
+
}
|
|
11745
|
+
|
|
11403
11746
|
declare namespace BowmarkProvider_elevenlabs {
|
|
11404
11747
|
// ── ElevenLabs — the unit's own declarations, verbatim ──
|
|
11405
11748
|
interface elevenlabsSynthesisResult {
|
|
@@ -11607,6 +11950,34 @@ interface Eq3SofaConfiguration {
|
|
|
11607
11950
|
}
|
|
11608
11951
|
}
|
|
11609
11952
|
|
|
11953
|
+
declare namespace BowmarkProvider_equinox_hotels {
|
|
11954
|
+
// ── Equinox Hotels — the unit's own declarations, verbatim ──
|
|
11955
|
+
interface EquinoxRoom { code: string; name: string; description: string | null; maxOccupants: number | null; bookingUrl: string; }
|
|
11956
|
+
|
|
11957
|
+
interface SearchEquinoxRatesArgs { checkIn: string; checkOut: string; adults?: number; }
|
|
11958
|
+
|
|
11959
|
+
interface EquinoxRate { roomCode: string; rateCode: string; description: string | null; currency: string; nightlyBeforeTax: number; nightlyAfterTax: number; stayBeforeTax: number | null; stayAfterTax: number | null; cancellationText: string | null; bookingUrl: string; }
|
|
11960
|
+
|
|
11961
|
+
/**
|
|
11962
|
+
* Equinox Hotel New York's own live room inventory and direct booking rates, including nightly
|
|
11963
|
+
* and stay-total tax-inclusive prices before any guest details are required.
|
|
11964
|
+
*/
|
|
11965
|
+
interface Unit {
|
|
11966
|
+
/**
|
|
11967
|
+
* Lists Equinox Hotel New York's live room inventory, including the booking engine's room
|
|
11968
|
+
* code, description, and occupancy limit.
|
|
11969
|
+
*/
|
|
11970
|
+
listRooms(): Promise<EquinoxRoom[]>;
|
|
11971
|
+
|
|
11972
|
+
/**
|
|
11973
|
+
* Searches Equinox Hotel New York's own live booking engine for direct rates on
|
|
11974
|
+
* check-in/check-out dates and an adult count. Returns every room/rate plan with nightly and
|
|
11975
|
+
* stay-total prices, not an OTA estimate.
|
|
11976
|
+
*/
|
|
11977
|
+
searchRates(args: SearchEquinoxRatesArgs): Promise<EquinoxRate[]>;
|
|
11978
|
+
}
|
|
11979
|
+
}
|
|
11980
|
+
|
|
11610
11981
|
declare namespace BowmarkProvider_erieinsurance {
|
|
11611
11982
|
// ── ERIE Insurance — the unit's own declarations, verbatim ──
|
|
11612
11983
|
interface ErieAgentQuery {
|
|
@@ -11817,6 +12188,31 @@ type ShadeQuizAnswerResult =
|
|
|
11817
12188
|
}
|
|
11818
12189
|
}
|
|
11819
12190
|
|
|
12191
|
+
declare namespace BowmarkProvider_evolvemedspa {
|
|
12192
|
+
// ── Evolve Med Spa — the unit's own declarations, verbatim ──
|
|
12193
|
+
interface EvolveMedSpaLocation { id: string; name: string; address: string | null; phone: string | null; }
|
|
12194
|
+
interface EvolveMedSpaService { id: string; name: string; description: string | null; durationMinutes: number | null; price: number | null; }
|
|
12195
|
+
interface EvolveMedSpaAvailability { centerId: string; serviceId: string; date: string; slots: { time: string }[]; }
|
|
12196
|
+
|
|
12197
|
+
/**
|
|
12198
|
+
* Evolve Med Spa's live Zenoti locations, service catalog, and bookable appointment slots — no
|
|
12199
|
+
* login, no PII, and no browser.
|
|
12200
|
+
*/
|
|
12201
|
+
interface Unit {
|
|
12202
|
+
/** Lists Evolve Med Spa's real bookable Zenoti locations. */
|
|
12203
|
+
listLocations(): Promise<EvolveMedSpaLocation[]>;
|
|
12204
|
+
|
|
12205
|
+
/** Lists a location's live Zenoti services, prices, and durations. */
|
|
12206
|
+
listServices(centerId: string, query?: string): Promise<EvolveMedSpaService[]>;
|
|
12207
|
+
|
|
12208
|
+
/**
|
|
12209
|
+
* Reads real open appointment slots for a service and date; an empty list is a real
|
|
12210
|
+
* fully-booked answer.
|
|
12211
|
+
*/
|
|
12212
|
+
checkAvailability(centerId: string, serviceId: string, date: string): Promise<EvolveMedSpaAvailability>;
|
|
12213
|
+
}
|
|
12214
|
+
}
|
|
12215
|
+
|
|
11820
12216
|
declare namespace BowmarkProvider_executivehomecare {
|
|
11821
12217
|
// ── Executive Home Care — the unit's own declarations, verbatim ──
|
|
11822
12218
|
interface ExecutivehomecareOffice {
|
|
@@ -12101,6 +12497,31 @@ interface ExtraspaceUnitAvailability {
|
|
|
12101
12497
|
}
|
|
12102
12498
|
}
|
|
12103
12499
|
|
|
12500
|
+
declare namespace BowmarkProvider_faceforwardaesthetics {
|
|
12501
|
+
// ── Face Forward Aesthetics — the unit's own declarations, verbatim ──
|
|
12502
|
+
interface FaceForwardAestheticsLocation { id: string; name: string; address: string | null; phone: string | null; }
|
|
12503
|
+
interface FaceForwardAestheticsService { id: string; name: string; description: string | null; durationMinutes: number | null; price: number | null; }
|
|
12504
|
+
interface FaceForwardAestheticsAvailability { centerId: string; serviceId: string; date: string; slots: { time: string }[]; }
|
|
12505
|
+
|
|
12506
|
+
/**
|
|
12507
|
+
* Face Forward Aesthetics' live Zenoti locations, service catalog, and bookable appointment
|
|
12508
|
+
* slots — no login, no PII, and no browser.
|
|
12509
|
+
*/
|
|
12510
|
+
interface Unit {
|
|
12511
|
+
/** Lists Face Forward Aesthetics' real bookable Zenoti locations (9 centers, OH/IN/NV/PA). */
|
|
12512
|
+
listLocations(): Promise<FaceForwardAestheticsLocation[]>;
|
|
12513
|
+
|
|
12514
|
+
/** Lists a location's live Zenoti services, prices, and durations. */
|
|
12515
|
+
listServices(centerId: string, query?: string): Promise<FaceForwardAestheticsService[]>;
|
|
12516
|
+
|
|
12517
|
+
/**
|
|
12518
|
+
* Reads real open appointment slots for a service and date; an empty list is a real
|
|
12519
|
+
* fully-booked answer.
|
|
12520
|
+
*/
|
|
12521
|
+
checkAvailability(centerId: string, serviceId: string, date: string): Promise<FaceForwardAestheticsAvailability>;
|
|
12522
|
+
}
|
|
12523
|
+
}
|
|
12524
|
+
|
|
12104
12525
|
declare namespace BowmarkProvider_facerealityskincare {
|
|
12105
12526
|
// ── Face Reality Skincare — the unit's own declarations, verbatim ──
|
|
12106
12527
|
interface FaceRealitySkincareEstheticianRow {
|
|
@@ -12141,6 +12562,38 @@ interface FaceRealitySkincareEstheticianRow {
|
|
|
12141
12562
|
}
|
|
12142
12563
|
}
|
|
12143
12564
|
|
|
12565
|
+
declare namespace BowmarkProvider_fbsappliance {
|
|
12566
|
+
// ── Factory Builder Stores (FBS Appliance) — the unit's own declarations, verbatim ──
|
|
12567
|
+
interface FbsapplianceSearchArgs {
|
|
12568
|
+
category: string; // the site's own catalog slug, e.g. "built-in-refrigerators"
|
|
12569
|
+
limit?: number; // default 24, clamped to [1, 60]
|
|
12570
|
+
}
|
|
12571
|
+
|
|
12572
|
+
interface FbsapplianceSearchResult {
|
|
12573
|
+
name: string;
|
|
12574
|
+
modelNumber: string; // may end in a literal "..." when the grid clips it
|
|
12575
|
+
price: number; // real, current selling price
|
|
12576
|
+
wasPrice: number | null; // the crossed-out "was" price, when shown
|
|
12577
|
+
availableAt: string | null; // the city the grid names, when it names one
|
|
12578
|
+
url: string; // this product's own FBS Appliance URL
|
|
12579
|
+
}
|
|
12580
|
+
|
|
12581
|
+
/**
|
|
12582
|
+
* FBS Appliance's real catalog across 8 Texas showrooms — searchAppliances runs the site's own
|
|
12583
|
+
* category grid and returns real, currently-listed appliances with live selling price, any
|
|
12584
|
+
* sale/was price, model number, and which store the grid shows it in stock at.
|
|
12585
|
+
*/
|
|
12586
|
+
interface Unit {
|
|
12587
|
+
/**
|
|
12588
|
+
* Runs FBS Appliance's own category grid and returns real, currently-listed appliances (name,
|
|
12589
|
+
* model number, real current price, the crossed-out 'was' price when shown, the store the grid
|
|
12590
|
+
* names as having it, and the product's own FBS Appliance URL). Read-only — never adds to cart
|
|
12591
|
+
* or checks out.
|
|
12592
|
+
*/
|
|
12593
|
+
searchAppliances(args: FbsapplianceSearchArgs): Promise<FbsapplianceSearchResult[]>;
|
|
12594
|
+
}
|
|
12595
|
+
}
|
|
12596
|
+
|
|
12144
12597
|
declare namespace BowmarkProvider_fieldstonehomes {
|
|
12145
12598
|
// ── Fieldstone Homes — the unit's own declarations, verbatim ──
|
|
12146
12599
|
interface FieldstonehomesSearchArgs { city?: string; homeType?: string; minPrice?: number; maxPrice?: number; minBeds?: number; minSqft?: number; }
|
|
@@ -12284,6 +12737,56 @@ interface FirstdibsListing {
|
|
|
12284
12737
|
}
|
|
12285
12738
|
}
|
|
12286
12739
|
|
|
12740
|
+
declare namespace BowmarkProvider_fitness1440 {
|
|
12741
|
+
// ── FITNESS:1440 — the unit's own declarations, verbatim ──
|
|
12742
|
+
// FITNESS:1440's OWN shapes — not a capability contract.
|
|
12743
|
+
|
|
12744
|
+
interface Fitness1440Location {
|
|
12745
|
+
state: string;
|
|
12746
|
+
city: string;
|
|
12747
|
+
}
|
|
12748
|
+
|
|
12749
|
+
interface Fitness1440ListLocationsArgs {
|
|
12750
|
+
state?: string;
|
|
12751
|
+
}
|
|
12752
|
+
|
|
12753
|
+
interface Fitness1440ListLocationsResult {
|
|
12754
|
+
locations: Fitness1440Location[];
|
|
12755
|
+
states: string[];
|
|
12756
|
+
}
|
|
12757
|
+
|
|
12758
|
+
interface Fitness1440DayPassRequestArgs {
|
|
12759
|
+
state: string;
|
|
12760
|
+
city: string;
|
|
12761
|
+
}
|
|
12762
|
+
|
|
12763
|
+
interface Fitness1440DayPassRequestInfo {
|
|
12764
|
+
state: string;
|
|
12765
|
+
city: string;
|
|
12766
|
+
requestUrl: string; // the WRITE handoff this provider never submits
|
|
12767
|
+
requiredFields: string[];
|
|
12768
|
+
}
|
|
12769
|
+
|
|
12770
|
+
/**
|
|
12771
|
+
* FITNESS:1440's own live day-pass request form (/request-day-pass/) — the real state → city
|
|
12772
|
+
* cascade of clubs currently taking free day-pass requests, off the site's own server-rendered
|
|
12773
|
+
* form, plus the form's own handoff for one confirmed location.
|
|
12774
|
+
*/
|
|
12775
|
+
interface Unit {
|
|
12776
|
+
/**
|
|
12777
|
+
* Reads FITNESS:1440's own live day-pass form and returns the state → city cascade it
|
|
12778
|
+
* currently renders, optionally filtered to one state.
|
|
12779
|
+
*/
|
|
12780
|
+
listLocations(args?: Fitness1440ListLocationsArgs): Promise<Fitness1440ListLocationsResult>;
|
|
12781
|
+
|
|
12782
|
+
/**
|
|
12783
|
+
* Validates one state/city pair against the live cascade and returns the day-pass form's own
|
|
12784
|
+
* URL and required fields — the handoff a caller completes the request at.
|
|
12785
|
+
*/
|
|
12786
|
+
getDayPassRequestInfo(args: Fitness1440DayPassRequestArgs): Promise<Fitness1440DayPassRequestInfo>;
|
|
12787
|
+
}
|
|
12788
|
+
}
|
|
12789
|
+
|
|
12287
12790
|
declare namespace BowmarkProvider_fivebelow {
|
|
12288
12791
|
// ── Five Below — the unit's own declarations, verbatim ──
|
|
12289
12792
|
interface FiveBelowVariant {
|
|
@@ -12444,6 +12947,71 @@ interface flightradar24ArrivalsBoard {
|
|
|
12444
12947
|
}
|
|
12445
12948
|
}
|
|
12446
12949
|
|
|
12950
|
+
declare namespace BowmarkProvider_fluencecorp {
|
|
12951
|
+
// ── Fluence Corporation — the unit's own declarations, verbatim ──
|
|
12952
|
+
interface ConcentrationSet {
|
|
12953
|
+
COD: number;
|
|
12954
|
+
TKN: number;
|
|
12955
|
+
NO3N: number;
|
|
12956
|
+
DisolvedOxygen?: number;
|
|
12957
|
+
}
|
|
12958
|
+
|
|
12959
|
+
interface SludgeConcentrationSet {
|
|
12960
|
+
TSSConcentration: number;
|
|
12961
|
+
COD?: number;
|
|
12962
|
+
TKN?: number;
|
|
12963
|
+
NO3N?: number;
|
|
12964
|
+
DisolvedOxygen?: number;
|
|
12965
|
+
VSS_TSS_Ratio?: number;
|
|
12966
|
+
}
|
|
12967
|
+
|
|
12968
|
+
interface PowerConsumer {
|
|
12969
|
+
name: string;
|
|
12970
|
+
consumption: number;
|
|
12971
|
+
count: number;
|
|
12972
|
+
operation: number;
|
|
12973
|
+
}
|
|
12974
|
+
|
|
12975
|
+
interface EnergyConsumptionInput {
|
|
12976
|
+
influentFlow: number;
|
|
12977
|
+
sludgeFlow?: number;
|
|
12978
|
+
influent: ConcentrationSet;
|
|
12979
|
+
effluent: ConcentrationSet;
|
|
12980
|
+
sludge: SludgeConcentrationSet;
|
|
12981
|
+
elevation: number;
|
|
12982
|
+
temperature: number;
|
|
12983
|
+
power: Record<string, PowerConsumer>;
|
|
12984
|
+
}
|
|
12985
|
+
|
|
12986
|
+
interface EnergyConsumptionResult {
|
|
12987
|
+
NEC: number;
|
|
12988
|
+
NEC_T_P: number;
|
|
12989
|
+
NOR: number;
|
|
12990
|
+
LR_COD: number;
|
|
12991
|
+
LR_TKN: number;
|
|
12992
|
+
LR_NO3N: number;
|
|
12993
|
+
LR_DisolvedOxygen: number;
|
|
12994
|
+
totalPower: number;
|
|
12995
|
+
barometricPressure: number;
|
|
12996
|
+
effluentFlow: number;
|
|
12997
|
+
level: 0 | 1 | 2 | 3;
|
|
12998
|
+
}
|
|
12999
|
+
|
|
13000
|
+
/**
|
|
13001
|
+
* Computes Normalized Energy Consumption (NEC, kWh/kg) for a wastewater-treatment plant design
|
|
13002
|
+
* per ISO 21939 — the exact calculation Fluence's own Energy Consumption Calculator performs,
|
|
13003
|
+
* reimplemented locally with no network call.
|
|
13004
|
+
*/
|
|
13005
|
+
interface Unit {
|
|
13006
|
+
/**
|
|
13007
|
+
* Computes Normalized Energy Consumption (NEC, kWh/kg) for a wastewater treatment plant design
|
|
13008
|
+
* per ISO 21939, from design flows, influent/sludge/effluent concentrations, environmental
|
|
13009
|
+
* conditions and a power-consumer list.
|
|
13010
|
+
*/
|
|
13011
|
+
calculateEnergyConsumption(args: EnergyConsumptionInput): Promise<EnergyConsumptionResult>;
|
|
13012
|
+
}
|
|
13013
|
+
}
|
|
13014
|
+
|
|
12447
13015
|
declare namespace BowmarkProvider_ford {
|
|
12448
13016
|
// ── Ford — the unit's own declarations, verbatim ──
|
|
12449
13017
|
interface fordDayHours {
|
|
@@ -12870,6 +13438,46 @@ interface HubspotPageForms {
|
|
|
12870
13438
|
}
|
|
12871
13439
|
}
|
|
12872
13440
|
|
|
13441
|
+
declare namespace BowmarkProvider_fortressbp {
|
|
13442
|
+
// ── Fortress Building Products — the unit's own declarations, verbatim ──
|
|
13443
|
+
interface fortressbpRecommendation {
|
|
13444
|
+
productName: string | null;
|
|
13445
|
+
imageUrl: string;
|
|
13446
|
+
path: string[];
|
|
13447
|
+
}
|
|
13448
|
+
interface fortressbpNextQuestion {
|
|
13449
|
+
prompt: string;
|
|
13450
|
+
options: string[];
|
|
13451
|
+
}
|
|
13452
|
+
type fortressbpRow =
|
|
13453
|
+
| ({ complete: true } & fortressbpRecommendation)
|
|
13454
|
+
| ({ complete: false } & fortressbpNextQuestion);
|
|
13455
|
+
interface ListProductTypesResult {
|
|
13456
|
+
productTypes: string[];
|
|
13457
|
+
}
|
|
13458
|
+
interface RecommendProductArgs {
|
|
13459
|
+
selections: string[];
|
|
13460
|
+
}
|
|
13461
|
+
|
|
13462
|
+
/**
|
|
13463
|
+
* Fortress Building Products' own Simplifinder product-recommendation tool (fencing, framing,
|
|
13464
|
+
* pergolas), reimplemented from the site's own decision tree.
|
|
13465
|
+
*/
|
|
13466
|
+
interface Unit {
|
|
13467
|
+
/**
|
|
13468
|
+
* Reads Simplifinder's own top-level product-type choices (Fencing / Framing / Pergolas) off
|
|
13469
|
+
* the live page.
|
|
13470
|
+
*/
|
|
13471
|
+
listProductTypes(): Promise<ListProductTypesResult>;
|
|
13472
|
+
|
|
13473
|
+
/**
|
|
13474
|
+
* Walks Simplifinder's own decision tree with the labels chosen so far and returns either the
|
|
13475
|
+
* recommended product or the next question to ask.
|
|
13476
|
+
*/
|
|
13477
|
+
recommendProduct(args: RecommendProductArgs): Promise<fortressbpRow>;
|
|
13478
|
+
}
|
|
13479
|
+
}
|
|
13480
|
+
|
|
12873
13481
|
declare namespace BowmarkProvider_fourseasonsyachts {
|
|
12874
13482
|
// ── Four Seasons Yachts — the unit's own declarations, verbatim ──
|
|
12875
13483
|
interface FourseasonsyachtsVoyage {
|
|
@@ -17457,6 +18065,35 @@ interface IvoryHomesSearchFilters {
|
|
|
17457
18065
|
}
|
|
17458
18066
|
}
|
|
17459
18067
|
|
|
18068
|
+
declare namespace BowmarkProvider_jasmine_dilucci {
|
|
18069
|
+
// ── Jasmine DiLucci Life Coaching — the unit's own declarations, verbatim ──
|
|
18070
|
+
interface FormField {
|
|
18071
|
+
name?: string;
|
|
18072
|
+
type?: string;
|
|
18073
|
+
label?: string;
|
|
18074
|
+
step?: string;
|
|
18075
|
+
options?: string[];
|
|
18076
|
+
}
|
|
18077
|
+
|
|
18078
|
+
interface ApplicationFormSchema {
|
|
18079
|
+
step?: string;
|
|
18080
|
+
fields: FormField[];
|
|
18081
|
+
}
|
|
18082
|
+
|
|
18083
|
+
interface GetApplicationFormSchemaArgs {
|
|
18084
|
+
includeOptions?: boolean;
|
|
18085
|
+
}
|
|
18086
|
+
|
|
18087
|
+
/** Extracts application form structure from Jasmine DiLucci's coaching application funnel. */
|
|
18088
|
+
interface Unit {
|
|
18089
|
+
/**
|
|
18090
|
+
* Returns the structure of the application funnel's DQ step: field names, labels, and step
|
|
18091
|
+
* markers.
|
|
18092
|
+
*/
|
|
18093
|
+
getApplicationFormSchema(args?: { includeOptions?: boolean }): Promise<ApplicationFormSchema>;
|
|
18094
|
+
}
|
|
18095
|
+
}
|
|
18096
|
+
|
|
17460
18097
|
declare namespace BowmarkProvider_jennikayne {
|
|
17461
18098
|
// ── Jenni Kayne — the unit's own declarations, verbatim ──
|
|
17462
18099
|
interface GiftCardDenomination {
|
|
@@ -18338,6 +18975,42 @@ interface LabcorpTestDetail extends LabcorpTestSummary {
|
|
|
18338
18975
|
}
|
|
18339
18976
|
}
|
|
18340
18977
|
|
|
18978
|
+
declare namespace BowmarkProvider_landmarkhw_com {
|
|
18979
|
+
// ── Landmark Home Warranty — the unit's own declarations, verbatim ──
|
|
18980
|
+
interface LandmarkhwComOrderState {
|
|
18981
|
+
code: string;
|
|
18982
|
+
name: string;
|
|
18983
|
+
}
|
|
18984
|
+
interface LandmarkhwComPropertyType {
|
|
18985
|
+
id: string;
|
|
18986
|
+
name: string;
|
|
18987
|
+
units: number;
|
|
18988
|
+
}
|
|
18989
|
+
interface LandmarkhwComOrderOptionsArgs {
|
|
18990
|
+
stateCode: string;
|
|
18991
|
+
}
|
|
18992
|
+
interface LandmarkhwComOrderOptions {
|
|
18993
|
+
state: LandmarkhwComOrderState;
|
|
18994
|
+
propertyTypes: LandmarkhwComPropertyType[];
|
|
18995
|
+
orderUrl: string;
|
|
18996
|
+
}
|
|
18997
|
+
|
|
18998
|
+
/**
|
|
18999
|
+
* Landmark Home Warranty's public order-form choices: market states and property types, read
|
|
19000
|
+
* from server-rendered bootstrap data.
|
|
19001
|
+
*/
|
|
19002
|
+
interface Unit {
|
|
19003
|
+
/** Lists the states where Landmark Home Warranty's public order form currently offers coverage. */
|
|
19004
|
+
listOrderStates(): Promise<LandmarkhwComOrderState[]>;
|
|
19005
|
+
|
|
19006
|
+
/**
|
|
19007
|
+
* Returns the property-type choices for a Landmark Home Warranty order in one supported state,
|
|
19008
|
+
* before any quote or order is submitted.
|
|
19009
|
+
*/
|
|
19010
|
+
getOrderFormOptions(args: LandmarkhwComOrderOptionsArgs): Promise<LandmarkhwComOrderOptions>;
|
|
19011
|
+
}
|
|
19012
|
+
}
|
|
19013
|
+
|
|
18341
19014
|
declare namespace BowmarkProvider_lasikplus {
|
|
18342
19015
|
// ── LasikPlus — the unit's own declarations, verbatim ──
|
|
18343
19016
|
interface LasikPlusCenter {
|
|
@@ -24950,6 +25623,52 @@ interface RitaniPriceResult {
|
|
|
24950
25623
|
}
|
|
24951
25624
|
}
|
|
24952
25625
|
|
|
25626
|
+
declare namespace BowmarkProvider_rivian {
|
|
25627
|
+
// ── Rivian — the unit's own declarations, verbatim ──
|
|
25628
|
+
type RivianLeaseTrim = "premium";
|
|
25629
|
+
type RivianLeaseTermMonths = 24 | 36;
|
|
25630
|
+
type RivianLeaseAnnualMileage = 10000 | 12000 | 15000;
|
|
25631
|
+
type RivianLeaseCreditTier = "excellent" | "veryGood" | "good";
|
|
25632
|
+
|
|
25633
|
+
interface RivianLeaseEstimateArgs {
|
|
25634
|
+
trim: RivianLeaseTrim;
|
|
25635
|
+
termMonths: RivianLeaseTermMonths;
|
|
25636
|
+
annualMileage: RivianLeaseAnnualMileage;
|
|
25637
|
+
creditTier: RivianLeaseCreditTier;
|
|
25638
|
+
downPayment: number;
|
|
25639
|
+
}
|
|
25640
|
+
|
|
25641
|
+
interface RivianLeaseEstimate {
|
|
25642
|
+
model: "R1T";
|
|
25643
|
+
trim: RivianLeaseTrim;
|
|
25644
|
+
vehiclePrice: number;
|
|
25645
|
+
destinationFee: number;
|
|
25646
|
+
acquisitionFee: number;
|
|
25647
|
+
monthlyPayment: number;
|
|
25648
|
+
downPayment: number;
|
|
25649
|
+
amountDueAtSigning: number;
|
|
25650
|
+
residualValue: number;
|
|
25651
|
+
termMonths: number;
|
|
25652
|
+
annualMileage: number;
|
|
25653
|
+
isLeaseEligible: boolean;
|
|
25654
|
+
}
|
|
25655
|
+
|
|
25656
|
+
/**
|
|
25657
|
+
* Prices a real Rivian R1T lease through rivian.com's own R1 Shop payment-estimate calculator
|
|
25658
|
+
* — monthly payment, amount due at signing, acquisition fee and residual value for a chosen
|
|
25659
|
+
* term, mileage allowance, credit tier and down payment.
|
|
25660
|
+
*/
|
|
25661
|
+
interface Unit {
|
|
25662
|
+
/**
|
|
25663
|
+
* Prices a real Rivian R1T Premium lease — monthly payment, amount due at signing, acquisition
|
|
25664
|
+
* fee and residual value — for a chosen term (24 or 36 months), annual mileage allowance
|
|
25665
|
+
* (10,000/12,000/15,000), credit tier and cash down payment, through rivian.com's own R1 Shop
|
|
25666
|
+
* payment-estimate calculator. Only the Premium trim has a verified option combo today.
|
|
25667
|
+
*/
|
|
25668
|
+
estimateLeasePayment(args: RivianLeaseEstimateArgs): Promise<RivianLeaseEstimate>;
|
|
25669
|
+
}
|
|
25670
|
+
}
|
|
25671
|
+
|
|
24953
25672
|
declare namespace BowmarkProvider_roofmaxx {
|
|
24954
25673
|
// ── Roof Maxx — the unit's own declarations, verbatim ──
|
|
24955
25674
|
interface RoofmaxxCalculatorSettings {
|
|
@@ -28227,6 +28946,41 @@ interface topviewtixPackageSummary {
|
|
|
28227
28946
|
}
|
|
28228
28947
|
}
|
|
28229
28948
|
|
|
28949
|
+
declare namespace BowmarkProvider_totalplastics {
|
|
28950
|
+
// ── Total Plastics — the unit's own declarations, verbatim ──
|
|
28951
|
+
interface TotalplasticsQuoteFormField {
|
|
28952
|
+
id: string;
|
|
28953
|
+
type: string;
|
|
28954
|
+
label: string;
|
|
28955
|
+
required: boolean;
|
|
28956
|
+
options: string[];
|
|
28957
|
+
}
|
|
28958
|
+
interface TotalplasticsQuoteFormFields {
|
|
28959
|
+
title: string;
|
|
28960
|
+
formUrl: string;
|
|
28961
|
+
fields: TotalplasticsQuoteFormField[];
|
|
28962
|
+
}
|
|
28963
|
+
|
|
28964
|
+
/**
|
|
28965
|
+
* Total Plastics' own "Request a Quote" form — a POWR widget embedded on /contact-us/, not on
|
|
28966
|
+
* /quote/ — read directly off POWR's server-rendered config.
|
|
28967
|
+
*/
|
|
28968
|
+
interface Unit {
|
|
28969
|
+
/**
|
|
28970
|
+
* Reads Total Plastics' live "Request a Quote" form and returns its field schema — label,
|
|
28971
|
+
* type, required, and options per field.
|
|
28972
|
+
*/
|
|
28973
|
+
getQuoteFormFields(): Promise<TotalplasticsQuoteFormFields>;
|
|
28974
|
+
|
|
28975
|
+
/**
|
|
28976
|
+
* Reads one named field off the live "Request a Quote" form — e.g. "Material Type" or "Annual
|
|
28977
|
+
* Plastics Spend" — and returns its option list, so a caller can pick a valid value before
|
|
28978
|
+
* submitting.
|
|
28979
|
+
*/
|
|
28980
|
+
getQuoteFormFieldOptions(label: string): Promise<TotalplasticsQuoteFormField>;
|
|
28981
|
+
}
|
|
28982
|
+
}
|
|
28983
|
+
|
|
28230
28984
|
declare namespace BowmarkProvider_travelinsured {
|
|
28231
28985
|
// ── Travel Insured International — the unit's own declarations, verbatim ──
|
|
28232
28986
|
interface TravelinsuredDestination {
|
|
@@ -28774,6 +29528,62 @@ interface uspsRateOption {
|
|
|
28774
29528
|
}
|
|
28775
29529
|
}
|
|
28776
29530
|
|
|
29531
|
+
declare namespace BowmarkProvider_vbt {
|
|
29532
|
+
// ── VBT Vacations — the unit's own declarations, verbatim ──
|
|
29533
|
+
interface VbtTourListing {
|
|
29534
|
+
slug: string; // e.g. "dolomites-self-guided-bike-tour"
|
|
29535
|
+
url: string; // full https://www.vbt.com/... tour page URL
|
|
29536
|
+
region: string; // e.g. "europe"
|
|
29537
|
+
country: string; // e.g. "italy"
|
|
29538
|
+
lastmod: string | null;
|
|
29539
|
+
}
|
|
29540
|
+
interface VbtPackageOption {
|
|
29541
|
+
durationDays: number;
|
|
29542
|
+
fromPrice: number; // per-person starting price, USD
|
|
29543
|
+
}
|
|
29544
|
+
interface VbtDeparture {
|
|
29545
|
+
id: string;
|
|
29546
|
+
departureDate: string; // ISO date
|
|
29547
|
+
returnDate: string | null; // ISO date
|
|
29548
|
+
stopSellFlag: boolean; // VBT's own "sales closed" signal, not live seat count
|
|
29549
|
+
status: string | null; // the site's own labels — read the values off a result, never guess one from prose
|
|
29550
|
+
deposit: string | null;
|
|
29551
|
+
finalPaymentDate: string | null;
|
|
29552
|
+
}
|
|
29553
|
+
interface VbtTourDepartures {
|
|
29554
|
+
tourId: string;
|
|
29555
|
+
tourName: string;
|
|
29556
|
+
tourUrl: string;
|
|
29557
|
+
packageOptions: { tour: VbtPackageOption; tourPlusTravelPackage: VbtPackageOption };
|
|
29558
|
+
departures: VbtDeparture[];
|
|
29559
|
+
bookingUrl: string; // the same page — VBT's own "View Dates & Book" is client-rendered here
|
|
29560
|
+
}
|
|
29561
|
+
|
|
29562
|
+
/**
|
|
29563
|
+
* Reads VBT's own tour pages — every self-guided/guided bike and walking tour it sells — and
|
|
29564
|
+
* returns its current departure dates, stop-sell flags and Tour-Only / Tour+Travel-Package
|
|
29565
|
+
* starting prices straight out of the page's own server-rendered data, no browser.
|
|
29566
|
+
*/
|
|
29567
|
+
interface Unit {
|
|
29568
|
+
/**
|
|
29569
|
+
* Lists every tour VBT publishes today, straight off vbt.com's own sitemap.xml — slug, full
|
|
29570
|
+
* tour URL and region/country for every /destinations/<region>/<country>/<slug> entry (108
|
|
29571
|
+
* tours measured 2026-09-11). The entry point: pass any returned `url` or `slug` into
|
|
29572
|
+
* `getTourDepartures`.
|
|
29573
|
+
*/
|
|
29574
|
+
listTours(): Promise<{ tours: VbtTourListing[] }>;
|
|
29575
|
+
|
|
29576
|
+
/**
|
|
29577
|
+
* Reads one VBT tour's own page (full URL from `listTours`, or just its slug, e.g.
|
|
29578
|
+
* `"dolomites-self-guided-bike-tour"`) and returns its Tour-Only and Tour+Travel-Package
|
|
29579
|
+
* starting prices plus every listed departure — date, VBT's own stop-sell flag, return date,
|
|
29580
|
+
* deposit and final-payment date — exactly as published today, with the page URL as the
|
|
29581
|
+
* booking handoff. Throws if the slug does not resolve to a real tour.
|
|
29582
|
+
*/
|
|
29583
|
+
getTourDepartures(tourUrlOrSlug: string): Promise<VbtTourDepartures>;
|
|
29584
|
+
}
|
|
29585
|
+
}
|
|
29586
|
+
|
|
28777
29587
|
declare namespace BowmarkProvider_vervecoffee {
|
|
28778
29588
|
// ── Verve Coffee Roasters — the unit's own declarations, verbatim ──
|
|
28779
29589
|
interface VervecoffeeSubscription {
|
|
@@ -30850,6 +31660,7 @@ interface BowmarkProviders {
|
|
|
30850
31660
|
aa: BowmarkProvider_aa.Unit;
|
|
30851
31661
|
aauto: BowmarkProvider_aauto.Unit;
|
|
30852
31662
|
abercrombie: BowmarkProvider_abercrombie.Unit;
|
|
31663
|
+
abqplumb: BowmarkProvider_abqplumb.Unit;
|
|
30853
31664
|
acerentacar: BowmarkProvider_acerentacar.Unit;
|
|
30854
31665
|
achosahw: BowmarkProvider_achosahw.Unit;
|
|
30855
31666
|
acqualinaresort: BowmarkProvider_acqualinaresort.Unit;
|
|
@@ -30920,6 +31731,8 @@ interface BowmarkProviders {
|
|
|
30920
31731
|
bykoket: BowmarkProvider_bykoket.Unit;
|
|
30921
31732
|
byltbasics: BowmarkProvider_byltbasics.Unit;
|
|
30922
31733
|
cabinsforyou: BowmarkProvider_cabinsforyou.Unit;
|
|
31734
|
+
cal_com: BowmarkProvider_cal_com.Unit;
|
|
31735
|
+
calendly: BowmarkProvider_calendly.Unit;
|
|
30923
31736
|
caliberhealth: BowmarkProvider_caliberhealth.Unit;
|
|
30924
31737
|
califloors: BowmarkProvider_califloors.Unit;
|
|
30925
31738
|
camelcamelcamel: BowmarkProvider_camelcamelcamel.Unit;
|
|
@@ -30982,26 +31795,34 @@ interface BowmarkProviders {
|
|
|
30982
31795
|
doordash: BowmarkProvider_doordash.Unit;
|
|
30983
31796
|
dumpsters: BowmarkProvider_dumpsters.Unit;
|
|
30984
31797
|
ebay: BowmarkProvider_ebay.Unit;
|
|
31798
|
+
elase: BowmarkProvider_elase.Unit;
|
|
30985
31799
|
elevenlabs: BowmarkProvider_elevenlabs.Unit;
|
|
30986
31800
|
embroker: BowmarkProvider_embroker.Unit;
|
|
30987
31801
|
epromos: BowmarkProvider_epromos.Unit;
|
|
30988
31802
|
eq3: BowmarkProvider_eq3.Unit;
|
|
31803
|
+
equinox_hotels: BowmarkProvider_equinox_hotels.Unit;
|
|
30989
31804
|
erieinsurance: BowmarkProvider_erieinsurance.Unit;
|
|
30990
31805
|
etsy: BowmarkProvider_etsy.Unit;
|
|
30991
31806
|
eventsource: BowmarkProvider_eventsource.Unit;
|
|
30992
31807
|
evolutionofsmooth: BowmarkProvider_evolutionofsmooth.Unit;
|
|
31808
|
+
evolvemedspa: BowmarkProvider_evolvemedspa.Unit;
|
|
30993
31809
|
executivehomecare: BowmarkProvider_executivehomecare.Unit;
|
|
30994
31810
|
extraspace: BowmarkProvider_extraspace.Unit;
|
|
31811
|
+
faceforwardaesthetics: BowmarkProvider_faceforwardaesthetics.Unit;
|
|
30995
31812
|
facerealityskincare: BowmarkProvider_facerealityskincare.Unit;
|
|
31813
|
+
fbsappliance: BowmarkProvider_fbsappliance.Unit;
|
|
30996
31814
|
fieldstonehomes: BowmarkProvider_fieldstonehomes.Unit;
|
|
30997
31815
|
firstamericahomes: BowmarkProvider_firstamericahomes.Unit;
|
|
30998
31816
|
firstdibs: BowmarkProvider_firstdibs.Unit;
|
|
31817
|
+
fitness1440: BowmarkProvider_fitness1440.Unit;
|
|
30999
31818
|
fivebelow: BowmarkProvider_fivebelow.Unit;
|
|
31000
31819
|
fivestarbathsolutions: BowmarkProvider_fivestarbathsolutions.Unit;
|
|
31001
31820
|
flightradar24: BowmarkProvider_flightradar24.Unit;
|
|
31821
|
+
fluencecorp: BowmarkProvider_fluencecorp.Unit;
|
|
31002
31822
|
ford: BowmarkProvider_ford.Unit;
|
|
31003
31823
|
formax: BowmarkProvider_formax.Unit;
|
|
31004
31824
|
forms_hubspot_com: BowmarkProvider_forms_hubspot_com.Unit;
|
|
31825
|
+
fortressbp: BowmarkProvider_fortressbp.Unit;
|
|
31005
31826
|
fourseasonsyachts: BowmarkProvider_fourseasonsyachts.Unit;
|
|
31006
31827
|
framebridge: BowmarkProvider_framebridge.Unit;
|
|
31007
31828
|
fred: BowmarkProvider_fred.Unit;
|
|
@@ -31048,6 +31869,7 @@ interface BowmarkProviders {
|
|
|
31048
31869
|
islllc: BowmarkProvider_islllc.Unit;
|
|
31049
31870
|
istanbulkart: BowmarkProvider_istanbulkart.Unit;
|
|
31050
31871
|
ivoryhomes: BowmarkProvider_ivoryhomes.Unit;
|
|
31872
|
+
jasmine_dilucci: BowmarkProvider_jasmine_dilucci.Unit;
|
|
31051
31873
|
jennikayne: BowmarkProvider_jennikayne.Unit;
|
|
31052
31874
|
joybird: BowmarkProvider_joybird.Unit;
|
|
31053
31875
|
joycefactorydirect: BowmarkProvider_joycefactorydirect.Unit;
|
|
@@ -31063,6 +31885,7 @@ interface BowmarkProviders {
|
|
|
31063
31885
|
kompan: BowmarkProvider_kompan.Unit;
|
|
31064
31886
|
kuiu: BowmarkProvider_kuiu.Unit;
|
|
31065
31887
|
labcorp: BowmarkProvider_labcorp.Unit;
|
|
31888
|
+
landmarkhw_com: BowmarkProvider_landmarkhw_com.Unit;
|
|
31066
31889
|
lasikplus: BowmarkProvider_lasikplus.Unit;
|
|
31067
31890
|
legacyhomesal: BowmarkProvider_legacyhomesal.Unit;
|
|
31068
31891
|
linkedin: BowmarkProvider_linkedin.Unit;
|
|
@@ -31137,6 +31960,7 @@ interface BowmarkProviders {
|
|
|
31137
31960
|
revisionskincare: BowmarkProvider_revisionskincare.Unit;
|
|
31138
31961
|
rishitea: BowmarkProvider_rishitea.Unit;
|
|
31139
31962
|
ritani: BowmarkProvider_ritani.Unit;
|
|
31963
|
+
rivian: BowmarkProvider_rivian.Unit;
|
|
31140
31964
|
roofmaxx: BowmarkProvider_roofmaxx.Unit;
|
|
31141
31965
|
rover: BowmarkProvider_rover.Unit;
|
|
31142
31966
|
rvshare: BowmarkProvider_rvshare.Unit;
|
|
@@ -31180,6 +32004,7 @@ interface BowmarkProviders {
|
|
|
31180
32004
|
titlenine: BowmarkProvider_titlenine.Unit;
|
|
31181
32005
|
tmobile: BowmarkProvider_tmobile.Unit;
|
|
31182
32006
|
topviewtix: BowmarkProvider_topviewtix.Unit;
|
|
32007
|
+
totalplastics: BowmarkProvider_totalplastics.Unit;
|
|
31183
32008
|
travelinsured: BowmarkProvider_travelinsured.Unit;
|
|
31184
32009
|
trawickinternational: BowmarkProvider_trawickinternational.Unit;
|
|
31185
32010
|
trektravel: BowmarkProvider_trektravel.Unit;
|
|
@@ -31190,6 +32015,7 @@ interface BowmarkProviders {
|
|
|
31190
32015
|
ulrichlifestyle: BowmarkProvider_ulrichlifestyle.Unit;
|
|
31191
32016
|
ups: BowmarkProvider_ups.Unit;
|
|
31192
32017
|
usps: BowmarkProvider_usps.Unit;
|
|
32018
|
+
vbt: BowmarkProvider_vbt.Unit;
|
|
31193
32019
|
vervecoffee: BowmarkProvider_vervecoffee.Unit;
|
|
31194
32020
|
vessi: BowmarkProvider_vessi.Unit;
|
|
31195
32021
|
viewrail: BowmarkProvider_viewrail.Unit;
|