@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.
Files changed (140) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +247 -2
  4. package/dist/cjs/client.d.ts +65 -0
  5. package/dist/cjs/client.d.ts.map +1 -0
  6. package/dist/cjs/client.js +89 -0
  7. package/dist/cjs/client.js.map +1 -0
  8. package/dist/cjs/core/errors.d.ts +64 -0
  9. package/dist/cjs/core/errors.d.ts.map +1 -0
  10. package/dist/cjs/core/errors.js +95 -0
  11. package/dist/cjs/core/errors.js.map +1 -0
  12. package/dist/cjs/core/http.d.ts +62 -0
  13. package/dist/cjs/core/http.d.ts.map +1 -0
  14. package/dist/cjs/core/http.js +151 -0
  15. package/dist/cjs/core/http.js.map +1 -0
  16. package/dist/cjs/core/pagination.d.ts +13 -0
  17. package/dist/cjs/core/pagination.d.ts.map +1 -0
  18. package/dist/cjs/core/pagination.js +15 -0
  19. package/dist/cjs/core/pagination.js.map +1 -0
  20. package/dist/cjs/generated/types.d.ts +324 -0
  21. package/dist/cjs/generated/types.d.ts.map +1 -0
  22. package/dist/cjs/generated/types.js +5 -0
  23. package/dist/cjs/generated/types.js.map +1 -0
  24. package/dist/cjs/index.d.ts +23 -0
  25. package/dist/cjs/index.d.ts.map +1 -0
  26. package/dist/cjs/index.js +50 -0
  27. package/dist/cjs/index.js.map +1 -0
  28. package/dist/cjs/package.json +1 -0
  29. package/dist/cjs/resources/account.d.ts +61 -0
  30. package/dist/cjs/resources/account.d.ts.map +1 -0
  31. package/dist/cjs/resources/account.js +75 -0
  32. package/dist/cjs/resources/account.js.map +1 -0
  33. package/dist/cjs/resources/addresses.d.ts +109 -0
  34. package/dist/cjs/resources/addresses.d.ts.map +1 -0
  35. package/dist/cjs/resources/addresses.js +137 -0
  36. package/dist/cjs/resources/addresses.js.map +1 -0
  37. package/dist/cjs/resources/catalog.d.ts +30 -0
  38. package/dist/cjs/resources/catalog.d.ts.map +1 -0
  39. package/dist/cjs/resources/catalog.js +46 -0
  40. package/dist/cjs/resources/catalog.js.map +1 -0
  41. package/dist/cjs/resources/clients.d.ts +84 -0
  42. package/dist/cjs/resources/clients.d.ts.map +1 -0
  43. package/dist/cjs/resources/clients.js +102 -0
  44. package/dist/cjs/resources/clients.js.map +1 -0
  45. package/dist/cjs/resources/deliveries.d.ts +50 -0
  46. package/dist/cjs/resources/deliveries.d.ts.map +1 -0
  47. package/dist/cjs/resources/deliveries.js +43 -0
  48. package/dist/cjs/resources/deliveries.js.map +1 -0
  49. package/dist/cjs/resources/transactions.d.ts +28 -0
  50. package/dist/cjs/resources/transactions.d.ts.map +1 -0
  51. package/dist/cjs/resources/transactions.js +35 -0
  52. package/dist/cjs/resources/transactions.js.map +1 -0
  53. package/dist/cjs/units.d.ts +29 -0
  54. package/dist/cjs/units.d.ts.map +1 -0
  55. package/dist/cjs/units.js +62 -0
  56. package/dist/cjs/units.js.map +1 -0
  57. package/dist/cjs/version.d.ts +5 -0
  58. package/dist/cjs/version.d.ts.map +1 -0
  59. package/dist/cjs/version.js +8 -0
  60. package/dist/cjs/version.js.map +1 -0
  61. package/dist/cjs/webhooks.d.ts +77 -0
  62. package/dist/cjs/webhooks.d.ts.map +1 -0
  63. package/dist/cjs/webhooks.js +128 -0
  64. package/dist/cjs/webhooks.js.map +1 -0
  65. package/dist/esm/client.d.ts +65 -0
  66. package/dist/esm/client.d.ts.map +1 -0
  67. package/dist/esm/client.js +85 -0
  68. package/dist/esm/client.js.map +1 -0
  69. package/dist/esm/core/errors.d.ts +64 -0
  70. package/dist/esm/core/errors.d.ts.map +1 -0
  71. package/dist/esm/core/errors.js +86 -0
  72. package/dist/esm/core/errors.js.map +1 -0
  73. package/dist/esm/core/http.d.ts +62 -0
  74. package/dist/esm/core/http.d.ts.map +1 -0
  75. package/dist/esm/core/http.js +146 -0
  76. package/dist/esm/core/http.js.map +1 -0
  77. package/dist/esm/core/pagination.d.ts +13 -0
  78. package/dist/esm/core/pagination.d.ts.map +1 -0
  79. package/dist/esm/core/pagination.js +12 -0
  80. package/dist/esm/core/pagination.js.map +1 -0
  81. package/dist/esm/generated/types.d.ts +324 -0
  82. package/dist/esm/generated/types.d.ts.map +1 -0
  83. package/dist/esm/generated/types.js +4 -0
  84. package/dist/esm/generated/types.js.map +1 -0
  85. package/dist/esm/index.d.ts +23 -0
  86. package/dist/esm/index.d.ts.map +1 -0
  87. package/dist/esm/index.js +20 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/resources/account.d.ts +61 -0
  90. package/dist/esm/resources/account.d.ts.map +1 -0
  91. package/dist/esm/resources/account.js +69 -0
  92. package/dist/esm/resources/account.js.map +1 -0
  93. package/dist/esm/resources/addresses.d.ts +109 -0
  94. package/dist/esm/resources/addresses.d.ts.map +1 -0
  95. package/dist/esm/resources/addresses.js +133 -0
  96. package/dist/esm/resources/addresses.js.map +1 -0
  97. package/dist/esm/resources/catalog.d.ts +30 -0
  98. package/dist/esm/resources/catalog.d.ts.map +1 -0
  99. package/dist/esm/resources/catalog.js +41 -0
  100. package/dist/esm/resources/catalog.js.map +1 -0
  101. package/dist/esm/resources/clients.d.ts +84 -0
  102. package/dist/esm/resources/clients.d.ts.map +1 -0
  103. package/dist/esm/resources/clients.js +97 -0
  104. package/dist/esm/resources/clients.js.map +1 -0
  105. package/dist/esm/resources/deliveries.d.ts +50 -0
  106. package/dist/esm/resources/deliveries.d.ts.map +1 -0
  107. package/dist/esm/resources/deliveries.js +39 -0
  108. package/dist/esm/resources/deliveries.js.map +1 -0
  109. package/dist/esm/resources/transactions.d.ts +28 -0
  110. package/dist/esm/resources/transactions.d.ts.map +1 -0
  111. package/dist/esm/resources/transactions.js +31 -0
  112. package/dist/esm/resources/transactions.js.map +1 -0
  113. package/dist/esm/units.d.ts +29 -0
  114. package/dist/esm/units.d.ts.map +1 -0
  115. package/dist/esm/units.js +58 -0
  116. package/dist/esm/units.js.map +1 -0
  117. package/dist/esm/version.d.ts +5 -0
  118. package/dist/esm/version.d.ts.map +1 -0
  119. package/dist/esm/version.js +5 -0
  120. package/dist/esm/version.js.map +1 -0
  121. package/dist/esm/webhooks.d.ts +77 -0
  122. package/dist/esm/webhooks.d.ts.map +1 -0
  123. package/dist/esm/webhooks.js +120 -0
  124. package/dist/esm/webhooks.js.map +1 -0
  125. package/package.json +66 -4
  126. package/src/client.ts +94 -0
  127. package/src/core/errors.ts +99 -0
  128. package/src/core/http.ts +193 -0
  129. package/src/core/pagination.ts +21 -0
  130. package/src/generated/types.ts +355 -0
  131. package/src/index.ts +60 -0
  132. package/src/resources/account.ts +87 -0
  133. package/src/resources/addresses.ts +190 -0
  134. package/src/resources/catalog.ts +47 -0
  135. package/src/resources/clients.ts +135 -0
  136. package/src/resources/deliveries.ts +69 -0
  137. package/src/resources/transactions.ts +33 -0
  138. package/src/units.ts +56 -0
  139. package/src/version.ts +5 -0
  140. package/src/webhooks.ts +133 -0
@@ -0,0 +1,146 @@
1
+ import { SDK_VERSION } from '../version.js';
2
+ import { apiErrorFrom, MonitoringConnectionError, MonitoringError, MonitoringTimeoutError } from './errors.js';
3
+ const DEFAULTS = { timeoutMs: 30_000, maxRetries: 2 };
4
+ const MAX_RETRY_DELAY_MS = 60_000;
5
+ /** Транспорт SDK: адрес, авторизация, таймауты, повторы, разбор ошибок. Ресурсы ходят в API только через него */
6
+ export class HttpClient {
7
+ baseUrl;
8
+ #apiKey;
9
+ #sessionToken;
10
+ #timeoutMs;
11
+ #maxRetries;
12
+ #fetch;
13
+ #headers;
14
+ constructor(options, defaultBaseUrl) {
15
+ if (options.apiKey && options.sessionToken)
16
+ throw new MonitoringError('pass either apiKey or sessionToken, not both');
17
+ this.baseUrl = (options.baseUrl ?? defaultBaseUrl).replace(/\/+$/, '');
18
+ this.#apiKey = options.apiKey;
19
+ this.#sessionToken = options.sessionToken;
20
+ this.#timeoutMs = options.timeoutMs ?? DEFAULTS.timeoutMs;
21
+ this.#maxRetries = options.maxRetries ?? DEFAULTS.maxRetries;
22
+ const f = options.fetch ?? globalThis.fetch;
23
+ if (typeof f !== 'function')
24
+ throw new MonitoringError('fetch is not available: use Node.js 20+ or pass options.fetch');
25
+ this.#fetch = f;
26
+ this.#headers = { ...options.headers };
27
+ }
28
+ /** Выполняет запрос и возвращает разобранный JSON ответа */
29
+ async request(call) {
30
+ const url = this.#url(call.path, call.query);
31
+ const headers = this.#headersFor(call);
32
+ const body = call.body === undefined ? undefined : JSON.stringify(call.body);
33
+ const maxRetries = call.options?.maxRetries ?? this.#maxRetries;
34
+ const timeoutMs = call.options?.timeoutMs ?? this.#timeoutMs;
35
+ for (let attempt = 0;; attempt++) {
36
+ let res;
37
+ try {
38
+ res = await this.#send(url, { method: call.method, headers, body }, timeoutMs, call.options?.signal);
39
+ }
40
+ catch (e) {
41
+ if (call.options?.signal?.aborted)
42
+ throw call.options.signal.reason;
43
+ if (call.idempotent && attempt < maxRetries) {
44
+ await sleep(backoff(attempt), call.options?.signal);
45
+ continue;
46
+ }
47
+ throw e;
48
+ }
49
+ if ((res.status >= 200 && res.status < 300) || call.acceptStatuses?.includes(res.status))
50
+ return res.data;
51
+ const error = apiErrorFrom(res.status, res.data, res.headers.get('cf-ray') ?? undefined);
52
+ // 429 и 503: запрос не выполнен — повтор безопасен для любого метода
53
+ if (error.retryable && attempt < maxRetries) {
54
+ await sleep(retryAfter(res.headers) ?? backoff(attempt), call.options?.signal);
55
+ continue;
56
+ }
57
+ throw error;
58
+ }
59
+ }
60
+ #url(path, query) {
61
+ const url = new URL(this.baseUrl + path);
62
+ for (const [k, v] of Object.entries(query ?? {}))
63
+ if (v !== undefined && v !== null && v !== '')
64
+ url.searchParams.set(k, String(v));
65
+ return url.toString();
66
+ }
67
+ #headersFor(call) {
68
+ const headers = { accept: 'application/json', 'user-agent': `@v3finance/monitoring-sdk/${SDK_VERSION}`, ...this.#headers };
69
+ if (call.body !== undefined)
70
+ headers['content-type'] = 'application/json';
71
+ if (call.auth !== false) {
72
+ if (this.#apiKey)
73
+ headers['x-api-key'] = this.#apiKey;
74
+ else if (this.#sessionToken)
75
+ headers.authorization = `Bearer ${this.#sessionToken}`;
76
+ else
77
+ throw new MonitoringError('credentials required: pass apiKey or sessionToken to MonitoringClient');
78
+ }
79
+ return headers;
80
+ }
81
+ /** Один запрос с таймаутом на всё — и соединение, и чтение тела */
82
+ async #send(url, init, timeoutMs, signal) {
83
+ const controller = new AbortController();
84
+ const timer = setTimeout(() => controller.abort(new MonitoringTimeoutError(timeoutMs)), timeoutMs);
85
+ const onAbort = () => controller.abort(signal.reason);
86
+ if (signal?.aborted)
87
+ onAbort();
88
+ signal?.addEventListener('abort', onAbort, { once: true });
89
+ try {
90
+ const res = await this.#fetch(url, { ...init, signal: controller.signal });
91
+ const text = await res.text();
92
+ return { status: res.status, headers: res.headers, data: text ? parseJson(text) : undefined };
93
+ }
94
+ catch (e) {
95
+ const reason = controller.signal.reason;
96
+ if (reason instanceof MonitoringTimeoutError)
97
+ throw reason;
98
+ if (signal?.aborted)
99
+ throw signal.reason;
100
+ throw new MonitoringConnectionError(`request to ${new URL(url).origin} failed: ${e.message}`, { cause: e });
101
+ }
102
+ finally {
103
+ clearTimeout(timer);
104
+ signal?.removeEventListener('abort', onAbort);
105
+ }
106
+ }
107
+ }
108
+ function parseJson(text) {
109
+ try {
110
+ return JSON.parse(text);
111
+ }
112
+ catch {
113
+ return text;
114
+ }
115
+ }
116
+ /** Экспоненциальная пауза с разбросом: ~0,5 с, 1 с, 2 с… не больше 8 с */
117
+ function backoff(attempt) {
118
+ return Math.min(8_000, 500 * 2 ** attempt) * (0.5 + Math.random() / 2);
119
+ }
120
+ /** Пауза из заголовка Retry-After: секунды или дата */
121
+ function retryAfter(headers) {
122
+ const raw = headers.get('retry-after');
123
+ if (!raw)
124
+ return undefined;
125
+ const seconds = Number(raw);
126
+ const ms = Number.isFinite(seconds) ? seconds * 1000 : Date.parse(raw) - Date.now();
127
+ return Number.isFinite(ms) ? Math.min(Math.max(ms, 0), MAX_RETRY_DELAY_MS) : undefined;
128
+ }
129
+ function sleep(ms, signal) {
130
+ return new Promise((resolve, reject) => {
131
+ if (signal?.aborted)
132
+ return reject(signal.reason);
133
+ const timer = setTimeout(() => {
134
+ signal?.removeEventListener('abort', onAbort);
135
+ resolve();
136
+ }, ms);
137
+ const onAbort = () => {
138
+ clearTimeout(timer);
139
+ reject(signal.reason);
140
+ };
141
+ signal?.addEventListener('abort', onAbort, { once: true });
142
+ });
143
+ }
144
+ /** Сегмент пути: id клиента, хеш и т. п. */
145
+ export const seg = (value) => encodeURIComponent(String(value));
146
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Страница списка. `next` — курсор следующей страницы; `null` — страниц больше нет.
3
+ *
4
+ * @typeParam T - элемент списка
5
+ * @typeParam Cursor - тип курсора: строка (клиенты) или число (адреса, история)
6
+ */
7
+ export interface Page<T, Cursor = string | number> {
8
+ items: T[];
9
+ next: Cursor | null;
10
+ }
11
+ /** Обходит все страницы по порядку, запрашивая следующую, только когда закончилась текущая */
12
+ export declare function paginate<T, Cursor>(fetchPage: (cursor: Cursor | undefined) => Promise<Page<T, Cursor>>): AsyncGenerator<T, void, undefined>;
13
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/core/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAC/C,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,8FAA8F;AAC9F,wBAAuB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAQlJ"}
@@ -0,0 +1,12 @@
1
+ /** Обходит все страницы по порядку, запрашивая следующую, только когда закончилась текущая */
2
+ export async function* paginate(fetchPage) {
3
+ let cursor;
4
+ for (;;) {
5
+ const page = await fetchPage(cursor);
6
+ yield* page.items;
7
+ if (page.next === null || page.next === undefined)
8
+ return;
9
+ cursor = page.next;
10
+ }
11
+ }
12
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/core/pagination.ts"],"names":[],"mappings":"AAWA,8FAA8F;AAC9F,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAY,SAAmE;IAC5G,IAAI,MAA0B,CAAA;IAC9B,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAA;QACpC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAM;QACzD,MAAM,GAAG,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,324 @@
1
+ export interface ApiErrorBody {
2
+ error: {
3
+ /** @example "invalid_request" */
4
+ code: string;
5
+ message: string;
6
+ details?: Array<{
7
+ index: number;
8
+ message: string;
9
+ }>;
10
+ };
11
+ }
12
+ export interface User {
13
+ id: string;
14
+ email: string;
15
+ name: string;
16
+ role?: "admin" | "user";
17
+ banned?: boolean;
18
+ createdAt?: string;
19
+ }
20
+ export interface Identity {
21
+ actor: {
22
+ /** user — пользователь, client-key — ключ клиента */
23
+ kind: "user" | "client-key" | "admin";
24
+ via?: "session" | "api-key" | "token";
25
+ userId?: string | null;
26
+ clientId?: string;
27
+ keyId?: string;
28
+ };
29
+ user: User | null;
30
+ memberships: Array<{
31
+ clientId: string;
32
+ role: "owner" | "admin" | "member";
33
+ }>;
34
+ }
35
+ export interface ApiKey {
36
+ id: string;
37
+ name: string | null;
38
+ /** начало ключа — чтобы узнать его */
39
+ start: string;
40
+ enabled: boolean;
41
+ expiresAt: string | null;
42
+ lastUsedAt: string | null;
43
+ createdAt: string;
44
+ }
45
+ export interface IssueKeyRequest {
46
+ /** length: 0..100 */
47
+ name?: string;
48
+ /**
49
+ * срок; без него — бессрочный
50
+ *
51
+ * range: 1..3650
52
+ */
53
+ expiresInDays?: number;
54
+ }
55
+ export interface IssuedKey {
56
+ id: string;
57
+ /** полный ключ — показывается один раз */
58
+ key: string;
59
+ start: string;
60
+ name: string | null;
61
+ expiresAt: string | null;
62
+ }
63
+ export interface Network {
64
+ id: number;
65
+ /** @example "tron" */
66
+ slug: string;
67
+ /** @example "tron:0x2b6653dc" */
68
+ caip2: string;
69
+ chainId: number;
70
+ name: string;
71
+ shortName: string | null;
72
+ /** 1 — L1, 2 — L2 */
73
+ layer: 1 | 2;
74
+ parent: string | null;
75
+ l2Type: string | null;
76
+ l2Stack: string | null;
77
+ isTestnet: boolean;
78
+ explorerUrl: string | null;
79
+ /** сервис читает сеть: если false, вебхуков по ней нет */
80
+ enabled: boolean;
81
+ }
82
+ export interface Asset {
83
+ id: number;
84
+ network: string;
85
+ caip19: string;
86
+ standard: "native" | "erc20" | "trc20";
87
+ contract: string | null;
88
+ symbol: string;
89
+ name: string;
90
+ decimals: number;
91
+ /** порог включительно, в минимальных единицах: меньшие переводы не сообщаются */
92
+ minAmount: string;
93
+ /** включён: о его переводах приходят вебхуки */
94
+ enabled: boolean;
95
+ }
96
+ export interface Client {
97
+ id: string;
98
+ name: string | null;
99
+ webhookUrl: string;
100
+ /** disabled — вебхуки не отправляются */
101
+ status: "active" | "disabled";
102
+ createdAt: string;
103
+ }
104
+ export interface Member {
105
+ userId: string;
106
+ email: string;
107
+ name: string;
108
+ role: "owner" | "admin" | "member";
109
+ createdAt: string;
110
+ }
111
+ /** in — адрес получатель, out — отправитель, both — любой */
112
+ export type Direction = "in" | "out" | "both";
113
+ /** символы (`USDT`) или адреса контрактов; null — все активы сети, включая добавленные позже */
114
+ export type AssetSelection = string[] | null;
115
+ export interface AddressInput {
116
+ /** slug или CAIP-2 */
117
+ network: string;
118
+ address: string;
119
+ /**
120
+ * ваша метка: id пользователя, номер счёта
121
+ *
122
+ * length: 0..200
123
+ */
124
+ label?: string;
125
+ assets?: AssetSelection;
126
+ direction?: Direction;
127
+ }
128
+ export interface AddAddressesRequest {
129
+ /** items: 1..1000 */
130
+ addresses: AddressInput[];
131
+ assets?: AssetSelection;
132
+ direction?: Direction;
133
+ }
134
+ export interface UpdateAddressesRequest {
135
+ /** items: 1..1000 */
136
+ addresses: Array<{
137
+ network: string;
138
+ address: string;
139
+ assets?: AssetSelection;
140
+ direction?: Direction;
141
+ }>;
142
+ assets?: AssetSelection;
143
+ direction?: Direction;
144
+ }
145
+ export interface Address {
146
+ id: number;
147
+ network: string;
148
+ caip10: string;
149
+ address: string;
150
+ label: string | null;
151
+ /** символы активов подписки; null — все */
152
+ assets: string[] | null;
153
+ direction: Direction;
154
+ createdAt: string;
155
+ }
156
+ /** delivered — вы ответили 2xx; retrying — последняя попытка не удалась, будет повтор; failed — повторы исчерпаны */
157
+ export type DeliveryStatus = "delivered" | "retrying" | "failed";
158
+ export interface Delivery {
159
+ id: number;
160
+ clientId: string;
161
+ network: string;
162
+ asset: string;
163
+ contract: string;
164
+ txId: string;
165
+ logIndex: number | null;
166
+ block: number;
167
+ /** время блока, мс */
168
+ blockTime: number;
169
+ from: string;
170
+ to: string;
171
+ value: string;
172
+ status: DeliveryStatus;
173
+ attempts: number;
174
+ lastHttpStatus: number | null;
175
+ lastError: string | null;
176
+ lastDurationMs: number | null;
177
+ firstAttemptAt: string;
178
+ lastAttemptAt: string;
179
+ deliveredAt: string | null;
180
+ }
181
+ export type DeliveryDetail = Delivery & {
182
+ /** куда ушла последняя попытка */
183
+ url: string;
184
+ /** точное тело запроса */
185
+ body: string;
186
+ };
187
+ export interface TxTransfer {
188
+ /** native — монета самой транзакцией; token — событие Transfer; internal — TRX изнутри контракта (TRON); trc10 — токен TRC-10 */
189
+ kind: "native" | "token" | "internal" | "trc10";
190
+ asset: string | null;
191
+ /** адрес контракта, native или id токена TRC-10 */
192
+ contract: string;
193
+ from: string;
194
+ to: string;
195
+ value: string;
196
+ logIndex?: number;
197
+ /** актив отслеживается: о таких переводах приходят вебхуки (если сумма не меньше порога) */
198
+ tracked: boolean;
199
+ }
200
+ export interface Transaction {
201
+ network: string;
202
+ caip2: string;
203
+ txId: string;
204
+ /** pending — ещё не в блоке */
205
+ status: "success" | "failed" | "pending";
206
+ failure: string | null;
207
+ block: number | null;
208
+ blockTime: number | null;
209
+ /** от текущей головы сети; 0 — не в блоке */
210
+ confirmations: number;
211
+ /** транзакцию уже не отменить */
212
+ final: boolean;
213
+ /** кто подписал */
214
+ from: string;
215
+ to: string | null;
216
+ /** TRON — тип контракта (TransferContract, TriggerSmartContract…); EVM — transfer, contract_call, contract_creation */
217
+ type: string;
218
+ /** нативная монета самой транзакции */
219
+ value: string;
220
+ fee: {
221
+ asset: string;
222
+ value: string;
223
+ } | null;
224
+ transfers: TxTransfer[];
225
+ /** ваши адреса на мониторинге в этой транзакции */
226
+ watched: Array<{
227
+ clientId: string;
228
+ address: string;
229
+ direction: Direction;
230
+ }>;
231
+ /** наши вебхуки вам по этой транзакции */
232
+ webhooks: Array<{
233
+ id: number;
234
+ clientId: string;
235
+ asset: string;
236
+ value: string;
237
+ status: DeliveryStatus;
238
+ attempts: number;
239
+ deliveredAt: string | null;
240
+ }>;
241
+ }
242
+ export interface WebhookTx {
243
+ /**
244
+ * сеть в верхнем регистре
245
+ * @example "TRON"
246
+ * @example "ETHEREUM"
247
+ */
248
+ network: string;
249
+ /** @example "USDT" */
250
+ asset: string;
251
+ /** адрес контракта или native */
252
+ contract: string;
253
+ /** всегда TOPUP — и для входящего, и для исходящего: направление — по from и to */
254
+ type: "TOPUP";
255
+ /** хеш транзакции */
256
+ id: string;
257
+ block: number;
258
+ /** время блока, мс */
259
+ timestamp: number;
260
+ from: string;
261
+ to: string;
262
+ /** в минимальных единицах */
263
+ value: string;
264
+ /** у переводов токенов EVM: в одной транзакции их бывает несколько */
265
+ logIndex?: number;
266
+ }
267
+ export interface WebhookPayload {
268
+ tx: WebhookTx;
269
+ /** только у тестового вебхука — не зачислять */
270
+ test?: true;
271
+ }
272
+ export interface TestWebhookRequest {
273
+ /** @defaultValue "USDT" */
274
+ asset?: "USDT" | "A7A5" | "TRX";
275
+ /** адрес TRON */
276
+ from?: string;
277
+ /** адрес TRON */
278
+ to?: string;
279
+ /** в минимальных единицах */
280
+ value?: string;
281
+ }
282
+ export interface TestDelivery {
283
+ ok: boolean;
284
+ /** HTTP-код вашего ответа */
285
+ status?: number;
286
+ error?: string;
287
+ durationMs: number;
288
+ }
289
+ export interface TestWebhookResult {
290
+ delivery: TestDelivery;
291
+ /** x-signature — сверьте со своим HMAC */
292
+ signature: string;
293
+ /** точное тело запроса */
294
+ body: string;
295
+ }
296
+ export interface LegacyAddresses {
297
+ /** items: 0..1000 */
298
+ addresses: string[];
299
+ }
300
+ export interface LegacyClientResult {
301
+ ok: true;
302
+ client: {
303
+ id: string;
304
+ webhookUrl: string;
305
+ addresses: string[];
306
+ };
307
+ }
308
+ export interface LegacyError {
309
+ ok: false;
310
+ error: string;
311
+ details?: Array<{
312
+ index: number;
313
+ message: string;
314
+ }>;
315
+ }
316
+ export interface LegacyTestResult {
317
+ ok: boolean;
318
+ clientId: string;
319
+ webhookUrl: string;
320
+ delivery: TestDelivery;
321
+ signature: string;
322
+ body: string;
323
+ }
324
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/generated/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // Generated from openapi/openapi.json by scripts/generate.ts — do not edit by hand.
2
+ // chain-events API 1.0.0. Regenerate: npm run spec:update && npm run generate
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/generated/types.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,8EAA8E"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Официальный SDK API мониторинга адресов V3 Finance (https://monitoring.v3.finance): TRON и EVM-сети,
3
+ * подписанные вебхуки о переводах, история доставок, транзакции с подтверждениями и финальностью.
4
+ *
5
+ * Справочник API — https://monitoring.v3.finance/docs
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { MonitoringClient } from './client.js';
10
+ export type { ClientOptions, RequestOptions } from './core/http.js';
11
+ export type { Page } from './core/pagination.js';
12
+ export { MonitoringApiError, MonitoringConnectionError, MonitoringError, MonitoringTimeoutError, WebhookSignatureError, type ErrorDetail, } from './core/errors.js';
13
+ export { AccountResource, AuthResource, PersonalKeysResource, type SignInResult } from './resources/account.js';
14
+ export { ADDRESS_BATCH_SIZE, AddressesResource, type AddAddressesResult, type AddressDefaults, type AddressRef, type AddressSubscriptionUpdate, type ListAddressesParams, type RemoveAddressesResult, type UpdateAddressesResult, } from './resources/addresses.js';
15
+ export { AssetsResource, NetworksResource } from './resources/catalog.js';
16
+ export { ClientKeysResource, ClientsResource, type ListClientsParams, type RotateSecretParams, type RotateSecretResult, type UpdateClientParams, } from './resources/clients.js';
17
+ export { DeliveriesResource, type DeliveryFilter, type ListDeliveriesParams } from './resources/deliveries.js';
18
+ export { TransactionsResource } from './resources/transactions.js';
19
+ export { isTestWebhook, parseWebhook, signWebhookBody, verifyWebhookSignature, WEBHOOK_HEADERS, webhookIdempotencyKey, type SignatureSource, type WebhookBody, } from './webhooks.js';
20
+ export { formatUnits, parseUnits } from './units.js';
21
+ export { DEFAULT_BASE_URL, SDK_VERSION } from './version.js';
22
+ export type * from './generated/types.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG5D,mBAAmB,sBAAsB,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Официальный SDK API мониторинга адресов V3 Finance (https://monitoring.v3.finance): TRON и EVM-сети,
3
+ * подписанные вебхуки о переводах, история доставок, транзакции с подтверждениями и финальностью.
4
+ *
5
+ * Справочник API — https://monitoring.v3.finance/docs
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export { MonitoringClient } from './client.js';
10
+ export { MonitoringApiError, MonitoringConnectionError, MonitoringError, MonitoringTimeoutError, WebhookSignatureError, } from './core/errors.js';
11
+ export { AccountResource, AuthResource, PersonalKeysResource } from './resources/account.js';
12
+ export { ADDRESS_BATCH_SIZE, AddressesResource, } from './resources/addresses.js';
13
+ export { AssetsResource, NetworksResource } from './resources/catalog.js';
14
+ export { ClientKeysResource, ClientsResource, } from './resources/clients.js';
15
+ export { DeliveriesResource } from './resources/deliveries.js';
16
+ export { TransactionsResource } from './resources/transactions.js';
17
+ export { isTestWebhook, parseWebhook, signWebhookBody, verifyWebhookSignature, WEBHOOK_HEADERS, webhookIdempotencyKey, } from './webhooks.js';
18
+ export { formatUnits, parseUnits } from './units.js';
19
+ export { DEFAULT_BASE_URL, SDK_VERSION } from './version.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAqB,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAQlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EACL,kBAAkB,EAClB,eAAe,GAKhB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAkD,MAAM,2BAA2B,CAAA;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,qBAAqB,GAGtB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { type HttpClient, type RequestOptions } from '../core/http.js';
2
+ import type { ApiKey, Identity, IssueKeyRequest, IssuedKey, User } from '../generated/types.js';
3
+ /** Личные ключи: действуют от вашего имени с вашими правами — всё, что вы можете в панели */
4
+ export declare class PersonalKeysResource {
5
+ #private;
6
+ constructor(http: HttpClient);
7
+ list(options?: RequestOptions): Promise<ApiKey[]>;
8
+ /**
9
+ * Выпускает личный ключ. Работает только с клиентом, вошедшим по паролю ({@link MonitoringClient.signIn}):
10
+ * ключ не может выпустить себе замену. Полный ключ — в `key`, показывается один раз.
11
+ */
12
+ create(params?: IssueKeyRequest, options?: RequestOptions): Promise<IssuedKey>;
13
+ revoke(keyId: string, options?: RequestOptions): Promise<void>;
14
+ }
15
+ /** Кто вы и ваши ключи */
16
+ export declare class AccountResource {
17
+ #private;
18
+ /** Личные ключи */
19
+ readonly keys: PersonalKeysResource;
20
+ constructor(http: HttpClient);
21
+ /**
22
+ * Кто сделал запрос: способ входа, пользователь и участие в клиентах с ролями. Для ключа клиента —
23
+ * `actor.kind === 'client-key'` и `actor.clientId`.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const { actor } = await monitoring.account.me()
28
+ * const clientId = actor.clientId // для ключа клиента
29
+ * ```
30
+ */
31
+ me(options?: RequestOptions): Promise<Identity>;
32
+ }
33
+ /** Результат входа по паролю */
34
+ export interface SignInResult {
35
+ /** Токен сессии: передайте его в `sessionToken` или используйте готовый клиент из {@link MonitoringClient.signIn} */
36
+ token: string;
37
+ user: User;
38
+ }
39
+ /** Сессия: выход и смена пароля. Нужен клиент, вошедший по паролю */
40
+ export declare class AuthResource {
41
+ #private;
42
+ constructor(http: HttpClient);
43
+ /** Текущая сессия и пользователь; `null` — сессии нет или она истекла */
44
+ session(options?: RequestOptions): Promise<{
45
+ session: Record<string, unknown>;
46
+ user: User;
47
+ } | null>;
48
+ /** Завершает сессию; токен перестаёт работать */
49
+ signOut(options?: RequestOptions): Promise<void>;
50
+ /**
51
+ * Меняет пароль. Ключом пароль не сменить — только в сессии.
52
+ *
53
+ * @param params.revokeOtherSessions - завершить остальные сессии
54
+ */
55
+ changePassword(params: {
56
+ currentPassword: string;
57
+ newPassword: string;
58
+ revokeOtherSessions?: boolean;
59
+ }, options?: RequestOptions): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=account.d.ts.map