@mysten/sui 2.22.1 → 2.23.1
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/CHANGELOG.md +38 -0
- package/dist/bcs/bcs.d.mts +6 -6
- package/dist/bcs/bcs.d.mts.map +1 -1
- package/dist/bcs/bcs.mjs +1 -19
- package/dist/bcs/bcs.mjs.map +1 -1
- package/dist/bcs/index.d.mts +3812 -906
- package/dist/bcs/index.d.mts.map +1 -1
- package/dist/bcs/index.mjs +2 -1
- package/dist/bcs/index.mjs.map +1 -1
- package/dist/bcs/transactions.mjs +147 -0
- package/dist/bcs/transactions.mjs.map +1 -0
- package/dist/client/core-resolver.mjs +2 -1
- package/dist/client/core-resolver.mjs.map +1 -1
- package/dist/client/core.d.mts +2 -0
- package/dist/client/core.d.mts.map +1 -1
- package/dist/client/core.mjs.map +1 -1
- package/dist/client/query-filters.mjs +119 -0
- package/dist/client/query-filters.mjs.map +1 -0
- package/dist/client/types.d.mts +166 -1
- package/dist/client/types.d.mts.map +1 -1
- package/dist/client/utils.d.mts.map +1 -1
- package/dist/client/utils.mjs +13 -1
- package/dist/client/utils.mjs.map +1 -1
- package/dist/cryptography/signature.d.mts +6 -6
- package/dist/graphql/client.d.mts +15 -2
- package/dist/graphql/client.d.mts.map +1 -1
- package/dist/graphql/client.mjs +6 -0
- package/dist/graphql/client.mjs.map +1 -1
- package/dist/graphql/core.d.mts +5 -1
- package/dist/graphql/core.d.mts.map +1 -1
- package/dist/graphql/core.mjs +85 -3
- package/dist/graphql/core.mjs.map +1 -1
- package/dist/graphql/generated/queries.d.mts.map +1 -1
- package/dist/graphql/generated/queries.mjs +137 -1
- package/dist/graphql/generated/queries.mjs.map +1 -1
- package/dist/graphql/generated/tada-env.d.mts +108 -0
- package/dist/graphql/index.d.mts +2 -2
- package/dist/grpc/client.d.mts +11 -0
- package/dist/grpc/client.d.mts.map +1 -1
- package/dist/grpc/client.mjs +6 -0
- package/dist/grpc/client.mjs.map +1 -1
- package/dist/grpc/core.d.mts +5 -1
- package/dist/grpc/core.d.mts.map +1 -1
- package/dist/grpc/core.mjs +100 -2
- package/dist/grpc/core.mjs.map +1 -1
- package/dist/grpc/filters.mjs +45 -0
- package/dist/grpc/filters.mjs.map +1 -0
- package/dist/grpc/proto/sui/rpc/v2/event.d.mts +31 -0
- package/dist/grpc/proto/sui/rpc/v2/event.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/event.mjs +30 -0
- package/dist/grpc/proto/sui/rpc/v2/event.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/executed_transaction.d.mts +7 -0
- package/dist/grpc/proto/sui/rpc/v2/executed_transaction.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/executed_transaction.mjs +8 -0
- package/dist/grpc/proto/sui/rpc/v2/executed_transaction.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/filter.d.mts +423 -0
- package/dist/grpc/proto/sui/rpc/v2/filter.d.mts.map +1 -0
- package/dist/grpc/proto/sui/rpc/v2/filter.mjs +297 -0
- package/dist/grpc/proto/sui/rpc/v2/filter.mjs.map +1 -0
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +62 -6
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.mjs +37 -0
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.d.mts +293 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.mjs +241 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/move_package_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/name_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/protocol_config.d.mts +15 -2
- package/dist/grpc/proto/sui/rpc/v2/protocol_config.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/protocol_config.mjs +11 -0
- package/dist/grpc/proto/sui/rpc/v2/protocol_config.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/query_options.d.mts +211 -0
- package/dist/grpc/proto/sui/rpc/v2/query_options.d.mts.map +1 -0
- package/dist/grpc/proto/sui/rpc/v2/query_options.mjs +163 -0
- package/dist/grpc/proto/sui/rpc/v2/query_options.mjs.map +1 -0
- package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +105 -23
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.mjs +56 -9
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.d.mts +148 -8
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.mjs +109 -8
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
- package/dist/grpc/proto/types.d.mts +5 -3
- package/dist/grpc/proto/types.mjs +33 -2
- package/dist/grpc/proto/types.mjs.map +1 -1
- package/dist/jsonRpc/core.d.mts +10 -0
- package/dist/jsonRpc/core.d.mts.map +1 -1
- package/dist/jsonRpc/core.mjs +85 -2
- package/dist/jsonRpc/core.mjs.map +1 -1
- package/dist/transactions/Transaction.d.mts +9 -9
- package/dist/transactions/Transaction.d.mts.map +1 -1
- package/dist/transactions/intents/CoinWithBalance.mjs +14 -18
- package/dist/transactions/intents/CoinWithBalance.mjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/dist/zklogin/bcs.d.mts +14 -14
- package/dist/zklogin/bcs.d.mts.map +1 -1
- package/docs/clients/core.md +115 -1
- package/docs/clients/grpc.md +68 -0
- package/docs/migrations/sui-2.0/json-rpc-migration.md +104 -101
- package/package.json +2 -2
- package/src/bcs/bcs.ts +0 -27
- package/src/bcs/index.ts +7 -5
- package/src/bcs/transactions.ts +226 -0
- package/src/client/core-resolver.ts +5 -1
- package/src/client/core.ts +8 -0
- package/src/client/query-filters.ts +195 -0
- package/src/client/types.ts +186 -1
- package/src/client/utils.ts +13 -0
- package/src/graphql/client.ts +25 -1
- package/src/graphql/core.ts +143 -3
- package/src/graphql/generated/queries.ts +226 -0
- package/src/graphql/generated/schema.graphql +75 -0
- package/src/graphql/generated/tada-env.ts +133 -0
- package/src/graphql/index.ts +1 -0
- package/src/graphql/queries/listEvents.graphql +40 -0
- package/src/graphql/queries/transactions.graphql +26 -0
- package/src/grpc/client.ts +19 -0
- package/src/grpc/core.ts +187 -3
- package/src/grpc/filters.ts +68 -0
- package/src/grpc/proto/sui/rpc/v2/event.ts +49 -0
- package/src/grpc/proto/sui/rpc/v2/executed_transaction.ts +15 -0
- package/src/grpc/proto/sui/rpc/v2/filter.ts +589 -0
- package/src/grpc/proto/sui/rpc/v2/ledger_service.client.ts +111 -0
- package/src/grpc/proto/sui/rpc/v2/ledger_service.ts +406 -0
- package/src/grpc/proto/sui/rpc/v2/protocol_config.ts +22 -2
- package/src/grpc/proto/sui/rpc/v2/query_options.ts +255 -0
- package/src/grpc/proto/sui/rpc/v2/subscription_service.client.ts +136 -18
- package/src/grpc/proto/sui/rpc/v2/subscription_service.ts +187 -7
- package/src/grpc/proto/types.ts +2 -0
- package/src/jsonRpc/core.ts +136 -2
- package/src/transactions/intents/CoinWithBalance.ts +41 -41
- package/src/version.ts +1 -1
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
// @generated by protobuf-ts 2.9.6 with parameter force_server_none,optimize_code_size,ts_nocheck
|
|
5
|
+
// @generated from protobuf file "sui/rpc/v2/filter.proto" (package "sui.rpc.v2", syntax proto3)
|
|
6
|
+
// tslint:disable
|
|
7
|
+
// @ts-nocheck
|
|
8
|
+
//
|
|
9
|
+
// Copyright (c) Mysten Labs, Inc.
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
//
|
|
12
|
+
import { MessageType } from '@protobuf-ts/runtime';
|
|
13
|
+
/**
|
|
14
|
+
* DNF filter for transactions: any term may match, and each term is an AND
|
|
15
|
+
* of signed literals.
|
|
16
|
+
* An absent filter matches everything. A present filter must have at least one
|
|
17
|
+
* term.
|
|
18
|
+
*
|
|
19
|
+
* @generated from protobuf message sui.rpc.v2.TransactionFilter
|
|
20
|
+
*/
|
|
21
|
+
export interface TransactionFilter {
|
|
22
|
+
/**
|
|
23
|
+
* Terms are ORed together.
|
|
24
|
+
*
|
|
25
|
+
* @generated from protobuf field: repeated sui.rpc.v2.TransactionTerm terms = 1;
|
|
26
|
+
*/
|
|
27
|
+
terms: TransactionTerm[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* One conjunction in a transaction DNF filter.
|
|
31
|
+
*
|
|
32
|
+
* @generated from protobuf message sui.rpc.v2.TransactionTerm
|
|
33
|
+
*/
|
|
34
|
+
export interface TransactionTerm {
|
|
35
|
+
/**
|
|
36
|
+
* Literals are ANDed together.
|
|
37
|
+
*
|
|
38
|
+
* @generated from protobuf field: repeated sui.rpc.v2.TransactionLiteral literals = 1;
|
|
39
|
+
*/
|
|
40
|
+
literals: TransactionLiteral[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* One signed transaction predicate literal: a predicate, optionally negated.
|
|
44
|
+
*
|
|
45
|
+
* @generated from protobuf message sui.rpc.v2.TransactionLiteral
|
|
46
|
+
*/
|
|
47
|
+
export interface TransactionLiteral {
|
|
48
|
+
/**
|
|
49
|
+
* When true, the literal matches transactions that the predicate does *not*
|
|
50
|
+
* match.
|
|
51
|
+
*
|
|
52
|
+
* @generated from protobuf field: bool negated = 1;
|
|
53
|
+
*/
|
|
54
|
+
negated: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* @generated from protobuf oneof: predicate
|
|
57
|
+
*/
|
|
58
|
+
predicate:
|
|
59
|
+
| {
|
|
60
|
+
oneofKind: 'sender';
|
|
61
|
+
/**
|
|
62
|
+
* Match transactions sent by the specified address.
|
|
63
|
+
*
|
|
64
|
+
* @generated from protobuf field: sui.rpc.v2.SenderFilter sender = 2;
|
|
65
|
+
*/
|
|
66
|
+
sender: SenderFilter;
|
|
67
|
+
}
|
|
68
|
+
| {
|
|
69
|
+
oneofKind: 'affectedAddress';
|
|
70
|
+
/**
|
|
71
|
+
* Match transactions where the specified address's state moved as a side
|
|
72
|
+
* effect: it owns an object after the txn, owned an object before the
|
|
73
|
+
* txn that was mutated/transferred away/deleted/wrapped, or its
|
|
74
|
+
* address-balance changed via an accumulator event.
|
|
75
|
+
*
|
|
76
|
+
* @generated from protobuf field: sui.rpc.v2.AffectedAddressFilter affected_address = 3;
|
|
77
|
+
*/
|
|
78
|
+
affectedAddress: AffectedAddressFilter;
|
|
79
|
+
}
|
|
80
|
+
| {
|
|
81
|
+
oneofKind: 'affectedObject';
|
|
82
|
+
/**
|
|
83
|
+
* Match transactions whose effects include a change for the specified
|
|
84
|
+
* object.
|
|
85
|
+
*
|
|
86
|
+
* @generated from protobuf field: sui.rpc.v2.AffectedObjectFilter affected_object = 4;
|
|
87
|
+
*/
|
|
88
|
+
affectedObject: AffectedObjectFilter;
|
|
89
|
+
}
|
|
90
|
+
| {
|
|
91
|
+
oneofKind: 'moveCall';
|
|
92
|
+
/**
|
|
93
|
+
* Match transactions that made a Move call matching the specified filter.
|
|
94
|
+
*
|
|
95
|
+
* @generated from protobuf field: sui.rpc.v2.MoveCallFilter move_call = 5;
|
|
96
|
+
*/
|
|
97
|
+
moveCall: MoveCallFilter;
|
|
98
|
+
}
|
|
99
|
+
| {
|
|
100
|
+
oneofKind: 'emitModule';
|
|
101
|
+
/**
|
|
102
|
+
* Match transactions that emitted an event whose package/module fields
|
|
103
|
+
* match the specified filter.
|
|
104
|
+
*
|
|
105
|
+
* @generated from protobuf field: sui.rpc.v2.EmitModuleFilter emit_module = 6;
|
|
106
|
+
*/
|
|
107
|
+
emitModule: EmitModuleFilter;
|
|
108
|
+
}
|
|
109
|
+
| {
|
|
110
|
+
oneofKind: 'eventType';
|
|
111
|
+
/**
|
|
112
|
+
* Match transactions that emitted an event with a type matching the
|
|
113
|
+
* specified filter.
|
|
114
|
+
*
|
|
115
|
+
* @generated from protobuf field: sui.rpc.v2.EventTypeFilter event_type = 7;
|
|
116
|
+
*/
|
|
117
|
+
eventType: EventTypeFilter;
|
|
118
|
+
}
|
|
119
|
+
| {
|
|
120
|
+
oneofKind: 'eventStreamHead';
|
|
121
|
+
/**
|
|
122
|
+
* Match transactions that wrote to the specified authenticated event
|
|
123
|
+
* stream head.
|
|
124
|
+
*
|
|
125
|
+
* @generated from protobuf field: sui.rpc.v2.EventStreamHeadFilter event_stream_head = 8;
|
|
126
|
+
*/
|
|
127
|
+
eventStreamHead: EventStreamHeadFilter;
|
|
128
|
+
}
|
|
129
|
+
| {
|
|
130
|
+
oneofKind: 'packageWrite';
|
|
131
|
+
/**
|
|
132
|
+
* Match transactions that wrote a Move package — a first publish or an
|
|
133
|
+
* upgrade, of any package.
|
|
134
|
+
*
|
|
135
|
+
* @generated from protobuf field: sui.rpc.v2.PackageWriteFilter package_write = 9;
|
|
136
|
+
*/
|
|
137
|
+
packageWrite: PackageWriteFilter;
|
|
138
|
+
}
|
|
139
|
+
| {
|
|
140
|
+
oneofKind: undefined;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* DNF filter for events: any term may match, and each term is an AND of
|
|
145
|
+
* signed literals. Sender predicates match all events from matching
|
|
146
|
+
* transactions; emit-module, event-type, and event-stream-head predicates match
|
|
147
|
+
* individual event-space dimensions. An absent filter matches everything. A
|
|
148
|
+
* present filter must have at least one term.
|
|
149
|
+
*
|
|
150
|
+
* @generated from protobuf message sui.rpc.v2.EventFilter
|
|
151
|
+
*/
|
|
152
|
+
export interface EventFilter {
|
|
153
|
+
/**
|
|
154
|
+
* Terms are ORed together.
|
|
155
|
+
*
|
|
156
|
+
* @generated from protobuf field: repeated sui.rpc.v2.EventTerm terms = 1;
|
|
157
|
+
*/
|
|
158
|
+
terms: EventTerm[];
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* One conjunction in an event DNF filter.
|
|
162
|
+
*
|
|
163
|
+
* @generated from protobuf message sui.rpc.v2.EventTerm
|
|
164
|
+
*/
|
|
165
|
+
export interface EventTerm {
|
|
166
|
+
/**
|
|
167
|
+
* Literals are ANDed together.
|
|
168
|
+
*
|
|
169
|
+
* @generated from protobuf field: repeated sui.rpc.v2.EventLiteral literals = 1;
|
|
170
|
+
*/
|
|
171
|
+
literals: EventLiteral[];
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* One signed event predicate literal: a predicate, optionally negated.
|
|
175
|
+
*
|
|
176
|
+
* @generated from protobuf message sui.rpc.v2.EventLiteral
|
|
177
|
+
*/
|
|
178
|
+
export interface EventLiteral {
|
|
179
|
+
/**
|
|
180
|
+
* When true, the literal matches events that the predicate does *not* match.
|
|
181
|
+
*
|
|
182
|
+
* @generated from protobuf field: bool negated = 1;
|
|
183
|
+
*/
|
|
184
|
+
negated: boolean;
|
|
185
|
+
/**
|
|
186
|
+
* @generated from protobuf oneof: predicate
|
|
187
|
+
*/
|
|
188
|
+
predicate:
|
|
189
|
+
| {
|
|
190
|
+
oneofKind: 'sender';
|
|
191
|
+
/**
|
|
192
|
+
* Match events from transactions sent by the specified address.
|
|
193
|
+
*
|
|
194
|
+
* @generated from protobuf field: sui.rpc.v2.SenderFilter sender = 2;
|
|
195
|
+
*/
|
|
196
|
+
sender: SenderFilter;
|
|
197
|
+
}
|
|
198
|
+
| {
|
|
199
|
+
oneofKind: 'emitModule';
|
|
200
|
+
/**
|
|
201
|
+
* Match events whose package/module fields match the specified filter.
|
|
202
|
+
*
|
|
203
|
+
* @generated from protobuf field: sui.rpc.v2.EmitModuleFilter emit_module = 3;
|
|
204
|
+
*/
|
|
205
|
+
emitModule: EmitModuleFilter;
|
|
206
|
+
}
|
|
207
|
+
| {
|
|
208
|
+
oneofKind: 'eventType';
|
|
209
|
+
/**
|
|
210
|
+
* Match events whose type matches the specified filter.
|
|
211
|
+
*
|
|
212
|
+
* @generated from protobuf field: sui.rpc.v2.EventTypeFilter event_type = 4;
|
|
213
|
+
*/
|
|
214
|
+
eventType: EventTypeFilter;
|
|
215
|
+
}
|
|
216
|
+
| {
|
|
217
|
+
oneofKind: 'eventStreamHead';
|
|
218
|
+
/**
|
|
219
|
+
* Match events committed to the specified authenticated event stream head.
|
|
220
|
+
*
|
|
221
|
+
* @generated from protobuf field: sui.rpc.v2.EventStreamHeadFilter event_stream_head = 5;
|
|
222
|
+
*/
|
|
223
|
+
eventStreamHead: EventStreamHeadFilter;
|
|
224
|
+
}
|
|
225
|
+
| {
|
|
226
|
+
oneofKind: undefined;
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Match by transaction sender address.
|
|
231
|
+
*
|
|
232
|
+
* @generated from protobuf message sui.rpc.v2.SenderFilter
|
|
233
|
+
*/
|
|
234
|
+
export interface SenderFilter {
|
|
235
|
+
/**
|
|
236
|
+
* The sender address (hex-encoded).
|
|
237
|
+
*
|
|
238
|
+
* @generated from protobuf field: optional string address = 1;
|
|
239
|
+
*/
|
|
240
|
+
address?: string;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Match by any address whose state moved as a side effect of the
|
|
244
|
+
* transaction: object ownership changes (in either direction), prior
|
|
245
|
+
* owners of removed/wrapped objects, and address-balance changes via
|
|
246
|
+
* accumulator events.
|
|
247
|
+
*
|
|
248
|
+
* @generated from protobuf message sui.rpc.v2.AffectedAddressFilter
|
|
249
|
+
*/
|
|
250
|
+
export interface AffectedAddressFilter {
|
|
251
|
+
/**
|
|
252
|
+
* The affected address (hex-encoded).
|
|
253
|
+
*
|
|
254
|
+
* @generated from protobuf field: optional string address = 1;
|
|
255
|
+
*/
|
|
256
|
+
address?: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Match by changed object ID.
|
|
260
|
+
*
|
|
261
|
+
* @generated from protobuf message sui.rpc.v2.AffectedObjectFilter
|
|
262
|
+
*/
|
|
263
|
+
export interface AffectedObjectFilter {
|
|
264
|
+
/**
|
|
265
|
+
* The changed object ID (hex-encoded).
|
|
266
|
+
*
|
|
267
|
+
* @generated from protobuf field: optional string object_id = 1;
|
|
268
|
+
*/
|
|
269
|
+
objectId?: string;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Match by Move function call, specified as a `::`-delimited Move path.
|
|
273
|
+
*
|
|
274
|
+
* Specificity levels:
|
|
275
|
+
* "0xpkg" -> matches any call in the package
|
|
276
|
+
* "0xpkg::module" -> matches any call in the module
|
|
277
|
+
* "0xpkg::module::function" -> matches calls to the exact function
|
|
278
|
+
*
|
|
279
|
+
* @generated from protobuf message sui.rpc.v2.MoveCallFilter
|
|
280
|
+
*/
|
|
281
|
+
export interface MoveCallFilter {
|
|
282
|
+
/**
|
|
283
|
+
* Required. Move path of the form `package[::module[::function]]`.
|
|
284
|
+
*
|
|
285
|
+
* @generated from protobuf field: optional string function = 1;
|
|
286
|
+
*/
|
|
287
|
+
function?: string;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Match by an event's package/module fields, specified as a `::`-delimited
|
|
291
|
+
* Move path. These identify the top-level Move call that triggered the event.
|
|
292
|
+
*
|
|
293
|
+
* Specificity levels:
|
|
294
|
+
* "0xpkg" -> matches events with this package_id
|
|
295
|
+
* "0xpkg::module" -> matches events with this package_id and module
|
|
296
|
+
*
|
|
297
|
+
* @generated from protobuf message sui.rpc.v2.EmitModuleFilter
|
|
298
|
+
*/
|
|
299
|
+
export interface EmitModuleFilter {
|
|
300
|
+
/**
|
|
301
|
+
* Required. Move path of the form `package[::module]`.
|
|
302
|
+
*
|
|
303
|
+
* @generated from protobuf field: optional string module = 1;
|
|
304
|
+
*/
|
|
305
|
+
module?: string;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Match by event struct type, specified as a Move type string.
|
|
309
|
+
*
|
|
310
|
+
* Specificity levels:
|
|
311
|
+
* "0xaddr" -> matches events whose type is defined at this address
|
|
312
|
+
* "0xaddr::module" -> matches events whose type is in this module
|
|
313
|
+
* "0xaddr::module::Name" -> matches events with this type name (any instantiation)
|
|
314
|
+
* "0xaddr::module::Name<T1, T2>" -> matches events with this exact generic instantiation
|
|
315
|
+
*
|
|
316
|
+
* @generated from protobuf message sui.rpc.v2.EventTypeFilter
|
|
317
|
+
*/
|
|
318
|
+
export interface EventTypeFilter {
|
|
319
|
+
/**
|
|
320
|
+
* Required. Move type string of the form
|
|
321
|
+
* `address[::module[::Name[<type_params>]]]`.
|
|
322
|
+
*
|
|
323
|
+
* @generated from protobuf field: optional string event_type = 1;
|
|
324
|
+
*/
|
|
325
|
+
eventType?: string;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Match by authenticated event stream head.
|
|
329
|
+
*
|
|
330
|
+
* @generated from protobuf message sui.rpc.v2.EventStreamHeadFilter
|
|
331
|
+
*/
|
|
332
|
+
export interface EventStreamHeadFilter {
|
|
333
|
+
/**
|
|
334
|
+
* The stream id address (hex-encoded).
|
|
335
|
+
*
|
|
336
|
+
* @generated from protobuf field: optional string stream_id = 1;
|
|
337
|
+
*/
|
|
338
|
+
streamId?: string;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Match transactions that wrote a Move package.
|
|
342
|
+
*
|
|
343
|
+
* @generated from protobuf message sui.rpc.v2.PackageWriteFilter
|
|
344
|
+
*/
|
|
345
|
+
export interface PackageWriteFilter {}
|
|
346
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
347
|
+
class TransactionFilter$Type extends MessageType<TransactionFilter> {
|
|
348
|
+
constructor() {
|
|
349
|
+
super('sui.rpc.v2.TransactionFilter', [
|
|
350
|
+
{
|
|
351
|
+
no: 1,
|
|
352
|
+
name: 'terms',
|
|
353
|
+
kind: 'message',
|
|
354
|
+
repeat: 2 /*RepeatType.UNPACKED*/,
|
|
355
|
+
T: () => TransactionTerm,
|
|
356
|
+
},
|
|
357
|
+
]);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* @generated MessageType for protobuf message sui.rpc.v2.TransactionFilter
|
|
362
|
+
*/
|
|
363
|
+
export const TransactionFilter = new TransactionFilter$Type();
|
|
364
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
365
|
+
class TransactionTerm$Type extends MessageType<TransactionTerm> {
|
|
366
|
+
constructor() {
|
|
367
|
+
super('sui.rpc.v2.TransactionTerm', [
|
|
368
|
+
{
|
|
369
|
+
no: 1,
|
|
370
|
+
name: 'literals',
|
|
371
|
+
kind: 'message',
|
|
372
|
+
repeat: 2 /*RepeatType.UNPACKED*/,
|
|
373
|
+
T: () => TransactionLiteral,
|
|
374
|
+
},
|
|
375
|
+
]);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* @generated MessageType for protobuf message sui.rpc.v2.TransactionTerm
|
|
380
|
+
*/
|
|
381
|
+
export const TransactionTerm = new TransactionTerm$Type();
|
|
382
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
383
|
+
class TransactionLiteral$Type extends MessageType<TransactionLiteral> {
|
|
384
|
+
constructor() {
|
|
385
|
+
super('sui.rpc.v2.TransactionLiteral', [
|
|
386
|
+
{ no: 1, name: 'negated', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ },
|
|
387
|
+
{ no: 2, name: 'sender', kind: 'message', oneof: 'predicate', T: () => SenderFilter },
|
|
388
|
+
{
|
|
389
|
+
no: 3,
|
|
390
|
+
name: 'affected_address',
|
|
391
|
+
kind: 'message',
|
|
392
|
+
oneof: 'predicate',
|
|
393
|
+
T: () => AffectedAddressFilter,
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
no: 4,
|
|
397
|
+
name: 'affected_object',
|
|
398
|
+
kind: 'message',
|
|
399
|
+
oneof: 'predicate',
|
|
400
|
+
T: () => AffectedObjectFilter,
|
|
401
|
+
},
|
|
402
|
+
{ no: 5, name: 'move_call', kind: 'message', oneof: 'predicate', T: () => MoveCallFilter },
|
|
403
|
+
{
|
|
404
|
+
no: 6,
|
|
405
|
+
name: 'emit_module',
|
|
406
|
+
kind: 'message',
|
|
407
|
+
oneof: 'predicate',
|
|
408
|
+
T: () => EmitModuleFilter,
|
|
409
|
+
},
|
|
410
|
+
{ no: 7, name: 'event_type', kind: 'message', oneof: 'predicate', T: () => EventTypeFilter },
|
|
411
|
+
{
|
|
412
|
+
no: 8,
|
|
413
|
+
name: 'event_stream_head',
|
|
414
|
+
kind: 'message',
|
|
415
|
+
oneof: 'predicate',
|
|
416
|
+
T: () => EventStreamHeadFilter,
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
no: 9,
|
|
420
|
+
name: 'package_write',
|
|
421
|
+
kind: 'message',
|
|
422
|
+
oneof: 'predicate',
|
|
423
|
+
T: () => PackageWriteFilter,
|
|
424
|
+
},
|
|
425
|
+
]);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* @generated MessageType for protobuf message sui.rpc.v2.TransactionLiteral
|
|
430
|
+
*/
|
|
431
|
+
export const TransactionLiteral = new TransactionLiteral$Type();
|
|
432
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
433
|
+
class EventFilter$Type extends MessageType<EventFilter> {
|
|
434
|
+
constructor() {
|
|
435
|
+
super('sui.rpc.v2.EventFilter', [
|
|
436
|
+
{
|
|
437
|
+
no: 1,
|
|
438
|
+
name: 'terms',
|
|
439
|
+
kind: 'message',
|
|
440
|
+
repeat: 2 /*RepeatType.UNPACKED*/,
|
|
441
|
+
T: () => EventTerm,
|
|
442
|
+
},
|
|
443
|
+
]);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EventFilter
|
|
448
|
+
*/
|
|
449
|
+
export const EventFilter = new EventFilter$Type();
|
|
450
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
451
|
+
class EventTerm$Type extends MessageType<EventTerm> {
|
|
452
|
+
constructor() {
|
|
453
|
+
super('sui.rpc.v2.EventTerm', [
|
|
454
|
+
{
|
|
455
|
+
no: 1,
|
|
456
|
+
name: 'literals',
|
|
457
|
+
kind: 'message',
|
|
458
|
+
repeat: 2 /*RepeatType.UNPACKED*/,
|
|
459
|
+
T: () => EventLiteral,
|
|
460
|
+
},
|
|
461
|
+
]);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EventTerm
|
|
466
|
+
*/
|
|
467
|
+
export const EventTerm = new EventTerm$Type();
|
|
468
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
469
|
+
class EventLiteral$Type extends MessageType<EventLiteral> {
|
|
470
|
+
constructor() {
|
|
471
|
+
super('sui.rpc.v2.EventLiteral', [
|
|
472
|
+
{ no: 1, name: 'negated', kind: 'scalar', T: 8 /*ScalarType.BOOL*/ },
|
|
473
|
+
{ no: 2, name: 'sender', kind: 'message', oneof: 'predicate', T: () => SenderFilter },
|
|
474
|
+
{
|
|
475
|
+
no: 3,
|
|
476
|
+
name: 'emit_module',
|
|
477
|
+
kind: 'message',
|
|
478
|
+
oneof: 'predicate',
|
|
479
|
+
T: () => EmitModuleFilter,
|
|
480
|
+
},
|
|
481
|
+
{ no: 4, name: 'event_type', kind: 'message', oneof: 'predicate', T: () => EventTypeFilter },
|
|
482
|
+
{
|
|
483
|
+
no: 5,
|
|
484
|
+
name: 'event_stream_head',
|
|
485
|
+
kind: 'message',
|
|
486
|
+
oneof: 'predicate',
|
|
487
|
+
T: () => EventStreamHeadFilter,
|
|
488
|
+
},
|
|
489
|
+
]);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EventLiteral
|
|
494
|
+
*/
|
|
495
|
+
export const EventLiteral = new EventLiteral$Type();
|
|
496
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
497
|
+
class SenderFilter$Type extends MessageType<SenderFilter> {
|
|
498
|
+
constructor() {
|
|
499
|
+
super('sui.rpc.v2.SenderFilter', [
|
|
500
|
+
{ no: 1, name: 'address', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
501
|
+
]);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* @generated MessageType for protobuf message sui.rpc.v2.SenderFilter
|
|
506
|
+
*/
|
|
507
|
+
export const SenderFilter = new SenderFilter$Type();
|
|
508
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
509
|
+
class AffectedAddressFilter$Type extends MessageType<AffectedAddressFilter> {
|
|
510
|
+
constructor() {
|
|
511
|
+
super('sui.rpc.v2.AffectedAddressFilter', [
|
|
512
|
+
{ no: 1, name: 'address', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
513
|
+
]);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* @generated MessageType for protobuf message sui.rpc.v2.AffectedAddressFilter
|
|
518
|
+
*/
|
|
519
|
+
export const AffectedAddressFilter = new AffectedAddressFilter$Type();
|
|
520
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
521
|
+
class AffectedObjectFilter$Type extends MessageType<AffectedObjectFilter> {
|
|
522
|
+
constructor() {
|
|
523
|
+
super('sui.rpc.v2.AffectedObjectFilter', [
|
|
524
|
+
{ no: 1, name: 'object_id', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
525
|
+
]);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* @generated MessageType for protobuf message sui.rpc.v2.AffectedObjectFilter
|
|
530
|
+
*/
|
|
531
|
+
export const AffectedObjectFilter = new AffectedObjectFilter$Type();
|
|
532
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
533
|
+
class MoveCallFilter$Type extends MessageType<MoveCallFilter> {
|
|
534
|
+
constructor() {
|
|
535
|
+
super('sui.rpc.v2.MoveCallFilter', [
|
|
536
|
+
{ no: 1, name: 'function', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
537
|
+
]);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* @generated MessageType for protobuf message sui.rpc.v2.MoveCallFilter
|
|
542
|
+
*/
|
|
543
|
+
export const MoveCallFilter = new MoveCallFilter$Type();
|
|
544
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
545
|
+
class EmitModuleFilter$Type extends MessageType<EmitModuleFilter> {
|
|
546
|
+
constructor() {
|
|
547
|
+
super('sui.rpc.v2.EmitModuleFilter', [
|
|
548
|
+
{ no: 1, name: 'module', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
549
|
+
]);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EmitModuleFilter
|
|
554
|
+
*/
|
|
555
|
+
export const EmitModuleFilter = new EmitModuleFilter$Type();
|
|
556
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
557
|
+
class EventTypeFilter$Type extends MessageType<EventTypeFilter> {
|
|
558
|
+
constructor() {
|
|
559
|
+
super('sui.rpc.v2.EventTypeFilter', [
|
|
560
|
+
{ no: 1, name: 'event_type', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
561
|
+
]);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EventTypeFilter
|
|
566
|
+
*/
|
|
567
|
+
export const EventTypeFilter = new EventTypeFilter$Type();
|
|
568
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
569
|
+
class EventStreamHeadFilter$Type extends MessageType<EventStreamHeadFilter> {
|
|
570
|
+
constructor() {
|
|
571
|
+
super('sui.rpc.v2.EventStreamHeadFilter', [
|
|
572
|
+
{ no: 1, name: 'stream_id', kind: 'scalar', opt: true, T: 9 /*ScalarType.STRING*/ },
|
|
573
|
+
]);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* @generated MessageType for protobuf message sui.rpc.v2.EventStreamHeadFilter
|
|
578
|
+
*/
|
|
579
|
+
export const EventStreamHeadFilter = new EventStreamHeadFilter$Type();
|
|
580
|
+
// @generated message type with reflection information, may provide speed optimized methods
|
|
581
|
+
class PackageWriteFilter$Type extends MessageType<PackageWriteFilter> {
|
|
582
|
+
constructor() {
|
|
583
|
+
super('sui.rpc.v2.PackageWriteFilter', []);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* @generated MessageType for protobuf message sui.rpc.v2.PackageWriteFilter
|
|
588
|
+
*/
|
|
589
|
+
export const PackageWriteFilter = new PackageWriteFilter$Type();
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
import type { RpcTransport } from '@protobuf-ts/runtime-rpc';
|
|
13
13
|
import type { ServiceInfo } from '@protobuf-ts/runtime-rpc';
|
|
14
14
|
import { LedgerService } from './ledger_service.js';
|
|
15
|
+
import type { ListEventsResponse } from './ledger_service.js';
|
|
16
|
+
import type { ListEventsRequest } from './ledger_service.js';
|
|
17
|
+
import type { ListTransactionsResponse } from './ledger_service.js';
|
|
18
|
+
import type { ListTransactionsRequest } from './ledger_service.js';
|
|
19
|
+
import type { ListCheckpointsResponse } from './ledger_service.js';
|
|
20
|
+
import type { ListCheckpointsRequest } from './ledger_service.js';
|
|
21
|
+
import type { ServerStreamingCall } from '@protobuf-ts/runtime-rpc';
|
|
15
22
|
import type { GetEpochResponse } from './ledger_service.js';
|
|
16
23
|
import type { GetEpochRequest } from './ledger_service.js';
|
|
17
24
|
import type { GetCheckpointResponse } from './ledger_service.js';
|
|
@@ -84,6 +91,43 @@ export interface ILedgerServiceClient {
|
|
|
84
91
|
input: GetEpochRequest,
|
|
85
92
|
options?: RpcOptions,
|
|
86
93
|
): UnaryCall<GetEpochRequest, GetEpochResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* List checkpoints matching the provided filters.
|
|
96
|
+
*
|
|
97
|
+
* Checkpoints are returned in ascending or descending checkpoint sequence
|
|
98
|
+
* number order according to the query options ordering.
|
|
99
|
+
* A checkpoint matches if any transaction it contains satisfies the filter.
|
|
100
|
+
*
|
|
101
|
+
* @generated from protobuf rpc: ListCheckpoints(sui.rpc.v2.ListCheckpointsRequest) returns (stream sui.rpc.v2.ListCheckpointsResponse);
|
|
102
|
+
*/
|
|
103
|
+
listCheckpoints(
|
|
104
|
+
input: ListCheckpointsRequest,
|
|
105
|
+
options?: RpcOptions,
|
|
106
|
+
): ServerStreamingCall<ListCheckpointsRequest, ListCheckpointsResponse>;
|
|
107
|
+
/**
|
|
108
|
+
* List transactions matching the provided filters.
|
|
109
|
+
*
|
|
110
|
+
* Transactions are returned in ascending or descending transaction sequence
|
|
111
|
+
* order according to the query options ordering.
|
|
112
|
+
*
|
|
113
|
+
* @generated from protobuf rpc: ListTransactions(sui.rpc.v2.ListTransactionsRequest) returns (stream sui.rpc.v2.ListTransactionsResponse);
|
|
114
|
+
*/
|
|
115
|
+
listTransactions(
|
|
116
|
+
input: ListTransactionsRequest,
|
|
117
|
+
options?: RpcOptions,
|
|
118
|
+
): ServerStreamingCall<ListTransactionsRequest, ListTransactionsResponse>;
|
|
119
|
+
/**
|
|
120
|
+
* List events matching the provided filters.
|
|
121
|
+
*
|
|
122
|
+
* Events are returned in ascending or descending packed event sequence order
|
|
123
|
+
* according to the query options ordering.
|
|
124
|
+
*
|
|
125
|
+
* @generated from protobuf rpc: ListEvents(sui.rpc.v2.ListEventsRequest) returns (stream sui.rpc.v2.ListEventsResponse);
|
|
126
|
+
*/
|
|
127
|
+
listEvents(
|
|
128
|
+
input: ListEventsRequest,
|
|
129
|
+
options?: RpcOptions,
|
|
130
|
+
): ServerStreamingCall<ListEventsRequest, ListEventsResponse>;
|
|
87
131
|
}
|
|
88
132
|
/**
|
|
89
133
|
* @generated from protobuf service sui.rpc.v2.LedgerService
|
|
@@ -214,4 +258,71 @@ export class LedgerServiceClient implements ILedgerServiceClient, ServiceInfo {
|
|
|
214
258
|
input,
|
|
215
259
|
);
|
|
216
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* List checkpoints matching the provided filters.
|
|
263
|
+
*
|
|
264
|
+
* Checkpoints are returned in ascending or descending checkpoint sequence
|
|
265
|
+
* number order according to the query options ordering.
|
|
266
|
+
* A checkpoint matches if any transaction it contains satisfies the filter.
|
|
267
|
+
*
|
|
268
|
+
* @generated from protobuf rpc: ListCheckpoints(sui.rpc.v2.ListCheckpointsRequest) returns (stream sui.rpc.v2.ListCheckpointsResponse);
|
|
269
|
+
*/
|
|
270
|
+
listCheckpoints(
|
|
271
|
+
input: ListCheckpointsRequest,
|
|
272
|
+
options?: RpcOptions,
|
|
273
|
+
): ServerStreamingCall<ListCheckpointsRequest, ListCheckpointsResponse> {
|
|
274
|
+
const method = this.methods[7],
|
|
275
|
+
opt = this._transport.mergeOptions(options);
|
|
276
|
+
return stackIntercept<ListCheckpointsRequest, ListCheckpointsResponse>(
|
|
277
|
+
'serverStreaming',
|
|
278
|
+
this._transport,
|
|
279
|
+
method,
|
|
280
|
+
opt,
|
|
281
|
+
input,
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* List transactions matching the provided filters.
|
|
286
|
+
*
|
|
287
|
+
* Transactions are returned in ascending or descending transaction sequence
|
|
288
|
+
* order according to the query options ordering.
|
|
289
|
+
*
|
|
290
|
+
* @generated from protobuf rpc: ListTransactions(sui.rpc.v2.ListTransactionsRequest) returns (stream sui.rpc.v2.ListTransactionsResponse);
|
|
291
|
+
*/
|
|
292
|
+
listTransactions(
|
|
293
|
+
input: ListTransactionsRequest,
|
|
294
|
+
options?: RpcOptions,
|
|
295
|
+
): ServerStreamingCall<ListTransactionsRequest, ListTransactionsResponse> {
|
|
296
|
+
const method = this.methods[8],
|
|
297
|
+
opt = this._transport.mergeOptions(options);
|
|
298
|
+
return stackIntercept<ListTransactionsRequest, ListTransactionsResponse>(
|
|
299
|
+
'serverStreaming',
|
|
300
|
+
this._transport,
|
|
301
|
+
method,
|
|
302
|
+
opt,
|
|
303
|
+
input,
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* List events matching the provided filters.
|
|
308
|
+
*
|
|
309
|
+
* Events are returned in ascending or descending packed event sequence order
|
|
310
|
+
* according to the query options ordering.
|
|
311
|
+
*
|
|
312
|
+
* @generated from protobuf rpc: ListEvents(sui.rpc.v2.ListEventsRequest) returns (stream sui.rpc.v2.ListEventsResponse);
|
|
313
|
+
*/
|
|
314
|
+
listEvents(
|
|
315
|
+
input: ListEventsRequest,
|
|
316
|
+
options?: RpcOptions,
|
|
317
|
+
): ServerStreamingCall<ListEventsRequest, ListEventsResponse> {
|
|
318
|
+
const method = this.methods[9],
|
|
319
|
+
opt = this._transport.mergeOptions(options);
|
|
320
|
+
return stackIntercept<ListEventsRequest, ListEventsResponse>(
|
|
321
|
+
'serverStreaming',
|
|
322
|
+
this._transport,
|
|
323
|
+
method,
|
|
324
|
+
opt,
|
|
325
|
+
input,
|
|
326
|
+
);
|
|
327
|
+
}
|
|
217
328
|
}
|