@v3finance/monitoring-sdk 0.0.0-stage → 0.1.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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +247 -2
- package/dist/cjs/client.d.ts +65 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +89 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/core/errors.d.ts +64 -0
- package/dist/cjs/core/errors.d.ts.map +1 -0
- package/dist/cjs/core/errors.js +95 -0
- package/dist/cjs/core/errors.js.map +1 -0
- package/dist/cjs/core/http.d.ts +62 -0
- package/dist/cjs/core/http.d.ts.map +1 -0
- package/dist/cjs/core/http.js +151 -0
- package/dist/cjs/core/http.js.map +1 -0
- package/dist/cjs/core/pagination.d.ts +13 -0
- package/dist/cjs/core/pagination.d.ts.map +1 -0
- package/dist/cjs/core/pagination.js +15 -0
- package/dist/cjs/core/pagination.js.map +1 -0
- package/dist/cjs/generated/types.d.ts +324 -0
- package/dist/cjs/generated/types.d.ts.map +1 -0
- package/dist/cjs/generated/types.js +5 -0
- package/dist/cjs/generated/types.js.map +1 -0
- package/dist/cjs/index.d.ts +23 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +50 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/resources/account.d.ts +61 -0
- package/dist/cjs/resources/account.d.ts.map +1 -0
- package/dist/cjs/resources/account.js +75 -0
- package/dist/cjs/resources/account.js.map +1 -0
- package/dist/cjs/resources/addresses.d.ts +109 -0
- package/dist/cjs/resources/addresses.d.ts.map +1 -0
- package/dist/cjs/resources/addresses.js +137 -0
- package/dist/cjs/resources/addresses.js.map +1 -0
- package/dist/cjs/resources/catalog.d.ts +30 -0
- package/dist/cjs/resources/catalog.d.ts.map +1 -0
- package/dist/cjs/resources/catalog.js +46 -0
- package/dist/cjs/resources/catalog.js.map +1 -0
- package/dist/cjs/resources/clients.d.ts +84 -0
- package/dist/cjs/resources/clients.d.ts.map +1 -0
- package/dist/cjs/resources/clients.js +102 -0
- package/dist/cjs/resources/clients.js.map +1 -0
- package/dist/cjs/resources/deliveries.d.ts +50 -0
- package/dist/cjs/resources/deliveries.d.ts.map +1 -0
- package/dist/cjs/resources/deliveries.js +43 -0
- package/dist/cjs/resources/deliveries.js.map +1 -0
- package/dist/cjs/resources/transactions.d.ts +28 -0
- package/dist/cjs/resources/transactions.d.ts.map +1 -0
- package/dist/cjs/resources/transactions.js +35 -0
- package/dist/cjs/resources/transactions.js.map +1 -0
- package/dist/cjs/units.d.ts +29 -0
- package/dist/cjs/units.d.ts.map +1 -0
- package/dist/cjs/units.js +62 -0
- package/dist/cjs/units.js.map +1 -0
- package/dist/cjs/version.d.ts +5 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +8 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/cjs/webhooks.d.ts +77 -0
- package/dist/cjs/webhooks.d.ts.map +1 -0
- package/dist/cjs/webhooks.js +128 -0
- package/dist/cjs/webhooks.js.map +1 -0
- package/dist/esm/client.d.ts +65 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +85 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/core/errors.d.ts +64 -0
- package/dist/esm/core/errors.d.ts.map +1 -0
- package/dist/esm/core/errors.js +86 -0
- package/dist/esm/core/errors.js.map +1 -0
- package/dist/esm/core/http.d.ts +62 -0
- package/dist/esm/core/http.d.ts.map +1 -0
- package/dist/esm/core/http.js +146 -0
- package/dist/esm/core/http.js.map +1 -0
- package/dist/esm/core/pagination.d.ts +13 -0
- package/dist/esm/core/pagination.d.ts.map +1 -0
- package/dist/esm/core/pagination.js +12 -0
- package/dist/esm/core/pagination.js.map +1 -0
- package/dist/esm/generated/types.d.ts +324 -0
- package/dist/esm/generated/types.d.ts.map +1 -0
- package/dist/esm/generated/types.js +4 -0
- package/dist/esm/generated/types.js.map +1 -0
- package/dist/esm/index.d.ts +23 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +20 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/resources/account.d.ts +61 -0
- package/dist/esm/resources/account.d.ts.map +1 -0
- package/dist/esm/resources/account.js +69 -0
- package/dist/esm/resources/account.js.map +1 -0
- package/dist/esm/resources/addresses.d.ts +109 -0
- package/dist/esm/resources/addresses.d.ts.map +1 -0
- package/dist/esm/resources/addresses.js +133 -0
- package/dist/esm/resources/addresses.js.map +1 -0
- package/dist/esm/resources/catalog.d.ts +30 -0
- package/dist/esm/resources/catalog.d.ts.map +1 -0
- package/dist/esm/resources/catalog.js +41 -0
- package/dist/esm/resources/catalog.js.map +1 -0
- package/dist/esm/resources/clients.d.ts +84 -0
- package/dist/esm/resources/clients.d.ts.map +1 -0
- package/dist/esm/resources/clients.js +97 -0
- package/dist/esm/resources/clients.js.map +1 -0
- package/dist/esm/resources/deliveries.d.ts +50 -0
- package/dist/esm/resources/deliveries.d.ts.map +1 -0
- package/dist/esm/resources/deliveries.js +39 -0
- package/dist/esm/resources/deliveries.js.map +1 -0
- package/dist/esm/resources/transactions.d.ts +28 -0
- package/dist/esm/resources/transactions.d.ts.map +1 -0
- package/dist/esm/resources/transactions.js +31 -0
- package/dist/esm/resources/transactions.js.map +1 -0
- package/dist/esm/units.d.ts +29 -0
- package/dist/esm/units.d.ts.map +1 -0
- package/dist/esm/units.js +58 -0
- package/dist/esm/units.js.map +1 -0
- package/dist/esm/version.d.ts +5 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +5 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/esm/webhooks.d.ts +77 -0
- package/dist/esm/webhooks.d.ts.map +1 -0
- package/dist/esm/webhooks.js +120 -0
- package/dist/esm/webhooks.js.map +1 -0
- package/package.json +66 -4
- package/src/client.ts +94 -0
- package/src/core/errors.ts +99 -0
- package/src/core/http.ts +193 -0
- package/src/core/pagination.ts +21 -0
- package/src/generated/types.ts +355 -0
- package/src/index.ts +60 -0
- package/src/resources/account.ts +87 -0
- package/src/resources/addresses.ts +190 -0
- package/src/resources/catalog.ts +47 -0
- package/src/resources/clients.ts +135 -0
- package/src/resources/deliveries.ts +69 -0
- package/src/resources/transactions.ts +33 -0
- package/src/units.ts +56 -0
- package/src/version.ts +5 -0
- package/src/webhooks.ts +133 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/resources/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE/F,6FAA6F;AAC7F,qBAAa,oBAAoB;;IAE/B,YAAY,IAAI,EAAE,UAAU,EAE3B;IAEK,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGtD;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,GAAE,eAAoB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAEjF;IAEK,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;CACF;AAED,0BAA0B;AAC1B,qBAAa,eAAe;;IAE1B,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IAEnC,YAAY,IAAI,EAAE,UAAU,EAG3B;IAED;;;;;;;;;OASG;IACH,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE9C;CACF;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC3B,qHAAqH;IACrH,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACX;AAED,qEAAqE;AACrE,qBAAa,YAAY;;IAEvB,YAAY,IAAI,EAAE,UAAU,EAE3B;IAED,yEAAyE;IACzE,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAElG;IAED,iDAAiD;IAC3C,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;IAED;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAErJ;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { seg } from '../core/http.js';
|
|
2
|
+
/** Личные ключи: действуют от вашего имени с вашими правами — всё, что вы можете в панели */
|
|
3
|
+
export class PersonalKeysResource {
|
|
4
|
+
#http;
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.#http = http;
|
|
7
|
+
}
|
|
8
|
+
async list(options) {
|
|
9
|
+
const r = await this.#http.request({ method: 'GET', path: '/v1/me/keys', idempotent: true, options });
|
|
10
|
+
return r.items;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Выпускает личный ключ. Работает только с клиентом, вошедшим по паролю ({@link MonitoringClient.signIn}):
|
|
14
|
+
* ключ не может выпустить себе замену. Полный ключ — в `key`, показывается один раз.
|
|
15
|
+
*/
|
|
16
|
+
create(params = {}, options) {
|
|
17
|
+
return this.#http.request({ method: 'POST', path: '/v1/me/keys', body: params, idempotent: false, options });
|
|
18
|
+
}
|
|
19
|
+
async revoke(keyId, options) {
|
|
20
|
+
await this.#http.request({ method: 'DELETE', path: `/v1/me/keys/${seg(keyId)}`, idempotent: true, options });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Кто вы и ваши ключи */
|
|
24
|
+
export class AccountResource {
|
|
25
|
+
#http;
|
|
26
|
+
/** Личные ключи */
|
|
27
|
+
keys;
|
|
28
|
+
constructor(http) {
|
|
29
|
+
this.#http = http;
|
|
30
|
+
this.keys = new PersonalKeysResource(http);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Кто сделал запрос: способ входа, пользователь и участие в клиентах с ролями. Для ключа клиента —
|
|
34
|
+
* `actor.kind === 'client-key'` и `actor.clientId`.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* const { actor } = await monitoring.account.me()
|
|
39
|
+
* const clientId = actor.clientId // для ключа клиента
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
me(options) {
|
|
43
|
+
return this.#http.request({ method: 'GET', path: '/v1/me', idempotent: true, options });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Сессия: выход и смена пароля. Нужен клиент, вошедший по паролю */
|
|
47
|
+
export class AuthResource {
|
|
48
|
+
#http;
|
|
49
|
+
constructor(http) {
|
|
50
|
+
this.#http = http;
|
|
51
|
+
}
|
|
52
|
+
/** Текущая сессия и пользователь; `null` — сессии нет или она истекла */
|
|
53
|
+
session(options) {
|
|
54
|
+
return this.#http.request({ method: 'GET', path: '/api/auth/get-session', idempotent: true, options });
|
|
55
|
+
}
|
|
56
|
+
/** Завершает сессию; токен перестаёт работать */
|
|
57
|
+
async signOut(options) {
|
|
58
|
+
await this.#http.request({ method: 'POST', path: '/api/auth/sign-out', body: {}, idempotent: true, options });
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Меняет пароль. Ключом пароль не сменить — только в сессии.
|
|
62
|
+
*
|
|
63
|
+
* @param params.revokeOtherSessions - завершить остальные сессии
|
|
64
|
+
*/
|
|
65
|
+
async changePassword(params, options) {
|
|
66
|
+
await this.#http.request({ method: 'POST', path: '/api/auth/change-password', body: params, idempotent: false, options });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/resources/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwC,MAAM,iBAAiB,CAAA;AAG3E,6FAA6F;AAC7F,MAAM,OAAO,oBAAoB;IACtB,KAAK,CAAY;IAC1B,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC1H,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,GAAoB,EAAE,EAAE,OAAwB;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9G,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAAwB;QAClD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9G,CAAC;CACF;AAED,0BAA0B;AAC1B,MAAM,OAAO,eAAe;IACjB,KAAK,CAAY;IAC1B,mBAAmB;IACV,IAAI,CAAsB;IAEnC,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,EAAE,CAAC,OAAwB;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IACzF,CAAC;CACF;AASD,qEAAqE;AACrE,MAAM,OAAO,YAAY;IACd,KAAK,CAAY;IAC1B,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,OAAwB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/G,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAAuF,EAAE,OAAwB;QACpI,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAC3H,CAAC;CACF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type HttpClient, type RequestOptions } from '../core/http.js';
|
|
2
|
+
import { type Page } from '../core/pagination.js';
|
|
3
|
+
import type { Address, AddressInput, AssetSelection, Direction, UpdateAddressesRequest } from '../generated/types.js';
|
|
4
|
+
/** Столько адресов API принимает за один запрос; больше SDK разбивает на пачки сам */
|
|
5
|
+
export declare const ADDRESS_BATCH_SIZE = 1000;
|
|
6
|
+
/**
|
|
7
|
+
* Подписка по умолчанию для всех адресов запроса — действует на элементы, где своей нет.
|
|
8
|
+
* Без неё адрес получает все активы сети в обе стороны.
|
|
9
|
+
*/
|
|
10
|
+
export interface AddressDefaults {
|
|
11
|
+
/** Символы (`USDT`) или адреса контрактов; `null` — все активы сети, включая добавленные позже */
|
|
12
|
+
assets?: AssetSelection;
|
|
13
|
+
/** `in` — только входящие, `out` — только исходящие, `both` — любые */
|
|
14
|
+
direction?: Direction;
|
|
15
|
+
}
|
|
16
|
+
/** Адрес в сети — для снятия с мониторинга */
|
|
17
|
+
export interface AddressRef {
|
|
18
|
+
/** Сеть: slug (`tron`, `ethereum`) или CAIP-2 (`eip155:1`) */
|
|
19
|
+
network: string;
|
|
20
|
+
address: string;
|
|
21
|
+
}
|
|
22
|
+
/** Новая подписка одного адреса; что не передано — не меняется */
|
|
23
|
+
export type AddressSubscriptionUpdate = UpdateAddressesRequest['addresses'][number];
|
|
24
|
+
export interface AddAddressesResult {
|
|
25
|
+
/** Добавлено новых адресов */
|
|
26
|
+
added: number;
|
|
27
|
+
/** Уже отслеживались — их подписка не менялась */
|
|
28
|
+
alreadyWatched: number;
|
|
29
|
+
}
|
|
30
|
+
export interface UpdateAddressesResult {
|
|
31
|
+
/** Найдено и изменено */
|
|
32
|
+
updated: number;
|
|
33
|
+
/** Не на мониторинге у этого клиента */
|
|
34
|
+
notWatched: number;
|
|
35
|
+
}
|
|
36
|
+
export interface RemoveAddressesResult {
|
|
37
|
+
/** Снято с мониторинга */
|
|
38
|
+
removed: number;
|
|
39
|
+
/** Не отслеживались */
|
|
40
|
+
notWatched: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ListAddressesParams {
|
|
43
|
+
/** Только эта сеть */
|
|
44
|
+
network?: string;
|
|
45
|
+
/** Размер страницы, до 5000; по умолчанию 500 */
|
|
46
|
+
limit?: number;
|
|
47
|
+
/** Курсор: `next` прошлой страницы */
|
|
48
|
+
after?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Адреса клиента на мониторинге и их подписка: какие активы и в каком направлении сообщать.
|
|
52
|
+
*
|
|
53
|
+
* Новый адрес начинает отслеживаться через несколько секунд после добавления.
|
|
54
|
+
*/
|
|
55
|
+
export declare class AddressesResource {
|
|
56
|
+
#private;
|
|
57
|
+
constructor(http: HttpClient);
|
|
58
|
+
/**
|
|
59
|
+
* Страница адресов с подпиской каждого.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const page = await monitoring.addresses.list(clientId, { network: 'tron' })
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
list(clientId: string, params?: ListAddressesParams, options?: RequestOptions): Promise<Page<Address, number>>;
|
|
67
|
+
/**
|
|
68
|
+
* Все адреса клиента — страница за страницей.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* for await (const a of monitoring.addresses.iterate(clientId)) console.log(a.network, a.address, a.direction)
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
iterate(clientId: string, params?: Omit<ListAddressesParams, 'after'>, options?: RequestOptions): AsyncGenerator<Address, void, undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* Ставит адреса на мониторинг. Уже отслеживаемые не меняются (подписку меняет {@link update}).
|
|
78
|
+
*
|
|
79
|
+
* Каждая пачка до {@link ADDRESS_BATCH_SIZE} адресов проверяется целиком: одна ошибка — пачка не записана.
|
|
80
|
+
* Больше 1000 адресов SDK отправит несколькими пачками по порядку; если пачка не прошла, предыдущие уже
|
|
81
|
+
* записаны, а номера в `error.details` указывают на элементы исходного массива. Повтор безопасен.
|
|
82
|
+
*
|
|
83
|
+
* @param defaults - подписка для элементов без своей; по умолчанию — все активы, обе стороны
|
|
84
|
+
* @throws {@link MonitoringApiError} 400 — адрес не той сети, неверный регистр TRON, неизвестный актив…
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* // депозитные адреса: только входящие USDT
|
|
89
|
+
* await monitoring.addresses.add(clientId, [{ network: 'tron', address: 'T…', label: 'user-42' }], {
|
|
90
|
+
* assets: ['USDT'],
|
|
91
|
+
* direction: 'in',
|
|
92
|
+
* })
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
add(clientId: string, addresses: AddressInput[], defaults?: AddressDefaults, options?: RequestOptions): Promise<AddAddressesResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Меняет подписку отслеживаемых адресов: меняется только переданное. Без `assets` активы остаются прежними,
|
|
98
|
+
* `assets: null` — снова все активы сети.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* await monitoring.addresses.update(clientId, [{ network: 'tron', address: 'T…' }], { direction: 'both' })
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
update(clientId: string, addresses: AddressSubscriptionUpdate[], defaults?: AddressDefaults, options?: RequestOptions): Promise<UpdateAddressesResult>;
|
|
106
|
+
/** Снимает адреса с мониторинга. Больше 1000 — несколькими пачками */
|
|
107
|
+
remove(clientId: string, addresses: AddressRef[], options?: RequestOptions): Promise<RemoveAddressesResult>;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=addresses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.d.ts","sourceRoot":"","sources":["../../../src/resources/addresses.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAErH,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,kGAAkG;IAClG,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,kEAAkE;AAClE,MAAM,MAAM,yBAAyB,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnF,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;;IAE5B,YAAY,IAAI,EAAE,UAAU,EAE3B;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,mBAAwB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAEjH;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAE7I;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,QAAQ,GAAE,eAAoB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc5I;IAED;;;;;;;;OAQG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,EAAE,QAAQ,GAAE,eAAoB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAc/J;IAED,sEAAsE;IAChE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAchH;CAoBF"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { MonitoringApiError } from '../core/errors.js';
|
|
2
|
+
import { seg } from '../core/http.js';
|
|
3
|
+
import { paginate } from '../core/pagination.js';
|
|
4
|
+
/** Столько адресов API принимает за один запрос; больше SDK разбивает на пачки сам */
|
|
5
|
+
export const ADDRESS_BATCH_SIZE = 1000;
|
|
6
|
+
/**
|
|
7
|
+
* Адреса клиента на мониторинге и их подписка: какие активы и в каком направлении сообщать.
|
|
8
|
+
*
|
|
9
|
+
* Новый адрес начинает отслеживаться через несколько секунд после добавления.
|
|
10
|
+
*/
|
|
11
|
+
export class AddressesResource {
|
|
12
|
+
#http;
|
|
13
|
+
constructor(http) {
|
|
14
|
+
this.#http = http;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Страница адресов с подпиской каждого.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const page = await monitoring.addresses.list(clientId, { network: 'tron' })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
list(clientId, params = {}, options) {
|
|
25
|
+
return this.#http.request({ method: 'GET', path: `/v1/clients/${seg(clientId)}/addresses`, query: { ...params }, idempotent: true, options });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Все адреса клиента — страница за страницей.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* for await (const a of monitoring.addresses.iterate(clientId)) console.log(a.network, a.address, a.direction)
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
iterate(clientId, params = {}, options) {
|
|
36
|
+
return paginate((after) => this.list(clientId, { ...params, after }, options));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ставит адреса на мониторинг. Уже отслеживаемые не меняются (подписку меняет {@link update}).
|
|
40
|
+
*
|
|
41
|
+
* Каждая пачка до {@link ADDRESS_BATCH_SIZE} адресов проверяется целиком: одна ошибка — пачка не записана.
|
|
42
|
+
* Больше 1000 адресов SDK отправит несколькими пачками по порядку; если пачка не прошла, предыдущие уже
|
|
43
|
+
* записаны, а номера в `error.details` указывают на элементы исходного массива. Повтор безопасен.
|
|
44
|
+
*
|
|
45
|
+
* @param defaults - подписка для элементов без своей; по умолчанию — все активы, обе стороны
|
|
46
|
+
* @throws {@link MonitoringApiError} 400 — адрес не той сети, неверный регистр TRON, неизвестный актив…
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* // депозитные адреса: только входящие USDT
|
|
51
|
+
* await monitoring.addresses.add(clientId, [{ network: 'tron', address: 'T…', label: 'user-42' }], {
|
|
52
|
+
* assets: ['USDT'],
|
|
53
|
+
* direction: 'in',
|
|
54
|
+
* })
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
async add(clientId, addresses, defaults = {}, options) {
|
|
58
|
+
const total = { added: 0, alreadyWatched: 0 };
|
|
59
|
+
await this.#inBatches(addresses, async (batch) => {
|
|
60
|
+
const r = await this.#http.request({
|
|
61
|
+
method: 'POST',
|
|
62
|
+
path: `/v1/clients/${seg(clientId)}/addresses`,
|
|
63
|
+
body: { ...defaults, addresses: batch },
|
|
64
|
+
idempotent: true,
|
|
65
|
+
options,
|
|
66
|
+
});
|
|
67
|
+
total.added += r.added;
|
|
68
|
+
total.alreadyWatched += r.alreadyWatched;
|
|
69
|
+
});
|
|
70
|
+
return total;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Меняет подписку отслеживаемых адресов: меняется только переданное. Без `assets` активы остаются прежними,
|
|
74
|
+
* `assets: null` — снова все активы сети.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* await monitoring.addresses.update(clientId, [{ network: 'tron', address: 'T…' }], { direction: 'both' })
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
async update(clientId, addresses, defaults = {}, options) {
|
|
82
|
+
const total = { updated: 0, notWatched: 0 };
|
|
83
|
+
await this.#inBatches(addresses, async (batch) => {
|
|
84
|
+
const r = await this.#http.request({
|
|
85
|
+
method: 'POST',
|
|
86
|
+
path: `/v1/clients/${seg(clientId)}/addresses/update`,
|
|
87
|
+
body: { ...defaults, addresses: batch },
|
|
88
|
+
idempotent: true,
|
|
89
|
+
options,
|
|
90
|
+
});
|
|
91
|
+
total.updated += r.updated;
|
|
92
|
+
total.notWatched += r.notWatched;
|
|
93
|
+
});
|
|
94
|
+
return total;
|
|
95
|
+
}
|
|
96
|
+
/** Снимает адреса с мониторинга. Больше 1000 — несколькими пачками */
|
|
97
|
+
async remove(clientId, addresses, options) {
|
|
98
|
+
const total = { removed: 0, notWatched: 0 };
|
|
99
|
+
await this.#inBatches(addresses, async (batch) => {
|
|
100
|
+
const r = await this.#http.request({
|
|
101
|
+
method: 'POST',
|
|
102
|
+
path: `/v1/clients/${seg(clientId)}/addresses/remove`,
|
|
103
|
+
body: { addresses: batch },
|
|
104
|
+
idempotent: true,
|
|
105
|
+
options,
|
|
106
|
+
});
|
|
107
|
+
total.removed += r.removed;
|
|
108
|
+
total.notWatched += r.notWatched;
|
|
109
|
+
});
|
|
110
|
+
return total;
|
|
111
|
+
}
|
|
112
|
+
/** Пачками по порядку; номера ошибок по элементам — в нумерации исходного массива */
|
|
113
|
+
async #inBatches(items, send) {
|
|
114
|
+
for (let offset = 0; offset < items.length; offset += ADDRESS_BATCH_SIZE) {
|
|
115
|
+
try {
|
|
116
|
+
await send(items.slice(offset, offset + ADDRESS_BATCH_SIZE));
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
if (!(e instanceof MonitoringApiError) || offset === 0)
|
|
120
|
+
throw e;
|
|
121
|
+
throw new MonitoringApiError({
|
|
122
|
+
status: e.status,
|
|
123
|
+
code: e.code,
|
|
124
|
+
message: `${e.message.replace(/ \(HTTP \d+, [\w-]+\)$/, '')}; addresses before #${offset} were already applied`,
|
|
125
|
+
details: e.details.map((d) => ({ ...d, index: d.index + offset })),
|
|
126
|
+
requestId: e.requestId,
|
|
127
|
+
body: e.body,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=addresses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/resources/addresses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type HttpClient, type RequestOptions } from '../core/http.js';
|
|
2
|
+
import type { Asset, Network } from '../generated/types.js';
|
|
3
|
+
/** Сети: TRON и EVM-сети с идентификаторами CAIP-2 */
|
|
4
|
+
export declare class NetworksResource {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(http: HttpClient);
|
|
7
|
+
/** Все сети. `enabled: false` — сеть описана, но не читается: вебхуков по ней нет */
|
|
8
|
+
list(options?: RequestOptions): Promise<Network[]>;
|
|
9
|
+
/** Сеть по slug (`tron`) или CAIP-2 (`eip155:1`) */
|
|
10
|
+
get(network: string, options?: RequestOptions): Promise<Network>;
|
|
11
|
+
}
|
|
12
|
+
/** Активы: нативные монеты и токены. Вебхуки приходят о переводах включённых активов не меньше порога `minAmount` */
|
|
13
|
+
export declare class AssetsResource {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(http: HttpClient);
|
|
16
|
+
/**
|
|
17
|
+
* Активы — все или одной сети.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const usdt = (await monitoring.assets.list({ network: 'tron' })).find((a) => a.symbol === 'USDT')
|
|
22
|
+
* formatUnits(webhook.tx.value, usdt!.decimals)
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
list(params?: {
|
|
26
|
+
network?: string;
|
|
27
|
+
}, options?: RequestOptions): Promise<Asset[]>;
|
|
28
|
+
get(assetId: number, options?: RequestOptions): Promise<Asset>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/resources/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE3D,sDAAsD;AACtD,qBAAa,gBAAgB;;IAE3B,YAAY,IAAI,EAAE,UAAU,EAE3B;IAED,qFAAqF;IAC/E,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAGvD;IAED,oDAAoD;IACpD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;CACF;AAED,qHAAqH;AACrH,qBAAa,cAAc;;IAEzB,YAAY,IAAI,EAAE,UAAU,EAE3B;IAED;;;;;;;;OAQG;IACG,IAAI,CAAC,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAGxF;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAE7D;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { seg } from '../core/http.js';
|
|
2
|
+
/** Сети: TRON и EVM-сети с идентификаторами CAIP-2 */
|
|
3
|
+
export class NetworksResource {
|
|
4
|
+
#http;
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.#http = http;
|
|
7
|
+
}
|
|
8
|
+
/** Все сети. `enabled: false` — сеть описана, но не читается: вебхуков по ней нет */
|
|
9
|
+
async list(options) {
|
|
10
|
+
const r = await this.#http.request({ method: 'GET', path: '/v1/networks', idempotent: true, options });
|
|
11
|
+
return r.items;
|
|
12
|
+
}
|
|
13
|
+
/** Сеть по slug (`tron`) или CAIP-2 (`eip155:1`) */
|
|
14
|
+
get(network, options) {
|
|
15
|
+
return this.#http.request({ method: 'GET', path: `/v1/networks/${seg(network)}`, idempotent: true, options });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Активы: нативные монеты и токены. Вебхуки приходят о переводах включённых активов не меньше порога `minAmount` */
|
|
19
|
+
export class AssetsResource {
|
|
20
|
+
#http;
|
|
21
|
+
constructor(http) {
|
|
22
|
+
this.#http = http;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Активы — все или одной сети.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const usdt = (await monitoring.assets.list({ network: 'tron' })).find((a) => a.symbol === 'USDT')
|
|
30
|
+
* formatUnits(webhook.tx.value, usdt!.decimals)
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
async list(params = {}, options) {
|
|
34
|
+
const r = await this.#http.request({ method: 'GET', path: '/v1/assets', query: params, idempotent: true, options });
|
|
35
|
+
return r.items;
|
|
36
|
+
}
|
|
37
|
+
get(assetId, options) {
|
|
38
|
+
return this.#http.request({ method: 'GET', path: `/v1/assets/${seg(assetId)}`, idempotent: true, options });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/resources/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAwC,MAAM,iBAAiB,CAAA;AAG3E,sDAAsD;AACtD,MAAM,OAAO,gBAAgB;IAClB,KAAK,CAAY;IAC1B,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5H,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED,oDAAoD;IACpD,GAAG,CAAC,OAAe,EAAE,OAAwB;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/G,CAAC;CACF;AAED,qHAAqH;AACrH,MAAM,OAAO,cAAc;IAChB,KAAK,CAAY;IAC1B,YAAY,IAAgB;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,CAAC,MAAM,GAAyB,EAAE,EAAE,OAAwB;QACpE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACvI,OAAO,CAAC,CAAC,KAAK,CAAA;IAChB,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,OAAwB;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7G,CAAC;CACF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type HttpClient, type RequestOptions } from '../core/http.js';
|
|
2
|
+
import { type Page } from '../core/pagination.js';
|
|
3
|
+
import type { ApiKey, Client, IssueKeyRequest, IssuedKey, Member, TestWebhookRequest, TestWebhookResult } from '../generated/types.js';
|
|
4
|
+
export interface ListClientsParams {
|
|
5
|
+
/** Размер страницы, до 1000; по умолчанию 100 */
|
|
6
|
+
limit?: number;
|
|
7
|
+
/** Курсор: `next` прошлой страницы */
|
|
8
|
+
after?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Что изменить у клиента; не переданное не меняется */
|
|
11
|
+
export interface UpdateClientParams {
|
|
12
|
+
/** Название; `null` — убрать */
|
|
13
|
+
name?: string | null;
|
|
14
|
+
/** URL вебхука: только https, без логина и пароля */
|
|
15
|
+
webhookUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface RotateSecretParams {
|
|
18
|
+
/** Свой секрет (от 16 символов); без него — сгенерируется */
|
|
19
|
+
secretKey?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface RotateSecretResult {
|
|
22
|
+
/** Новый секрет подписи вебхуков — показывается один раз, сохраните его */
|
|
23
|
+
secretKey: string;
|
|
24
|
+
}
|
|
25
|
+
/** Ключи клиента: доступ к адресам, истории и транзакциям этого клиента. Управляют owner и admin клиента */
|
|
26
|
+
export declare class ClientKeysResource {
|
|
27
|
+
#private;
|
|
28
|
+
constructor(http: HttpClient);
|
|
29
|
+
/** Ключи клиента (без самих ключей — только начало) */
|
|
30
|
+
list(clientId: string, options?: RequestOptions): Promise<ApiKey[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Выпускает ключ клиента. Полный ключ — в `key`, показывается один раз.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const { key } = await monitoring.clients.keys.create(clientId, { name: 'backend', expiresInDays: 365 })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
create(clientId: string, params?: IssueKeyRequest, options?: RequestOptions): Promise<IssuedKey>;
|
|
40
|
+
/** Отзывает ключ — он перестаёт работать сразу */
|
|
41
|
+
revoke(clientId: string, keyId: string, options?: RequestOptions): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Ваш клиент: URL вебхука, секрет подписи, ключи, участники, тестовый вебхук.
|
|
45
|
+
*
|
|
46
|
+
* Права: смотреть — любой участник и ключ клиента; менять — owner и admin клиента по сессии или личному ключу.
|
|
47
|
+
*/
|
|
48
|
+
export declare class ClientsResource {
|
|
49
|
+
#private;
|
|
50
|
+
/** Ключи клиента */
|
|
51
|
+
readonly keys: ClientKeysResource;
|
|
52
|
+
constructor(http: HttpClient);
|
|
53
|
+
/** Страница ваших клиентов: где вы участник; для ключа клиента — он сам */
|
|
54
|
+
list(params?: ListClientsParams, options?: RequestOptions): Promise<Page<Client, string>>;
|
|
55
|
+
/** Все ваши клиенты — страница за страницей */
|
|
56
|
+
iterate(params?: Omit<ListClientsParams, 'after'>, options?: RequestOptions): AsyncGenerator<Client, void, undefined>;
|
|
57
|
+
get(clientId: string, options?: RequestOptions): Promise<Client>;
|
|
58
|
+
/**
|
|
59
|
+
* Меняет название или URL вебхука.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* await monitoring.clients.update(clientId, { webhookUrl: 'https://example.com/webhooks/monitoring' })
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
update(clientId: string, params: UpdateClientParams, options?: RequestOptions): Promise<Client>;
|
|
67
|
+
/** Новый секрет подписи вебхуков. Старый перестаёт действовать сразу — обновите его у себя до следующего вебхука */
|
|
68
|
+
rotateSecret(clientId: string, params?: RotateSecretParams, options?: RequestOptions): Promise<RotateSecretResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Отправляет тестовый вебхук на URL клиента и возвращает результат: доставлен ли, ваш ответ, подпись и точное
|
|
71
|
+
* тело. Тестовый вебхук помечен `"test": true` и заголовком `x-webhook-test: 1` — не зачисляйте его.
|
|
72
|
+
* Не больше 10 в минуту.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const r = await monitoring.clients.sendTestWebhook(clientId, { asset: 'USDT' })
|
|
77
|
+
* if (!r.delivery.ok) console.log('ваш сервер ответил', r.delivery.status ?? r.delivery.error)
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
sendTestWebhook(clientId: string, params?: TestWebhookRequest, options?: RequestOptions): Promise<TestWebhookResult>;
|
|
81
|
+
/** Участники клиента и их роли */
|
|
82
|
+
members(clientId: string, options?: RequestOptions): Promise<Member[]>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=clients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../src/resources/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEtI,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,4GAA4G;AAC5G,qBAAa,kBAAkB;;IAE7B,YAAY,IAAI,EAAE,UAAU,EAE3B;IAED,uDAAuD;IACjD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGxE;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAEnG;IAED,kDAAkD;IAC5C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAe;;IAE1B,oBAAoB;IACpB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;IAEjC,YAAY,IAAI,EAAE,UAAU,EAG3B;IAED,2EAA2E;IAC3E,IAAI,CAAC,MAAM,GAAE,iBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE5F;IAED,+CAA+C;IAC/C,OAAO,CAAC,MAAM,GAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAExH;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/D;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9F;IAED,oHAAoH;IACpH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,kBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAErH;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,kBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAUvH;IAED,kCAAkC;IAC5B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG3E;CACF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { seg } from '../core/http.js';
|
|
2
|
+
import { paginate } from '../core/pagination.js';
|
|
3
|
+
/** Ключи клиента: доступ к адресам, истории и транзакциям этого клиента. Управляют owner и admin клиента */
|
|
4
|
+
export class ClientKeysResource {
|
|
5
|
+
#http;
|
|
6
|
+
constructor(http) {
|
|
7
|
+
this.#http = http;
|
|
8
|
+
}
|
|
9
|
+
/** Ключи клиента (без самих ключей — только начало) */
|
|
10
|
+
async list(clientId, options) {
|
|
11
|
+
const r = await this.#http.request({ method: 'GET', path: `/v1/clients/${seg(clientId)}/keys`, idempotent: true, options });
|
|
12
|
+
return r.items;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Выпускает ключ клиента. Полный ключ — в `key`, показывается один раз.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const { key } = await monitoring.clients.keys.create(clientId, { name: 'backend', expiresInDays: 365 })
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
create(clientId, params = {}, options) {
|
|
23
|
+
return this.#http.request({ method: 'POST', path: `/v1/clients/${seg(clientId)}/keys`, body: params, idempotent: false, options });
|
|
24
|
+
}
|
|
25
|
+
/** Отзывает ключ — он перестаёт работать сразу */
|
|
26
|
+
async revoke(clientId, keyId, options) {
|
|
27
|
+
await this.#http.request({ method: 'DELETE', path: `/v1/clients/${seg(clientId)}/keys/${seg(keyId)}`, idempotent: true, options });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Ваш клиент: URL вебхука, секрет подписи, ключи, участники, тестовый вебхук.
|
|
32
|
+
*
|
|
33
|
+
* Права: смотреть — любой участник и ключ клиента; менять — owner и admin клиента по сессии или личному ключу.
|
|
34
|
+
*/
|
|
35
|
+
export class ClientsResource {
|
|
36
|
+
#http;
|
|
37
|
+
/** Ключи клиента */
|
|
38
|
+
keys;
|
|
39
|
+
constructor(http) {
|
|
40
|
+
this.#http = http;
|
|
41
|
+
this.keys = new ClientKeysResource(http);
|
|
42
|
+
}
|
|
43
|
+
/** Страница ваших клиентов: где вы участник; для ключа клиента — он сам */
|
|
44
|
+
list(params = {}, options) {
|
|
45
|
+
return this.#http.request({ method: 'GET', path: '/v1/clients', query: { ...params }, idempotent: true, options });
|
|
46
|
+
}
|
|
47
|
+
/** Все ваши клиенты — страница за страницей */
|
|
48
|
+
iterate(params = {}, options) {
|
|
49
|
+
return paginate((after) => this.list({ ...params, after }, options));
|
|
50
|
+
}
|
|
51
|
+
get(clientId, options) {
|
|
52
|
+
return this.#http.request({ method: 'GET', path: `/v1/clients/${seg(clientId)}`, idempotent: true, options });
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Меняет название или URL вебхука.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* await monitoring.clients.update(clientId, { webhookUrl: 'https://example.com/webhooks/monitoring' })
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
update(clientId, params, options) {
|
|
63
|
+
return this.#http.request({ method: 'PATCH', path: `/v1/clients/${seg(clientId)}`, body: params, idempotent: true, options });
|
|
64
|
+
}
|
|
65
|
+
/** Новый секрет подписи вебхуков. Старый перестаёт действовать сразу — обновите его у себя до следующего вебхука */
|
|
66
|
+
rotateSecret(clientId, params = {}, options) {
|
|
67
|
+
return this.#http.request({ method: 'POST', path: `/v1/clients/${seg(clientId)}/secret`, body: params, idempotent: false, options });
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Отправляет тестовый вебхук на URL клиента и возвращает результат: доставлен ли, ваш ответ, подпись и точное
|
|
71
|
+
* тело. Тестовый вебхук помечен `"test": true` и заголовком `x-webhook-test: 1` — не зачисляйте его.
|
|
72
|
+
* Не больше 10 в минуту.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const r = await monitoring.clients.sendTestWebhook(clientId, { asset: 'USDT' })
|
|
77
|
+
* if (!r.delivery.ok) console.log('ваш сервер ответил', r.delivery.status ?? r.delivery.error)
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
sendTestWebhook(clientId, params = {}, options) {
|
|
81
|
+
return this.#http.request({
|
|
82
|
+
method: 'POST',
|
|
83
|
+
path: `/v1/clients/${seg(clientId)}/webhooks/test`,
|
|
84
|
+
body: params,
|
|
85
|
+
idempotent: false,
|
|
86
|
+
// 502 — «не доставлен»: это результат проверки, а не ошибка запроса
|
|
87
|
+
acceptStatuses: [502],
|
|
88
|
+
options,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** Участники клиента и их роли */
|
|
92
|
+
async members(clientId, options) {
|
|
93
|
+
const r = await this.#http.request({ method: 'GET', path: `/v1/clients/${seg(clientId)}/members`, idempotent: true, options });
|
|
94
|
+
return r.items;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=clients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/resources/clients.ts"],"names":[],"mappings":"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"}
|