@coopenomics/sdk 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -11,6 +11,133 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
11
11
 
12
12
  const WebSocket__default = /*#__PURE__*/_interopDefaultCompat(WebSocket);
13
13
 
14
+ var __defProp$2 = Object.defineProperty;
15
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
+ var __publicField$2 = (obj, key, value) => {
17
+ __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
18
+ return value;
19
+ };
20
+ class Account {
21
+ constructor() {
22
+ __publicField$2(this, "username");
23
+ __publicField$2(this, "private_key");
24
+ __publicField$2(this, "public_key");
25
+ this.username = Account.generateUsername();
26
+ const keys = Account.generateKeys();
27
+ this.private_key = keys.private_key;
28
+ this.public_key = keys.public_key;
29
+ }
30
+ /**
31
+ * Генерирует случайное имя длиной 12 символов, состоящее только из букв.
32
+ * @returns Случайное имя.
33
+ */
34
+ static generateUsername() {
35
+ let result = "";
36
+ const possible = "abcdefghijklmnopqrstuvwxyz";
37
+ for (let i = 0; i < 12; i++) {
38
+ result += possible.charAt(Math.floor(Math.random() * possible.length));
39
+ }
40
+ return result;
41
+ }
42
+ /**
43
+ * Генерирует пару ключей (приватный и публичный) с использованием библиотеки @wharfkit/antelope.
44
+ * @returns Объект с приватным и публичным ключами.
45
+ */
46
+ static generateKeys() {
47
+ const private_key_data = antelope.PrivateKey.generate("K1");
48
+ const public_key = private_key_data.toPublic().toString();
49
+ const private_key = private_key_data.toWif();
50
+ return {
51
+ private_key,
52
+ public_key
53
+ };
54
+ }
55
+ }
56
+
57
+ var __defProp$1 = Object.defineProperty;
58
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
59
+ var __publicField$1 = (obj, key, value) => {
60
+ __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
61
+ return value;
62
+ };
63
+ class Canvas {
64
+ /**
65
+ * Создаёт элемент `<canvas>` внутри указанного контейнера.
66
+ * @param container - HTML-элемент, внутри которого создаётся canvas.
67
+ * @param width - Ширина canvas (по умолчанию 300).
68
+ * @param height - Высота canvas (по умолчанию 150).
69
+ */
70
+ constructor(container, width = 300, height = 150) {
71
+ __publicField$1(this, "canvas");
72
+ __publicField$1(this, "ctx");
73
+ __publicField$1(this, "state", {
74
+ drawing: false,
75
+ lastX: 0,
76
+ lastY: 0
77
+ });
78
+ this.canvas = document.createElement("canvas");
79
+ this.canvas.width = width;
80
+ this.canvas.height = height;
81
+ container.appendChild(this.canvas);
82
+ this.ctx = this.canvas.getContext("2d");
83
+ this.ctx.lineWidth = 5;
84
+ this.ctx.lineJoin = "round";
85
+ this.ctx.lineCap = "round";
86
+ this.ctx.strokeStyle = "#000";
87
+ }
88
+ /**
89
+ * Полностью очищает canvas.
90
+ */
91
+ clearCanvas() {
92
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
93
+ }
94
+ /**
95
+ * Запускает процесс рисования (фиксирует начальные координаты).
96
+ * @param e - Событие мыши или касания.
97
+ */
98
+ startDrawing(e) {
99
+ e.preventDefault();
100
+ this.state.drawing = true;
101
+ const rect = this.canvas.getBoundingClientRect();
102
+ const clientX = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX;
103
+ const clientY = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;
104
+ this.state.lastX = clientX - rect.left;
105
+ this.state.lastY = clientY - rect.top;
106
+ }
107
+ /**
108
+ * Выполняет рисование линии от предыдущей точки к текущей.
109
+ * @param e - Событие мыши или касания.
110
+ */
111
+ draw(e) {
112
+ if (!this.state.drawing)
113
+ return;
114
+ e.preventDefault();
115
+ this.ctx.beginPath();
116
+ this.ctx.moveTo(this.state.lastX, this.state.lastY);
117
+ const rect = this.canvas.getBoundingClientRect();
118
+ const clientX = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX;
119
+ const clientY = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;
120
+ const x = clientX - rect.left;
121
+ const y = clientY - rect.top;
122
+ this.ctx.lineTo(x, y);
123
+ this.ctx.stroke();
124
+ this.state.lastX = x;
125
+ this.state.lastY = y;
126
+ }
127
+ /**
128
+ * Завершает процесс рисования (drawing = false).
129
+ */
130
+ endDrawing() {
131
+ this.state.drawing = false;
132
+ }
133
+ /**
134
+ * Возвращает текущее содержимое canvas в формате base64 (PNG).
135
+ */
136
+ getSignature() {
137
+ return this.canvas.toDataURL("image/png");
138
+ }
139
+ }
140
+
14
141
  var __defProp = Object.defineProperty;
15
142
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
143
  var __publicField = (obj, key, value) => {
@@ -103,6 +230,8 @@ class Wallet {
103
230
 
104
231
  const Classes = {
105
232
  __proto__: null,
233
+ Account: Account,
234
+ Canvas: Canvas,
106
235
  Wallet: Wallet
107
236
  };
108
237
 
@@ -1373,12 +1502,22 @@ const Gql = Chain(HOST, {
1373
1502
  const ZeusScalars = ZeusSelect();
1374
1503
  const fields = (k) => {
1375
1504
  const t = ReturnTypes[k];
1505
+ const fnType = k in AllTypesProps ? AllTypesProps[k] : void 0;
1506
+ const hasFnTypes = typeof fnType === "object" ? fnType : void 0;
1376
1507
  const o = Object.fromEntries(
1377
- Object.entries(t).filter(([, value]) => {
1508
+ Object.entries(t).filter(([k2, value]) => {
1509
+ const isFunctionType = hasFnTypes && k2 in hasFnTypes && !!hasFnTypes[k2];
1510
+ if (isFunctionType)
1511
+ return false;
1378
1512
  const isReturnType = ReturnTypes[value];
1379
- if (!isReturnType || typeof isReturnType === "string" && isReturnType.startsWith("scalar.")) {
1513
+ if (!isReturnType)
1514
+ return true;
1515
+ if (typeof isReturnType !== "string")
1516
+ return false;
1517
+ if (isReturnType.startsWith("scalar.")) {
1380
1518
  return true;
1381
1519
  }
1520
+ return false;
1382
1521
  }).map(([key]) => [key, true])
1383
1522
  );
1384
1523
  return o;
@@ -3147,6 +3286,14 @@ if (typeof globalThis.WebSocket === "undefined") {
3147
3286
  globalThis.WebSocket = WebSocket__default;
3148
3287
  }
3149
3288
  let currentHeaders = {};
3289
+ const scalars = ZeusScalars({
3290
+ DateTime: {
3291
+ decode: (e) => new Date(e),
3292
+ // Преобразует строку в объект Date
3293
+ encode: (e) => e.toISOString()
3294
+ // Преобразует Date в ISO-строку
3295
+ }
3296
+ });
3150
3297
  function createThunder(baseUrl) {
3151
3298
  return Thunder(async (query, variables) => {
3152
3299
  const response = await fetch(baseUrl, {
@@ -3175,7 +3322,7 @@ function createThunder(baseUrl) {
3175
3322
  throw json.errors;
3176
3323
  }
3177
3324
  return json.data;
3178
- });
3325
+ }, { scalars });
3179
3326
  }
3180
3327
  function createClient(options) {
3181
3328
  currentHeaders = options.headers || {};
package/dist/index.d.cts CHANGED
@@ -50,9 +50,10 @@ declare const Gql: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefin
50
50
  variables?: Record<string, unknown>;
51
51
  }) => Promise<InputType<GraphQLTypes[R], Z, UnionOverrideKeys<ScalarDefinition, OVERRIDESCLR>>>;
52
52
  declare const ZeusScalars: SelectionFunction<ScalarCoders>;
53
+ type BaseSymbol = number | string | undefined | boolean | null;
53
54
  type ScalarsSelector<T> = {
54
55
  [X in Required<{
55
- [P in keyof T]: T[P] extends number | string | undefined | boolean ? P : never;
56
+ [P in keyof T]: T[P] extends BaseSymbol | Array<BaseSymbol> ? P : never;
56
57
  }>[keyof T]]: true;
57
58
  };
58
59
  declare const fields: <T extends keyof ModelTypes>(k: T) => ScalarsSelector<ModelTypes[T]>;
@@ -300,6 +301,7 @@ type ValueTypes = {
300
301
  totalPages?: boolean | `@${string}`;
301
302
  __typename?: boolean | `@${string}`;
302
303
  }>;
304
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
303
305
  ["ActDetail"]: AliasType<{
304
306
  action?: ValueTypes["ExtendedBlockchainAction"];
305
307
  document?: ValueTypes["GeneratedDocument"];
@@ -951,15 +953,15 @@ type ValueTypes = {
951
953
  __typename?: boolean | `@${string}`;
952
954
  }>;
953
955
  ["ExtensionInput"]: {
954
- /** Configuration settings for the extension */
956
+ /** Объект конфигурации расширения */
955
957
  config: ValueTypes["JSON"] | Variable<any, string>;
956
- /** Timestamp of when the extension was created */
958
+ /** Дата установки расширения */
957
959
  created_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
958
- /** Indicates whether the extension is enabled */
960
+ /** Флаг того, включено ли расширение сейчас */
959
961
  enabled: boolean | Variable<any, string>;
960
- /** Unique name of the extension */
962
+ /** Уникальное имя расширения (является идентификатором) */
961
963
  name: string | Variable<any, string>;
962
- /** Timestamp of the last update to the extension */
964
+ /** Дата обновления расширения */
963
965
  updated_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
964
966
  };
965
967
  ["FreeDecisionDocument"]: AliasType<{
@@ -2454,6 +2456,7 @@ type ResolverInputTypes = {
2454
2456
  totalPages?: boolean | `@${string}`;
2455
2457
  __typename?: boolean | `@${string}`;
2456
2458
  }>;
2459
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
2457
2460
  ["ActDetail"]: AliasType<{
2458
2461
  action?: ResolverInputTypes["ExtendedBlockchainAction"];
2459
2462
  document?: ResolverInputTypes["GeneratedDocument"];
@@ -3105,15 +3108,15 @@ type ResolverInputTypes = {
3105
3108
  __typename?: boolean | `@${string}`;
3106
3109
  }>;
3107
3110
  ["ExtensionInput"]: {
3108
- /** Configuration settings for the extension */
3111
+ /** Объект конфигурации расширения */
3109
3112
  config: ResolverInputTypes["JSON"];
3110
- /** Timestamp of when the extension was created */
3113
+ /** Дата установки расширения */
3111
3114
  created_at?: ResolverInputTypes["DateTime"] | undefined | null;
3112
- /** Indicates whether the extension is enabled */
3115
+ /** Флаг того, включено ли расширение сейчас */
3113
3116
  enabled: boolean;
3114
- /** Unique name of the extension */
3117
+ /** Уникальное имя расширения (является идентификатором) */
3115
3118
  name: string;
3116
- /** Timestamp of the last update to the extension */
3119
+ /** Дата обновления расширения */
3117
3120
  updated_at?: ResolverInputTypes["DateTime"] | undefined | null;
3118
3121
  };
3119
3122
  ["FreeDecisionDocument"]: AliasType<{
@@ -4608,6 +4611,7 @@ type ModelTypes = {
4608
4611
  /** Общее количество страниц */
4609
4612
  totalPages: number;
4610
4613
  };
4614
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
4611
4615
  ["ActDetail"]: {
4612
4616
  action?: ModelTypes["ExtendedBlockchainAction"] | undefined | null;
4613
4617
  document?: ModelTypes["GeneratedDocument"] | undefined | null;
@@ -5229,15 +5233,15 @@ type ModelTypes = {
5229
5233
  updated_at: ModelTypes["DateTime"];
5230
5234
  };
5231
5235
  ["ExtensionInput"]: {
5232
- /** Configuration settings for the extension */
5236
+ /** Объект конфигурации расширения */
5233
5237
  config: ModelTypes["JSON"];
5234
- /** Timestamp of when the extension was created */
5238
+ /** Дата установки расширения */
5235
5239
  created_at?: ModelTypes["DateTime"] | undefined | null;
5236
- /** Indicates whether the extension is enabled */
5240
+ /** Флаг того, включено ли расширение сейчас */
5237
5241
  enabled: boolean;
5238
- /** Unique name of the extension */
5242
+ /** Уникальное имя расширения (является идентификатором) */
5239
5243
  name: string;
5240
- /** Timestamp of the last update to the extension */
5244
+ /** Дата обновления расширения */
5241
5245
  updated_at?: ModelTypes["DateTime"] | undefined | null;
5242
5246
  };
5243
5247
  ["FreeDecisionDocument"]: {
@@ -6613,6 +6617,7 @@ type GraphQLTypes = {
6613
6617
  /** Общее количество страниц */
6614
6618
  totalPages: number;
6615
6619
  };
6620
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
6616
6621
  ["ActDetail"]: {
6617
6622
  __typename: "ActDetail";
6618
6623
  action?: GraphQLTypes["ExtendedBlockchainAction"] | undefined | null;
@@ -7266,15 +7271,15 @@ type GraphQLTypes = {
7266
7271
  updated_at: GraphQLTypes["DateTime"];
7267
7272
  };
7268
7273
  ["ExtensionInput"]: {
7269
- /** Configuration settings for the extension */
7274
+ /** Объект конфигурации расширения */
7270
7275
  config: GraphQLTypes["JSON"];
7271
- /** Timestamp of when the extension was created */
7276
+ /** Дата установки расширения */
7272
7277
  created_at?: GraphQLTypes["DateTime"] | undefined | null;
7273
- /** Indicates whether the extension is enabled */
7278
+ /** Флаг того, включено ли расширение сейчас */
7274
7279
  enabled: boolean;
7275
- /** Unique name of the extension */
7280
+ /** Уникальное имя расширения (является идентификатором) */
7276
7281
  name: string;
7277
- /** Timestamp of the last update to the extension */
7282
+ /** Дата обновления расширения */
7278
7283
  updated_at?: GraphQLTypes["DateTime"] | undefined | null;
7279
7284
  };
7280
7285
  ["FreeDecisionDocument"]: {
@@ -9081,6 +9086,104 @@ declare namespace index$j {
9081
9086
  export type { index$j_AccountResourceInfo as AccountResourceInfo, index$j_Authority as Authority, index$j_BlockchainAccountInterface as BlockchainAccountInterface, index$j_BlockchainConfig as BlockchainConfig, index$j_ClientConnectionOptions as ClientConnectionOptions, index$j_DeserializedDescriptionOfExtension as DeserializedDescriptionOfExtension, index$j_GetInfoResult as GetInfoResult, index$j_IndexPosition as IndexPosition, index$j_KeyWeight as KeyWeight, index$j_Permission as Permission, index$j_PermissionLevel as PermissionLevel, index$j_PermissionLevelWeight as PermissionLevelWeight, index$j_RefundRequest as RefundRequest, index$j_ResourceDelegation as ResourceDelegation, index$j_ResourceOverview as ResourceOverview, index$j_WaitWeight as WaitWeight };
9082
9087
  }
9083
9088
 
9089
+ /**
9090
+ * Класс `Account` генерирует объект с именем, приватным и публичным ключами.
9091
+ *
9092
+ * @example
9093
+ * ```ts
9094
+ * const account = new Account();
9095
+ * console.log(account);
9096
+ * // {
9097
+ * // name: "abcdxyzuvwrs",
9098
+ * // privateKey: "5JxyzABC1234567890defGHIJKLMNopqRSTUV",
9099
+ * // publicKey: "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5SozEZ8i8jUBS6yX79y6"
9100
+ * // }
9101
+ * ```
9102
+ */
9103
+ declare class Account {
9104
+ username: string;
9105
+ private_key: string;
9106
+ public_key: string;
9107
+ constructor();
9108
+ /**
9109
+ * Генерирует случайное имя длиной 12 символов, состоящее только из букв.
9110
+ * @returns Случайное имя.
9111
+ */
9112
+ private static generateUsername;
9113
+ /**
9114
+ * Генерирует пару ключей (приватный и публичный) с использованием библиотеки @wharfkit/antelope.
9115
+ * @returns Объект с приватным и публичным ключами.
9116
+ */
9117
+ private static generateKeys;
9118
+ }
9119
+
9120
+ /**
9121
+ * Класс `Canvas` инкапсулирует работу с HTML5 `<canvas>`:
9122
+ * - создание и инициализация canvas внутри переданного контейнера;
9123
+ * - очистка canvas;
9124
+ * - управление процессом рисования (начало, рисование, завершение);
9125
+ * - получение содержимого (подписи) в формате base64.
9126
+ *
9127
+ * @remarks
9128
+ * Все методы и состояние рисования (координаты, флаг `drawing`) хранятся внутри класса.
9129
+ *
9130
+ * @example
9131
+ * ```ts
9132
+ * const container = document.getElementById('canvas-container') as HTMLElement
9133
+ * const myCanvas = new Canvas(container, 500, 300)
9134
+ *
9135
+ * // События мыши
9136
+ * myCanvas.canvas.addEventListener('mousedown', (e) => myCanvas.startDrawing(e))
9137
+ * myCanvas.canvas.addEventListener('mousemove', (e) => myCanvas.draw(e))
9138
+ * myCanvas.canvas.addEventListener('mouseup', () => myCanvas.endDrawing())
9139
+ *
9140
+ * // Очистка холста
9141
+ * document.getElementById('clear-btn')?.addEventListener('click', () => {
9142
+ * myCanvas.clearCanvas()
9143
+ * })
9144
+ *
9145
+ * // Получение подписи (base64)
9146
+ * document.getElementById('get-sign-btn')?.addEventListener('click', () => {
9147
+ * const signature = myCanvas.getSignature()
9148
+ * console.log('Подпись (base64):', signature)
9149
+ * })
9150
+ * ```
9151
+ */
9152
+ declare class Canvas {
9153
+ canvas: HTMLCanvasElement;
9154
+ ctx: CanvasRenderingContext2D;
9155
+ private state;
9156
+ /**
9157
+ * Создаёт элемент `<canvas>` внутри указанного контейнера.
9158
+ * @param container - HTML-элемент, внутри которого создаётся canvas.
9159
+ * @param width - Ширина canvas (по умолчанию 300).
9160
+ * @param height - Высота canvas (по умолчанию 150).
9161
+ */
9162
+ constructor(container: HTMLElement, width?: number, height?: number);
9163
+ /**
9164
+ * Полностью очищает canvas.
9165
+ */
9166
+ clearCanvas(): void;
9167
+ /**
9168
+ * Запускает процесс рисования (фиксирует начальные координаты).
9169
+ * @param e - Событие мыши или касания.
9170
+ */
9171
+ startDrawing(e: MouseEvent | TouchEvent): void;
9172
+ /**
9173
+ * Выполняет рисование линии от предыдущей точки к текущей.
9174
+ * @param e - Событие мыши или касания.
9175
+ */
9176
+ draw(e: MouseEvent | TouchEvent): void;
9177
+ /**
9178
+ * Завершает процесс рисования (drawing = false).
9179
+ */
9180
+ endDrawing(): void;
9181
+ /**
9182
+ * Возвращает текущее содержимое canvas в формате base64 (PNG).
9183
+ */
9184
+ getSignature(): string;
9185
+ }
9186
+
9084
9187
  /**
9085
9188
  * Описание класса будет здесь
9086
9189
  */
@@ -9112,10 +9215,14 @@ declare class Wallet {
9112
9215
  private createTable;
9113
9216
  }
9114
9217
 
9218
+ type Classes_Account = Account;
9219
+ declare const Classes_Account: typeof Account;
9220
+ type Classes_Canvas = Canvas;
9221
+ declare const Classes_Canvas: typeof Canvas;
9115
9222
  type Classes_Wallet = Wallet;
9116
9223
  declare const Classes_Wallet: typeof Wallet;
9117
9224
  declare namespace Classes {
9118
- export { Classes_Wallet as Wallet };
9225
+ export { Classes_Account as Account, Classes_Canvas as Canvas, Classes_Wallet as Wallet };
9119
9226
  }
9120
9227
 
9121
9228
  declare const name$J = "installExtension";
@@ -14060,7 +14167,17 @@ declare function createClient(options: ClientConnectionOptions): {
14060
14167
  getPaymentMethods: GraphQLTypes["PaymentMethodPaginationResult"];
14061
14168
  getPayments: GraphQLTypes["PaymentPaginationResult"];
14062
14169
  getSystemInfo: GraphQLTypes["SystemInfo"];
14063
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14170
+ }, Z, Omit<{
14171
+ DateTime: {
14172
+ decode: (e: unknown) => Date;
14173
+ encode: (e: unknown) => string;
14174
+ };
14175
+ }, "DateTime"> & {
14176
+ DateTime: {
14177
+ decode: (e: unknown) => Date;
14178
+ encode: (e: unknown) => string;
14179
+ };
14180
+ }>>;
14064
14181
  Mutation: <Z extends AliasType<{
14065
14182
  addParticipant?: [{
14066
14183
  data: ValueTypes["AddParticipantInput"] | Variable<any, string>;
@@ -14236,7 +14353,17 @@ declare function createClient(options: ClientConnectionOptions): {
14236
14353
  updateBankAccount: GraphQLTypes["PaymentMethod"];
14237
14354
  updateExtension: GraphQLTypes["Extension"];
14238
14355
  updateSystem: GraphQLTypes["SystemInfo"];
14239
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14356
+ }, Z, Omit<{
14357
+ DateTime: {
14358
+ decode: (e: unknown) => Date;
14359
+ encode: (e: unknown) => string;
14360
+ };
14361
+ }, "DateTime"> & {
14362
+ DateTime: {
14363
+ decode: (e: unknown) => Date;
14364
+ encode: (e: unknown) => string;
14365
+ };
14366
+ }>>;
14240
14367
  Subscription: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefinition, R extends keyof ValueTypes = GenericOperation<O>>(operation: O, graphqlOptions?: ThunderGraphQLOptions<OVERRIDESCLR> | undefined) => <Z extends ValueTypes[R]>(o: Z & { [P in keyof Z]: P extends keyof ValueTypes[R] ? Z[P] : never; }, ops?: (OperationOptions & {
14241
14368
  variables?: ExtractVariables<Z> | undefined;
14242
14369
  }) | undefined) => SubscriptionToGraphQL<Z, GraphQLTypes[R], Omit<ScalarDefinition, keyof OVERRIDESCLR> & OVERRIDESCLR>;
package/dist/index.d.mts CHANGED
@@ -50,9 +50,10 @@ declare const Gql: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefin
50
50
  variables?: Record<string, unknown>;
51
51
  }) => Promise<InputType<GraphQLTypes[R], Z, UnionOverrideKeys<ScalarDefinition, OVERRIDESCLR>>>;
52
52
  declare const ZeusScalars: SelectionFunction<ScalarCoders>;
53
+ type BaseSymbol = number | string | undefined | boolean | null;
53
54
  type ScalarsSelector<T> = {
54
55
  [X in Required<{
55
- [P in keyof T]: T[P] extends number | string | undefined | boolean ? P : never;
56
+ [P in keyof T]: T[P] extends BaseSymbol | Array<BaseSymbol> ? P : never;
56
57
  }>[keyof T]]: true;
57
58
  };
58
59
  declare const fields: <T extends keyof ModelTypes>(k: T) => ScalarsSelector<ModelTypes[T]>;
@@ -300,6 +301,7 @@ type ValueTypes = {
300
301
  totalPages?: boolean | `@${string}`;
301
302
  __typename?: boolean | `@${string}`;
302
303
  }>;
304
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
303
305
  ["ActDetail"]: AliasType<{
304
306
  action?: ValueTypes["ExtendedBlockchainAction"];
305
307
  document?: ValueTypes["GeneratedDocument"];
@@ -951,15 +953,15 @@ type ValueTypes = {
951
953
  __typename?: boolean | `@${string}`;
952
954
  }>;
953
955
  ["ExtensionInput"]: {
954
- /** Configuration settings for the extension */
956
+ /** Объект конфигурации расширения */
955
957
  config: ValueTypes["JSON"] | Variable<any, string>;
956
- /** Timestamp of when the extension was created */
958
+ /** Дата установки расширения */
957
959
  created_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
958
- /** Indicates whether the extension is enabled */
960
+ /** Флаг того, включено ли расширение сейчас */
959
961
  enabled: boolean | Variable<any, string>;
960
- /** Unique name of the extension */
962
+ /** Уникальное имя расширения (является идентификатором) */
961
963
  name: string | Variable<any, string>;
962
- /** Timestamp of the last update to the extension */
964
+ /** Дата обновления расширения */
963
965
  updated_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
964
966
  };
965
967
  ["FreeDecisionDocument"]: AliasType<{
@@ -2454,6 +2456,7 @@ type ResolverInputTypes = {
2454
2456
  totalPages?: boolean | `@${string}`;
2455
2457
  __typename?: boolean | `@${string}`;
2456
2458
  }>;
2459
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
2457
2460
  ["ActDetail"]: AliasType<{
2458
2461
  action?: ResolverInputTypes["ExtendedBlockchainAction"];
2459
2462
  document?: ResolverInputTypes["GeneratedDocument"];
@@ -3105,15 +3108,15 @@ type ResolverInputTypes = {
3105
3108
  __typename?: boolean | `@${string}`;
3106
3109
  }>;
3107
3110
  ["ExtensionInput"]: {
3108
- /** Configuration settings for the extension */
3111
+ /** Объект конфигурации расширения */
3109
3112
  config: ResolverInputTypes["JSON"];
3110
- /** Timestamp of when the extension was created */
3113
+ /** Дата установки расширения */
3111
3114
  created_at?: ResolverInputTypes["DateTime"] | undefined | null;
3112
- /** Indicates whether the extension is enabled */
3115
+ /** Флаг того, включено ли расширение сейчас */
3113
3116
  enabled: boolean;
3114
- /** Unique name of the extension */
3117
+ /** Уникальное имя расширения (является идентификатором) */
3115
3118
  name: string;
3116
- /** Timestamp of the last update to the extension */
3119
+ /** Дата обновления расширения */
3117
3120
  updated_at?: ResolverInputTypes["DateTime"] | undefined | null;
3118
3121
  };
3119
3122
  ["FreeDecisionDocument"]: AliasType<{
@@ -4608,6 +4611,7 @@ type ModelTypes = {
4608
4611
  /** Общее количество страниц */
4609
4612
  totalPages: number;
4610
4613
  };
4614
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
4611
4615
  ["ActDetail"]: {
4612
4616
  action?: ModelTypes["ExtendedBlockchainAction"] | undefined | null;
4613
4617
  document?: ModelTypes["GeneratedDocument"] | undefined | null;
@@ -5229,15 +5233,15 @@ type ModelTypes = {
5229
5233
  updated_at: ModelTypes["DateTime"];
5230
5234
  };
5231
5235
  ["ExtensionInput"]: {
5232
- /** Configuration settings for the extension */
5236
+ /** Объект конфигурации расширения */
5233
5237
  config: ModelTypes["JSON"];
5234
- /** Timestamp of when the extension was created */
5238
+ /** Дата установки расширения */
5235
5239
  created_at?: ModelTypes["DateTime"] | undefined | null;
5236
- /** Indicates whether the extension is enabled */
5240
+ /** Флаг того, включено ли расширение сейчас */
5237
5241
  enabled: boolean;
5238
- /** Unique name of the extension */
5242
+ /** Уникальное имя расширения (является идентификатором) */
5239
5243
  name: string;
5240
- /** Timestamp of the last update to the extension */
5244
+ /** Дата обновления расширения */
5241
5245
  updated_at?: ModelTypes["DateTime"] | undefined | null;
5242
5246
  };
5243
5247
  ["FreeDecisionDocument"]: {
@@ -6613,6 +6617,7 @@ type GraphQLTypes = {
6613
6617
  /** Общее количество страниц */
6614
6618
  totalPages: number;
6615
6619
  };
6620
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
6616
6621
  ["ActDetail"]: {
6617
6622
  __typename: "ActDetail";
6618
6623
  action?: GraphQLTypes["ExtendedBlockchainAction"] | undefined | null;
@@ -7266,15 +7271,15 @@ type GraphQLTypes = {
7266
7271
  updated_at: GraphQLTypes["DateTime"];
7267
7272
  };
7268
7273
  ["ExtensionInput"]: {
7269
- /** Configuration settings for the extension */
7274
+ /** Объект конфигурации расширения */
7270
7275
  config: GraphQLTypes["JSON"];
7271
- /** Timestamp of when the extension was created */
7276
+ /** Дата установки расширения */
7272
7277
  created_at?: GraphQLTypes["DateTime"] | undefined | null;
7273
- /** Indicates whether the extension is enabled */
7278
+ /** Флаг того, включено ли расширение сейчас */
7274
7279
  enabled: boolean;
7275
- /** Unique name of the extension */
7280
+ /** Уникальное имя расширения (является идентификатором) */
7276
7281
  name: string;
7277
- /** Timestamp of the last update to the extension */
7282
+ /** Дата обновления расширения */
7278
7283
  updated_at?: GraphQLTypes["DateTime"] | undefined | null;
7279
7284
  };
7280
7285
  ["FreeDecisionDocument"]: {
@@ -9081,6 +9086,104 @@ declare namespace index$j {
9081
9086
  export type { index$j_AccountResourceInfo as AccountResourceInfo, index$j_Authority as Authority, index$j_BlockchainAccountInterface as BlockchainAccountInterface, index$j_BlockchainConfig as BlockchainConfig, index$j_ClientConnectionOptions as ClientConnectionOptions, index$j_DeserializedDescriptionOfExtension as DeserializedDescriptionOfExtension, index$j_GetInfoResult as GetInfoResult, index$j_IndexPosition as IndexPosition, index$j_KeyWeight as KeyWeight, index$j_Permission as Permission, index$j_PermissionLevel as PermissionLevel, index$j_PermissionLevelWeight as PermissionLevelWeight, index$j_RefundRequest as RefundRequest, index$j_ResourceDelegation as ResourceDelegation, index$j_ResourceOverview as ResourceOverview, index$j_WaitWeight as WaitWeight };
9082
9087
  }
9083
9088
 
9089
+ /**
9090
+ * Класс `Account` генерирует объект с именем, приватным и публичным ключами.
9091
+ *
9092
+ * @example
9093
+ * ```ts
9094
+ * const account = new Account();
9095
+ * console.log(account);
9096
+ * // {
9097
+ * // name: "abcdxyzuvwrs",
9098
+ * // privateKey: "5JxyzABC1234567890defGHIJKLMNopqRSTUV",
9099
+ * // publicKey: "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5SozEZ8i8jUBS6yX79y6"
9100
+ * // }
9101
+ * ```
9102
+ */
9103
+ declare class Account {
9104
+ username: string;
9105
+ private_key: string;
9106
+ public_key: string;
9107
+ constructor();
9108
+ /**
9109
+ * Генерирует случайное имя длиной 12 символов, состоящее только из букв.
9110
+ * @returns Случайное имя.
9111
+ */
9112
+ private static generateUsername;
9113
+ /**
9114
+ * Генерирует пару ключей (приватный и публичный) с использованием библиотеки @wharfkit/antelope.
9115
+ * @returns Объект с приватным и публичным ключами.
9116
+ */
9117
+ private static generateKeys;
9118
+ }
9119
+
9120
+ /**
9121
+ * Класс `Canvas` инкапсулирует работу с HTML5 `<canvas>`:
9122
+ * - создание и инициализация canvas внутри переданного контейнера;
9123
+ * - очистка canvas;
9124
+ * - управление процессом рисования (начало, рисование, завершение);
9125
+ * - получение содержимого (подписи) в формате base64.
9126
+ *
9127
+ * @remarks
9128
+ * Все методы и состояние рисования (координаты, флаг `drawing`) хранятся внутри класса.
9129
+ *
9130
+ * @example
9131
+ * ```ts
9132
+ * const container = document.getElementById('canvas-container') as HTMLElement
9133
+ * const myCanvas = new Canvas(container, 500, 300)
9134
+ *
9135
+ * // События мыши
9136
+ * myCanvas.canvas.addEventListener('mousedown', (e) => myCanvas.startDrawing(e))
9137
+ * myCanvas.canvas.addEventListener('mousemove', (e) => myCanvas.draw(e))
9138
+ * myCanvas.canvas.addEventListener('mouseup', () => myCanvas.endDrawing())
9139
+ *
9140
+ * // Очистка холста
9141
+ * document.getElementById('clear-btn')?.addEventListener('click', () => {
9142
+ * myCanvas.clearCanvas()
9143
+ * })
9144
+ *
9145
+ * // Получение подписи (base64)
9146
+ * document.getElementById('get-sign-btn')?.addEventListener('click', () => {
9147
+ * const signature = myCanvas.getSignature()
9148
+ * console.log('Подпись (base64):', signature)
9149
+ * })
9150
+ * ```
9151
+ */
9152
+ declare class Canvas {
9153
+ canvas: HTMLCanvasElement;
9154
+ ctx: CanvasRenderingContext2D;
9155
+ private state;
9156
+ /**
9157
+ * Создаёт элемент `<canvas>` внутри указанного контейнера.
9158
+ * @param container - HTML-элемент, внутри которого создаётся canvas.
9159
+ * @param width - Ширина canvas (по умолчанию 300).
9160
+ * @param height - Высота canvas (по умолчанию 150).
9161
+ */
9162
+ constructor(container: HTMLElement, width?: number, height?: number);
9163
+ /**
9164
+ * Полностью очищает canvas.
9165
+ */
9166
+ clearCanvas(): void;
9167
+ /**
9168
+ * Запускает процесс рисования (фиксирует начальные координаты).
9169
+ * @param e - Событие мыши или касания.
9170
+ */
9171
+ startDrawing(e: MouseEvent | TouchEvent): void;
9172
+ /**
9173
+ * Выполняет рисование линии от предыдущей точки к текущей.
9174
+ * @param e - Событие мыши или касания.
9175
+ */
9176
+ draw(e: MouseEvent | TouchEvent): void;
9177
+ /**
9178
+ * Завершает процесс рисования (drawing = false).
9179
+ */
9180
+ endDrawing(): void;
9181
+ /**
9182
+ * Возвращает текущее содержимое canvas в формате base64 (PNG).
9183
+ */
9184
+ getSignature(): string;
9185
+ }
9186
+
9084
9187
  /**
9085
9188
  * Описание класса будет здесь
9086
9189
  */
@@ -9112,10 +9215,14 @@ declare class Wallet {
9112
9215
  private createTable;
9113
9216
  }
9114
9217
 
9218
+ type Classes_Account = Account;
9219
+ declare const Classes_Account: typeof Account;
9220
+ type Classes_Canvas = Canvas;
9221
+ declare const Classes_Canvas: typeof Canvas;
9115
9222
  type Classes_Wallet = Wallet;
9116
9223
  declare const Classes_Wallet: typeof Wallet;
9117
9224
  declare namespace Classes {
9118
- export { Classes_Wallet as Wallet };
9225
+ export { Classes_Account as Account, Classes_Canvas as Canvas, Classes_Wallet as Wallet };
9119
9226
  }
9120
9227
 
9121
9228
  declare const name$J = "installExtension";
@@ -14060,7 +14167,17 @@ declare function createClient(options: ClientConnectionOptions): {
14060
14167
  getPaymentMethods: GraphQLTypes["PaymentMethodPaginationResult"];
14061
14168
  getPayments: GraphQLTypes["PaymentPaginationResult"];
14062
14169
  getSystemInfo: GraphQLTypes["SystemInfo"];
14063
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14170
+ }, Z, Omit<{
14171
+ DateTime: {
14172
+ decode: (e: unknown) => Date;
14173
+ encode: (e: unknown) => string;
14174
+ };
14175
+ }, "DateTime"> & {
14176
+ DateTime: {
14177
+ decode: (e: unknown) => Date;
14178
+ encode: (e: unknown) => string;
14179
+ };
14180
+ }>>;
14064
14181
  Mutation: <Z extends AliasType<{
14065
14182
  addParticipant?: [{
14066
14183
  data: ValueTypes["AddParticipantInput"] | Variable<any, string>;
@@ -14236,7 +14353,17 @@ declare function createClient(options: ClientConnectionOptions): {
14236
14353
  updateBankAccount: GraphQLTypes["PaymentMethod"];
14237
14354
  updateExtension: GraphQLTypes["Extension"];
14238
14355
  updateSystem: GraphQLTypes["SystemInfo"];
14239
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14356
+ }, Z, Omit<{
14357
+ DateTime: {
14358
+ decode: (e: unknown) => Date;
14359
+ encode: (e: unknown) => string;
14360
+ };
14361
+ }, "DateTime"> & {
14362
+ DateTime: {
14363
+ decode: (e: unknown) => Date;
14364
+ encode: (e: unknown) => string;
14365
+ };
14366
+ }>>;
14240
14367
  Subscription: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefinition, R extends keyof ValueTypes = GenericOperation<O>>(operation: O, graphqlOptions?: ThunderGraphQLOptions<OVERRIDESCLR> | undefined) => <Z extends ValueTypes[R]>(o: Z & { [P in keyof Z]: P extends keyof ValueTypes[R] ? Z[P] : never; }, ops?: (OperationOptions & {
14241
14368
  variables?: ExtractVariables<Z> | undefined;
14242
14369
  }) | undefined) => SubscriptionToGraphQL<Z, GraphQLTypes[R], Omit<ScalarDefinition, keyof OVERRIDESCLR> & OVERRIDESCLR>;
package/dist/index.d.ts CHANGED
@@ -50,9 +50,10 @@ declare const Gql: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefin
50
50
  variables?: Record<string, unknown>;
51
51
  }) => Promise<InputType<GraphQLTypes[R], Z, UnionOverrideKeys<ScalarDefinition, OVERRIDESCLR>>>;
52
52
  declare const ZeusScalars: SelectionFunction<ScalarCoders>;
53
+ type BaseSymbol = number | string | undefined | boolean | null;
53
54
  type ScalarsSelector<T> = {
54
55
  [X in Required<{
55
- [P in keyof T]: T[P] extends number | string | undefined | boolean ? P : never;
56
+ [P in keyof T]: T[P] extends BaseSymbol | Array<BaseSymbol> ? P : never;
56
57
  }>[keyof T]]: true;
57
58
  };
58
59
  declare const fields: <T extends keyof ModelTypes>(k: T) => ScalarsSelector<ModelTypes[T]>;
@@ -300,6 +301,7 @@ type ValueTypes = {
300
301
  totalPages?: boolean | `@${string}`;
301
302
  __typename?: boolean | `@${string}`;
302
303
  }>;
304
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
303
305
  ["ActDetail"]: AliasType<{
304
306
  action?: ValueTypes["ExtendedBlockchainAction"];
305
307
  document?: ValueTypes["GeneratedDocument"];
@@ -951,15 +953,15 @@ type ValueTypes = {
951
953
  __typename?: boolean | `@${string}`;
952
954
  }>;
953
955
  ["ExtensionInput"]: {
954
- /** Configuration settings for the extension */
956
+ /** Объект конфигурации расширения */
955
957
  config: ValueTypes["JSON"] | Variable<any, string>;
956
- /** Timestamp of when the extension was created */
958
+ /** Дата установки расширения */
957
959
  created_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
958
- /** Indicates whether the extension is enabled */
960
+ /** Флаг того, включено ли расширение сейчас */
959
961
  enabled: boolean | Variable<any, string>;
960
- /** Unique name of the extension */
962
+ /** Уникальное имя расширения (является идентификатором) */
961
963
  name: string | Variable<any, string>;
962
- /** Timestamp of the last update to the extension */
964
+ /** Дата обновления расширения */
963
965
  updated_at?: ValueTypes["DateTime"] | undefined | null | Variable<any, string>;
964
966
  };
965
967
  ["FreeDecisionDocument"]: AliasType<{
@@ -2454,6 +2456,7 @@ type ResolverInputTypes = {
2454
2456
  totalPages?: boolean | `@${string}`;
2455
2457
  __typename?: boolean | `@${string}`;
2456
2458
  }>;
2459
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
2457
2460
  ["ActDetail"]: AliasType<{
2458
2461
  action?: ResolverInputTypes["ExtendedBlockchainAction"];
2459
2462
  document?: ResolverInputTypes["GeneratedDocument"];
@@ -3105,15 +3108,15 @@ type ResolverInputTypes = {
3105
3108
  __typename?: boolean | `@${string}`;
3106
3109
  }>;
3107
3110
  ["ExtensionInput"]: {
3108
- /** Configuration settings for the extension */
3111
+ /** Объект конфигурации расширения */
3109
3112
  config: ResolverInputTypes["JSON"];
3110
- /** Timestamp of when the extension was created */
3113
+ /** Дата установки расширения */
3111
3114
  created_at?: ResolverInputTypes["DateTime"] | undefined | null;
3112
- /** Indicates whether the extension is enabled */
3115
+ /** Флаг того, включено ли расширение сейчас */
3113
3116
  enabled: boolean;
3114
- /** Unique name of the extension */
3117
+ /** Уникальное имя расширения (является идентификатором) */
3115
3118
  name: string;
3116
- /** Timestamp of the last update to the extension */
3119
+ /** Дата обновления расширения */
3117
3120
  updated_at?: ResolverInputTypes["DateTime"] | undefined | null;
3118
3121
  };
3119
3122
  ["FreeDecisionDocument"]: AliasType<{
@@ -4608,6 +4611,7 @@ type ModelTypes = {
4608
4611
  /** Общее количество страниц */
4609
4612
  totalPages: number;
4610
4613
  };
4614
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
4611
4615
  ["ActDetail"]: {
4612
4616
  action?: ModelTypes["ExtendedBlockchainAction"] | undefined | null;
4613
4617
  document?: ModelTypes["GeneratedDocument"] | undefined | null;
@@ -5229,15 +5233,15 @@ type ModelTypes = {
5229
5233
  updated_at: ModelTypes["DateTime"];
5230
5234
  };
5231
5235
  ["ExtensionInput"]: {
5232
- /** Configuration settings for the extension */
5236
+ /** Объект конфигурации расширения */
5233
5237
  config: ModelTypes["JSON"];
5234
- /** Timestamp of when the extension was created */
5238
+ /** Дата установки расширения */
5235
5239
  created_at?: ModelTypes["DateTime"] | undefined | null;
5236
- /** Indicates whether the extension is enabled */
5240
+ /** Флаг того, включено ли расширение сейчас */
5237
5241
  enabled: boolean;
5238
- /** Unique name of the extension */
5242
+ /** Уникальное имя расширения (является идентификатором) */
5239
5243
  name: string;
5240
- /** Timestamp of the last update to the extension */
5244
+ /** Дата обновления расширения */
5241
5245
  updated_at?: ModelTypes["DateTime"] | undefined | null;
5242
5246
  };
5243
5247
  ["FreeDecisionDocument"]: {
@@ -6613,6 +6617,7 @@ type GraphQLTypes = {
6613
6617
  /** Общее количество страниц */
6614
6618
  totalPages: number;
6615
6619
  };
6620
+ /** Массив комплексных актов, содержащих полную информацию о сгенерированном и опубликованном документах */
6616
6621
  ["ActDetail"]: {
6617
6622
  __typename: "ActDetail";
6618
6623
  action?: GraphQLTypes["ExtendedBlockchainAction"] | undefined | null;
@@ -7266,15 +7271,15 @@ type GraphQLTypes = {
7266
7271
  updated_at: GraphQLTypes["DateTime"];
7267
7272
  };
7268
7273
  ["ExtensionInput"]: {
7269
- /** Configuration settings for the extension */
7274
+ /** Объект конфигурации расширения */
7270
7275
  config: GraphQLTypes["JSON"];
7271
- /** Timestamp of when the extension was created */
7276
+ /** Дата установки расширения */
7272
7277
  created_at?: GraphQLTypes["DateTime"] | undefined | null;
7273
- /** Indicates whether the extension is enabled */
7278
+ /** Флаг того, включено ли расширение сейчас */
7274
7279
  enabled: boolean;
7275
- /** Unique name of the extension */
7280
+ /** Уникальное имя расширения (является идентификатором) */
7276
7281
  name: string;
7277
- /** Timestamp of the last update to the extension */
7282
+ /** Дата обновления расширения */
7278
7283
  updated_at?: GraphQLTypes["DateTime"] | undefined | null;
7279
7284
  };
7280
7285
  ["FreeDecisionDocument"]: {
@@ -9081,6 +9086,104 @@ declare namespace index$j {
9081
9086
  export type { index$j_AccountResourceInfo as AccountResourceInfo, index$j_Authority as Authority, index$j_BlockchainAccountInterface as BlockchainAccountInterface, index$j_BlockchainConfig as BlockchainConfig, index$j_ClientConnectionOptions as ClientConnectionOptions, index$j_DeserializedDescriptionOfExtension as DeserializedDescriptionOfExtension, index$j_GetInfoResult as GetInfoResult, index$j_IndexPosition as IndexPosition, index$j_KeyWeight as KeyWeight, index$j_Permission as Permission, index$j_PermissionLevel as PermissionLevel, index$j_PermissionLevelWeight as PermissionLevelWeight, index$j_RefundRequest as RefundRequest, index$j_ResourceDelegation as ResourceDelegation, index$j_ResourceOverview as ResourceOverview, index$j_WaitWeight as WaitWeight };
9082
9087
  }
9083
9088
 
9089
+ /**
9090
+ * Класс `Account` генерирует объект с именем, приватным и публичным ключами.
9091
+ *
9092
+ * @example
9093
+ * ```ts
9094
+ * const account = new Account();
9095
+ * console.log(account);
9096
+ * // {
9097
+ * // name: "abcdxyzuvwrs",
9098
+ * // privateKey: "5JxyzABC1234567890defGHIJKLMNopqRSTUV",
9099
+ * // publicKey: "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5SozEZ8i8jUBS6yX79y6"
9100
+ * // }
9101
+ * ```
9102
+ */
9103
+ declare class Account {
9104
+ username: string;
9105
+ private_key: string;
9106
+ public_key: string;
9107
+ constructor();
9108
+ /**
9109
+ * Генерирует случайное имя длиной 12 символов, состоящее только из букв.
9110
+ * @returns Случайное имя.
9111
+ */
9112
+ private static generateUsername;
9113
+ /**
9114
+ * Генерирует пару ключей (приватный и публичный) с использованием библиотеки @wharfkit/antelope.
9115
+ * @returns Объект с приватным и публичным ключами.
9116
+ */
9117
+ private static generateKeys;
9118
+ }
9119
+
9120
+ /**
9121
+ * Класс `Canvas` инкапсулирует работу с HTML5 `<canvas>`:
9122
+ * - создание и инициализация canvas внутри переданного контейнера;
9123
+ * - очистка canvas;
9124
+ * - управление процессом рисования (начало, рисование, завершение);
9125
+ * - получение содержимого (подписи) в формате base64.
9126
+ *
9127
+ * @remarks
9128
+ * Все методы и состояние рисования (координаты, флаг `drawing`) хранятся внутри класса.
9129
+ *
9130
+ * @example
9131
+ * ```ts
9132
+ * const container = document.getElementById('canvas-container') as HTMLElement
9133
+ * const myCanvas = new Canvas(container, 500, 300)
9134
+ *
9135
+ * // События мыши
9136
+ * myCanvas.canvas.addEventListener('mousedown', (e) => myCanvas.startDrawing(e))
9137
+ * myCanvas.canvas.addEventListener('mousemove', (e) => myCanvas.draw(e))
9138
+ * myCanvas.canvas.addEventListener('mouseup', () => myCanvas.endDrawing())
9139
+ *
9140
+ * // Очистка холста
9141
+ * document.getElementById('clear-btn')?.addEventListener('click', () => {
9142
+ * myCanvas.clearCanvas()
9143
+ * })
9144
+ *
9145
+ * // Получение подписи (base64)
9146
+ * document.getElementById('get-sign-btn')?.addEventListener('click', () => {
9147
+ * const signature = myCanvas.getSignature()
9148
+ * console.log('Подпись (base64):', signature)
9149
+ * })
9150
+ * ```
9151
+ */
9152
+ declare class Canvas {
9153
+ canvas: HTMLCanvasElement;
9154
+ ctx: CanvasRenderingContext2D;
9155
+ private state;
9156
+ /**
9157
+ * Создаёт элемент `<canvas>` внутри указанного контейнера.
9158
+ * @param container - HTML-элемент, внутри которого создаётся canvas.
9159
+ * @param width - Ширина canvas (по умолчанию 300).
9160
+ * @param height - Высота canvas (по умолчанию 150).
9161
+ */
9162
+ constructor(container: HTMLElement, width?: number, height?: number);
9163
+ /**
9164
+ * Полностью очищает canvas.
9165
+ */
9166
+ clearCanvas(): void;
9167
+ /**
9168
+ * Запускает процесс рисования (фиксирует начальные координаты).
9169
+ * @param e - Событие мыши или касания.
9170
+ */
9171
+ startDrawing(e: MouseEvent | TouchEvent): void;
9172
+ /**
9173
+ * Выполняет рисование линии от предыдущей точки к текущей.
9174
+ * @param e - Событие мыши или касания.
9175
+ */
9176
+ draw(e: MouseEvent | TouchEvent): void;
9177
+ /**
9178
+ * Завершает процесс рисования (drawing = false).
9179
+ */
9180
+ endDrawing(): void;
9181
+ /**
9182
+ * Возвращает текущее содержимое canvas в формате base64 (PNG).
9183
+ */
9184
+ getSignature(): string;
9185
+ }
9186
+
9084
9187
  /**
9085
9188
  * Описание класса будет здесь
9086
9189
  */
@@ -9112,10 +9215,14 @@ declare class Wallet {
9112
9215
  private createTable;
9113
9216
  }
9114
9217
 
9218
+ type Classes_Account = Account;
9219
+ declare const Classes_Account: typeof Account;
9220
+ type Classes_Canvas = Canvas;
9221
+ declare const Classes_Canvas: typeof Canvas;
9115
9222
  type Classes_Wallet = Wallet;
9116
9223
  declare const Classes_Wallet: typeof Wallet;
9117
9224
  declare namespace Classes {
9118
- export { Classes_Wallet as Wallet };
9225
+ export { Classes_Account as Account, Classes_Canvas as Canvas, Classes_Wallet as Wallet };
9119
9226
  }
9120
9227
 
9121
9228
  declare const name$J = "installExtension";
@@ -14060,7 +14167,17 @@ declare function createClient(options: ClientConnectionOptions): {
14060
14167
  getPaymentMethods: GraphQLTypes["PaymentMethodPaginationResult"];
14061
14168
  getPayments: GraphQLTypes["PaymentPaginationResult"];
14062
14169
  getSystemInfo: GraphQLTypes["SystemInfo"];
14063
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14170
+ }, Z, Omit<{
14171
+ DateTime: {
14172
+ decode: (e: unknown) => Date;
14173
+ encode: (e: unknown) => string;
14174
+ };
14175
+ }, "DateTime"> & {
14176
+ DateTime: {
14177
+ decode: (e: unknown) => Date;
14178
+ encode: (e: unknown) => string;
14179
+ };
14180
+ }>>;
14064
14181
  Mutation: <Z extends AliasType<{
14065
14182
  addParticipant?: [{
14066
14183
  data: ValueTypes["AddParticipantInput"] | Variable<any, string>;
@@ -14236,7 +14353,17 @@ declare function createClient(options: ClientConnectionOptions): {
14236
14353
  updateBankAccount: GraphQLTypes["PaymentMethod"];
14237
14354
  updateExtension: GraphQLTypes["Extension"];
14238
14355
  updateSystem: GraphQLTypes["SystemInfo"];
14239
- }, Z, Omit<ScalarDefinition, string> & ScalarDefinition>>;
14356
+ }, Z, Omit<{
14357
+ DateTime: {
14358
+ decode: (e: unknown) => Date;
14359
+ encode: (e: unknown) => string;
14360
+ };
14361
+ }, "DateTime"> & {
14362
+ DateTime: {
14363
+ decode: (e: unknown) => Date;
14364
+ encode: (e: unknown) => string;
14365
+ };
14366
+ }>>;
14240
14367
  Subscription: <O extends keyof typeof Ops, OVERRIDESCLR extends ScalarDefinition, R extends keyof ValueTypes = GenericOperation<O>>(operation: O, graphqlOptions?: ThunderGraphQLOptions<OVERRIDESCLR> | undefined) => <Z extends ValueTypes[R]>(o: Z & { [P in keyof Z]: P extends keyof ValueTypes[R] ? Z[P] : never; }, ops?: (OperationOptions & {
14241
14368
  variables?: ExtractVariables<Z> | undefined;
14242
14369
  }) | undefined) => SubscriptionToGraphQL<Z, GraphQLTypes[R], Omit<ScalarDefinition, keyof OVERRIDESCLR> & OVERRIDESCLR>;
package/dist/index.mjs CHANGED
@@ -1,10 +1,137 @@
1
1
  import { Session, PrivateKey as PrivateKey$1, Bytes, Checksum256 } from '@wharfkit/session';
2
2
  import WebSocket from 'isomorphic-ws';
3
- import { APIClient, PrivateKey, Action } from '@wharfkit/antelope';
3
+ import { PrivateKey, APIClient, Action } from '@wharfkit/antelope';
4
4
  import { ContractKit, Table } from '@wharfkit/contract';
5
5
  import { WalletPluginPrivateKey } from '@wharfkit/wallet-plugin-privatekey';
6
6
  import { createClient as createClient$1 } from 'graphql-ws';
7
7
 
8
+ var __defProp$2 = Object.defineProperty;
9
+ var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __publicField$2 = (obj, key, value) => {
11
+ __defNormalProp$2(obj, typeof key !== "symbol" ? key + "" : key, value);
12
+ return value;
13
+ };
14
+ class Account {
15
+ constructor() {
16
+ __publicField$2(this, "username");
17
+ __publicField$2(this, "private_key");
18
+ __publicField$2(this, "public_key");
19
+ this.username = Account.generateUsername();
20
+ const keys = Account.generateKeys();
21
+ this.private_key = keys.private_key;
22
+ this.public_key = keys.public_key;
23
+ }
24
+ /**
25
+ * Генерирует случайное имя длиной 12 символов, состоящее только из букв.
26
+ * @returns Случайное имя.
27
+ */
28
+ static generateUsername() {
29
+ let result = "";
30
+ const possible = "abcdefghijklmnopqrstuvwxyz";
31
+ for (let i = 0; i < 12; i++) {
32
+ result += possible.charAt(Math.floor(Math.random() * possible.length));
33
+ }
34
+ return result;
35
+ }
36
+ /**
37
+ * Генерирует пару ключей (приватный и публичный) с использованием библиотеки @wharfkit/antelope.
38
+ * @returns Объект с приватным и публичным ключами.
39
+ */
40
+ static generateKeys() {
41
+ const private_key_data = PrivateKey.generate("K1");
42
+ const public_key = private_key_data.toPublic().toString();
43
+ const private_key = private_key_data.toWif();
44
+ return {
45
+ private_key,
46
+ public_key
47
+ };
48
+ }
49
+ }
50
+
51
+ var __defProp$1 = Object.defineProperty;
52
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
53
+ var __publicField$1 = (obj, key, value) => {
54
+ __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
55
+ return value;
56
+ };
57
+ class Canvas {
58
+ /**
59
+ * Создаёт элемент `<canvas>` внутри указанного контейнера.
60
+ * @param container - HTML-элемент, внутри которого создаётся canvas.
61
+ * @param width - Ширина canvas (по умолчанию 300).
62
+ * @param height - Высота canvas (по умолчанию 150).
63
+ */
64
+ constructor(container, width = 300, height = 150) {
65
+ __publicField$1(this, "canvas");
66
+ __publicField$1(this, "ctx");
67
+ __publicField$1(this, "state", {
68
+ drawing: false,
69
+ lastX: 0,
70
+ lastY: 0
71
+ });
72
+ this.canvas = document.createElement("canvas");
73
+ this.canvas.width = width;
74
+ this.canvas.height = height;
75
+ container.appendChild(this.canvas);
76
+ this.ctx = this.canvas.getContext("2d");
77
+ this.ctx.lineWidth = 5;
78
+ this.ctx.lineJoin = "round";
79
+ this.ctx.lineCap = "round";
80
+ this.ctx.strokeStyle = "#000";
81
+ }
82
+ /**
83
+ * Полностью очищает canvas.
84
+ */
85
+ clearCanvas() {
86
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
87
+ }
88
+ /**
89
+ * Запускает процесс рисования (фиксирует начальные координаты).
90
+ * @param e - Событие мыши или касания.
91
+ */
92
+ startDrawing(e) {
93
+ e.preventDefault();
94
+ this.state.drawing = true;
95
+ const rect = this.canvas.getBoundingClientRect();
96
+ const clientX = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX;
97
+ const clientY = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;
98
+ this.state.lastX = clientX - rect.left;
99
+ this.state.lastY = clientY - rect.top;
100
+ }
101
+ /**
102
+ * Выполняет рисование линии от предыдущей точки к текущей.
103
+ * @param e - Событие мыши или касания.
104
+ */
105
+ draw(e) {
106
+ if (!this.state.drawing)
107
+ return;
108
+ e.preventDefault();
109
+ this.ctx.beginPath();
110
+ this.ctx.moveTo(this.state.lastX, this.state.lastY);
111
+ const rect = this.canvas.getBoundingClientRect();
112
+ const clientX = e instanceof MouseEvent ? e.clientX : e.touches[0].clientX;
113
+ const clientY = e instanceof MouseEvent ? e.clientY : e.touches[0].clientY;
114
+ const x = clientX - rect.left;
115
+ const y = clientY - rect.top;
116
+ this.ctx.lineTo(x, y);
117
+ this.ctx.stroke();
118
+ this.state.lastX = x;
119
+ this.state.lastY = y;
120
+ }
121
+ /**
122
+ * Завершает процесс рисования (drawing = false).
123
+ */
124
+ endDrawing() {
125
+ this.state.drawing = false;
126
+ }
127
+ /**
128
+ * Возвращает текущее содержимое canvas в формате base64 (PNG).
129
+ */
130
+ getSignature() {
131
+ return this.canvas.toDataURL("image/png");
132
+ }
133
+ }
134
+
8
135
  var __defProp = Object.defineProperty;
9
136
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
137
  var __publicField = (obj, key, value) => {
@@ -97,6 +224,8 @@ class Wallet {
97
224
 
98
225
  const Classes = {
99
226
  __proto__: null,
227
+ Account: Account,
228
+ Canvas: Canvas,
100
229
  Wallet: Wallet
101
230
  };
102
231
 
@@ -1367,12 +1496,22 @@ const Gql = Chain(HOST, {
1367
1496
  const ZeusScalars = ZeusSelect();
1368
1497
  const fields = (k) => {
1369
1498
  const t = ReturnTypes[k];
1499
+ const fnType = k in AllTypesProps ? AllTypesProps[k] : void 0;
1500
+ const hasFnTypes = typeof fnType === "object" ? fnType : void 0;
1370
1501
  const o = Object.fromEntries(
1371
- Object.entries(t).filter(([, value]) => {
1502
+ Object.entries(t).filter(([k2, value]) => {
1503
+ const isFunctionType = hasFnTypes && k2 in hasFnTypes && !!hasFnTypes[k2];
1504
+ if (isFunctionType)
1505
+ return false;
1372
1506
  const isReturnType = ReturnTypes[value];
1373
- if (!isReturnType || typeof isReturnType === "string" && isReturnType.startsWith("scalar.")) {
1507
+ if (!isReturnType)
1508
+ return true;
1509
+ if (typeof isReturnType !== "string")
1510
+ return false;
1511
+ if (isReturnType.startsWith("scalar.")) {
1374
1512
  return true;
1375
1513
  }
1514
+ return false;
1376
1515
  }).map(([key]) => [key, true])
1377
1516
  );
1378
1517
  return o;
@@ -3141,6 +3280,14 @@ if (typeof globalThis.WebSocket === "undefined") {
3141
3280
  globalThis.WebSocket = WebSocket;
3142
3281
  }
3143
3282
  let currentHeaders = {};
3283
+ const scalars = ZeusScalars({
3284
+ DateTime: {
3285
+ decode: (e) => new Date(e),
3286
+ // Преобразует строку в объект Date
3287
+ encode: (e) => e.toISOString()
3288
+ // Преобразует Date в ISO-строку
3289
+ }
3290
+ });
3144
3291
  function createThunder(baseUrl) {
3145
3292
  return Thunder(async (query, variables) => {
3146
3293
  const response = await fetch(baseUrl, {
@@ -3169,7 +3316,7 @@ function createThunder(baseUrl) {
3169
3316
  throw json.errors;
3170
3317
  }
3171
3318
  return json.data;
3172
- });
3319
+ }, { scalars });
3173
3320
  }
3174
3321
  function createClient(options) {
3175
3322
  currentHeaders = options.headers || {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coopenomics/sdk",
3
3
  "type": "module",
4
- "version": "2.2.2",
4
+ "version": "2.2.3",
5
5
  "private": false,
6
6
  "packageManager": "pnpm@9.9.0",
7
7
  "description": "",
@@ -74,5 +74,5 @@
74
74
  "vite": "^5.4.3",
75
75
  "vitest": "^2.0.5"
76
76
  },
77
- "gitHead": "88352202b02fd190abd2c892290cb668ba137cb8"
77
+ "gitHead": "40fb5c80eb4136e82813fd553703f4a7926166a0"
78
78
  }