@arbiwallet/contracts 1.0.24 → 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
@@ -270,7 +270,22 @@ export interface GetTransactionFeedRequest {
270
270
  limit: number;
271
271
  /** Курсор для следующей страницы. */
272
272
  cursorId?: string | undefined;
273
- offset?: number | undefined;
273
+ offset?:
274
+ | number
275
+ | undefined;
276
+ /** Фильтр по активу, напр. USDT. */
277
+ asset?:
278
+ | string
279
+ | undefined;
280
+ /** Фильтр по сети, напр. TRON, BSC. */
281
+ network?:
282
+ | string
283
+ | undefined;
284
+ /**
285
+ * Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
286
+ * deposit включает записи reference_type deposit и deposit_hold.
287
+ */
288
+ referenceKind?: string | undefined;
274
289
  }
275
290
 
276
291
  export interface GetTransactionFeedResponse {
@@ -282,6 +297,28 @@ export interface GetTransactionFeedResponse {
282
297
  totalReturned: number;
283
298
  }
284
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
+
285
322
  export const LEDGER_V1_PACKAGE_NAME = "ledger.v1";
286
323
 
287
324
  export interface LedgerServiceClient {
@@ -336,6 +373,10 @@ export interface LedgerServiceClient {
336
373
  /** Постраничная лента операций пользователя (история для UI); курсор и offset — на усмотрение сервера. */
337
374
 
338
375
  getTransactionFeed(request: GetTransactionFeedRequest): Observable<GetTransactionFeedResponse>;
376
+
377
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
378
+
379
+ internalTransfer(request: InternalTransferRequest): Observable<InternalTransferResponse>;
339
380
  }
340
381
 
341
382
  export interface LedgerServiceController {
@@ -422,6 +463,12 @@ export interface LedgerServiceController {
422
463
  getTransactionFeed(
423
464
  request: GetTransactionFeedRequest,
424
465
  ): Promise<GetTransactionFeedResponse> | Observable<GetTransactionFeedResponse> | GetTransactionFeedResponse;
466
+
467
+ /** Внутренний перевод между пользователями приложения (только ledger, без сетевой комиссии). */
468
+
469
+ internalTransfer(
470
+ request: InternalTransferRequest,
471
+ ): Promise<InternalTransferResponse> | Observable<InternalTransferResponse> | InternalTransferResponse;
425
472
  }
426
473
 
427
474
  export function LedgerServiceControllerMethods() {
@@ -440,6 +487,7 @@ export function LedgerServiceControllerMethods() {
440
487
  "getBalance",
441
488
  "getBalances",
442
489
  "getTransactionFeed",
490
+ "internalTransfer",
443
491
  ];
444
492
  for (const method of grpcMethods) {
445
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.24",
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 {
@@ -252,6 +254,11 @@ message GetTransactionFeedRequest {
252
254
  int32 limit = 2;
253
255
  optional string cursor_id = 3; // Курсор для следующей страницы.
254
256
  optional int32 offset = 4;
257
+ optional string asset = 5; // Фильтр по активу, напр. USDT.
258
+ optional string network = 6; // Фильтр по сети, напр. TRON, BSC.
259
+ // Фильтр по «типу» операции для UI: "withdrawal" | "deposit" | "internal_transfer".
260
+ // deposit включает записи reference_type deposit и deposit_hold.
261
+ optional string reference_kind = 7;
255
262
  }
256
263
 
257
264
  message GetTransactionFeedResponse {
@@ -259,3 +266,24 @@ message GetTransactionFeedResponse {
259
266
  optional string next_cursor_id = 2;
260
267
  int32 total_returned = 3; // Число элементов в этом ответе.
261
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
+ }