@quicknode/sdk 3.1.0-alpha.14 → 3.1.0-alpha.17

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 CHANGED
@@ -15,10 +15,10 @@ Rust SDK with Python, Node.js, and Ruby bindings.
15
15
  - [Testing](#testing)
16
16
  - [Examples](#examples)
17
17
  - [Releasing](#releasing)
18
- - [Rust crate only (crates.io)](#rust-crate-only-cratesio)
19
- - [All bindings together (Python / Node / Ruby)](#all-bindings-together-python--node--ruby)
20
- - [npm publish (`@quicknode/sdk`)](#npm-publish-quicknodesdk)
21
- - [PyPI publish (`quicknode-sdk`)](#pypi-publish-quicknode-sdk)
18
+ - [Two-phase flow](#two-phase-flow)
19
+ - [Building blocks](#building-blocks)
20
+ - [Version conventions](#version-conventions)
21
+ - [First-time setup](#first-time-setup)
22
22
  - [License](#license)
23
23
 
24
24
  ## Per-language docs
@@ -76,7 +76,7 @@ cargo check
76
76
  cargo test -p quicknode-sdk
77
77
 
78
78
  # Python (from project root)
79
- just python-setup-env
79
+ just python-setup
80
80
  just python-build
81
81
 
82
82
  # Node.js (from npm/)
@@ -120,126 +120,76 @@ QN_SDK__API_KEY=replaceme ruby ruby/examples/streams.rb
120
120
 
121
121
  ### Releasing
122
122
 
123
- The Rust crate (`quicknode-sdk` on crates.io) versions independently from the Python, Node, and Ruby bindings. Its version lives in `crates/core/Cargo.toml`; the bindings share the workspace version in the root `Cargo.toml`.
123
+ All four packages (Rust crate, Python wheels, Node `.node` module, Ruby gem) ship together from a single project version. The release flow is split into two `just` commands:
124
124
 
125
- #### Rust crate only (crates.io)
125
+ - **`just release-prepare <version>`** — bump versions, push, tag, build all Linux + macOS artifacts, attach them to a GitHub release. **No registry publish yet.**
126
+ - **`just release-publish <version>`** — push to crates.io and trigger the PyPI / npm / RubyGems publish workflows.
126
127
 
127
- ```bash
128
- # 1. Bump the version in crates/core/Cargo.toml (e.g. 0.1.0 → 0.1.0-alpha.5)
129
- # Pre-release identifiers use SemVer 2.0 syntax: MAJOR.MINOR.PATCH-<id>.<N>
130
- # Examples: 0.1.0-alpha.4, 0.2.0-beta.1, 0.2.0-rc.1
131
-
132
- # 2. Commit and push
133
- git commit -am "chore: release quicknode-sdk 0.1.0-alpha.5"
134
- git push
135
-
136
- # 3. Validate the tarball (no upload)
137
- cargo publish -p quicknode-sdk --dry-run
138
-
139
- # 4. Publish (requires `cargo login` with a crates.io token)
140
- cargo publish -p quicknode-sdk
141
- ```
142
-
143
- The first publish claims the `quicknode-sdk` name permanently. Published versions are immutable — you cannot overwrite or delete them (only `cargo yank`, which hides but doesn't remove).
144
-
145
- #### All bindings together (Python / Node / Ruby)
146
-
147
- macOS (Apple Silicon) artifacts are built locally rather than on GitHub Actions to avoid the ~10× runner cost. Linux artifacts are built by CI when a GitHub release is published.
148
-
149
- 1. **Bump versions and commit:**
150
- ```bash
151
- just release 0.2.0
152
- git push
153
- ```
154
-
155
- 2. **Create the GitHub release** via the GitHub UI:
156
- - **Releases → Draft a new release**.
157
- - **Choose a tag** → type `v0.2.0` → **Create new tag on publish**.
158
- - Target branch: `main`.
159
- - Fill in title and notes (or click **Generate release notes**).
160
- - Click **Publish release**.
161
-
162
- This creates + pushes the tag and triggers `.github/workflows/release.yml`, which builds Linux artifacts and attaches them to the release.
163
-
164
- 3. **Build macOS arm64 artifacts locally and append them to the release:**
165
- ```bash
166
- just macos-build-and-publish 0.2.0
167
- ```
168
-
169
- Step 3 requires the [`gh` CLI](https://cli.github.com/) authenticated to the repo. Intel macOS (`x86_64-apple-darwin`) is not shipped — users on Intel Macs install from source.
170
-
171
- `just release` does **not** bump the Rust crate version (that's managed separately in `crates/core/Cargo.toml`). If you want the Rust crate to move in lockstep with a binding release, bump it manually in the same commit.
172
-
173
- #### npm publish (`@quicknode/sdk`)
174
-
175
- The Node package is published to npm as `@quicknode/sdk`. During the 3.x pre-release period, publishes use the `next` dist-tag so `npm install @quicknode/sdk` continues to resolve to the legacy 2.x release while `npm install @quicknode/sdk@next` pulls the rewrite.
176
-
177
- The npm publish uses [napi-rs's multi-package layout](https://napi.rs/docs/deep-dive/release): one main package plus per-platform sub-packages (`@quicknode/sdk-linux-x64-gnu`, `@quicknode/sdk-darwin-arm64`, etc.) declared as `optionalDependencies`. Publishing is triggered manually via a GitHub Actions workflow so the macOS binary (built locally) can be uploaded to the GitHub release before publish.
128
+ The pause between the two commands is the natural review point: inspect the GitHub release page and confirm all artifacts are present before anything goes public.
178
129
 
179
- Anyone with permission to run the `Publish npm` workflow in this repo can cut a release.
130
+ Requires the [`gh` CLI](https://cli.github.com/) authenticated to the repo, an Apple Silicon Mac (macOS arm64 artifacts are built locally to avoid the ~10× CI runner cost), and `cargo login` with a crates.io token.
180
131
 
181
- **Note on versions:** the git tag tracks the overall project version (e.g. `v0.1.0-alpha.5`) and is set in `crates/core/Cargo.toml` / the root `Cargo.toml`. The npm package version is set independently in `npm/package.json` (e.g. `3.0.0-alpha.5`) to stay compatible with the pre-existing `@quicknode/sdk` 2.x series on npm. The two versions do not need to match.
132
+ #### Two-phase flow
182
133
 
183
- **Per-release flow:**
184
-
185
- 1. **Bump the npm version** in `npm/package.json` (e.g. `3.0.0-alpha.4` → `3.0.0-alpha.5`), commit, and push to `main`. (Bump the overall project version in `just release <version>` as part of the normal release flow above — this sets the git tag.)
186
-
187
- 2. **Create the GitHub release** via the GitHub UI:
188
- - Go to **Releases → Draft a new release**.
189
- - Click **Choose a tag**, type the new tag (e.g. `v0.1.0-alpha.5`), and select **Create new tag on publish**.
190
- - Target branch: `main`.
191
- - Fill in the title and release notes (or click **Generate release notes**).
192
- - Click **Publish release**.
193
-
194
- Publishing the release creates + pushes the tag, which triggers `.github/workflows/release.yml`. CI builds the Linux `.node` artifacts and attaches them to the release you just created.
195
-
196
- 3. **Wait for `release.yml` to finish.** Confirm the four Linux `index.*.node` artifacts are attached to the release.
197
-
198
- 4. **Build and upload the macOS arm64 binary** locally (Apple Silicon Mac required):
199
- ```bash
200
- just node-build
201
- gh release upload v0.1.0-alpha.5 npm/index.darwin-arm64.node
202
- ```
203
-
204
- 5. **Trigger the publish workflow.** From the GitHub UI: **Actions → Publish npm → Run workflow**, then enter the git tag (`v0.1.0-alpha.5`) and npm dist-tag (`next`). Or via CLI:
205
- ```bash
206
- gh workflow run publish-npm.yml -f tag=v0.1.0-alpha.5 -f npm_tag=next
207
- ```
208
-
209
- 6. **Verify.**
210
- ```bash
211
- npm view @quicknode/sdk dist-tags
212
- # Expected: next: 3.0.0-alpha.5, latest: 2.6.0 (unchanged)
213
- ```
214
-
215
- Users can install the pre-release with `npm install @quicknode/sdk@next`.
216
-
217
- #### PyPI publish (`quicknode-sdk`)
218
-
219
- The Python package is published to PyPI as `quicknode-sdk`. Wheels and the sdist are built by `release.yml` on every GitHub release and attached as artifacts; the `Publish PyPI` workflow downloads them from a release tag and uploads to PyPI via `twine`.
220
-
221
- **Version format:** PyPI uses PEP 440, so pre-releases are written without a hyphen. `0.1.0-alpha.6` → `0.1.0a6` in `pyproject.toml`.
222
-
223
- **Per-release flow:**
134
+ ```bash
135
+ # Phase 1: build a fully-staged GitHub release
136
+ just release-prepare 0.2.0
224
137
 
225
- 1. **Bump the version** in `pyproject.toml` (e.g. `0.1.0a6` → `0.1.0a7`) and run `uv lock` to refresh `uv.lock`. Commit and push.
138
+ # Inspect https://github.com/<org>/<repo>/releases/tag/v0.2.0
139
+ # Confirm: Linux Python wheels, Linux .node files, Linux Ruby gem,
140
+ # macOS arm64 wheels, index.darwin-arm64.node, arm64-darwin .gem.
226
141
 
227
- 2. **Create the GitHub release** as described in the main Releasing section — this triggers `release.yml`, which builds the Linux wheels and sdist and attaches them to the release as `quicknode_sdk-*.whl` and `quicknode_sdk-*.tar.gz`.
142
+ # Phase 2: publish to crates.io + trigger registry publish workflows
143
+ just release-publish 0.2.0
144
+ ```
228
145
 
229
- 3. **Wait for `release.yml` to finish.** Confirm 16 wheels (4 Python versions × 4 Linux targets) and 1 sdist are attached to the release.
146
+ `release-prepare` prompts twice once up front before bumping, and once after the bump (showing the diff) before pushing the tag. `release-publish` prompts once before any registry write. Pass `yes=1` to skip prompts (e.g. for automation): `just release-prepare 0.2.0 yes=1`.
230
147
 
231
- 4. **Trigger the publish workflow.** From the GitHub UI: **Actions → Publish PyPI → Run workflow**, then enter the git tag. Or via CLI:
232
- ```bash
233
- gh workflow run publish-pypi.yml -f tag=v0.1.0-alpha.6
234
- ```
148
+ #### Building blocks
235
149
 
236
- 5. **Verify.**
237
- ```bash
238
- pip install quicknode-sdk==0.1.0a6
239
- python -c "import sdk; print(sdk.QuicknodeSdk)"
240
- ```
150
+ If a phase fails partway, resume with the individual recipes — they are also useful for reruns:
241
151
 
242
- **First publish:** the repo secret `PYPI_API_TOKEN` must be set. Project-scoped tokens only work after the project exists on PyPI, so the first upload needs a user-scoped token; rotate to a project-scoped token after.
152
+ | Recipe | Purpose |
153
+ |---|---|
154
+ | `release-bump <version>` | Bump versions in all manifests, commit + tag locally |
155
+ | `release-push <version>` | `git push` + push tag |
156
+ | `release-create-tag <version>` | `gh release create` (triggers Linux CI build) |
157
+ | `release-wait-ci <version>` | Block until `release.yml` finishes attaching Linux artifacts |
158
+ | `macos-build-and-publish <version>` | Build macOS arm64 wheels / `.node` / `.gem` and `gh release upload` |
159
+ | `release-cargo-publish-check` | `cargo publish -p quicknode-sdk --dry-run` |
160
+ | `release-cargo-publish` | `cargo publish -p quicknode-sdk` |
161
+ | `release-trigger-pypi <version>` | Dispatch `publish-pypi.yml` |
162
+ | `release-trigger-npm <version> [npm_tag]` | Dispatch `publish-npm.yml` (default tag: `next`) |
163
+ | `release-trigger-rubygems <version>` | Dispatch `publish-rubygems.yml` |
164
+ | `release-trigger-all <version> [npm_tag]` | All three trigger recipes in sequence |
165
+
166
+ #### Version conventions
167
+
168
+ A single version argument drives every manifest, with two automatic translations applied by `release-bump`:
169
+
170
+ | Manifest | Format example for `0.1.0-alpha.6` |
171
+ |---|---|
172
+ | `Cargo.toml` (workspace) | `0.1.0-alpha.6` |
173
+ | `crates/core/Cargo.toml` | `0.1.0-alpha.6` |
174
+ | `pyproject.toml` (PEP 440) | `0.1.0a6` |
175
+ | `ruby/quicknode_sdk.gemspec` | `0.1.0-alpha.6` |
176
+ | `npm/package.json` | `3.0.0-alpha.6` (`0.x` → `3.x` because `@quicknode/sdk` 2.x already exists on npm) |
177
+
178
+ Pre-release identifiers use SemVer 2.0 syntax: `MAJOR.MINOR.PATCH-<id>.<N>` — e.g. `0.1.0-alpha.4`, `0.2.0-beta.1`, `0.2.0-rc.1`. The npm pre-release period uses the `next` dist-tag so `npm install @quicknode/sdk` continues to resolve to legacy 2.x while `npm install @quicknode/sdk@next` pulls the rewrite.
179
+
180
+ `release-bump` only accepts versions starting with `0.`. The `0.x → 3.x` mapping (and the recipe's guard) needs to be revisited when the project graduates to `1.0`.
181
+
182
+ #### First-time setup
183
+
184
+ - The first crates.io publish claims the `quicknode-sdk` name permanently. Published versions are immutable (only `cargo yank` is reversible, and it only hides).
185
+ - The first PyPI upload needs a user-scoped `PYPI_API_TOKEN`; rotate to a project-scoped token after.
186
+ - Verify a release reached each registry:
187
+ ```bash
188
+ cargo search quicknode-sdk
189
+ pip install quicknode-sdk==0.1.0a6
190
+ npm view @quicknode/sdk dist-tags
191
+ gem search -e quicknode_sdk
192
+ ```
243
193
 
244
194
  ## License
245
195
 
package/index.d.ts CHANGED
@@ -108,7 +108,7 @@ export interface BulkUpdateEndpointStatusResponse {
108
108
  export interface BulkAddTagRequest {
109
109
  /** Endpoint ids to tag. */
110
110
  ids: Array<string>
111
- /** Label of the tag to apply (created if it doesn't exist). */
111
+ /** Label of the tag to apply (created if it doesn't exist). Maximum 25 characters. */
112
112
  label: string
113
113
  }
114
114
  /** Tag reference returned on bulk tag operations. */
@@ -208,8 +208,12 @@ export interface GetAccountMetricsRequest {
208
208
  export interface EndpointMetric {
209
209
  /** Data points, each as `[timestamp, value]`. */
210
210
  data: Array<Array<number>>
211
- /** Human-readable tag identifying the series. */
212
- tag: string
211
+ /**
212
+ * Tag identifying the series. Single-axis metrics return a one-element
213
+ * vector (e.g. `["total"]`, `["p95"]`); multi-axis metrics return the
214
+ * key/value pair (e.g. `["network", "arbitrum-mainnet"]`).
215
+ */
216
+ tag: Array<string>
213
217
  }
214
218
  /** Response from `get_endpoint_metrics`. */
215
219
  export interface GetEndpointMetricsResponse {
@@ -298,6 +302,37 @@ export interface UpdateRateLimitsRequest {
298
302
  /** Rate limit values to apply. */
299
303
  rateLimits: RateLimitSettings
300
304
  }
305
+ /**
306
+ * A single rate-limit row returned by `get_rate_limits`, identifying the
307
+ * bucket (`rps`/`rpm`/`rpd`), the value enforced, and whether the value comes
308
+ * from the plan default or a user-set override.
309
+ */
310
+ export interface RateLimitEntry {
311
+ /** Which bucket this row applies to: `rps`, `rpm`, or `rpd`. */
312
+ bucket: string
313
+ /** The enforced value for this bucket. */
314
+ rateLimit: number
315
+ /** Where the value comes from: `plan_default` or `user_override`. */
316
+ source: string
317
+ /**
318
+ * Row identifier. Present on `user_override` rows — pass it to
319
+ * `delete_rate_limit_override` to remove the override. May be absent on
320
+ * `plan_default` rows and cannot be deleted there.
321
+ */
322
+ id?: string
323
+ }
324
+ /** Inner data for `get_rate_limits`. */
325
+ export interface GetRateLimitsData {
326
+ /** One row per enforced bucket. */
327
+ rateLimits: Array<RateLimitEntry>
328
+ }
329
+ /** Response from `get_rate_limits`. */
330
+ export interface GetRateLimitsResponse {
331
+ /** Rate-limit rows with their source. */
332
+ data?: GetRateLimitsData
333
+ /** Error message when the request did not succeed. */
334
+ error?: string
335
+ }
301
336
  /** A single security feature's name, status, and optional value. */
302
337
  export interface SecurityOption {
303
338
  /** Name of the security feature (e.g. `tokens`, `jwts`, `ips`). */
@@ -420,6 +455,32 @@ export interface DeleteBoolResponse {
420
455
  /** Error message when the request did not succeed. */
421
456
  error?: string
422
457
  }
458
+ /** HTTP/WSS URL pair for a single network on a multichain endpoint. */
459
+ export interface EndpointUrl {
460
+ /** HTTP RPC URL. */
461
+ httpUrl: string
462
+ /** WebSocket RPC URL, when available. */
463
+ wssUrl?: string
464
+ }
465
+ /**
466
+ * Inner data for `get_endpoint_urls` — the http/wss URLs for the endpoint and,
467
+ * when the endpoint is multichain, a per-network map of additional URLs.
468
+ */
469
+ export interface GetEndpointUrlsData {
470
+ /** HTTP RPC URL. */
471
+ httpUrl: string
472
+ /** WebSocket RPC URL, when available. */
473
+ wssUrl?: string
474
+ /** Per-network URLs for multichain endpoints; `None` for single-chain endpoints. */
475
+ multichainUrls?: Record<string, EndpointUrl>
476
+ }
477
+ /** Response from `get_endpoint_urls`. */
478
+ export interface GetEndpointUrlsResponse {
479
+ /** URLs for the endpoint. */
480
+ data?: GetEndpointUrlsData
481
+ /** Error message when the request did not succeed. */
482
+ error?: string
483
+ }
423
484
  /** Parameters for `get_endpoints`. */
424
485
  export interface GetEndpointsRequest {
425
486
  /** Maximum number of endpoints returned. */
@@ -489,6 +550,8 @@ export interface Endpoint {
489
550
  wssUrl?: string
490
551
  /** Tags applied to the endpoint. */
491
552
  tags: Array<EndpointTag>
553
+ /** Whether the endpoint is configured to serve multiple chains/networks. */
554
+ isMultichain: boolean
492
555
  }
493
556
  /** Tag reference as returned on an endpoint. */
494
557
  export interface EndpointTag {
@@ -533,6 +596,8 @@ export interface SingleEndpoint {
533
596
  rateLimits?: EndpointRateLimits
534
597
  /** Tags applied to the endpoint. */
535
598
  tags: Array<EndpointTag>
599
+ /** Whether the endpoint is configured to serve multiple chains/networks. */
600
+ isMultichain: boolean
536
601
  }
537
602
  /** Rate limits applied to an endpoint. */
538
603
  export interface EndpointRateLimits {
@@ -662,7 +727,7 @@ export interface UpdateEndpointStatusResponse {
662
727
  }
663
728
  /** Parameters for `create_tag` (on a specific endpoint). */
664
729
  export interface CreateTagRequest {
665
- /** Label for the new tag. */
730
+ /** Label for the new tag. Maximum 25 characters. */
666
731
  label?: string
667
732
  }
668
733
  /** Response from `get_endpoint_security`. */
@@ -1244,12 +1309,7 @@ export const enum StreamDestination {
1244
1309
  S3 = 'S3',
1245
1310
  Azure = 'Azure',
1246
1311
  Postgres = 'Postgres',
1247
- Clickhouse = 'Clickhouse',
1248
- Snowflake = 'Snowflake',
1249
- Mysql = 'Mysql',
1250
- Mongo = 'Mongo',
1251
- Kafka = 'Kafka',
1252
- Redis = 'Redis'
1312
+ Kafka = 'Kafka'
1253
1313
  }
1254
1314
  /** Language a stream's filter function is written in. */
1255
1315
  export const enum FilterLanguage {
@@ -1280,16 +1340,16 @@ export const enum StreamStatus {
1280
1340
  export interface WebhookAttributes {
1281
1341
  /** Destination URL that receives batched stream payloads. */
1282
1342
  url: string
1283
- /** Maximum number of retry attempts for a failed delivery. */
1343
+ /** Maximum number of retry attempts for a failed delivery. Must be in the range 1–10. */
1284
1344
  maxRetry: number
1285
1345
  /** Seconds to wait between retry attempts. */
1286
1346
  retryIntervalSec: number
1287
1347
  /** Timeout in seconds for each POST request. */
1288
1348
  postTimeoutSec: number
1289
- /** Optional token included with each request so the receiver can verify authenticity. */
1349
+ /** Optional token included with each request so the receiver can verify authenticity. When supplied, must be at least 32 bytes (256 bits). */
1290
1350
  securityToken?: string
1291
- /** Compression applied to the payload (e.g. `none`, `gzip`). */
1292
- compression: string
1351
+ /** Compression applied to the payload (e.g. `none`, `gzip`). When omitted the server defaults to no compression. */
1352
+ compression?: string
1293
1353
  }
1294
1354
  /** Configuration for delivering stream batches to an S3-compatible object store. */
1295
1355
  export interface S3Attributes {
@@ -1347,109 +1407,13 @@ export interface PostgresAttributes {
1347
1407
  password: string
1348
1408
  /** Destination table for inserted rows. */
1349
1409
  tableName: string
1350
- /** Postgres SSL mode (e.g. `disable`, `require`, `verify-full`). */
1410
+ /** Postgres SSL mode. The Quicknode API accepts only `disable` or `require`. */
1351
1411
  sslmode: string
1352
1412
  /** Maximum number of retry attempts for a failed write. */
1353
1413
  maxRetry: number
1354
1414
  /** Seconds to wait between retry attempts. */
1355
1415
  retryIntervalSec: number
1356
1416
  }
1357
- /** Configuration for delivering stream batches to a MySQL database. */
1358
- export interface MysqlAttributes {
1359
- /** Database host. */
1360
- host: string
1361
- /** Database port. */
1362
- port: number
1363
- /** Database name. */
1364
- database: string
1365
- /** Username used to authenticate. */
1366
- username: string
1367
- /** Password used to authenticate. */
1368
- password: string
1369
- /** Destination table for inserted rows. */
1370
- tableName: string
1371
- /** Maximum number of retry attempts for a failed write. */
1372
- maxRetry: number
1373
- /** Seconds to wait between retry attempts. */
1374
- retryIntervalSec: number
1375
- }
1376
- /** Configuration for delivering stream batches to a MongoDB database. */
1377
- export interface MongoAttributes {
1378
- /** Database host (connection string or hostname). */
1379
- host: string
1380
- /** Database name. */
1381
- database: string
1382
- /** Username used to authenticate. */
1383
- username: string
1384
- /** Password used to authenticate. */
1385
- password: string
1386
- /** Destination collection for inserted documents. */
1387
- collectionName: string
1388
- /** Maximum number of retry attempts for a failed write. */
1389
- maxRetry: number
1390
- /** Seconds to wait between retry attempts. */
1391
- retryIntervalSec: number
1392
- }
1393
- /** Configuration for delivering stream batches to a ClickHouse cluster. */
1394
- export interface ClickhouseAttributes {
1395
- /** Comma-separated list of ClickHouse hosts. */
1396
- hosts: string
1397
- /** Database name. */
1398
- database: string
1399
- /** Username used to authenticate. */
1400
- username: string
1401
- /** Password used to authenticate. */
1402
- password: string
1403
- /** Destination table for inserted rows. */
1404
- tableName: string
1405
- /** Default table engine options applied when a table is created. */
1406
- defaultTableEngineOpts: string
1407
- /** Default index granularity for created tables. */
1408
- defaultGranularity: number
1409
- /** Default compression codec for created tables. */
1410
- defaultCompression: string
1411
- /** Default secondary index type for created tables. */
1412
- defaultIndexType: string
1413
- /** Maximum number of retry attempts for a failed write. */
1414
- maxRetry: number
1415
- /** Seconds to wait between retry attempts. */
1416
- retryIntervalSec: number
1417
- /** Disable datetime precision for older ClickHouse versions that don't support it. */
1418
- disableDatetimePrecision?: boolean
1419
- /** Enable when the target ClickHouse server does not support `RENAME COLUMN`. */
1420
- dontSupportRenameColumn?: boolean
1421
- /** Enable when the target ClickHouse server does not support empty default values. */
1422
- dontSupportEmptyDefaultValue?: boolean
1423
- /** Skip writing version metadata during initialization. */
1424
- skipInitializeWithVersion?: boolean
1425
- }
1426
- /** Configuration for delivering stream batches to a Snowflake data warehouse. */
1427
- export interface SnowflakeAttributes {
1428
- /** Snowflake account identifier. */
1429
- account: string
1430
- /** Snowflake host. */
1431
- host: string
1432
- /** Snowflake port. */
1433
- port: number
1434
- /** Connection protocol (e.g. `https`). */
1435
- protocol: string
1436
- /** Database name. */
1437
- database: string
1438
- /** Schema within the database. */
1439
- schema: string
1440
- /** Warehouse used to run inserts. */
1441
- warehouse: string
1442
- /** Username used to authenticate. */
1443
- username: string
1444
- /** Password used to authenticate. */
1445
- password: string
1446
- /** Maximum number of retry attempts for a failed write. */
1447
- maxRetry: number
1448
- /** Seconds to wait between retry attempts. */
1449
- retryIntervalSec: number
1450
- /** Optional destination table for inserted rows. */
1451
- tableName?: string
1452
- }
1453
1417
  /** Configuration for delivering stream batches to a Kafka topic. */
1454
1418
  export interface KafkaAttributes {
1455
1419
  /** Comma-separated list of Kafka broker addresses (host:port). */
@@ -1462,8 +1426,8 @@ export interface KafkaAttributes {
1462
1426
  batchSize: number
1463
1427
  /** Milliseconds the producer waits to batch additional messages. */
1464
1428
  lingerMs: number
1465
- /** Maximum request size in bytes. */
1466
- maxRequestSize: number
1429
+ /** Maximum size in bytes of a single Kafka message (`max_message_bytes`). */
1430
+ maxMessageBytes: number
1467
1431
  /** Request timeout in seconds. */
1468
1432
  timeoutSec: number
1469
1433
  /** Maximum number of retry attempts for a failed produce. */
@@ -1479,27 +1443,6 @@ export interface KafkaAttributes {
1479
1443
  /** Optional SASL mechanism (e.g. `PLAIN`, `SCRAM-SHA-256`). */
1480
1444
  mechanisms?: string
1481
1445
  }
1482
- /** Configuration for delivering stream batches to a Redis instance. */
1483
- export interface RedisAttributes {
1484
- /** Redis host. */
1485
- host: string
1486
- /** Redis port. */
1487
- port: number
1488
- /** Redis logical database index. */
1489
- database: number
1490
- /** Username used to authenticate. */
1491
- username: string
1492
- /** Password used to authenticate. */
1493
- password: string
1494
- /** Redis key that receives written payloads. */
1495
- keyName: string
1496
- /** Maximum number of retry attempts for a failed write. */
1497
- maxRetry: number
1498
- /** Seconds to wait between retry attempts. */
1499
- retryIntervalSec: number
1500
- /** Whether to connect over TLS. */
1501
- tls?: boolean
1502
- }
1503
1446
  /**
1504
1447
  * Links a stream's filter to an address book so JSON paths resolve against its
1505
1448
  * managed address set.
@@ -1542,8 +1485,8 @@ export interface TestFilterParams {
1542
1485
  dataset: StreamDataset
1543
1486
  /** Specific block number to feed into the filter for the test. */
1544
1487
  block: string
1545
- /** Base64-encoded filter function to evaluate. */
1546
- filterFunction?: string
1488
+ /** Base64-encoded filter function to evaluate. Required by the API. To inspect raw block data with no transformation, supply a base64-encoded identity function such as `function main(d){return d;}`. */
1489
+ filterFunction: string
1547
1490
  /** Language the filter function is written in. */
1548
1491
  filterLanguage?: FilterLanguage
1549
1492
  /** Address book linked to the filter, if any. */
@@ -1721,9 +1664,9 @@ export interface CreateStreamParamsNode {
1721
1664
  startRange: number
1722
1665
  endRange: number
1723
1666
  destinationAttributes: any
1724
- plan: string
1725
- thresholdFetchBuffer: number
1726
- datasetBatchSize?: number
1667
+ plan?: string
1668
+ thresholdFetchBuffer?: number
1669
+ datasetBatchSize: number
1727
1670
  maxBatchSize?: number
1728
1671
  maxBufferRangeSize?: number
1729
1672
  maxBufferProcessingWorkers?: number
@@ -1737,7 +1680,7 @@ export interface CreateStreamParamsNode {
1737
1680
  notificationEmail?: string
1738
1681
  chargeMinCap?: number
1739
1682
  fixBlockReorgs?: number
1740
- elasticBatchEnabled?: boolean
1683
+ elasticBatchEnabled: boolean
1741
1684
  extraDestinations?: Array<any>
1742
1685
  }
1743
1686
  export interface UpdateStreamParamsNode {
@@ -2004,11 +1947,32 @@ export declare class AdminApiClient {
2004
1947
  /** Removes a method rate limit from an endpoint by method rate limit id. */
2005
1948
  deleteMethodRateLimit(id: string, methodRateLimitId: string): Promise<void>
2006
1949
  /**
2007
- * Updates the overall rate limits on an endpoint. Accepts `rps`
2008
- * (requests per second), `rpm` (requests per minute), and `rpd` (requests
2009
- * per day).
1950
+ * Partial update of the endpoint-level rate-limit overrides. Accepts
1951
+ * `rps` (requests per second), `rpm` (requests per minute), and `rpd`
1952
+ * (requests per day). Only buckets included are modified — omitted
1953
+ * buckets are left unchanged. Values are capped by the account's plan
1954
+ * tier.
2010
1955
  */
2011
1956
  updateRateLimits(id: string, params: UpdateRateLimitsRequest): Promise<void>
1957
+ /**
1958
+ * Returns the endpoint-level rate limits currently enforced, with each
1959
+ * row identifying its bucket (`rps`/`rpm`/`rpd`), value, and source
1960
+ * (`plan_default` or `user_override`). User-set overrides expose an
1961
+ * `overrideId` that can be passed to `deleteRateLimitOverride`.
1962
+ */
1963
+ getRateLimits(id: string): Promise<GetRateLimitsResponse>
1964
+ /**
1965
+ * Deletes a user-set rate-limit override by its UUID. Plan defaults are
1966
+ * not deletable.
1967
+ */
1968
+ deleteRateLimitOverride(id: string, overrideId: string): Promise<void>
1969
+ /**
1970
+ * Returns the HTTP and WebSocket URLs for the endpoint without fetching
1971
+ * the full endpoint record. For multichain endpoints, `multichainUrls`
1972
+ * is a per-network mapping of additional URLs; for single-chain endpoints
1973
+ * it is `null`.
1974
+ */
1975
+ getEndpointUrls(id: string): Promise<GetEndpointUrlsResponse>
2012
1976
  /**
2013
1977
  * Returns time-series metrics for a specific endpoint. Requires a
2014
1978
  * `period` (`hour`, `day`, `week`, or `month`) and a metric type such as
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quicknode/sdk",
3
- "version": "3.1.0-alpha.14",
3
+ "version": "3.1.0-alpha.17",
4
4
  "description": "Quicknode SDK",
5
5
  "main": "sdk.js",
6
6
  "types": "sdk.d.ts",
@@ -46,10 +46,10 @@
46
46
  },
47
47
  "license": "MIT",
48
48
  "optionalDependencies": {
49
- "@quicknode/sdk-linux-x64-gnu": "3.1.0-alpha.14",
50
- "@quicknode/sdk-linux-arm64-gnu": "3.1.0-alpha.14",
51
- "@quicknode/sdk-linux-x64-musl": "3.1.0-alpha.14",
52
- "@quicknode/sdk-linux-arm64-musl": "3.1.0-alpha.14",
53
- "@quicknode/sdk-darwin-arm64": "3.1.0-alpha.14"
49
+ "@quicknode/sdk-linux-x64-gnu": "3.1.0-alpha.17",
50
+ "@quicknode/sdk-linux-arm64-gnu": "3.1.0-alpha.17",
51
+ "@quicknode/sdk-linux-x64-musl": "3.1.0-alpha.17",
52
+ "@quicknode/sdk-linux-arm64-musl": "3.1.0-alpha.17",
53
+ "@quicknode/sdk-darwin-arm64": "3.1.0-alpha.17"
54
54
  }
55
55
  }
package/sdk.d.ts CHANGED
@@ -6,12 +6,7 @@ import {
6
6
  S3Attributes,
7
7
  AzureAttributes,
8
8
  PostgresAttributes,
9
- MysqlAttributes,
10
- MongoAttributes,
11
- ClickhouseAttributes,
12
- SnowflakeAttributes,
13
9
  KafkaAttributes,
14
- RedisAttributes,
15
10
  WebhookTemplateId,
16
11
  EvmWalletFilterTemplate,
17
12
  EvmContractEventsTemplate,
@@ -32,12 +27,7 @@ export type StreamDestinationAttributesInput =
32
27
  | { destination: "s3"; attributes: S3Attributes }
33
28
  | { destination: "azure"; attributes: AzureAttributes }
34
29
  | { destination: "postgres"; attributes: PostgresAttributes }
35
- | { destination: "mysql"; attributes: MysqlAttributes }
36
- | { destination: "mongo"; attributes: MongoAttributes }
37
- | { destination: "clickhouse"; attributes: ClickhouseAttributes }
38
- | { destination: "snowflake"; attributes: SnowflakeAttributes }
39
- | { destination: "kafka"; attributes: KafkaAttributes }
40
- | { destination: "redis"; attributes: RedisAttributes };
30
+ | { destination: "kafka"; attributes: KafkaAttributes };
41
31
 
42
32
  // Stream destination attributes (response). Mirrors the input shape so a
43
33
  // response can be round-tripped back into an update call without renaming.
@@ -117,12 +107,7 @@ export type {
117
107
  S3Attributes,
118
108
  AzureAttributes,
119
109
  PostgresAttributes,
120
- MysqlAttributes,
121
- MongoAttributes,
122
- ClickhouseAttributes,
123
- SnowflakeAttributes,
124
110
  KafkaAttributes,
125
- RedisAttributes,
126
111
  AddressBookConfig,
127
112
  StreamsApiClient,
128
113
  // billing
@@ -153,6 +138,13 @@ export type {
153
138
  UpdateMethodRateLimitResponse,
154
139
  RateLimitSettings,
155
140
  UpdateRateLimitsRequest,
141
+ RateLimitEntry,
142
+ GetRateLimitsData,
143
+ GetRateLimitsResponse,
144
+ // endpoint URLs
145
+ EndpointUrl,
146
+ GetEndpointUrlsData,
147
+ GetEndpointUrlsResponse,
156
148
  // security options
157
149
  SecurityOption,
158
150
  GetSecurityOptionsResponse,