@bowmark/web 1.9.0 → 1.10.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/README.md +14 -0
- package/package.json +1 -1
- package/src/generated/library.d.ts +957 -20
- package/src/generated/validators.ts +975 -72
|
@@ -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
|
-
//
|
|
8
|
+
// Manifest version: cad629ad449ffa7b6e12b0299082209643912c130193213d154764eeb434951f
|
|
9
|
+
// 10 capabilities, 155 providers, 457 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
|
|
@@ -102,7 +102,10 @@ type CallOptions = {
|
|
|
102
102
|
* IATA codes and a city name would come back as an empty list an agent would misread as "no
|
|
103
103
|
* cars available". `warnings` is always present and names anything dropped or clamped —
|
|
104
104
|
* INCLUDING a site that timed out or failed, which quoted nothing and is not the same as an
|
|
105
|
-
* airport with no availability.
|
|
105
|
+
* airport with no availability. And when NO site answered at all this THROWS rather than
|
|
106
|
+
* returning `cars: []`, because those two are the same value and only one of them means there
|
|
107
|
+
* are no cars: a list you receive is always a list a site actually gave. `options.timeoutMs`
|
|
108
|
+
* sets the per-site budget (default 30000).
|
|
106
109
|
*/
|
|
107
110
|
search(query: CarQuery, limit?: number, options?: CallOptions): Promise<CarSearchResult>;
|
|
108
111
|
}
|
|
@@ -315,9 +318,11 @@ type FlightStatusResult = {
|
|
|
315
318
|
* completely different fact from a site that was never reached, so coverage is NOT inferable
|
|
316
319
|
* from the rows. Read `warnings` before treating them as the whole market: a dropped site
|
|
317
320
|
* means the real cheapest fare may not be here at all. Three of the four sites run one shared
|
|
318
|
-
* engine, so they tend to fail together
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
+
* engine, so they tend to fail together — and when ALL FOUR are gone this THROWS instead of
|
|
322
|
+
* returning `flights: []`, since an empty list would otherwise be indistinguishable from a
|
|
323
|
+
* route nobody flies. `options.timeoutMs` sets the per-site budget (default 30000) — a site
|
|
324
|
+
* slower than that is dropped and named, so the answer arrives inside the calling client's own
|
|
325
|
+
* tool-call limit rather than not at all.
|
|
321
326
|
*/
|
|
322
327
|
search(query: FlightQuery, options?: CallOptions): Promise<FlightSearchResult>;
|
|
323
328
|
|
|
@@ -424,8 +429,10 @@ type CallOptions = {
|
|
|
424
429
|
* multiplying `nightPrice` by the night count on a multi-room search is out by a factor of
|
|
425
430
|
* `rooms`; compare on `price`. `warnings` is always present and names anything dropped or
|
|
426
431
|
* clamped — INCLUDING a site that timed out or failed, which returned nothing and is not the
|
|
427
|
-
* same as a sold-out destination.
|
|
428
|
-
*
|
|
432
|
+
* same as a sold-out destination. And when NO site answered at all this THROWS rather than
|
|
433
|
+
* returning `hotels: []`, because those two are the same value and only one of them means
|
|
434
|
+
* there is nowhere to stay. This route drives a real browser and is the slowest thing in the
|
|
435
|
+
* library: 21-26s measured, against `options.timeoutMs`'s 30000 default. RAISE that budget
|
|
429
436
|
* rather than lowering it if you batch several searches into one call.
|
|
430
437
|
*/
|
|
431
438
|
search(query: HotelQuery, limit?: number, options?: CallOptions): Promise<HotelSearchResult>;
|
|
@@ -577,8 +584,9 @@ type CallOptions = {
|
|
|
577
584
|
* would otherwise return a list an agent would misread. `reportCategories` says which
|
|
578
585
|
* regulator reports exist for a carrier, NOT which lines it writes. `warnings` is always
|
|
579
586
|
* present, and a source that timed out or failed is NAMED there — read it before treating an
|
|
580
|
-
* empty list as "no carrier is licensed there".
|
|
581
|
-
*
|
|
587
|
+
* empty list as "no carrier is licensed there". When NO source answered at all this THROWS
|
|
588
|
+
* instead of returning an empty list, so that misreading is not available. `options.timeoutMs`
|
|
589
|
+
* sets the per-source budget (default 30000).
|
|
582
590
|
*/
|
|
583
591
|
searchCarriers(query: CarrierQuery, limit?: number, options?: CallOptions): Promise<CarrierSearchResult>;
|
|
584
592
|
|
|
@@ -595,7 +603,9 @@ type CallOptions = {
|
|
|
595
603
|
* only when the query carries neither a zip nor a city+state — one carrier alone is a complete
|
|
596
604
|
* query, not a partial one. `warnings` is always present: a carrier the query lacked input
|
|
597
605
|
* for, or one that timed out or failed, is NAMED there — read it before treating a short list
|
|
598
|
-
* as the whole answer.
|
|
606
|
+
* as the whole answer. When every carrier the query DID reach for failed, this THROWS rather
|
|
607
|
+
* than returning an empty list, which would otherwise read as "no agent near you".
|
|
608
|
+
* `options.timeoutMs` sets the per-carrier budget (default 30000).
|
|
599
609
|
*/
|
|
600
610
|
findAgent(query: AgentLocatorQuery, limit?: number, options?: CallOptions): Promise<AgentSearchResult>;
|
|
601
611
|
|
|
@@ -637,8 +647,9 @@ type CallOptions = {
|
|
|
637
647
|
* answered: this is a published directory with no legitimate empty case, so a missing section
|
|
638
648
|
* or a changed page throws at the provider rather than under-reporting who underwrites the
|
|
639
649
|
* policy. `warnings` is always present and names a source that timed out or failed — with one
|
|
640
|
-
* source today, read it before trusting a short list is the whole directory.
|
|
641
|
-
*
|
|
650
|
+
* source today, read it before trusting a short list is the whole directory. When no source
|
|
651
|
+
* answered at all this THROWS, so an outage is never handed back as a directory with nothing
|
|
652
|
+
* in it. `options.timeoutMs` sets the per-source budget (default 30000).
|
|
642
653
|
*/
|
|
643
654
|
listReferralCarriers(query?: ReferralCarrierQuery, options?: CallOptions): Promise<ReferralCarrierListResult>;
|
|
644
655
|
}
|
|
@@ -697,8 +708,10 @@ type MusicTrackResult = {
|
|
|
697
708
|
* synthwave") and returns up to `limit` normalized tracks (default 20, max 200), most-played
|
|
698
709
|
* first. Tracks with no reported play count sort last rather than as zero. `warnings` is
|
|
699
710
|
* always present and names anything dropped — INCLUDING a catalogue that timed out or failed,
|
|
700
|
-
* which returned nothing and is not the same as a query with no matches.
|
|
701
|
-
*
|
|
711
|
+
* which returned nothing and is not the same as a query with no matches. And when NO catalogue
|
|
712
|
+
* answered at all this THROWS rather than returning `tracks: []`, because those two are the
|
|
713
|
+
* same value and only one of them means nothing matched. `options.timeoutMs` sets the
|
|
714
|
+
* per-catalogue budget (default 30000).
|
|
702
715
|
*/
|
|
703
716
|
search(query: string, limit?: number, options?: CallOptions): Promise<MusicSearchResult>;
|
|
704
717
|
|
|
@@ -783,8 +796,9 @@ type ProductResult = {
|
|
|
783
796
|
* price-sorted (cheapest first), each tagged with its `store`. A store that is genuinely empty
|
|
784
797
|
* contributes nothing and says nothing; a store that TIMED OUT or FAILED is named in
|
|
785
798
|
* `warnings`, and the two are not the same fact — "the cheapest of three stores" is a wrong
|
|
786
|
-
* claim when one of them never answered.
|
|
787
|
-
*
|
|
799
|
+
* claim when one of them never answered. When ALL THREE never answered this THROWS rather than
|
|
800
|
+
* returning `offers: []`, because that empty list is the same value as a part nobody stocks.
|
|
801
|
+
* `options.timeoutMs` sets the per-store budget (default 30000).
|
|
788
802
|
*/
|
|
789
803
|
search(query: string, options?: CallOptions): Promise<OfferSearchResult>;
|
|
790
804
|
|
|
@@ -861,6 +875,80 @@ type ReadResult = {
|
|
|
861
875
|
}
|
|
862
876
|
}
|
|
863
877
|
|
|
878
|
+
declare namespace BowmarkCapability_search {
|
|
879
|
+
// ── Web search — the unit's own declarations, verbatim ──
|
|
880
|
+
type SearchResult = {
|
|
881
|
+
source: string // which ENGINE produced this row ("bing")
|
|
882
|
+
rank: number // 1-based, in that engine's own ranking
|
|
883
|
+
title: string
|
|
884
|
+
url: string // the destination page, already unwrapped from any
|
|
885
|
+
// click-tracker — pass it straight to read.page
|
|
886
|
+
snippet: string | null // the engine's blurb; null when it published none
|
|
887
|
+
published: string | null // ISO. On `web` this is often the engine's CRAWL
|
|
888
|
+
// date, not the page's — do not report it as one
|
|
889
|
+
}
|
|
890
|
+
type SearchWebResult = {
|
|
891
|
+
query: string
|
|
892
|
+
engine: string // who actually answered. With a fallback chain this
|
|
893
|
+
// is the difference between the primary engine's
|
|
894
|
+
// ranking and the standby's
|
|
895
|
+
results: SearchResult[]
|
|
896
|
+
warnings: string[] // always present. Names every engine tried and
|
|
897
|
+
// FAILED before the one that answered
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
// news adds the two things a news index has and a web index does not
|
|
901
|
+
type NewsResult = SearchResult & {
|
|
902
|
+
publisher: string | null // the outlet
|
|
903
|
+
imageUrl: string | null // usually the engine's cached thumbnail
|
|
904
|
+
}
|
|
905
|
+
type SearchNewsResult = {
|
|
906
|
+
query: string
|
|
907
|
+
engine: string
|
|
908
|
+
results: NewsResult[]
|
|
909
|
+
warnings: string[]
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
type CallOptions = {
|
|
913
|
+
timeoutMs?: number // per-provider budget in ms, default 30000, clamped to 1000-55000.
|
|
914
|
+
// A provider slower than this is DROPPED from the results and
|
|
915
|
+
// NAMED in warnings — never silently absent
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
/**
|
|
919
|
+
* Find pages on the web when you do not already know the URL — the step before read.page.
|
|
920
|
+
* Returns ranked results with title, destination URL and snippet. `news` is the same read over
|
|
921
|
+
* news coverage, with real publication dates and the outlet's name. ONE ENGINE TODAY (Bing),
|
|
922
|
+
* so if it is down this fails rather than degrading — it throws, and never reports an outage
|
|
923
|
+
* as zero results. Two things that engine cannot do, measured on `web`: it never returns an
|
|
924
|
+
* empty list even when nothing matches, and it ignores search operators like site:.
|
|
925
|
+
*/
|
|
926
|
+
interface Unit {
|
|
927
|
+
/**
|
|
928
|
+
* Searches the web and returns ranked results — title, destination URL, snippet — from the
|
|
929
|
+
* first engine in the chain that answers. `engine` names which one that was, and `warnings`
|
|
930
|
+
* names any that were tried and failed first. Feed a result's `url` straight to
|
|
931
|
+
* bowmark.read.page to actually read it. TWO THINGS TO KNOW BEFORE YOU TRUST THE ROWS: the
|
|
932
|
+
* engine NEVER returns an empty list, so results are its best offer rather than proof anything
|
|
933
|
+
* matched, and it IGNORES operators — a `site:example.com` query is not scoped to that site.
|
|
934
|
+
* When every engine fails this THROWS rather than returning zero rows, because no engine
|
|
935
|
+
* reached is not the same as nothing found.
|
|
936
|
+
*/
|
|
937
|
+
web(query: string | { query: string, limit?: number }, limit?: number, options?: CallOptions): Promise<SearchWebResult>;
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* Searches news coverage and returns stories with the headline, the outlet's own article URL,
|
|
941
|
+
* a summary, the publisher's name and a real publication timestamp. Use this rather than `web`
|
|
942
|
+
* whenever the question is about what happened or when — `web`'s dates are commonly the
|
|
943
|
+
* engine's crawl stamp, and these are the story's own. NOT MEASURED on the two limits `web`
|
|
944
|
+
* declares: nobody has checked whether this feed returns an empty list for a query with no
|
|
945
|
+
* coverage, or whether it honours operators. Treat both as unknown rather than as working —
|
|
946
|
+
* `web`'s answers are the ones with fixtures behind them.
|
|
947
|
+
*/
|
|
948
|
+
news(query: string | { query: string, limit?: number }, limit?: number, options?: CallOptions): Promise<SearchNewsResult>;
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
|
|
864
952
|
declare namespace BowmarkCapability_sheds {
|
|
865
953
|
// ── Sheds and portable buildings (configure and price) — the unit's own declarations, verbatim ──
|
|
866
954
|
type ShedSize = {
|
|
@@ -958,7 +1046,9 @@ type CallOptions = {
|
|
|
958
1046
|
* as well as costing it — a real product image, the roof line and roofing material, the
|
|
959
1047
|
* maker's own wall-height spec — and carries `orderUrl`, their own page to go order that
|
|
960
1048
|
* build. `warnings` is always present and names a maker that failed, styles that do not build
|
|
961
|
-
* the size, and a capped fan.
|
|
1049
|
+
* the size, and a capped fan. When NO maker answered at all this THROWS rather than returning
|
|
1050
|
+
* an empty list — "nobody builds a 12x20" and "nobody could be reached" are otherwise the same
|
|
1051
|
+
* result. `options.timeoutMs` sets the per-maker budget (default 30000).
|
|
962
1052
|
*/
|
|
963
1053
|
quote(request: ShedQuoteRequest, options?: CallOptions): Promise<ShedQuoteResult>;
|
|
964
1054
|
|
|
@@ -967,7 +1057,9 @@ type CallOptions = {
|
|
|
967
1057
|
* it can be built in, every real buildable size in FEET, and what the building IS (a real
|
|
968
1058
|
* product image, the roof line and roofing material, the maker's own wall-height spec). Use it
|
|
969
1059
|
* to see what exists before pricing, or to answer "what sizes do they even make". `warnings`
|
|
970
|
-
* names any maker that returned nothing, which is not the same as a maker with no styles.
|
|
1060
|
+
* names any maker that returned nothing, which is not the same as a maker with no styles. When
|
|
1061
|
+
* NO maker answered at all this THROWS rather than returning an empty list, because an empty
|
|
1062
|
+
* catalogue and an unreachable one are otherwise the same value.
|
|
971
1063
|
*/
|
|
972
1064
|
listStyles(options?: CallOptions): Promise<ShedStylesResult>;
|
|
973
1065
|
|
|
@@ -975,7 +1067,9 @@ type CallOptions = {
|
|
|
975
1067
|
* Looks up the real places that sell a maker's buildings in one US state or Canadian province
|
|
976
1068
|
* — full name ("Tennessee") or abbreviation ("TN") — with name, city, phone and the dealer's
|
|
977
1069
|
* own page, for handing a priced configuration to somebody who can actually build it. `phone`
|
|
978
|
-
* is null when the directory lists none, never an empty string.
|
|
1070
|
+
* is null when the directory lists none, never an empty string. `warnings` names any maker
|
|
1071
|
+
* whose directory could not be read, and when NO directory could be read at all this THROWS
|
|
1072
|
+
* rather than returning an empty list, which would read as "no dealers in that state".
|
|
979
1073
|
*/
|
|
980
1074
|
findDealers(state: string, options?: CallOptions): Promise<ShedDealerResult>;
|
|
981
1075
|
}
|
|
@@ -1646,6 +1740,49 @@ interface AshleyFurnitureStore {
|
|
|
1646
1740
|
}
|
|
1647
1741
|
}
|
|
1648
1742
|
|
|
1743
|
+
declare namespace BowmarkProvider_asppoolco {
|
|
1744
|
+
// ── ASP - America's Swimming Pool Company — the unit's own declarations, verbatim ──
|
|
1745
|
+
// ASP's OWN shapes — not a capability contract.
|
|
1746
|
+
|
|
1747
|
+
interface AspLocation {
|
|
1748
|
+
name: string; // e.g. "ASP - America's Swimming Pool Company of Baldwin County"
|
|
1749
|
+
state: string; // two-letter state code
|
|
1750
|
+
url: string; // the location's own site
|
|
1751
|
+
requestServiceUrl: string; // handoff URL — ASP's own per-location request form
|
|
1752
|
+
phone: string;
|
|
1753
|
+
coverageZips: string[]; // every zip this location's page declares covering
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
interface AspZipMatch {
|
|
1757
|
+
zip: string;
|
|
1758
|
+
covered: boolean; // false = no published ASP location covers this zip yet
|
|
1759
|
+
location: AspLocation | null;
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
/**
|
|
1763
|
+
* ASP - America's Swimming Pool Company's own 257-location franchise directory — match a zip
|
|
1764
|
+
* code to the exact local ASP franchise that services it (name, phone, coverage) and hand back
|
|
1765
|
+
* that location's own Request Service form URL, the same match/route step ASP's site itself
|
|
1766
|
+
* performs before a homeowner can request service.
|
|
1767
|
+
*/
|
|
1768
|
+
interface Unit {
|
|
1769
|
+
/**
|
|
1770
|
+
* Matches a 5-digit US zip code against ASP's 257-location franchise network and returns the
|
|
1771
|
+
* ONE local franchise that services it — name, phone, coverage zips, and its own Request
|
|
1772
|
+
* Service form URL to hand the shopper to. `covered: false` means no published ASP location
|
|
1773
|
+
* covers that zip yet, a real answer, not a failure.
|
|
1774
|
+
*/
|
|
1775
|
+
findLocationByZip(zip: string): Promise<AspZipMatch>;
|
|
1776
|
+
|
|
1777
|
+
/**
|
|
1778
|
+
* Lists every ASP franchise location on the public directory — name, state, phone, coverage
|
|
1779
|
+
* zips, site URL and Request Service URL. `state` (optional, two-letter code, e.g. "GA")
|
|
1780
|
+
* narrows to that state.
|
|
1781
|
+
*/
|
|
1782
|
+
listLocations(state?: string): Promise<AspLocation[]>;
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1649
1786
|
declare namespace BowmarkProvider_atlasoceanvoyages {
|
|
1650
1787
|
// ── Atlas Ocean Voyages — the unit's own declarations, verbatim ──
|
|
1651
1788
|
// Atlas Ocean Voyages' OWN shapes — not a capability contract.
|
|
@@ -2155,6 +2292,66 @@ interface BigrentzCategoryRow {
|
|
|
2155
2292
|
}
|
|
2156
2293
|
}
|
|
2157
2294
|
|
|
2295
|
+
declare namespace BowmarkProvider_bing {
|
|
2296
|
+
// ── Bing — the unit's own declarations, verbatim ──
|
|
2297
|
+
interface BingWebResult {
|
|
2298
|
+
source: "bing";
|
|
2299
|
+
rank: number;
|
|
2300
|
+
title: string;
|
|
2301
|
+
url: string;
|
|
2302
|
+
snippet: string | null;
|
|
2303
|
+
published: string | null;
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2306
|
+
interface BingNewsResult {
|
|
2307
|
+
source: "bing";
|
|
2308
|
+
rank: number;
|
|
2309
|
+
title: string;
|
|
2310
|
+
url: string;
|
|
2311
|
+
snippet: string | null;
|
|
2312
|
+
published: string | null;
|
|
2313
|
+
publisher: string | null;
|
|
2314
|
+
imageUrl: string | null;
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
interface BingSearchResult {
|
|
2318
|
+
query: string;
|
|
2319
|
+
results: BingWebResult[];
|
|
2320
|
+
warnings: string[];
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
interface BingNewsSearchResult {
|
|
2324
|
+
query: string;
|
|
2325
|
+
results: BingNewsResult[];
|
|
2326
|
+
warnings: string[];
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2329
|
+
/**
|
|
2330
|
+
* General web and news search over Bing's index, read off Bing's own RSS output — ten ranked
|
|
2331
|
+
* results per query with title, destination URL, snippet and date. Keyless, browserless, ~5 KB
|
|
2332
|
+
* a call. It never reports 'no matches' and it ignores search operators like site: — both
|
|
2333
|
+
* measured, both declared.
|
|
2334
|
+
*/
|
|
2335
|
+
interface Unit {
|
|
2336
|
+
/**
|
|
2337
|
+
* Searches the web and returns the ten results Bing ranked first, with title, destination URL,
|
|
2338
|
+
* snippet and date. TWO LIMITS, neither visible in the response: it NEVER returns an empty
|
|
2339
|
+
* list — a query of three invented words came back with ten confident, unrelated rows — and it
|
|
2340
|
+
* IGNORES search operators, so `site:reddit.com …` is not scoped to reddit. Treat the rows as
|
|
2341
|
+
* Bing's best offer rather than as proof anything matched.
|
|
2342
|
+
*/
|
|
2343
|
+
searchWeb(args: { query: string, limit?: number }): Promise<BingSearchResult>;
|
|
2344
|
+
|
|
2345
|
+
/**
|
|
2346
|
+
* Searches news coverage and returns stories with the headline, the outlet's own article URL,
|
|
2347
|
+
* a summary, a real publication timestamp, the publisher name and a thumbnail. Use this rather
|
|
2348
|
+
* than searchWeb when the question is 'what happened' — the web feed's dates are Bing's crawl
|
|
2349
|
+
* stamps, this feed's are the story's.
|
|
2350
|
+
*/
|
|
2351
|
+
searchNews(args: { query: string, limit?: number }): Promise<BingNewsSearchResult>;
|
|
2352
|
+
}
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2158
2355
|
declare namespace BowmarkProvider_blenderseyewear {
|
|
2159
2356
|
// ── Blenders Eyewear — the unit's own declarations, verbatim ──
|
|
2160
2357
|
// Blenders Eyewear's OWN shapes — not a capability contract.
|
|
@@ -4940,6 +5137,58 @@ interface FirstdibsListing {
|
|
|
4940
5137
|
}
|
|
4941
5138
|
}
|
|
4942
5139
|
|
|
5140
|
+
declare namespace BowmarkProvider_fivestarbathsolutions {
|
|
5141
|
+
// ── Five Star Bath Solutions — the unit's own declarations, verbatim ──
|
|
5142
|
+
interface FivestarLocation {
|
|
5143
|
+
id: string;
|
|
5144
|
+
title: string;
|
|
5145
|
+
ownerName: string;
|
|
5146
|
+
phone: string;
|
|
5147
|
+
address: string;
|
|
5148
|
+
state: string;
|
|
5149
|
+
latitude: number;
|
|
5150
|
+
longitude: number;
|
|
5151
|
+
url: string;
|
|
5152
|
+
}
|
|
5153
|
+
|
|
5154
|
+
interface FivestarDaySlots {
|
|
5155
|
+
date: string;
|
|
5156
|
+
dayOfWeek: string;
|
|
5157
|
+
times: string[];
|
|
5158
|
+
}
|
|
5159
|
+
|
|
5160
|
+
interface GetAvailableSlotsResult {
|
|
5161
|
+
region: string;
|
|
5162
|
+
usingRegionSlots: boolean;
|
|
5163
|
+
days: FivestarDaySlots[];
|
|
5164
|
+
}
|
|
5165
|
+
|
|
5166
|
+
/**
|
|
5167
|
+
* National bath/kitchen remodeling franchise (walk-in tubs, shower/tub conversions).
|
|
5168
|
+
* listLocations and getAvailableSlots are live — listLocations reads the site's own
|
|
5169
|
+
* 176-territory location directory, getAvailableSlots checks a region's real free
|
|
5170
|
+
* design-consultation scheduler and returns the actual open days/times. bookAppointment (the
|
|
5171
|
+
* final booking submit) is a stub — see its notImplemented reason.
|
|
5172
|
+
*/
|
|
5173
|
+
interface Unit {
|
|
5174
|
+
/**
|
|
5175
|
+
* Returns every Five Star Bath Solutions franchise territory from the site's own
|
|
5176
|
+
* location-finder directory — geo slug (`id`, what `getAvailableSlots`' `region` argument
|
|
5177
|
+
* takes), title, owner, phone, mailing address, state and lat/long. No arguments.
|
|
5178
|
+
*/
|
|
5179
|
+
listLocations(): Promise<FivestarLocation[]>;
|
|
5180
|
+
|
|
5181
|
+
/**
|
|
5182
|
+
* Checks one franchise region's real free design-consultation scheduler and returns the actual
|
|
5183
|
+
* open appointment days and times over the site's own 3-week booking window. Pass `region`
|
|
5184
|
+
* (the geo slug from `listLocations`' `id` field, e.g. "livonia-mi"). Returns whether the
|
|
5185
|
+
* region has its own configured slot table (`usingRegionSlots`) or fell back to the site's
|
|
5186
|
+
* Mon-Sat default, plus the day-by-day list of open times.
|
|
5187
|
+
*/
|
|
5188
|
+
getAvailableSlots(args: object): Promise<GetAvailableSlotsResult>;
|
|
5189
|
+
}
|
|
5190
|
+
}
|
|
5191
|
+
|
|
4943
5192
|
declare namespace BowmarkProvider_flightradar24 {
|
|
4944
5193
|
// ── Flightradar24 — the unit's own declarations, verbatim ──
|
|
4945
5194
|
interface flightradar24Airline {
|
|
@@ -7537,6 +7786,71 @@ interface HobieLocalAvailability {
|
|
|
7537
7786
|
}
|
|
7538
7787
|
}
|
|
7539
7788
|
|
|
7789
|
+
declare namespace BowmarkProvider_holidaybuilders {
|
|
7790
|
+
// ── Holiday Builders — the unit's own declarations, verbatim ──
|
|
7791
|
+
// Holiday Builders' OWN shapes — not a capability contract.
|
|
7792
|
+
|
|
7793
|
+
interface HolidaybuildersHome {
|
|
7794
|
+
planName: string;
|
|
7795
|
+
location: string; // the community/city, e.g. "Palm Bay"
|
|
7796
|
+
collection: string; // e.g. "inspire", "value", "cornerstone"
|
|
7797
|
+
address: string;
|
|
7798
|
+
price: number;
|
|
7799
|
+
priceFormatted: string;
|
|
7800
|
+
sqft: number;
|
|
7801
|
+
beds: number;
|
|
7802
|
+
baths: number;
|
|
7803
|
+
plan: string;
|
|
7804
|
+
status: string; // "Move-in Ready" | "Coming Soon", the site's own label
|
|
7805
|
+
imageUrl: string | null;
|
|
7806
|
+
url: string; // the listing page — Request a Tour / Contact Us Today live here
|
|
7807
|
+
}
|
|
7808
|
+
|
|
7809
|
+
interface HolidaybuildersHomeDetail extends Omit<HolidaybuildersHome, "url"> {
|
|
7810
|
+
url: string;
|
|
7811
|
+
description: string;
|
|
7812
|
+
garage: number | null;
|
|
7813
|
+
coordinates: { lat: number; lng: number } | null;
|
|
7814
|
+
contactUsUrl: string | null;
|
|
7815
|
+
requestTourUrl: string | null; // the WRITE handoff this provider never performs
|
|
7816
|
+
}
|
|
7817
|
+
|
|
7818
|
+
interface HolidaybuildersSearchFilters {
|
|
7819
|
+
location?: string; // fuzzy substring match
|
|
7820
|
+
collection?: string; // exact, case-insensitive
|
|
7821
|
+
minBeds?: number;
|
|
7822
|
+
minBaths?: number;
|
|
7823
|
+
minSqft?: number;
|
|
7824
|
+
minPrice?: number;
|
|
7825
|
+
maxPrice?: number;
|
|
7826
|
+
moveInReadyOnly?: boolean; // default true
|
|
7827
|
+
}
|
|
7828
|
+
|
|
7829
|
+
/**
|
|
7830
|
+
* Holiday Builders' live Available Homes inventory across every Florida community — filterable
|
|
7831
|
+
* by location, collection, beds/baths/sqft and price, off the search page's own
|
|
7832
|
+
* server-rendered listing rather than a third-party aggregator's stale mirror — plus one
|
|
7833
|
+
* listing's own full detail and Request-a-Tour handoff.
|
|
7834
|
+
*/
|
|
7835
|
+
interface Unit {
|
|
7836
|
+
/**
|
|
7837
|
+
* Runs Holiday Builders' site-wide Available Homes search — every home currently listed across
|
|
7838
|
+
* all Florida communities, with real address, price, beds/baths/sqft, collection and status,
|
|
7839
|
+
* and a listing URL to view details or request a tour. `filters` (all optional): `location`,
|
|
7840
|
+
* `collection`, `minBeds`, `minBaths`, `minSqft`, `minPrice`, `maxPrice`, `moveInReadyOnly`
|
|
7841
|
+
* (default true — excludes homes marked "Coming Soon").
|
|
7842
|
+
*/
|
|
7843
|
+
searchAvailableHomes(filters?: HolidaybuildersSearchFilters): Promise<HolidaybuildersHome[]>;
|
|
7844
|
+
|
|
7845
|
+
/**
|
|
7846
|
+
* Reads one home's own listing page — full specs, description, and whether the site's Contact
|
|
7847
|
+
* Us Today / Request a Tour forms are present. `url` is a listing URL from a
|
|
7848
|
+
* `searchAvailableHomes` result.
|
|
7849
|
+
*/
|
|
7850
|
+
getHomeDetail(url: string): Promise<HolidaybuildersHomeDetail>;
|
|
7851
|
+
}
|
|
7852
|
+
}
|
|
7853
|
+
|
|
7540
7854
|
declare namespace BowmarkProvider_hunter {
|
|
7541
7855
|
// ── Hunter — the unit's own declarations, verbatim ──
|
|
7542
7856
|
interface hunterDomainCandidate {
|
|
@@ -9290,6 +9604,98 @@ interface KompanSparePartsDocuments {
|
|
|
9290
9604
|
}
|
|
9291
9605
|
}
|
|
9292
9606
|
|
|
9607
|
+
declare namespace BowmarkProvider_kuiu {
|
|
9608
|
+
// ── KUIU — the unit's own declarations, verbatim ──
|
|
9609
|
+
interface KuiuVariant {
|
|
9610
|
+
/** Shopify's numeric variant id as a string. */
|
|
9611
|
+
id: string;
|
|
9612
|
+
/** The variant's own label, e.g. "Vias / M". */
|
|
9613
|
+
title: string;
|
|
9614
|
+
/** String verbatim from the storefront — "129.00" (dollars) on /products.json, "12900" (cents) on /products/<handle>.js. */
|
|
9615
|
+
price: string;
|
|
9616
|
+
/** Same scale as price. Null when the variant is not on sale. */
|
|
9617
|
+
compareAtPrice: string | null;
|
|
9618
|
+
sku: string | null;
|
|
9619
|
+
/** Whether the variant is purchasable right now. */
|
|
9620
|
+
available: boolean;
|
|
9621
|
+
/** e.g. ["Vias", "M"] — camo pattern/color + size. */
|
|
9622
|
+
options: string[];
|
|
9623
|
+
}
|
|
9624
|
+
interface KuiuProduct {
|
|
9625
|
+
/** The handle is the only stable identifier across the catalogue. */
|
|
9626
|
+
handle: string;
|
|
9627
|
+
title: string;
|
|
9628
|
+
vendor: string;
|
|
9629
|
+
productType: string;
|
|
9630
|
+
url: string;
|
|
9631
|
+
descriptionHtml: string | null;
|
|
9632
|
+
optionNames: string[];
|
|
9633
|
+
variants: KuiuVariant[];
|
|
9634
|
+
priceRange: { min: string; max: string } | null;
|
|
9635
|
+
/** True if ANY variant is purchasable. */
|
|
9636
|
+
inStock: boolean;
|
|
9637
|
+
tags: string[];
|
|
9638
|
+
images: string[];
|
|
9639
|
+
}
|
|
9640
|
+
interface KuiuSizeMatch {
|
|
9641
|
+
/** The chart size that matched both chest and waist, e.g. "M". Null on no match. */
|
|
9642
|
+
size: string | null;
|
|
9643
|
+
chestRange: string | null;
|
|
9644
|
+
waistRange: string | null;
|
|
9645
|
+
armLengthRange: string | null;
|
|
9646
|
+
/** The size the CHEST measurement alone points to. */
|
|
9647
|
+
chestMatch: string | null;
|
|
9648
|
+
/** The size the WAIST measurement alone points to. */
|
|
9649
|
+
waistMatch: string | null;
|
|
9650
|
+
/** Populated when chest and waist disagree, or neither matched. */
|
|
9651
|
+
warnings: string[];
|
|
9652
|
+
}
|
|
9653
|
+
interface KuiuCheckoutLink {
|
|
9654
|
+
/** Shopify's own cart-permalink URL — a GET that adds the line item and redirects into the cart. */
|
|
9655
|
+
url: string;
|
|
9656
|
+
variant: KuiuVariant;
|
|
9657
|
+
product: KuiuProduct;
|
|
9658
|
+
}
|
|
9659
|
+
|
|
9660
|
+
/**
|
|
9661
|
+
* KUIU's live hunting-apparel catalogue — every product, its camo-pattern/color and size
|
|
9662
|
+
* variants, real prices and stock — plus the storefront's own Find Your Fit men's size chart
|
|
9663
|
+
* and a live-validated checkout handoff link.
|
|
9664
|
+
*/
|
|
9665
|
+
interface Unit {
|
|
9666
|
+
/**
|
|
9667
|
+
* Reads the live KUIU catalogue as the storefront publishes it — every product, its handle,
|
|
9668
|
+
* title, vendor, description, tags, images and the per-variant price/stock the storefront is
|
|
9669
|
+
* quoting right now.
|
|
9670
|
+
*/
|
|
9671
|
+
listKuiuProducts(opts?: { limit?: number }): Promise<KuiuProduct[]>;
|
|
9672
|
+
|
|
9673
|
+
/**
|
|
9674
|
+
* Reads one product by its handle — every camo-pattern/color and size variant, its exact price
|
|
9675
|
+
* and whether that specific variant is purchasable right now. Takes the handle
|
|
9676
|
+
* listKuiuProducts returns. THROWS on an unknown handle (the store answers a real 404).
|
|
9677
|
+
*/
|
|
9678
|
+
getKuiuProduct(handle: string): Promise<KuiuProduct>;
|
|
9679
|
+
|
|
9680
|
+
/**
|
|
9681
|
+
* Maps chest and waist measurements (inches) to KUIU's own published men's apparel size,
|
|
9682
|
+
* reading the storefront's live Find Your Fit chart. Returns the matched size plus each
|
|
9683
|
+
* measurement's OWN match, so a caller can see when chest and waist point at different rows —
|
|
9684
|
+
* a real case on a chart sized primarily by chest.
|
|
9685
|
+
*/
|
|
9686
|
+
findKuiuSize(measurements: { chest: number; waist: number }): Promise<KuiuSizeMatch>;
|
|
9687
|
+
|
|
9688
|
+
/**
|
|
9689
|
+
* Resolves a product handle + a variant match (either the exact variant title like "Vias / M",
|
|
9690
|
+
* or a substring of it) to a real Shopify cart-permalink URL, validated live against the
|
|
9691
|
+
* storefront. THROWS if the handle is unknown, if no variant matches, if the match is
|
|
9692
|
+
* ambiguous, or if the matched variant is out of stock — the error names the candidates or
|
|
9693
|
+
* in-stock options so the caller can retry.
|
|
9694
|
+
*/
|
|
9695
|
+
getKuiuCheckoutLink(handle: string, variantTitleOrOptions: string, opts?: { quantity?: number }): Promise<KuiuCheckoutLink>;
|
|
9696
|
+
}
|
|
9697
|
+
}
|
|
9698
|
+
|
|
9293
9699
|
declare namespace BowmarkProvider_labcorp {
|
|
9294
9700
|
// ── Labcorp — the unit's own declarations, verbatim ──
|
|
9295
9701
|
interface LabcorpTestSummary {
|
|
@@ -10525,6 +10931,60 @@ interface mcdonaldsFindStoresResult {
|
|
|
10525
10931
|
}
|
|
10526
10932
|
}
|
|
10527
10933
|
|
|
10934
|
+
declare namespace BowmarkProvider_medicalguardian {
|
|
10935
|
+
// ── Medical Guardian — the unit's own declarations, verbatim ──
|
|
10936
|
+
// Medical Guardian's OWN shapes — not a capability contract.
|
|
10937
|
+
|
|
10938
|
+
type MedicalguardianActivityLevel = "Low" | "Medium" | "High";
|
|
10939
|
+
type MedicalguardianRiskLevel = "low" | "medium" | "high";
|
|
10940
|
+
|
|
10941
|
+
interface MedicalguardianRiskQuestion {
|
|
10942
|
+
id: string;
|
|
10943
|
+
prompt: string;
|
|
10944
|
+
options: Array<{ value: string; score: number }>;
|
|
10945
|
+
}
|
|
10946
|
+
|
|
10947
|
+
interface MedicalguardianFallRiskAnswers {
|
|
10948
|
+
hearingImpaired: boolean;
|
|
10949
|
+
chronicHealthCondition: boolean;
|
|
10950
|
+
limitedMobility: boolean;
|
|
10951
|
+
activityLevel: MedicalguardianActivityLevel;
|
|
10952
|
+
takesDailyMedications: boolean;
|
|
10953
|
+
travelsAnnually: boolean;
|
|
10954
|
+
homeHasStairs: boolean;
|
|
10955
|
+
drivesDaily: boolean;
|
|
10956
|
+
previouslyFallen: boolean;
|
|
10957
|
+
}
|
|
10958
|
+
|
|
10959
|
+
interface MedicalguardianFallRiskResult {
|
|
10960
|
+
score: number; // 0-9
|
|
10961
|
+
riskLevel: MedicalguardianRiskLevel;
|
|
10962
|
+
assessmentUrl: string;
|
|
10963
|
+
deviceSelectionUrl: string; // the site's own next step — device selection, not built here
|
|
10964
|
+
}
|
|
10965
|
+
|
|
10966
|
+
/**
|
|
10967
|
+
* Medical Guardian's own fall-risk assessment (medicalguardian.com/risk-assessment) — a real
|
|
10968
|
+
* 0-9 score and low/medium/high risk level computed exactly as the site computes it, plus the
|
|
10969
|
+
* site's own 'Choose a Device' handoff URL as the real next step.
|
|
10970
|
+
*/
|
|
10971
|
+
interface Unit {
|
|
10972
|
+
/**
|
|
10973
|
+
* Returns Medical Guardian's own 9 fall-risk assessment questions, in order, exactly as
|
|
10974
|
+
* medicalguardian.com/risk-assessment asks them — ask them one at a time, then call
|
|
10975
|
+
* assessFallRisk with the answers.
|
|
10976
|
+
*/
|
|
10977
|
+
getRiskAssessmentQuestions(): Promise<{ questions: MedicalguardianRiskQuestion[] }>;
|
|
10978
|
+
|
|
10979
|
+
/**
|
|
10980
|
+
* Runs Medical Guardian's own fall-risk scoring — a real, personalized 0-9 score and risk
|
|
10981
|
+
* level, computed exactly as the site's own calculator computes it, no estimate.
|
|
10982
|
+
* `deviceSelectionUrl` is the real next step the site itself sends the user to.
|
|
10983
|
+
*/
|
|
10984
|
+
assessFallRisk(answers: MedicalguardianFallRiskAnswers): Promise<MedicalguardianFallRiskResult>;
|
|
10985
|
+
}
|
|
10986
|
+
}
|
|
10987
|
+
|
|
10528
10988
|
declare namespace BowmarkProvider_medicare {
|
|
10529
10989
|
// ── Medicare.gov — the unit's own declarations, verbatim ──
|
|
10530
10990
|
interface medicareCounty {
|
|
@@ -13777,6 +14237,115 @@ interface RedditThread {
|
|
|
13777
14237
|
}
|
|
13778
14238
|
}
|
|
13779
14239
|
|
|
14240
|
+
declare namespace BowmarkProvider_reliancepartners {
|
|
14241
|
+
// ── Reliance Partners — the unit's own declarations, verbatim ──
|
|
14242
|
+
interface ReliancePartnersApplicationSchema {
|
|
14243
|
+
entryUrl: string;
|
|
14244
|
+
steps: Array<{
|
|
14245
|
+
title: string; // "Basic Info" | "Coverage" | "Equipment"
|
|
14246
|
+
fields: Array<{ gfName: string; label: string; type: string; required: boolean; options?: Array<{ value: string; label: string }> }>;
|
|
14247
|
+
repeaters: Array<{ title: string; gfRepeaterId: string; maxItems: number; columns: Array<{ gfName: string; label: string; type: string; required: boolean; options?: Array<{ value: string; label: string }> }> }>;
|
|
14248
|
+
}>;
|
|
14249
|
+
}
|
|
14250
|
+
|
|
14251
|
+
interface AssembledApplication {
|
|
14252
|
+
valid: boolean;
|
|
14253
|
+
errors: string[];
|
|
14254
|
+
entryUrl: string;
|
|
14255
|
+
formFields: Record<string, string>; // the site's own GF field names
|
|
14256
|
+
summary: string;
|
|
14257
|
+
}
|
|
14258
|
+
|
|
14259
|
+
/**
|
|
14260
|
+
* Reliance Partners' own 3-step commercial-trucking insurance application (FMCSA/EIN, per-line
|
|
14261
|
+
* coverage limits, equipment) — reads the live field structure and enumerated catalogs, and
|
|
14262
|
+
* validates + assembles a caller's application against it, ready to submit.
|
|
14263
|
+
*/
|
|
14264
|
+
interface Unit {
|
|
14265
|
+
/**
|
|
14266
|
+
* Reads reliancepartners.com/quote/'s live 3-step trucking-insurance application — every
|
|
14267
|
+
* field, and every real enumerated catalog (15 coverage lines, 30 commodities, FMCSA type, all
|
|
14268
|
+
* US states).
|
|
14269
|
+
*/
|
|
14270
|
+
getApplicationSchema(): Promise<ReliancePartnersApplicationSchema>;
|
|
14271
|
+
|
|
14272
|
+
/**
|
|
14273
|
+
* Validates a caller's trucking-insurance application against the live schema's own field
|
|
14274
|
+
* requirements and enumerated catalogs, then maps it onto the site's own Gravity Forms field
|
|
14275
|
+
* names — exact, ready to submit. Never submits it; the site's own flow ends in a human
|
|
14276
|
+
* underwriting follow-up, not an instant quote.
|
|
14277
|
+
*/
|
|
14278
|
+
assembleApplication(args: object): Promise<AssembledApplication>;
|
|
14279
|
+
}
|
|
14280
|
+
}
|
|
14281
|
+
|
|
14282
|
+
declare namespace BowmarkProvider_revisionskincare {
|
|
14283
|
+
// ── Revision Skincare — the unit's own declarations, verbatim ──
|
|
14284
|
+
type RevisionQuestionType = "single-select" | "multi-select";
|
|
14285
|
+
|
|
14286
|
+
interface RevisionQuizOption {
|
|
14287
|
+
title: string;
|
|
14288
|
+
}
|
|
14289
|
+
|
|
14290
|
+
interface RevisionQuizQuestion {
|
|
14291
|
+
questionId: string;
|
|
14292
|
+
text: string;
|
|
14293
|
+
type: RevisionQuestionType;
|
|
14294
|
+
options: RevisionQuizOption[];
|
|
14295
|
+
}
|
|
14296
|
+
|
|
14297
|
+
interface RevisionQuizQuestions {
|
|
14298
|
+
quizId: string;
|
|
14299
|
+
channelQuizId: string;
|
|
14300
|
+
subscriberId: string;
|
|
14301
|
+
questions: RevisionQuizQuestion[];
|
|
14302
|
+
}
|
|
14303
|
+
|
|
14304
|
+
interface RevisionQuizAnswer {
|
|
14305
|
+
questionId: string;
|
|
14306
|
+
type: RevisionQuestionType;
|
|
14307
|
+
answer: string | string[];
|
|
14308
|
+
}
|
|
14309
|
+
|
|
14310
|
+
interface RevisionRecommendedProduct {
|
|
14311
|
+
productId: string;
|
|
14312
|
+
name: string;
|
|
14313
|
+
description: string;
|
|
14314
|
+
url: string;
|
|
14315
|
+
imageUrl: string;
|
|
14316
|
+
price: number | null;
|
|
14317
|
+
currencyCode: string | null;
|
|
14318
|
+
averageRating: number | null;
|
|
14319
|
+
approvedReviewsCount: number | null;
|
|
14320
|
+
}
|
|
14321
|
+
|
|
14322
|
+
interface RevisionQuizResult {
|
|
14323
|
+
quizResponseId: string;
|
|
14324
|
+
title: string;
|
|
14325
|
+
subtitle: string;
|
|
14326
|
+
products: RevisionRecommendedProduct[];
|
|
14327
|
+
}
|
|
14328
|
+
|
|
14329
|
+
/**
|
|
14330
|
+
* Reads and answers Revision Skincare's own Product Finder Quiz
|
|
14331
|
+
* (revisionskincare.com/pages/skincare-quiz), returning the site's real computed product
|
|
14332
|
+
* recommendations.
|
|
14333
|
+
*/
|
|
14334
|
+
interface Unit {
|
|
14335
|
+
/**
|
|
14336
|
+
* Reads the live Product Finder Quiz's real questions, in order, each with its options and
|
|
14337
|
+
* answer type.
|
|
14338
|
+
*/
|
|
14339
|
+
getSkincareQuizQuestions(): Promise<RevisionQuizQuestions>;
|
|
14340
|
+
|
|
14341
|
+
/**
|
|
14342
|
+
* Submits a shopper's answers to the Product Finder Quiz and returns the site's real computed
|
|
14343
|
+
* product recommendations.
|
|
14344
|
+
*/
|
|
14345
|
+
takeSkincareQuiz(arg: { answers: RevisionQuizAnswer[] }): Promise<RevisionQuizResult>;
|
|
14346
|
+
}
|
|
14347
|
+
}
|
|
14348
|
+
|
|
13780
14349
|
declare namespace BowmarkProvider_rishitea {
|
|
13781
14350
|
// ── Rishi Tea & Botanicals — the unit's own declarations, verbatim ──
|
|
13782
14351
|
interface TeaFinderQuestion {
|
|
@@ -13948,6 +14517,75 @@ interface RoofmaxxCostEstimate {
|
|
|
13948
14517
|
}
|
|
13949
14518
|
}
|
|
13950
14519
|
|
|
14520
|
+
declare namespace BowmarkProvider_saatva {
|
|
14521
|
+
// ── Saatva — the unit's own declarations, verbatim ──
|
|
14522
|
+
// Saatva's OWN shapes — not a capability contract.
|
|
14523
|
+
|
|
14524
|
+
interface MattressQuizAnswers {
|
|
14525
|
+
sleepPosition: "side" | "back" | "stomach";
|
|
14526
|
+
feel: "soft" | "medium" | "firm";
|
|
14527
|
+
sharesBed?: boolean; // optional — narrows scoring further when given
|
|
14528
|
+
}
|
|
14529
|
+
|
|
14530
|
+
interface SaatvaVariant {
|
|
14531
|
+
sku: string;
|
|
14532
|
+
name: string;
|
|
14533
|
+
size: string | null;
|
|
14534
|
+
comfortLevel: string | null; // Saatva's own label, e.g. "Medium Firm"
|
|
14535
|
+
mattressType: string | null; // "Standard" | "Split" | "Upper-Flex"
|
|
14536
|
+
price: number | null;
|
|
14537
|
+
inStock: boolean;
|
|
14538
|
+
sleepPositions: string[]; // e.g. ["Side Sleeper", "Back Sleeper"]
|
|
14539
|
+
url: string; // pre-selected-SKU product page, one click from cart
|
|
14540
|
+
}
|
|
14541
|
+
|
|
14542
|
+
interface SaatvaMattress {
|
|
14543
|
+
productCode: string;
|
|
14544
|
+
name: string;
|
|
14545
|
+
url: string;
|
|
14546
|
+
variants: SaatvaVariant[];
|
|
14547
|
+
}
|
|
14548
|
+
|
|
14549
|
+
interface SaatvaRecommendation {
|
|
14550
|
+
productCode: string;
|
|
14551
|
+
name: string;
|
|
14552
|
+
score: number; // higher is a better match; ties break on lower price
|
|
14553
|
+
matchedOn: string[]; // plain-language reasons this variant scored
|
|
14554
|
+
bestVariant: SaatvaVariant | null;
|
|
14555
|
+
}
|
|
14556
|
+
|
|
14557
|
+
/**
|
|
14558
|
+
* Saatva's mattress catalogue and its own mattress-quiz recommendation logic — every mattress
|
|
14559
|
+
* line Saatva currently sells with every buyable variant's size, comfort level, sleep-position
|
|
14560
|
+
* fit, stock and price, plus a real computed recommendation from stated sleep position,
|
|
14561
|
+
* weight, and firmness preference, each with the exact pre-selected-SKU product link to buy
|
|
14562
|
+
* it.
|
|
14563
|
+
*/
|
|
14564
|
+
interface Unit {
|
|
14565
|
+
/**
|
|
14566
|
+
* Lists every mattress product line Saatva currently sells with every buyable variant — size,
|
|
14567
|
+
* comfort level, sleep-position fit, stock and price — read out of the same catalogue the
|
|
14568
|
+
* site's own mattress quiz scores against. Takes nothing. THROWS rather than returning [] when
|
|
14569
|
+
* the page answers without its payload or names no mattress lines, because Saatva always sells
|
|
14570
|
+
* these and an empty array would read as a catalogue that had emptied.
|
|
14571
|
+
*/
|
|
14572
|
+
listMattresses(): Promise<SaatvaMattress[]>;
|
|
14573
|
+
|
|
14574
|
+
/**
|
|
14575
|
+
* Runs Saatva's mattress-quiz goal-flow (saatva.com/mattress-quiz) for a stated sleep position
|
|
14576
|
+
* and firmness preference, ranking every mattress line against the SAME live catalogue the
|
|
14577
|
+
* site's own quiz reads and returning the best-matching in-stock variant for each, with its
|
|
14578
|
+
* exact pre-selected-SKU buy link. Ranked highest score first, ties broken by lower price.
|
|
14579
|
+
* `matchedOn` names which stated preferences the top variant actually satisfies. Does NOT
|
|
14580
|
+
* replicate Saatva's internal weighted scoring formula byte-for-byte — that logic is
|
|
14581
|
+
* proprietary client-side JS — it scores each variant's own declared attributes against what
|
|
14582
|
+
* was asked, which is a genuine computation over real data rather than a guess from marketing
|
|
14583
|
+
* copy.
|
|
14584
|
+
*/
|
|
14585
|
+
recommendMattress(answers: MattressQuizAnswers): Promise<SaatvaRecommendation[]>;
|
|
14586
|
+
}
|
|
14587
|
+
}
|
|
14588
|
+
|
|
13951
14589
|
declare namespace BowmarkProvider_saltandstone {
|
|
13952
14590
|
// ── Salt & Stone — the unit's own declarations, verbatim ──
|
|
13953
14591
|
// Salt & Stone's OWN shapes — not a capability contract.
|
|
@@ -14578,6 +15216,52 @@ interface SemihandmadePriceResult {
|
|
|
14578
15216
|
}
|
|
14579
15217
|
}
|
|
14580
15218
|
|
|
15219
|
+
declare namespace BowmarkProvider_smartsign {
|
|
15220
|
+
// ── SmartSign — the unit's own declarations, verbatim ──
|
|
15221
|
+
interface SmartsignSearchResult {
|
|
15222
|
+
sku: string;
|
|
15223
|
+
name: string;
|
|
15224
|
+
url: string; // absolute product page URL — what getTemplate takes
|
|
15225
|
+
imageUrl: string;
|
|
15226
|
+
}
|
|
15227
|
+
interface SmartsignMaterialPricing {
|
|
15228
|
+
name: string; // e.g. "Aluminum"
|
|
15229
|
+
sizeCode: string; // SmartSign's own per-material+size code
|
|
15230
|
+
unitPrice: number; // single-unit price, e.g. 37.94
|
|
15231
|
+
pricingTiers: { qty: number; price: number }[]; // volume-discount ladder, includes qty:1
|
|
15232
|
+
}
|
|
15233
|
+
interface SmartsignTemplate {
|
|
15234
|
+
sku: string;
|
|
15235
|
+
title: string;
|
|
15236
|
+
url: string;
|
|
15237
|
+
materials: SmartsignMaterialPricing[];
|
|
15238
|
+
}
|
|
15239
|
+
|
|
15240
|
+
/**
|
|
15241
|
+
* Reads SmartSign's custom-sign template configurator — search for a template, then read its
|
|
15242
|
+
* real per-material live pricing and volume-discount ladder — straight from smartsign.com's
|
|
15243
|
+
* own pages, no key, no browser.
|
|
15244
|
+
*/
|
|
15245
|
+
interface Unit {
|
|
15246
|
+
/**
|
|
15247
|
+
* Runs SmartSign's own site-search suggest endpoint for a free-text query (e.g. "parking
|
|
15248
|
+
* sign", "custom aluminum sign") and returns the matching product/template rows — sku, name,
|
|
15249
|
+
* product URL, thumbnail — deduplicated by URL. The `sku` it returns is what getTemplate
|
|
15250
|
+
* takes. May legitimately return [] for a query that matches nothing.
|
|
15251
|
+
*/
|
|
15252
|
+
search(query: string): Promise<SmartsignSearchResult[]>;
|
|
15253
|
+
|
|
15254
|
+
/**
|
|
15255
|
+
* Reads one custom-sign template's product page and returns its title plus every material
|
|
15256
|
+
* option offered — display name, the site's own size+material code, single-unit price, and the
|
|
15257
|
+
* FULL volume-discount ladder (qty tier -> price). THROWS rather than returning an empty
|
|
15258
|
+
* materials list on a retired/mistyped SKU — every real template offers at least one material,
|
|
15259
|
+
* so zero is never an honest answer.
|
|
15260
|
+
*/
|
|
15261
|
+
getTemplate(sku: string): Promise<SmartsignTemplate>;
|
|
15262
|
+
}
|
|
15263
|
+
}
|
|
15264
|
+
|
|
14581
15265
|
declare namespace BowmarkProvider_soundcloud {
|
|
14582
15266
|
// ── SoundCloud — the unit's own declarations, verbatim ──
|
|
14583
15267
|
// SoundCloud's OWN row shape — not the `music` capability contract.
|
|
@@ -15344,6 +16028,69 @@ interface teladocInsuranceCoverage {
|
|
|
15344
16028
|
}
|
|
15345
16029
|
}
|
|
15346
16030
|
|
|
16031
|
+
declare namespace BowmarkProvider_teneohg {
|
|
16032
|
+
// ── Teneo Hospitality Group — the unit's own declarations, verbatim ──
|
|
16033
|
+
// Teneo's OWN shapes — not a capability contract.
|
|
16034
|
+
|
|
16035
|
+
interface TeneohgHotelSummary {
|
|
16036
|
+
slug: string;
|
|
16037
|
+
name: string;
|
|
16038
|
+
city: string | null;
|
|
16039
|
+
region: string | null; // US state code, e.g. "AZ", or a country name
|
|
16040
|
+
profileUrl: string;
|
|
16041
|
+
totalMeetingSpaceSqFt: number | null;
|
|
16042
|
+
largestMeetingSpaceSqFt: number | null;
|
|
16043
|
+
sleepingRooms: number | null;
|
|
16044
|
+
collections: string[]; // e.g. ["Luxury", "Resorts"]
|
|
16045
|
+
}
|
|
16046
|
+
|
|
16047
|
+
interface TeneohgSearchResult { hotels: TeneohgHotelSummary[]; totalMatched: number; totalScanned: number; pagesScanned: number }
|
|
16048
|
+
|
|
16049
|
+
type TeneohgHotelStats = Record<string, string>; // e.g. { "Meeting Room Space": "156,000 Sq. Ft.", "Number of Sleeping Rooms": "517" }
|
|
16050
|
+
|
|
16051
|
+
interface TeneohgRfpHandoff { url: string; hotelsOfInterestValue: string }
|
|
16052
|
+
|
|
16053
|
+
interface TeneohgHotelDetail {
|
|
16054
|
+
slug: string;
|
|
16055
|
+
name: string;
|
|
16056
|
+
city: string | null;
|
|
16057
|
+
region: string | null;
|
|
16058
|
+
profileUrl: string;
|
|
16059
|
+
stats: TeneohgHotelStats;
|
|
16060
|
+
rfpHandoff: TeneohgRfpHandoff; // the public RFP form + what to type into its "Hotels of Interest" field
|
|
16061
|
+
}
|
|
16062
|
+
|
|
16063
|
+
/**
|
|
16064
|
+
* Teneo Hospitality Group's own member-hotel directory — search 350+ independent and
|
|
16065
|
+
* small-branded meeting hotels by destination, collection and meeting-space/room-block size
|
|
16066
|
+
* with real specs, then read one hotel's full meeting-space stat block and the RFP hand-off to
|
|
16067
|
+
* actually request a proposal.
|
|
16068
|
+
*/
|
|
16069
|
+
interface Unit {
|
|
16070
|
+
/**
|
|
16071
|
+
* Searches Teneo's own member-hotel directory (350+ hotels) by US state (2-letter code, e.g.
|
|
16072
|
+
* "AZ"), country, collection tag substring (e.g. "luxury", "resorts"), minimum total
|
|
16073
|
+
* meeting-space square footage, minimum sleeping-room count and a name/city substring. Uses
|
|
16074
|
+
* one of the site's own curated per-state directory pages when the requested state has one
|
|
16075
|
+
* (faster, pre-filtered), otherwise scans the base listing's pages (bounded by
|
|
16076
|
+
* `maxPagesToScan`, default 8) and filters client-side. `totalMatched` is the count before
|
|
16077
|
+
* `limit` (default 20, max 50) cuts the list; `totalScanned`/`pagesScanned` say how much of
|
|
16078
|
+
* the directory the call actually covered.
|
|
16079
|
+
*/
|
|
16080
|
+
searchMemberHotels(args?: { state?: string; country?: string; collection?: string; minMeetingSpaceSqFt?: number; minSleepingRooms?: number; query?: string; limit?: number; maxPagesToScan?: number }): Promise<TeneohgSearchResult>;
|
|
16081
|
+
|
|
16082
|
+
/**
|
|
16083
|
+
* Reads one member hotel's own profile page: every stat its meeting-space and sleeping-room
|
|
16084
|
+
* widgets carry (total/largest/second-largest meeting room space, outdoor space, meeting-room
|
|
16085
|
+
* count, suites, doubles), keyed on the site's own label text, plus `rfpHandoff` — the public
|
|
16086
|
+
* RFP form URL and the exact value to put in its "Hotels of Interest" field to route a request
|
|
16087
|
+
* at this hotel. `slug` comes from searchMemberHotels(). THROWS on an unknown slug, naming
|
|
16088
|
+
* searchMemberHotels() as the way to find current ones.
|
|
16089
|
+
*/
|
|
16090
|
+
getMemberHotel(slug: string): Promise<TeneohgHotelDetail>;
|
|
16091
|
+
}
|
|
16092
|
+
}
|
|
16093
|
+
|
|
15347
16094
|
declare namespace BowmarkProvider_therabody {
|
|
15348
16095
|
// ── Therabody — the unit's own declarations, verbatim ──
|
|
15349
16096
|
interface TherabodyVariant {
|
|
@@ -16712,6 +17459,74 @@ interface VoluspaQuizIntro {
|
|
|
16712
17459
|
}
|
|
16713
17460
|
}
|
|
16714
17461
|
|
|
17462
|
+
declare namespace BowmarkProvider_walkerhughes {
|
|
17463
|
+
// ── WalkerHughes Insurance — the unit's own declarations, verbatim ──
|
|
17464
|
+
// WalkerHughes' OWN shapes — not a capability contract.
|
|
17465
|
+
|
|
17466
|
+
interface WalkerhughesProduct {
|
|
17467
|
+
id: string; // the exact `product` value /start-quote expects
|
|
17468
|
+
name: string;
|
|
17469
|
+
personal: boolean; // Personal vs Business, from the site's own toggle
|
|
17470
|
+
}
|
|
17471
|
+
|
|
17472
|
+
interface WalkerhughesQuoteCatalog {
|
|
17473
|
+
products: WalkerhughesProduct[];
|
|
17474
|
+
applyUrl: string; // the real /start-quote URL — no query prefill exists
|
|
17475
|
+
sourceUrl: string;
|
|
17476
|
+
}
|
|
17477
|
+
|
|
17478
|
+
interface WalkerhughesOffice {
|
|
17479
|
+
label: string; // exact `preferredOffice` value /start-quote expects
|
|
17480
|
+
city: string;
|
|
17481
|
+
state: string;
|
|
17482
|
+
address: string | null;
|
|
17483
|
+
phone: string | null;
|
|
17484
|
+
url: string; // this office's own detail page
|
|
17485
|
+
}
|
|
17486
|
+
|
|
17487
|
+
interface WalkerhughesOfficeDirectory {
|
|
17488
|
+
offices: WalkerhughesOffice[];
|
|
17489
|
+
sourceUrl: string;
|
|
17490
|
+
}
|
|
17491
|
+
|
|
17492
|
+
interface WalkerhughesOfficeMatch extends WalkerhughesOffice {
|
|
17493
|
+
matchedOn: "label" | "city" | "state";
|
|
17494
|
+
}
|
|
17495
|
+
|
|
17496
|
+
interface WalkerhughesOfficeSearch {
|
|
17497
|
+
query: string;
|
|
17498
|
+
matches: WalkerhughesOfficeMatch[];
|
|
17499
|
+
sourceUrl: string;
|
|
17500
|
+
}
|
|
17501
|
+
|
|
17502
|
+
/**
|
|
17503
|
+
* WalkerHughes' real 16-product Personal/Business insurance-quote application catalog and its
|
|
17504
|
+
* real 25-office directory, straight off /start-quote and /locations — list and filter the
|
|
17505
|
+
* product catalog, list and filter offices, and match a caller's free-text location against
|
|
17506
|
+
* the real office directory.
|
|
17507
|
+
*/
|
|
17508
|
+
interface Unit {
|
|
17509
|
+
/**
|
|
17510
|
+
* Lists WalkerHughes' real 16-product insurance catalog straight off the /start-quote form's
|
|
17511
|
+
* own <select>, optionally filtered to just Personal or just Business — the same toggle the
|
|
17512
|
+
* live form applies. Includes the real applyUrl handoff.
|
|
17513
|
+
*/
|
|
17514
|
+
listQuoteProducts(department?: "Personal" | "Business"): Promise<WalkerhughesQuoteCatalog>;
|
|
17515
|
+
|
|
17516
|
+
/**
|
|
17517
|
+
* Lists WalkerHughes' real 25-office directory straight off /locations' own server-rendered
|
|
17518
|
+
* cards, optionally filtered to one two-letter state.
|
|
17519
|
+
*/
|
|
17520
|
+
listOffices(state?: string): Promise<WalkerhughesOfficeDirectory>;
|
|
17521
|
+
|
|
17522
|
+
/**
|
|
17523
|
+
* Matches a free-text location (a city, a two-letter state, or "City, ST") against the real
|
|
17524
|
+
* office directory and returns every match, ranked exact-label > city > state.
|
|
17525
|
+
*/
|
|
17526
|
+
findNearestOffice(query: string): Promise<WalkerhughesOfficeSearch>;
|
|
17527
|
+
}
|
|
17528
|
+
}
|
|
17529
|
+
|
|
16715
17530
|
declare namespace BowmarkProvider_walmart {
|
|
16716
17531
|
// ── Walmart — the unit's own declarations, verbatim ──
|
|
16717
17532
|
interface walmartStore {
|
|
@@ -16995,6 +17810,62 @@ interface XpressWaitTime {
|
|
|
16995
17810
|
}
|
|
16996
17811
|
}
|
|
16997
17812
|
|
|
17813
|
+
declare namespace BowmarkProvider_yorkwallcoverings {
|
|
17814
|
+
// ── York Wallcoverings — the unit's own declarations, verbatim ──
|
|
17815
|
+
interface YorkWallcoveringsSearchResult {
|
|
17816
|
+
sku: string;
|
|
17817
|
+
name: string;
|
|
17818
|
+
url: string;
|
|
17819
|
+
price: number;
|
|
17820
|
+
}
|
|
17821
|
+
|
|
17822
|
+
interface YorkWallcoveringsProduct {
|
|
17823
|
+
sku: string;
|
|
17824
|
+
name: string;
|
|
17825
|
+
url: string;
|
|
17826
|
+
price: number;
|
|
17827
|
+
inStock: boolean;
|
|
17828
|
+
description: string;
|
|
17829
|
+
images: string[];
|
|
17830
|
+
}
|
|
17831
|
+
|
|
17832
|
+
interface YorkWallcoveringsAddToCartHandoff {
|
|
17833
|
+
sku: string;
|
|
17834
|
+
name: string;
|
|
17835
|
+
url: string;
|
|
17836
|
+
price: number;
|
|
17837
|
+
inStock: boolean;
|
|
17838
|
+
note: string;
|
|
17839
|
+
}
|
|
17840
|
+
|
|
17841
|
+
/**
|
|
17842
|
+
* Reads York Wallcoverings' public wallpaper/mural storefront (yorkwallcoverings.com) — search
|
|
17843
|
+
* the catalog by keyword, read a product's live price and stock, and get the handoff to add it
|
|
17844
|
+
* to cart on the real site.
|
|
17845
|
+
*/
|
|
17846
|
+
interface Unit {
|
|
17847
|
+
/**
|
|
17848
|
+
* Searches York's live public catalog (wallpaper, wall murals, grasscloth) by keyword — theme,
|
|
17849
|
+
* style, color or brand words all match, since the site's own search covers name and
|
|
17850
|
+
* description — and returns each match's SKU, name, product URL and price.
|
|
17851
|
+
*/
|
|
17852
|
+
search(query: string): Promise<YorkWallcoveringsSearchResult[]>;
|
|
17853
|
+
|
|
17854
|
+
/**
|
|
17855
|
+
* Reads one York product page in full — SKU, live price, in-stock/out-of-stock status,
|
|
17856
|
+
* description and images — for a product URL `search` already returned.
|
|
17857
|
+
*/
|
|
17858
|
+
getProduct(url: string): Promise<YorkWallcoveringsProduct>;
|
|
17859
|
+
|
|
17860
|
+
/**
|
|
17861
|
+
* Hands back the shopper's own York product page — the exact Add to cart button for this SKU —
|
|
17862
|
+
* since the site's cart requires a per-session ASP.NET token nobody but the shopper can
|
|
17863
|
+
* supply. Writes nothing.
|
|
17864
|
+
*/
|
|
17865
|
+
addToCart(url: string): Promise<YorkWallcoveringsAddToCartHandoff>;
|
|
17866
|
+
}
|
|
17867
|
+
}
|
|
17868
|
+
|
|
16998
17869
|
declare namespace BowmarkProvider_yourarborhome {
|
|
16999
17870
|
// ── Arbor Homes — the unit's own declarations, verbatim ──
|
|
17000
17871
|
interface ArborHome {
|
|
@@ -17046,6 +17917,57 @@ interface SearchHomesFilters {
|
|
|
17046
17917
|
}
|
|
17047
17918
|
}
|
|
17048
17919
|
|
|
17920
|
+
declare namespace BowmarkProvider_zennioptical {
|
|
17921
|
+
// ── Zenni Optical — the unit's own declarations, verbatim ──
|
|
17922
|
+
interface ZenniFrame {
|
|
17923
|
+
sku: string;
|
|
17924
|
+
name: string;
|
|
17925
|
+
price: number;
|
|
17926
|
+
colors: Array<{ sku: string; price: number }>;
|
|
17927
|
+
}
|
|
17928
|
+
interface ZenniStock {
|
|
17929
|
+
skuId: string;
|
|
17930
|
+
inStock: boolean;
|
|
17931
|
+
quantity: number;
|
|
17932
|
+
backOrderable: boolean;
|
|
17933
|
+
preOrderable: boolean;
|
|
17934
|
+
}
|
|
17935
|
+
interface ZenniRx {
|
|
17936
|
+
odSph: number;
|
|
17937
|
+
osSph: number;
|
|
17938
|
+
pd: number;
|
|
17939
|
+
birthYear: number;
|
|
17940
|
+
}
|
|
17941
|
+
interface ZenniLensPriceRow {
|
|
17942
|
+
type: string;
|
|
17943
|
+
minPrice: number;
|
|
17944
|
+
maxPrice: number;
|
|
17945
|
+
subTypes: Array<{ type: string; usage: string; minPrice: number; maxPrice: number; tints: boolean }>;
|
|
17946
|
+
}
|
|
17947
|
+
|
|
17948
|
+
/**
|
|
17949
|
+
* Online prescription eyewear. Prices a real frame + Rx + lens-type configuration off the
|
|
17950
|
+
* site's own configurator, and checks live per-SKU stock.
|
|
17951
|
+
*/
|
|
17952
|
+
interface Unit {
|
|
17953
|
+
/**
|
|
17954
|
+
* Reads one frame's name, base price and per-color-variant price straight off the product
|
|
17955
|
+
* page's own embedded data. No rendering.
|
|
17956
|
+
*/
|
|
17957
|
+
getFrame(skuId: string): Promise<ZenniFrame>;
|
|
17958
|
+
|
|
17959
|
+
/** Checks live per-SKU inventory off Zenni's own inventory endpoint. */
|
|
17960
|
+
checkStock(skuId: string): Promise<ZenniStock>;
|
|
17961
|
+
|
|
17962
|
+
/**
|
|
17963
|
+
* Runs a real prescription through Zenni's own order-configurator wizard (usage type -> manual
|
|
17964
|
+
* Rx entry -> confirm) and returns the priced lens-type matrix the site computes for that
|
|
17965
|
+
* exact Rx — a completed, priced configuration rather than a base frame price.
|
|
17966
|
+
*/
|
|
17967
|
+
priceLensConfig(skuId: string, rx: ZenniRx): Promise<ZenniLensPriceRow[]>;
|
|
17968
|
+
}
|
|
17969
|
+
}
|
|
17970
|
+
|
|
17049
17971
|
declare namespace BowmarkFamily_shopify_store {
|
|
17050
17972
|
// ── Shopify storefronts — the unit's own declarations, verbatim ──
|
|
17051
17973
|
interface ShopifyVariant {
|
|
@@ -17868,6 +18790,7 @@ interface BowmarkProviders {
|
|
|
17868
18790
|
aiper: BowmarkProvider_aiper.Unit;
|
|
17869
18791
|
ajmadison: BowmarkProvider_ajmadison.Unit;
|
|
17870
18792
|
ashleyfurniture: BowmarkProvider_ashleyfurniture.Unit;
|
|
18793
|
+
asppoolco: BowmarkProvider_asppoolco.Unit;
|
|
17871
18794
|
atlasoceanvoyages: BowmarkProvider_atlasoceanvoyages.Unit;
|
|
17872
18795
|
atlasseniorliving: BowmarkProvider_atlasseniorliving.Unit;
|
|
17873
18796
|
avis: BowmarkProvider_avis.Unit;
|
|
@@ -17875,6 +18798,7 @@ interface BowmarkProviders {
|
|
|
17875
18798
|
barletta: BowmarkProvider_barletta.Unit;
|
|
17876
18799
|
bhphoto: BowmarkProvider_bhphoto.Unit;
|
|
17877
18800
|
bigrentz: BowmarkProvider_bigrentz.Unit;
|
|
18801
|
+
bing: BowmarkProvider_bing.Unit;
|
|
17878
18802
|
blenderseyewear: BowmarkProvider_blenderseyewear.Unit;
|
|
17879
18803
|
bluehaven: BowmarkProvider_bluehaven.Unit;
|
|
17880
18804
|
bmwusa: BowmarkProvider_bmwusa.Unit;
|
|
@@ -17903,6 +18827,7 @@ interface BowmarkProviders {
|
|
|
17903
18827
|
evolutionofsmooth: BowmarkProvider_evolutionofsmooth.Unit;
|
|
17904
18828
|
extraspace: BowmarkProvider_extraspace.Unit;
|
|
17905
18829
|
firstdibs: BowmarkProvider_firstdibs.Unit;
|
|
18830
|
+
fivestarbathsolutions: BowmarkProvider_fivestarbathsolutions.Unit;
|
|
17906
18831
|
flightradar24: BowmarkProvider_flightradar24.Unit;
|
|
17907
18832
|
ford: BowmarkProvider_ford.Unit;
|
|
17908
18833
|
fourseasonsyachts: BowmarkProvider_fourseasonsyachts.Unit;
|
|
@@ -17923,6 +18848,7 @@ interface BowmarkProviders {
|
|
|
17923
18848
|
hellotend: BowmarkProvider_hellotend.Unit;
|
|
17924
18849
|
hilton: BowmarkProvider_hilton.Unit;
|
|
17925
18850
|
hobie: BowmarkProvider_hobie.Unit;
|
|
18851
|
+
holidaybuilders: BowmarkProvider_holidaybuilders.Unit;
|
|
17926
18852
|
hunter: BowmarkProvider_hunter.Unit;
|
|
17927
18853
|
ibuypower: BowmarkProvider_ibuypower.Unit;
|
|
17928
18854
|
insurify: BowmarkProvider_insurify.Unit;
|
|
@@ -17936,6 +18862,7 @@ interface BowmarkProviders {
|
|
|
17936
18862
|
kingsdown: BowmarkProvider_kingsdown.Unit;
|
|
17937
18863
|
kitchentuneup: BowmarkProvider_kitchentuneup.Unit;
|
|
17938
18864
|
kompan: BowmarkProvider_kompan.Unit;
|
|
18865
|
+
kuiu: BowmarkProvider_kuiu.Unit;
|
|
17939
18866
|
labcorp: BowmarkProvider_labcorp.Unit;
|
|
17940
18867
|
linkedin: BowmarkProvider_linkedin.Unit;
|
|
17941
18868
|
liquiddeath: BowmarkProvider_liquiddeath.Unit;
|
|
@@ -17948,6 +18875,7 @@ interface BowmarkProviders {
|
|
|
17948
18875
|
mailchimp: BowmarkProvider_mailchimp.Unit;
|
|
17949
18876
|
marriott: BowmarkProvider_marriott.Unit;
|
|
17950
18877
|
mcdonalds: BowmarkProvider_mcdonalds.Unit;
|
|
18878
|
+
medicalguardian: BowmarkProvider_medicalguardian.Unit;
|
|
17951
18879
|
medicare: BowmarkProvider_medicare.Unit;
|
|
17952
18880
|
microcenter: BowmarkProvider_microcenter.Unit;
|
|
17953
18881
|
minted: BowmarkProvider_minted.Unit;
|
|
@@ -17968,9 +18896,12 @@ interface BowmarkProviders {
|
|
|
17968
18896
|
progressive: BowmarkProvider_progressive.Unit;
|
|
17969
18897
|
prose: BowmarkProvider_prose.Unit;
|
|
17970
18898
|
reddit: BowmarkProvider_reddit.Unit;
|
|
18899
|
+
reliancepartners: BowmarkProvider_reliancepartners.Unit;
|
|
18900
|
+
revisionskincare: BowmarkProvider_revisionskincare.Unit;
|
|
17971
18901
|
rishitea: BowmarkProvider_rishitea.Unit;
|
|
17972
18902
|
ritani: BowmarkProvider_ritani.Unit;
|
|
17973
18903
|
roofmaxx: BowmarkProvider_roofmaxx.Unit;
|
|
18904
|
+
saatva: BowmarkProvider_saatva.Unit;
|
|
17974
18905
|
saltandstone: BowmarkProvider_saltandstone.Unit;
|
|
17975
18906
|
samsclub: BowmarkProvider_samsclub.Unit;
|
|
17976
18907
|
seakeeper: BowmarkProvider_seakeeper.Unit;
|
|
@@ -17978,6 +18909,7 @@ interface BowmarkProviders {
|
|
|
17978
18909
|
seegarsfence: BowmarkProvider_seegarsfence.Unit;
|
|
17979
18910
|
selectblinds: BowmarkProvider_selectblinds.Unit;
|
|
17980
18911
|
semihandmade: BowmarkProvider_semihandmade.Unit;
|
|
18912
|
+
smartsign: BowmarkProvider_smartsign.Unit;
|
|
17981
18913
|
soundcloud: BowmarkProvider_soundcloud.Unit;
|
|
17982
18914
|
statefarm: BowmarkProvider_statefarm.Unit;
|
|
17983
18915
|
stickergiant: BowmarkProvider_stickergiant.Unit;
|
|
@@ -17986,6 +18918,7 @@ interface BowmarkProviders {
|
|
|
17986
18918
|
target: BowmarkProvider_target.Unit;
|
|
17987
18919
|
tatcha: BowmarkProvider_tatcha.Unit;
|
|
17988
18920
|
teladoc: BowmarkProvider_teladoc.Unit;
|
|
18921
|
+
teneohg: BowmarkProvider_teneohg.Unit;
|
|
17989
18922
|
therabody: BowmarkProvider_therabody.Unit;
|
|
17990
18923
|
thezebra: BowmarkProvider_thezebra.Unit;
|
|
17991
18924
|
tilsonhomes: BowmarkProvider_tilsonhomes.Unit;
|
|
@@ -17999,11 +18932,14 @@ interface BowmarkProviders {
|
|
|
17999
18932
|
villagerealtyobx: BowmarkProvider_villagerealtyobx.Unit;
|
|
18000
18933
|
visible: BowmarkProvider_visible.Unit;
|
|
18001
18934
|
voluspa: BowmarkProvider_voluspa.Unit;
|
|
18935
|
+
walkerhughes: BowmarkProvider_walkerhughes.Unit;
|
|
18002
18936
|
walmart: BowmarkProvider_walmart.Unit;
|
|
18003
18937
|
waterfurnace: BowmarkProvider_waterfurnace.Unit;
|
|
18004
18938
|
wellfound: BowmarkProvider_wellfound.Unit;
|
|
18005
18939
|
xpresswellnessurgentcare: BowmarkProvider_xpresswellnessurgentcare.Unit;
|
|
18940
|
+
yorkwallcoverings: BowmarkProvider_yorkwallcoverings.Unit;
|
|
18006
18941
|
yourarborhome: BowmarkProvider_yourarborhome.Unit;
|
|
18942
|
+
zennioptical: BowmarkProvider_zennioptical.Unit;
|
|
18007
18943
|
"000de82": BowmarkFamily_shopify_store.Unit;
|
|
18008
18944
|
"001r3iv0": BowmarkFamily_shopify_store.Unit;
|
|
18009
18945
|
"00246d8e": BowmarkFamily_shopify_store.Unit;
|
|
@@ -69735,6 +70671,7 @@ interface BowmarkLibrary {
|
|
|
69735
70671
|
music: BowmarkCapability_music.Unit;
|
|
69736
70672
|
pcparts: BowmarkCapability_pcparts.Unit;
|
|
69737
70673
|
read: BowmarkCapability_read.Unit;
|
|
70674
|
+
search: BowmarkCapability_search.Unit;
|
|
69738
70675
|
sheds: BowmarkCapability_sheds.Unit;
|
|
69739
70676
|
providers: BowmarkProviders;
|
|
69740
70677
|
}
|