@arbiwallet/contracts 1.0.25 → 1.0.26

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
@@ -282,7 +282,7 @@ export interface GetTransactionFeedRequest {
282
282
  | string
283
283
  | undefined;
284
284
  /**
285
- * Фильтр по «типу» операции для UI: "withdrawal" | "deposit".
285
+ * Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
286
286
  * deposit включает записи reference_type deposit и deposit_hold.
287
287
  */
288
288
  referenceKind?: string | undefined;
@@ -297,6 +297,28 @@ export interface GetTransactionFeedResponse {
297
297
  totalReturned: number;
298
298
  }
299
299
 
300
+ export interface InternalTransferRequest {
301
+ fromUserId: string;
302
+ toUserId: string;
303
+ asset: string;
304
+ network: string;
305
+ /** Десятичная строка; списание с available отправителя. */
306
+ amount: string;
307
+ idempotencyKey: string;
308
+ }
309
+
310
+ export interface InternalTransferResponse {
311
+ transferId: string;
312
+ senderLedgerOperationId: string;
313
+ receiverLedgerOperationId: string;
314
+ senderAvailable: string;
315
+ senderReserved: string;
316
+ senderTotal: string;
317
+ receiverAvailable: string;
318
+ receiverReserved: string;
319
+ receiverTotal: string;
320
+ }
321
+
300
322
  export const LEDGER_V1_PACKAGE_NAME = "ledger.v1";
301
323
 
302
324
  export interface LedgerServiceClient {
@@ -351,6 +373,10 @@ export interface LedgerServiceClient {
351
373
  /** Постраничная лента операций пользователя (история для UI); курсор и offset — на усмотрение сервера. */
352
374
 
353
375
  getTransactionFeed(request: GetTransactionFeedRequest): Observable<GetTransactionFeedResponse>;
376
+
377
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
378
+
379
+ internalTransfer(request: InternalTransferRequest): Observable<InternalTransferResponse>;
354
380
  }
355
381
 
356
382
  export interface LedgerServiceController {
@@ -437,6 +463,12 @@ export interface LedgerServiceController {
437
463
  getTransactionFeed(
438
464
  request: GetTransactionFeedRequest,
439
465
  ): Promise<GetTransactionFeedResponse> | Observable<GetTransactionFeedResponse> | GetTransactionFeedResponse;
466
+
467
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
468
+
469
+ internalTransfer(
470
+ request: InternalTransferRequest,
471
+ ): Promise<InternalTransferResponse> | Observable<InternalTransferResponse> | InternalTransferResponse;
440
472
  }
441
473
 
442
474
  export function LedgerServiceControllerMethods() {
@@ -455,6 +487,7 @@ export function LedgerServiceControllerMethods() {
455
487
  "getBalance",
456
488
  "getBalances",
457
489
  "getTransactionFeed",
490
+ "internalTransfer",
458
491
  ];
459
492
  for (const method of grpcMethods) {
460
493
  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.26",
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 {
@@ -254,7 +256,7 @@ message GetTransactionFeedRequest {
254
256
  optional int32 offset = 4;
255
257
  optional string asset = 5; // Фильтр по активу, напр. USDT.
256
258
  optional string network = 6; // Фильтр по сети, напр. TRON, BSC.
257
- // Фильтр по «типу» операции для UI: "withdrawal" | "deposit".
259
+ // Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
258
260
  // deposit включает записи reference_type deposit и deposit_hold.
259
261
  optional string reference_kind = 7;
260
262
  }
@@ -264,3 +266,24 @@ message GetTransactionFeedResponse {
264
266
  optional string next_cursor_id = 2;
265
267
  int32 total_returned = 3; // Число элементов в этом ответе.
266
268
  }
269
+
270
+ message InternalTransferRequest {
271
+ string from_user_id = 1;
272
+ string to_user_id = 2;
273
+ string asset = 3;
274
+ string network = 4;
275
+ string amount = 5; // Десятичная строка; списание с available отправителя.
276
+ string idempotency_key = 6;
277
+ }
278
+
279
+ message InternalTransferResponse {
280
+ string transfer_id = 1;
281
+ string sender_ledger_operation_id = 2;
282
+ string receiver_ledger_operation_id = 3;
283
+ string sender_available = 4;
284
+ string sender_reserved = 5;
285
+ string sender_total = 6;
286
+ string receiver_available = 7;
287
+ string receiver_reserved = 8;
288
+ string receiver_total = 9;
289
+ }
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
+ }