@arbiwallet/contracts 1.0.25 → 1.0.27

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/gen/ledger.ts CHANGED
@@ -143,6 +143,8 @@ export interface RegisterWithdrawalResponse {
143
143
  withdrawalId: string;
144
144
  /** Текущий статус (enum строкой, см. реализацию). */
145
145
  status: string;
146
+ /** id строки ленты (WITHDRAWAL_CREATED), как в GetTransactionFeed.items[].id. */
147
+ transactionFeedItemId?: string | undefined;
146
148
  }
147
149
 
148
150
  export interface ReserveFundsRequest {
@@ -282,7 +284,7 @@ export interface GetTransactionFeedRequest {
282
284
  | string
283
285
  | undefined;
284
286
  /**
285
- * Фильтр по «типу» операции для UI: "withdrawal" | "deposit".
287
+ * Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
286
288
  * deposit включает записи reference_type deposit и deposit_hold.
287
289
  */
288
290
  referenceKind?: string | undefined;
@@ -297,6 +299,28 @@ export interface GetTransactionFeedResponse {
297
299
  totalReturned: number;
298
300
  }
299
301
 
302
+ export interface InternalTransferRequest {
303
+ fromUserId: string;
304
+ toUserId: string;
305
+ asset: string;
306
+ network: string;
307
+ /** Десятичная строка; списание с available отправителя. */
308
+ amount: string;
309
+ idempotencyKey: string;
310
+ }
311
+
312
+ export interface InternalTransferResponse {
313
+ transferId: string;
314
+ senderLedgerOperationId: string;
315
+ receiverLedgerOperationId: string;
316
+ senderAvailable: string;
317
+ senderReserved: string;
318
+ senderTotal: string;
319
+ receiverAvailable: string;
320
+ receiverReserved: string;
321
+ receiverTotal: string;
322
+ }
323
+
300
324
  export const LEDGER_V1_PACKAGE_NAME = "ledger.v1";
301
325
 
302
326
  export interface LedgerServiceClient {
@@ -351,6 +375,10 @@ export interface LedgerServiceClient {
351
375
  /** Постраничная лента операций пользователя (история для UI); курсор и offset — на усмотрение сервера. */
352
376
 
353
377
  getTransactionFeed(request: GetTransactionFeedRequest): Observable<GetTransactionFeedResponse>;
378
+
379
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
380
+
381
+ internalTransfer(request: InternalTransferRequest): Observable<InternalTransferResponse>;
354
382
  }
355
383
 
356
384
  export interface LedgerServiceController {
@@ -437,6 +465,12 @@ export interface LedgerServiceController {
437
465
  getTransactionFeed(
438
466
  request: GetTransactionFeedRequest,
439
467
  ): Promise<GetTransactionFeedResponse> | Observable<GetTransactionFeedResponse> | GetTransactionFeedResponse;
468
+
469
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
470
+
471
+ internalTransfer(
472
+ request: InternalTransferRequest,
473
+ ): Promise<InternalTransferResponse> | Observable<InternalTransferResponse> | InternalTransferResponse;
440
474
  }
441
475
 
442
476
  export function LedgerServiceControllerMethods() {
@@ -455,6 +489,7 @@ export function LedgerServiceControllerMethods() {
455
489
  "getBalance",
456
490
  "getBalances",
457
491
  "getTransactionFeed",
492
+ "internalTransfer",
458
493
  ];
459
494
  for (const method of grpcMethods) {
460
495
  const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
package/gen/user.ts CHANGED
@@ -36,23 +36,48 @@ export interface UpdateUserRequest {
36
36
  avatar?: string | undefined;
37
37
  }
38
38
 
39
+ export interface ResolveUserForTransferRequest {
40
+ userId?: number | undefined;
41
+ email?: string | undefined;
42
+ phone?: string | undefined;
43
+ telegramUsername?: string | undefined;
44
+ uid?: string | undefined;
45
+ }
46
+
47
+ export interface ResolveUserForTransferResponse {
48
+ id: number;
49
+ }
50
+
39
51
  export const USER_PACKAGE_NAME = "user";
40
52
 
41
53
  export interface UserServiceClient {
42
54
  getUser(request: GetUserRequest): Observable<UserResponse>;
43
55
 
44
56
  updateUser(request: UpdateUserRequest): Observable<UserResponse>;
57
+
58
+ /** Ровно одно из полей: user_id, email, phone, telegram_username → id получателя для внутреннего перевода. */
59
+
60
+ resolveUserForTransfer(request: ResolveUserForTransferRequest): Observable<ResolveUserForTransferResponse>;
45
61
  }
46
62
 
47
63
  export interface UserServiceController {
48
64
  getUser(request: GetUserRequest): Promise<UserResponse> | Observable<UserResponse> | UserResponse;
49
65
 
50
66
  updateUser(request: UpdateUserRequest): Promise<UserResponse> | Observable<UserResponse> | UserResponse;
67
+
68
+ /** Ровно одно из полей: user_id, email, phone, telegram_username → id получателя для внутреннего перевода. */
69
+
70
+ resolveUserForTransfer(
71
+ request: ResolveUserForTransferRequest,
72
+ ):
73
+ | Promise<ResolveUserForTransferResponse>
74
+ | Observable<ResolveUserForTransferResponse>
75
+ | ResolveUserForTransferResponse;
51
76
  }
52
77
 
53
78
  export function UserServiceControllerMethods() {
54
79
  return function (constructor: Function) {
55
- const grpcMethods: string[] = ["getUser", "updateUser"];
80
+ const grpcMethods: string[] = ["getUser", "updateUser", "resolveUserForTransfer"];
56
81
  for (const method of grpcMethods) {
57
82
  const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
58
83
  GrpcMethod("UserService", method)(constructor.prototype[method], method, descriptor);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arbiwallet/contracts",
3
3
  "descriptions": "Generate and manage smart contracts for ArbiWallet",
4
- "version": "1.0.25",
4
+ "version": "1.0.27",
5
5
  "scripts": {
6
6
  "generate": "protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen --ts_proto_opt=nestJs=true,package=omit"
7
7
  },
@@ -35,6 +35,8 @@ service LedgerService {
35
35
  rpc GetBalances(GetBalancesRequest) returns (GetBalancesResponse);
36
36
  // Постраничная лента операций пользователя (история для UI); курсор и offset — на усмотрение сервера.
37
37
  rpc GetTransactionFeed(GetTransactionFeedRequest) returns (GetTransactionFeedResponse);
38
+ // Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии).
39
+ rpc InternalTransfer(InternalTransferRequest) returns (InternalTransferResponse);
38
40
  }
39
41
 
40
42
  message RegisterDepositAddressRequest {
@@ -140,6 +142,7 @@ message RegisterWithdrawalRequest {
140
142
  message RegisterWithdrawalResponse {
141
143
  string withdrawal_id = 1; // Внутренний id вывода в ledger.
142
144
  string status = 2; // Текущий статус (enum строкой, см. реализацию).
145
+ optional string transaction_feed_item_id = 3; // id строки ленты (WITHDRAWAL_CREATED), как в GetTransactionFeed.items[].id.
143
146
  }
144
147
 
145
148
  message ReserveFundsRequest {
@@ -254,7 +257,7 @@ message GetTransactionFeedRequest {
254
257
  optional int32 offset = 4;
255
258
  optional string asset = 5; // Фильтр по активу, напр. USDT.
256
259
  optional string network = 6; // Фильтр по сети, напр. TRON, BSC.
257
- // Фильтр по «типу» операции для UI: "withdrawal" | "deposit".
260
+ // Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
258
261
  // deposit включает записи reference_type deposit и deposit_hold.
259
262
  optional string reference_kind = 7;
260
263
  }
@@ -264,3 +267,24 @@ message GetTransactionFeedResponse {
264
267
  optional string next_cursor_id = 2;
265
268
  int32 total_returned = 3; // Число элементов в этом ответе.
266
269
  }
270
+
271
+ message InternalTransferRequest {
272
+ string from_user_id = 1;
273
+ string to_user_id = 2;
274
+ string asset = 3;
275
+ string network = 4;
276
+ string amount = 5; // Десятичная строка; списание с available отправителя.
277
+ string idempotency_key = 6;
278
+ }
279
+
280
+ message InternalTransferResponse {
281
+ string transfer_id = 1;
282
+ string sender_ledger_operation_id = 2;
283
+ string receiver_ledger_operation_id = 3;
284
+ string sender_available = 4;
285
+ string sender_reserved = 5;
286
+ string sender_total = 6;
287
+ string receiver_available = 7;
288
+ string receiver_reserved = 8;
289
+ string receiver_total = 9;
290
+ }
package/proto/user.proto CHANGED
@@ -4,6 +4,8 @@ package user;
4
4
  service UserService {
5
5
  rpc GetUser (GetUserRequest) returns (UserResponse);
6
6
  rpc UpdateUser (UpdateUserRequest) returns (UserResponse);
7
+ // Ровно одно из полей: user_id, email, phone, telegram_username → id получателя для внутреннего перевода.
8
+ rpc ResolveUserForTransfer (ResolveUserForTransferRequest) returns (ResolveUserForTransferResponse);
7
9
  }
8
10
 
9
11
  message GetUserRequest {
@@ -31,3 +33,15 @@ message UpdateUserRequest {
31
33
  optional string last_name = 3;
32
34
  optional string avatar = 4;
33
35
  }
36
+
37
+ message ResolveUserForTransferRequest {
38
+ optional int32 user_id = 1;
39
+ optional string email = 2;
40
+ optional string phone = 3;
41
+ optional string telegram_username = 4;
42
+ optional string uid = 5;
43
+ }
44
+
45
+ message ResolveUserForTransferResponse {
46
+ int32 id = 1;
47
+ }