@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 +36 -1
- package/gen/user.ts +26 -1
- package/package.json +1 -1
- package/proto/ledger.proto +25 -1
- package/proto/user.proto +14 -0
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.
|
|
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
|
},
|
package/proto/ledger.proto
CHANGED
|
@@ -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
|
+
}
|