@suilend/sdk 12.7.0 → 13.0.0-next.g803bba0
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/_generated/_dependencies/pyth-2/price-identifier/structs.d.ts +46 -0
- package/_generated/_dependencies/{source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e → pyth-2}/price-identifier/structs.js +45 -25
- package/_generated/_dependencies/std/ascii/structs.d.ts +100 -0
- package/_generated/_dependencies/{source/0x1 → std}/ascii/structs.js +153 -103
- package/_generated/_dependencies/{source/0x1 → std}/option/structs.d.ts +29 -21
- package/_generated/_dependencies/std/option/structs.js +155 -0
- package/_generated/_dependencies/std/type-name/structs.d.ts +65 -0
- package/_generated/_dependencies/{source/0x1 → std}/type-name/structs.js +49 -22
- package/_generated/_dependencies/sui/bag/structs.d.ts +75 -0
- package/_generated/_dependencies/sui/bag/structs.js +154 -0
- package/_generated/_dependencies/{source/0x2 → sui}/balance/structs.d.ts +80 -60
- package/_generated/_dependencies/sui/balance/structs.js +306 -0
- package/_generated/_dependencies/sui/object/structs.d.ts +104 -0
- package/_generated/_dependencies/{source/0x2 → sui}/object/structs.js +98 -46
- package/_generated/_dependencies/{source/0x2 → sui}/object-table/structs.d.ts +37 -30
- package/_generated/_dependencies/sui/object-table/structs.js +164 -0
- package/_generated/_envs/index.d.ts +3 -0
- package/_generated/_envs/index.js +18 -0
- package/_generated/_envs/mainnet.d.ts +2 -0
- package/_generated/_envs/mainnet.js +490 -0
- package/_generated/_framework/env.d.ts +137 -0
- package/_generated/_framework/env.js +261 -0
- package/_generated/_framework/reified.d.ts +68 -36
- package/_generated/_framework/reified.js +110 -98
- package/_generated/_framework/util.d.ts +4 -4
- package/_generated/_framework/util.js +82 -79
- package/_generated/_framework/vector.d.ts +11 -9
- package/_generated/_framework/vector.js +10 -10
- package/_generated/suilend/cell/structs.d.ts +24 -22
- package/_generated/suilend/cell/structs.js +68 -24
- package/_generated/suilend/decimal/structs.d.ts +28 -24
- package/_generated/suilend/decimal/structs.js +45 -24
- package/_generated/suilend/index.d.ts +5 -6
- package/_generated/suilend/index.js +10 -19
- package/_generated/suilend/lending-market/functions.d.ts +1123 -149
- package/_generated/suilend/lending-market/functions.js +1121 -207
- package/_generated/suilend/lending-market/structs.d.ts +985 -1290
- package/_generated/suilend/lending-market/structs.js +2482 -1282
- package/_generated/suilend/lending-market-registry/functions.d.ts +32 -3
- package/_generated/suilend/lending-market-registry/functions.js +30 -6
- package/_generated/suilend/liquidity-mining/structs.d.ts +200 -333
- package/_generated/suilend/liquidity-mining/structs.js +449 -319
- package/_generated/suilend/obligation/structs.d.ts +406 -918
- package/_generated/suilend/obligation/structs.js +786 -596
- package/_generated/suilend/rate-limiter/functions.d.ts +134 -15
- package/_generated/suilend/rate-limiter/functions.js +139 -21
- package/_generated/suilend/rate-limiter/structs.d.ts +72 -80
- package/_generated/suilend/rate-limiter/structs.js +98 -48
- package/_generated/suilend/reserve/structs.d.ts +611 -904
- package/_generated/suilend/reserve/structs.js +1528 -736
- package/_generated/suilend/reserve-config/functions.d.ts +718 -96
- package/_generated/suilend/reserve-config/functions.js +751 -157
- package/_generated/suilend/reserve-config/structs.d.ts +148 -163
- package/_generated/suilend/reserve-config/structs.js +260 -94
- package/client.d.ts +2 -2
- package/client.js +22 -39
- package/lib/initialize.d.ts +76 -76
- package/lib/initialize.js +10 -10
- package/lib/proCompatible.js +5 -5
- package/package.json +1 -1
- package/parsers/lendingMarket.d.ts +9 -9
- package/parsers/obligation.d.ts +14 -14
- package/parsers/obligation.js +4 -4
- package/parsers/rateLimiter.d.ts +1 -1
- package/parsers/reserve.d.ts +12 -12
- package/parsers/reserve.js +2 -2
- package/strategies.d.ts +14 -14
- package/utils/simulate.d.ts +1 -1
- package/utils/simulate.js +5 -5
- package/_generated/_dependencies/source/0x1/ascii/structs.d.ts +0 -84
- package/_generated/_dependencies/source/0x1/index.d.ts +0 -3
- package/_generated/_dependencies/source/0x1/index.js +0 -3
- package/_generated/_dependencies/source/0x1/option/structs.js +0 -110
- package/_generated/_dependencies/source/0x1/type-name/structs.d.ts +0 -47
- package/_generated/_dependencies/source/0x2/bag/structs.d.ts +0 -52
- package/_generated/_dependencies/source/0x2/bag/structs.js +0 -113
- package/_generated/_dependencies/source/0x2/balance/structs.js +0 -210
- package/_generated/_dependencies/source/0x2/index.d.ts +0 -3
- package/_generated/_dependencies/source/0x2/index.js +0 -3
- package/_generated/_dependencies/source/0x2/object/structs.d.ts +0 -82
- package/_generated/_dependencies/source/0x2/object-table/structs.js +0 -115
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.d.ts +0 -4
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/index.js +0 -4
- package/_generated/_dependencies/source/0x8d97f1cd6ac663735be08d1d2b6d02a159e711586461306ce60a2b7a6a565a9e/price-identifier/structs.d.ts +0 -46
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
/** parameters for a Reserve. */
|
|
2
|
+
import { bcs } from '@mysten/sui/bcs';
|
|
3
|
+
import { Bag } from '../../_dependencies/sui/bag/structs.js';
|
|
4
|
+
import { getTypeOrigin } from '../../_envs/index.js';
|
|
5
|
+
import { decodeFromFields, decodeFromFieldsWithTypes, decodeFromJSONField, fieldToJSON, phantom, vector, } from '../../_framework/reified.js';
|
|
6
|
+
import { composeSuiType, compressSuiType } from '../../_framework/util.js';
|
|
7
7
|
/* ============================== ReserveConfig =============================== */
|
|
8
8
|
export function isReserveConfig(type) {
|
|
9
9
|
type = compressSuiType(type);
|
|
10
|
-
return type
|
|
10
|
+
return type
|
|
11
|
+
=== `${getTypeOrigin('suilend', 'reserve_config::ReserveConfig')}::reserve_config::ReserveConfig`;
|
|
11
12
|
}
|
|
13
|
+
/** Configuration parameters for a reserve in the lending market. */
|
|
12
14
|
export class ReserveConfig {
|
|
13
15
|
__StructClass = true;
|
|
14
|
-
static $typeName
|
|
16
|
+
static get $typeName() {
|
|
17
|
+
return `${getTypeOrigin('suilend', 'reserve_config::ReserveConfig')}::reserve_config::ReserveConfig`;
|
|
18
|
+
}
|
|
15
19
|
static $numTypeParams = 0;
|
|
16
20
|
static $isPhantom = [];
|
|
17
21
|
$typeName = ReserveConfig.$typeName;
|
|
@@ -61,23 +65,29 @@ export class ReserveConfig {
|
|
|
61
65
|
this.additionalFields = fields.additionalFields;
|
|
62
66
|
}
|
|
63
67
|
static reified() {
|
|
68
|
+
const reifiedBcs = ReserveConfig.bcs;
|
|
64
69
|
return {
|
|
65
|
-
typeName
|
|
66
|
-
|
|
70
|
+
get typeName() {
|
|
71
|
+
return ReserveConfig.$typeName;
|
|
72
|
+
},
|
|
73
|
+
get fullTypeName() {
|
|
74
|
+
return composeSuiType(ReserveConfig.$typeName, ...[]);
|
|
75
|
+
},
|
|
67
76
|
typeArgs: [],
|
|
68
77
|
isPhantom: ReserveConfig.$isPhantom,
|
|
69
78
|
reifiedTypeArgs: [],
|
|
70
79
|
fromFields: (fields) => ReserveConfig.fromFields(fields),
|
|
71
80
|
fromFieldsWithTypes: (item) => ReserveConfig.fromFieldsWithTypes(item),
|
|
72
|
-
fromBcs: (data) => ReserveConfig.
|
|
73
|
-
bcs:
|
|
81
|
+
fromBcs: (data) => ReserveConfig.fromFields(reifiedBcs.parse(data)),
|
|
82
|
+
bcs: reifiedBcs,
|
|
74
83
|
fromJSONField: (field) => ReserveConfig.fromJSONField(field),
|
|
75
84
|
fromJSON: (json) => ReserveConfig.fromJSON(json),
|
|
85
|
+
fromCoreObject: (obj) => ReserveConfig.fromCoreObject(obj),
|
|
76
86
|
fetch: async (client, id) => ReserveConfig.fetch(client, id),
|
|
77
87
|
new: (fields) => {
|
|
78
88
|
return new ReserveConfig([], fields);
|
|
79
89
|
},
|
|
80
|
-
kind:
|
|
90
|
+
kind: 'StructClassReified',
|
|
81
91
|
};
|
|
82
92
|
}
|
|
83
93
|
static get r() {
|
|
@@ -89,8 +99,8 @@ export class ReserveConfig {
|
|
|
89
99
|
static get p() {
|
|
90
100
|
return ReserveConfig.phantom();
|
|
91
101
|
}
|
|
92
|
-
static
|
|
93
|
-
return bcs.struct(
|
|
102
|
+
static instantiateBcs() {
|
|
103
|
+
return bcs.struct('ReserveConfig', {
|
|
94
104
|
open_ltv_pct: bcs.u8(),
|
|
95
105
|
close_ltv_pct: bcs.u8(),
|
|
96
106
|
max_close_ltv_pct: bcs.u8(),
|
|
@@ -112,52 +122,59 @@ export class ReserveConfig {
|
|
|
112
122
|
additional_fields: Bag.bcs,
|
|
113
123
|
});
|
|
114
124
|
}
|
|
125
|
+
static cachedBcs = null;
|
|
126
|
+
static get bcs() {
|
|
127
|
+
if (!ReserveConfig.cachedBcs) {
|
|
128
|
+
ReserveConfig.cachedBcs = ReserveConfig.instantiateBcs();
|
|
129
|
+
}
|
|
130
|
+
return ReserveConfig.cachedBcs;
|
|
131
|
+
}
|
|
115
132
|
static fromFields(fields) {
|
|
116
133
|
return ReserveConfig.reified().new({
|
|
117
|
-
openLtvPct: decodeFromFields(
|
|
118
|
-
closeLtvPct: decodeFromFields(
|
|
119
|
-
maxCloseLtvPct: decodeFromFields(
|
|
120
|
-
borrowWeightBps: decodeFromFields(
|
|
121
|
-
depositLimit: decodeFromFields(
|
|
122
|
-
borrowLimit: decodeFromFields(
|
|
123
|
-
liquidationBonusBps: decodeFromFields(
|
|
124
|
-
maxLiquidationBonusBps: decodeFromFields(
|
|
125
|
-
depositLimitUsd: decodeFromFields(
|
|
126
|
-
borrowLimitUsd: decodeFromFields(
|
|
127
|
-
interestRateUtils: decodeFromFields(
|
|
128
|
-
interestRateAprs: decodeFromFields(
|
|
129
|
-
borrowFeeBps: decodeFromFields(
|
|
130
|
-
spreadFeeBps: decodeFromFields(
|
|
131
|
-
protocolLiquidationFeeBps: decodeFromFields(
|
|
132
|
-
isolated: decodeFromFields(
|
|
133
|
-
openAttributedBorrowLimitUsd: decodeFromFields(
|
|
134
|
-
closeAttributedBorrowLimitUsd: decodeFromFields(
|
|
134
|
+
openLtvPct: decodeFromFields('u8', fields.open_ltv_pct),
|
|
135
|
+
closeLtvPct: decodeFromFields('u8', fields.close_ltv_pct),
|
|
136
|
+
maxCloseLtvPct: decodeFromFields('u8', fields.max_close_ltv_pct),
|
|
137
|
+
borrowWeightBps: decodeFromFields('u64', fields.borrow_weight_bps),
|
|
138
|
+
depositLimit: decodeFromFields('u64', fields.deposit_limit),
|
|
139
|
+
borrowLimit: decodeFromFields('u64', fields.borrow_limit),
|
|
140
|
+
liquidationBonusBps: decodeFromFields('u64', fields.liquidation_bonus_bps),
|
|
141
|
+
maxLiquidationBonusBps: decodeFromFields('u64', fields.max_liquidation_bonus_bps),
|
|
142
|
+
depositLimitUsd: decodeFromFields('u64', fields.deposit_limit_usd),
|
|
143
|
+
borrowLimitUsd: decodeFromFields('u64', fields.borrow_limit_usd),
|
|
144
|
+
interestRateUtils: decodeFromFields(vector('u8'), fields.interest_rate_utils),
|
|
145
|
+
interestRateAprs: decodeFromFields(vector('u64'), fields.interest_rate_aprs),
|
|
146
|
+
borrowFeeBps: decodeFromFields('u64', fields.borrow_fee_bps),
|
|
147
|
+
spreadFeeBps: decodeFromFields('u64', fields.spread_fee_bps),
|
|
148
|
+
protocolLiquidationFeeBps: decodeFromFields('u64', fields.protocol_liquidation_fee_bps),
|
|
149
|
+
isolated: decodeFromFields('bool', fields.isolated),
|
|
150
|
+
openAttributedBorrowLimitUsd: decodeFromFields('u64', fields.open_attributed_borrow_limit_usd),
|
|
151
|
+
closeAttributedBorrowLimitUsd: decodeFromFields('u64', fields.close_attributed_borrow_limit_usd),
|
|
135
152
|
additionalFields: decodeFromFields(Bag.reified(), fields.additional_fields),
|
|
136
153
|
});
|
|
137
154
|
}
|
|
138
155
|
static fromFieldsWithTypes(item) {
|
|
139
156
|
if (!isReserveConfig(item.type)) {
|
|
140
|
-
throw new Error(
|
|
157
|
+
throw new Error('not a ReserveConfig type');
|
|
141
158
|
}
|
|
142
159
|
return ReserveConfig.reified().new({
|
|
143
|
-
openLtvPct: decodeFromFieldsWithTypes(
|
|
144
|
-
closeLtvPct: decodeFromFieldsWithTypes(
|
|
145
|
-
maxCloseLtvPct: decodeFromFieldsWithTypes(
|
|
146
|
-
borrowWeightBps: decodeFromFieldsWithTypes(
|
|
147
|
-
depositLimit: decodeFromFieldsWithTypes(
|
|
148
|
-
borrowLimit: decodeFromFieldsWithTypes(
|
|
149
|
-
liquidationBonusBps: decodeFromFieldsWithTypes(
|
|
150
|
-
maxLiquidationBonusBps: decodeFromFieldsWithTypes(
|
|
151
|
-
depositLimitUsd: decodeFromFieldsWithTypes(
|
|
152
|
-
borrowLimitUsd: decodeFromFieldsWithTypes(
|
|
153
|
-
interestRateUtils: decodeFromFieldsWithTypes(
|
|
154
|
-
interestRateAprs: decodeFromFieldsWithTypes(
|
|
155
|
-
borrowFeeBps: decodeFromFieldsWithTypes(
|
|
156
|
-
spreadFeeBps: decodeFromFieldsWithTypes(
|
|
157
|
-
protocolLiquidationFeeBps: decodeFromFieldsWithTypes(
|
|
158
|
-
isolated: decodeFromFieldsWithTypes(
|
|
159
|
-
openAttributedBorrowLimitUsd: decodeFromFieldsWithTypes(
|
|
160
|
-
closeAttributedBorrowLimitUsd: decodeFromFieldsWithTypes(
|
|
160
|
+
openLtvPct: decodeFromFieldsWithTypes('u8', item.fields.open_ltv_pct),
|
|
161
|
+
closeLtvPct: decodeFromFieldsWithTypes('u8', item.fields.close_ltv_pct),
|
|
162
|
+
maxCloseLtvPct: decodeFromFieldsWithTypes('u8', item.fields.max_close_ltv_pct),
|
|
163
|
+
borrowWeightBps: decodeFromFieldsWithTypes('u64', item.fields.borrow_weight_bps),
|
|
164
|
+
depositLimit: decodeFromFieldsWithTypes('u64', item.fields.deposit_limit),
|
|
165
|
+
borrowLimit: decodeFromFieldsWithTypes('u64', item.fields.borrow_limit),
|
|
166
|
+
liquidationBonusBps: decodeFromFieldsWithTypes('u64', item.fields.liquidation_bonus_bps),
|
|
167
|
+
maxLiquidationBonusBps: decodeFromFieldsWithTypes('u64', item.fields.max_liquidation_bonus_bps),
|
|
168
|
+
depositLimitUsd: decodeFromFieldsWithTypes('u64', item.fields.deposit_limit_usd),
|
|
169
|
+
borrowLimitUsd: decodeFromFieldsWithTypes('u64', item.fields.borrow_limit_usd),
|
|
170
|
+
interestRateUtils: decodeFromFieldsWithTypes(vector('u8'), item.fields.interest_rate_utils),
|
|
171
|
+
interestRateAprs: decodeFromFieldsWithTypes(vector('u64'), item.fields.interest_rate_aprs),
|
|
172
|
+
borrowFeeBps: decodeFromFieldsWithTypes('u64', item.fields.borrow_fee_bps),
|
|
173
|
+
spreadFeeBps: decodeFromFieldsWithTypes('u64', item.fields.spread_fee_bps),
|
|
174
|
+
protocolLiquidationFeeBps: decodeFromFieldsWithTypes('u64', item.fields.protocol_liquidation_fee_bps),
|
|
175
|
+
isolated: decodeFromFieldsWithTypes('bool', item.fields.isolated),
|
|
176
|
+
openAttributedBorrowLimitUsd: decodeFromFieldsWithTypes('u64', item.fields.open_attributed_borrow_limit_usd),
|
|
177
|
+
closeAttributedBorrowLimitUsd: decodeFromFieldsWithTypes('u64', item.fields.close_attributed_borrow_limit_usd),
|
|
161
178
|
additionalFields: decodeFromFieldsWithTypes(Bag.reified(), item.fields.additional_fields),
|
|
162
179
|
});
|
|
163
180
|
}
|
|
@@ -188,43 +205,48 @@ export class ReserveConfig {
|
|
|
188
205
|
};
|
|
189
206
|
}
|
|
190
207
|
toJSON() {
|
|
191
|
-
return {
|
|
192
|
-
$typeName: this.$typeName,
|
|
193
|
-
$typeArgs: this.$typeArgs,
|
|
194
|
-
...this.toJSONField(),
|
|
195
|
-
};
|
|
208
|
+
return { $typeName: this.$typeName, $typeArgs: this.$typeArgs, ...this.toJSONField() };
|
|
196
209
|
}
|
|
197
210
|
static fromJSONField(field) {
|
|
198
211
|
return ReserveConfig.reified().new({
|
|
199
|
-
openLtvPct: decodeFromJSONField(
|
|
200
|
-
closeLtvPct: decodeFromJSONField(
|
|
201
|
-
maxCloseLtvPct: decodeFromJSONField(
|
|
202
|
-
borrowWeightBps: decodeFromJSONField(
|
|
203
|
-
depositLimit: decodeFromJSONField(
|
|
204
|
-
borrowLimit: decodeFromJSONField(
|
|
205
|
-
liquidationBonusBps: decodeFromJSONField(
|
|
206
|
-
maxLiquidationBonusBps: decodeFromJSONField(
|
|
207
|
-
depositLimitUsd: decodeFromJSONField(
|
|
208
|
-
borrowLimitUsd: decodeFromJSONField(
|
|
209
|
-
interestRateUtils: decodeFromJSONField(
|
|
210
|
-
interestRateAprs: decodeFromJSONField(
|
|
211
|
-
borrowFeeBps: decodeFromJSONField(
|
|
212
|
-
spreadFeeBps: decodeFromJSONField(
|
|
213
|
-
protocolLiquidationFeeBps: decodeFromJSONField(
|
|
214
|
-
isolated: decodeFromJSONField(
|
|
215
|
-
openAttributedBorrowLimitUsd: decodeFromJSONField(
|
|
216
|
-
closeAttributedBorrowLimitUsd: decodeFromJSONField(
|
|
212
|
+
openLtvPct: decodeFromJSONField('u8', field.openLtvPct),
|
|
213
|
+
closeLtvPct: decodeFromJSONField('u8', field.closeLtvPct),
|
|
214
|
+
maxCloseLtvPct: decodeFromJSONField('u8', field.maxCloseLtvPct),
|
|
215
|
+
borrowWeightBps: decodeFromJSONField('u64', field.borrowWeightBps),
|
|
216
|
+
depositLimit: decodeFromJSONField('u64', field.depositLimit),
|
|
217
|
+
borrowLimit: decodeFromJSONField('u64', field.borrowLimit),
|
|
218
|
+
liquidationBonusBps: decodeFromJSONField('u64', field.liquidationBonusBps),
|
|
219
|
+
maxLiquidationBonusBps: decodeFromJSONField('u64', field.maxLiquidationBonusBps),
|
|
220
|
+
depositLimitUsd: decodeFromJSONField('u64', field.depositLimitUsd),
|
|
221
|
+
borrowLimitUsd: decodeFromJSONField('u64', field.borrowLimitUsd),
|
|
222
|
+
interestRateUtils: decodeFromJSONField(vector('u8'), field.interestRateUtils),
|
|
223
|
+
interestRateAprs: decodeFromJSONField(vector('u64'), field.interestRateAprs),
|
|
224
|
+
borrowFeeBps: decodeFromJSONField('u64', field.borrowFeeBps),
|
|
225
|
+
spreadFeeBps: decodeFromJSONField('u64', field.spreadFeeBps),
|
|
226
|
+
protocolLiquidationFeeBps: decodeFromJSONField('u64', field.protocolLiquidationFeeBps),
|
|
227
|
+
isolated: decodeFromJSONField('bool', field.isolated),
|
|
228
|
+
openAttributedBorrowLimitUsd: decodeFromJSONField('u64', field.openAttributedBorrowLimitUsd),
|
|
229
|
+
closeAttributedBorrowLimitUsd: decodeFromJSONField('u64', field.closeAttributedBorrowLimitUsd),
|
|
217
230
|
additionalFields: decodeFromJSONField(Bag.reified(), field.additionalFields),
|
|
218
231
|
});
|
|
219
232
|
}
|
|
220
233
|
static fromJSON(json) {
|
|
221
234
|
if (json.$typeName !== ReserveConfig.$typeName) {
|
|
222
|
-
throw new Error(
|
|
235
|
+
throw new Error(`not a ReserveConfig json object: expected '${ReserveConfig.$typeName}' but got '${json.$typeName}'`);
|
|
223
236
|
}
|
|
224
237
|
return ReserveConfig.fromJSONField(json);
|
|
225
238
|
}
|
|
239
|
+
static fromCoreObject(obj) {
|
|
240
|
+
if (!isReserveConfig(obj.type)) {
|
|
241
|
+
throw new Error(`object at ${obj.objectId} is not a ReserveConfig object`);
|
|
242
|
+
}
|
|
243
|
+
return ReserveConfig.fromBcs(obj.content);
|
|
244
|
+
}
|
|
226
245
|
static async fetch(client, id) {
|
|
227
|
-
const { object } = await client.getObject({
|
|
246
|
+
const { object } = await client.core.getObject({
|
|
247
|
+
objectId: id,
|
|
248
|
+
include: { content: true },
|
|
249
|
+
});
|
|
228
250
|
if (!isReserveConfig(object.type)) {
|
|
229
251
|
throw new Error(`object at id ${id} is not a ReserveConfig object`);
|
|
230
252
|
}
|
|
@@ -234,11 +256,15 @@ export class ReserveConfig {
|
|
|
234
256
|
/* ============================== ReserveConfigBuilder =============================== */
|
|
235
257
|
export function isReserveConfigBuilder(type) {
|
|
236
258
|
type = compressSuiType(type);
|
|
237
|
-
return type
|
|
259
|
+
return type
|
|
260
|
+
=== `${getTypeOrigin('suilend', 'reserve_config::ReserveConfigBuilder')}::reserve_config::ReserveConfigBuilder`;
|
|
238
261
|
}
|
|
262
|
+
/** Builder struct for constructing a ReserveConfig. */
|
|
239
263
|
export class ReserveConfigBuilder {
|
|
240
264
|
__StructClass = true;
|
|
241
|
-
static $typeName
|
|
265
|
+
static get $typeName() {
|
|
266
|
+
return `${getTypeOrigin('suilend', 'reserve_config::ReserveConfigBuilder')}::reserve_config::ReserveConfigBuilder`;
|
|
267
|
+
}
|
|
242
268
|
static $numTypeParams = 0;
|
|
243
269
|
static $isPhantom = [];
|
|
244
270
|
$typeName = ReserveConfigBuilder.$typeName;
|
|
@@ -252,23 +278,29 @@ export class ReserveConfigBuilder {
|
|
|
252
278
|
this.fields = fields.fields;
|
|
253
279
|
}
|
|
254
280
|
static reified() {
|
|
281
|
+
const reifiedBcs = ReserveConfigBuilder.bcs;
|
|
255
282
|
return {
|
|
256
|
-
typeName
|
|
257
|
-
|
|
283
|
+
get typeName() {
|
|
284
|
+
return ReserveConfigBuilder.$typeName;
|
|
285
|
+
},
|
|
286
|
+
get fullTypeName() {
|
|
287
|
+
return composeSuiType(ReserveConfigBuilder.$typeName, ...[]);
|
|
288
|
+
},
|
|
258
289
|
typeArgs: [],
|
|
259
290
|
isPhantom: ReserveConfigBuilder.$isPhantom,
|
|
260
291
|
reifiedTypeArgs: [],
|
|
261
292
|
fromFields: (fields) => ReserveConfigBuilder.fromFields(fields),
|
|
262
293
|
fromFieldsWithTypes: (item) => ReserveConfigBuilder.fromFieldsWithTypes(item),
|
|
263
|
-
fromBcs: (data) => ReserveConfigBuilder.
|
|
264
|
-
bcs:
|
|
294
|
+
fromBcs: (data) => ReserveConfigBuilder.fromFields(reifiedBcs.parse(data)),
|
|
295
|
+
bcs: reifiedBcs,
|
|
265
296
|
fromJSONField: (field) => ReserveConfigBuilder.fromJSONField(field),
|
|
266
297
|
fromJSON: (json) => ReserveConfigBuilder.fromJSON(json),
|
|
298
|
+
fromCoreObject: (obj) => ReserveConfigBuilder.fromCoreObject(obj),
|
|
267
299
|
fetch: async (client, id) => ReserveConfigBuilder.fetch(client, id),
|
|
268
300
|
new: (fields) => {
|
|
269
301
|
return new ReserveConfigBuilder([], fields);
|
|
270
302
|
},
|
|
271
|
-
kind:
|
|
303
|
+
kind: 'StructClassReified',
|
|
272
304
|
};
|
|
273
305
|
}
|
|
274
306
|
static get r() {
|
|
@@ -280,11 +312,18 @@ export class ReserveConfigBuilder {
|
|
|
280
312
|
static get p() {
|
|
281
313
|
return ReserveConfigBuilder.phantom();
|
|
282
314
|
}
|
|
283
|
-
static
|
|
284
|
-
return bcs.struct(
|
|
315
|
+
static instantiateBcs() {
|
|
316
|
+
return bcs.struct('ReserveConfigBuilder', {
|
|
285
317
|
fields: Bag.bcs,
|
|
286
318
|
});
|
|
287
319
|
}
|
|
320
|
+
static cachedBcs = null;
|
|
321
|
+
static get bcs() {
|
|
322
|
+
if (!ReserveConfigBuilder.cachedBcs) {
|
|
323
|
+
ReserveConfigBuilder.cachedBcs = ReserveConfigBuilder.instantiateBcs();
|
|
324
|
+
}
|
|
325
|
+
return ReserveConfigBuilder.cachedBcs;
|
|
326
|
+
}
|
|
288
327
|
static fromFields(fields) {
|
|
289
328
|
return ReserveConfigBuilder.reified().new({
|
|
290
329
|
fields: decodeFromFields(Bag.reified(), fields.fields),
|
|
@@ -292,7 +331,7 @@ export class ReserveConfigBuilder {
|
|
|
292
331
|
}
|
|
293
332
|
static fromFieldsWithTypes(item) {
|
|
294
333
|
if (!isReserveConfigBuilder(item.type)) {
|
|
295
|
-
throw new Error(
|
|
334
|
+
throw new Error('not a ReserveConfigBuilder type');
|
|
296
335
|
}
|
|
297
336
|
return ReserveConfigBuilder.reified().new({
|
|
298
337
|
fields: decodeFromFieldsWithTypes(Bag.reified(), item.fields.fields),
|
|
@@ -307,11 +346,7 @@ export class ReserveConfigBuilder {
|
|
|
307
346
|
};
|
|
308
347
|
}
|
|
309
348
|
toJSON() {
|
|
310
|
-
return {
|
|
311
|
-
$typeName: this.$typeName,
|
|
312
|
-
$typeArgs: this.$typeArgs,
|
|
313
|
-
...this.toJSONField(),
|
|
314
|
-
};
|
|
349
|
+
return { $typeName: this.$typeName, $typeArgs: this.$typeArgs, ...this.toJSONField() };
|
|
315
350
|
}
|
|
316
351
|
static fromJSONField(field) {
|
|
317
352
|
return ReserveConfigBuilder.reified().new({
|
|
@@ -320,15 +355,146 @@ export class ReserveConfigBuilder {
|
|
|
320
355
|
}
|
|
321
356
|
static fromJSON(json) {
|
|
322
357
|
if (json.$typeName !== ReserveConfigBuilder.$typeName) {
|
|
323
|
-
throw new Error(
|
|
358
|
+
throw new Error(`not a ReserveConfigBuilder json object: expected '${ReserveConfigBuilder.$typeName}' but got '${json.$typeName}'`);
|
|
324
359
|
}
|
|
325
360
|
return ReserveConfigBuilder.fromJSONField(json);
|
|
326
361
|
}
|
|
362
|
+
static fromCoreObject(obj) {
|
|
363
|
+
if (!isReserveConfigBuilder(obj.type)) {
|
|
364
|
+
throw new Error(`object at ${obj.objectId} is not a ReserveConfigBuilder object`);
|
|
365
|
+
}
|
|
366
|
+
return ReserveConfigBuilder.fromBcs(obj.content);
|
|
367
|
+
}
|
|
327
368
|
static async fetch(client, id) {
|
|
328
|
-
const { object } = await client.getObject({
|
|
369
|
+
const { object } = await client.core.getObject({
|
|
370
|
+
objectId: id,
|
|
371
|
+
include: { content: true },
|
|
372
|
+
});
|
|
329
373
|
if (!isReserveConfigBuilder(object.type)) {
|
|
330
374
|
throw new Error(`object at id ${id} is not a ReserveConfigBuilder object`);
|
|
331
375
|
}
|
|
332
376
|
return ReserveConfigBuilder.fromBcs(object.content);
|
|
333
377
|
}
|
|
334
378
|
}
|
|
379
|
+
/* ============================== ConfidenceMultiplierKey =============================== */
|
|
380
|
+
export function isConfidenceMultiplierKey(type) {
|
|
381
|
+
type = compressSuiType(type);
|
|
382
|
+
return type
|
|
383
|
+
=== `${getTypeOrigin('suilend', 'reserve_config::ConfidenceMultiplierKey')}::reserve_config::ConfidenceMultiplierKey`;
|
|
384
|
+
}
|
|
385
|
+
export class ConfidenceMultiplierKey {
|
|
386
|
+
__StructClass = true;
|
|
387
|
+
static get $typeName() {
|
|
388
|
+
return `${getTypeOrigin('suilend', 'reserve_config::ConfidenceMultiplierKey')}::reserve_config::ConfidenceMultiplierKey`;
|
|
389
|
+
}
|
|
390
|
+
static $numTypeParams = 0;
|
|
391
|
+
static $isPhantom = [];
|
|
392
|
+
$typeName = ConfidenceMultiplierKey.$typeName;
|
|
393
|
+
$fullTypeName;
|
|
394
|
+
$typeArgs;
|
|
395
|
+
$isPhantom = ConfidenceMultiplierKey.$isPhantom;
|
|
396
|
+
dummyField;
|
|
397
|
+
constructor(typeArgs, fields) {
|
|
398
|
+
this.$fullTypeName = composeSuiType(ConfidenceMultiplierKey.$typeName, ...typeArgs);
|
|
399
|
+
this.$typeArgs = typeArgs;
|
|
400
|
+
this.dummyField = fields.dummyField;
|
|
401
|
+
}
|
|
402
|
+
static reified() {
|
|
403
|
+
const reifiedBcs = ConfidenceMultiplierKey.bcs;
|
|
404
|
+
return {
|
|
405
|
+
get typeName() {
|
|
406
|
+
return ConfidenceMultiplierKey.$typeName;
|
|
407
|
+
},
|
|
408
|
+
get fullTypeName() {
|
|
409
|
+
return composeSuiType(ConfidenceMultiplierKey.$typeName, ...[]);
|
|
410
|
+
},
|
|
411
|
+
typeArgs: [],
|
|
412
|
+
isPhantom: ConfidenceMultiplierKey.$isPhantom,
|
|
413
|
+
reifiedTypeArgs: [],
|
|
414
|
+
fromFields: (fields) => ConfidenceMultiplierKey.fromFields(fields),
|
|
415
|
+
fromFieldsWithTypes: (item) => ConfidenceMultiplierKey.fromFieldsWithTypes(item),
|
|
416
|
+
fromBcs: (data) => ConfidenceMultiplierKey.fromFields(reifiedBcs.parse(data)),
|
|
417
|
+
bcs: reifiedBcs,
|
|
418
|
+
fromJSONField: (field) => ConfidenceMultiplierKey.fromJSONField(field),
|
|
419
|
+
fromJSON: (json) => ConfidenceMultiplierKey.fromJSON(json),
|
|
420
|
+
fromCoreObject: (obj) => ConfidenceMultiplierKey.fromCoreObject(obj),
|
|
421
|
+
fetch: async (client, id) => ConfidenceMultiplierKey.fetch(client, id),
|
|
422
|
+
new: (fields) => {
|
|
423
|
+
return new ConfidenceMultiplierKey([], fields);
|
|
424
|
+
},
|
|
425
|
+
kind: 'StructClassReified',
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
static get r() {
|
|
429
|
+
return ConfidenceMultiplierKey.reified();
|
|
430
|
+
}
|
|
431
|
+
static phantom() {
|
|
432
|
+
return phantom(ConfidenceMultiplierKey.reified());
|
|
433
|
+
}
|
|
434
|
+
static get p() {
|
|
435
|
+
return ConfidenceMultiplierKey.phantom();
|
|
436
|
+
}
|
|
437
|
+
static instantiateBcs() {
|
|
438
|
+
return bcs.struct('ConfidenceMultiplierKey', {
|
|
439
|
+
dummy_field: bcs.bool(),
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
static cachedBcs = null;
|
|
443
|
+
static get bcs() {
|
|
444
|
+
if (!ConfidenceMultiplierKey.cachedBcs) {
|
|
445
|
+
ConfidenceMultiplierKey.cachedBcs = ConfidenceMultiplierKey.instantiateBcs();
|
|
446
|
+
}
|
|
447
|
+
return ConfidenceMultiplierKey.cachedBcs;
|
|
448
|
+
}
|
|
449
|
+
static fromFields(fields) {
|
|
450
|
+
return ConfidenceMultiplierKey.reified().new({
|
|
451
|
+
dummyField: decodeFromFields('bool', fields.dummy_field),
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
static fromFieldsWithTypes(item) {
|
|
455
|
+
if (!isConfidenceMultiplierKey(item.type)) {
|
|
456
|
+
throw new Error('not a ConfidenceMultiplierKey type');
|
|
457
|
+
}
|
|
458
|
+
return ConfidenceMultiplierKey.reified().new({
|
|
459
|
+
dummyField: decodeFromFieldsWithTypes('bool', item.fields.dummy_field),
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
static fromBcs(data) {
|
|
463
|
+
return ConfidenceMultiplierKey.fromFields(ConfidenceMultiplierKey.bcs.parse(data));
|
|
464
|
+
}
|
|
465
|
+
toJSONField() {
|
|
466
|
+
return {
|
|
467
|
+
dummyField: this.dummyField,
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
toJSON() {
|
|
471
|
+
return { $typeName: this.$typeName, $typeArgs: this.$typeArgs, ...this.toJSONField() };
|
|
472
|
+
}
|
|
473
|
+
static fromJSONField(field) {
|
|
474
|
+
return ConfidenceMultiplierKey.reified().new({
|
|
475
|
+
dummyField: decodeFromJSONField('bool', field.dummyField),
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
static fromJSON(json) {
|
|
479
|
+
if (json.$typeName !== ConfidenceMultiplierKey.$typeName) {
|
|
480
|
+
throw new Error(`not a ConfidenceMultiplierKey json object: expected '${ConfidenceMultiplierKey.$typeName}' but got '${json.$typeName}'`);
|
|
481
|
+
}
|
|
482
|
+
return ConfidenceMultiplierKey.fromJSONField(json);
|
|
483
|
+
}
|
|
484
|
+
static fromCoreObject(obj) {
|
|
485
|
+
if (!isConfidenceMultiplierKey(obj.type)) {
|
|
486
|
+
throw new Error(`object at ${obj.objectId} is not a ConfidenceMultiplierKey object`);
|
|
487
|
+
}
|
|
488
|
+
return ConfidenceMultiplierKey.fromBcs(obj.content);
|
|
489
|
+
}
|
|
490
|
+
static async fetch(client, id) {
|
|
491
|
+
const { object } = await client.core.getObject({
|
|
492
|
+
objectId: id,
|
|
493
|
+
include: { content: true },
|
|
494
|
+
});
|
|
495
|
+
if (!isConfidenceMultiplierKey(object.type)) {
|
|
496
|
+
throw new Error(`object at id ${id} is not a ConfidenceMultiplierKey object`);
|
|
497
|
+
}
|
|
498
|
+
return ConfidenceMultiplierKey.fromBcs(object.content);
|
|
499
|
+
}
|
|
500
|
+
}
|
package/client.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export interface PriceUpdate {
|
|
|
18
18
|
updateData: Buffer[];
|
|
19
19
|
}
|
|
20
20
|
export declare function needsPriceRefresh(stalenessSeconds: number): boolean;
|
|
21
|
-
export declare const ADMIN_ADDRESS
|
|
22
|
-
export declare const LENDING_MARKET_REGISTRY_ID
|
|
21
|
+
export declare const ADMIN_ADDRESS = "0xb1ffbc2e1915f44b8f271a703becc1bf8aa79bc22431a58900a102892b783c25";
|
|
22
|
+
export declare const LENDING_MARKET_REGISTRY_ID = "0x64faff8d91a56c4f55debbb44767b009ee744a70bc2cc8e3bbd2718c92f85931";
|
|
23
23
|
export declare const LENDING_MARKET_ID: string, LENDING_MARKET_TYPE: string;
|
|
24
24
|
export declare const STEAMM_LM_LENDING_MARKET_ID: string, STEAMM_LM_LENDING_MARKET_TYPE: string;
|
|
25
25
|
export declare function getLatestPackageId(suiGrpcClient: SuiGrpcClient, upgradeCapId: string): Promise<any>;
|
package/client.js
CHANGED
|
@@ -5,7 +5,8 @@ import BigNumber from "bignumber.js";
|
|
|
5
5
|
import { extractCTokenCoinType, getAllCoins, getSpendableCoin, } from "@suilend/sui-core";
|
|
6
6
|
import { phantom } from "./_generated/_framework/reified.js";
|
|
7
7
|
import { PKG_V10, setPublishedAt } from "./_generated/suilend/index.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getPublishedAt } from "./_generated/_envs/index.js";
|
|
9
|
+
import { PACKAGE_ID } from "./_generated/suilend/index.js";
|
|
9
10
|
import { addPoolReward, borrowRequest, cancelPoolReward, claimFees, claimRewards, claimRewardsAndDeposit, closePoolReward, depositCtokensIntoObligation, depositLiquidityAndMintCtokens, fulfillLiquidityRequest, liquidate, migrate, newObligationOwnerCap, rebalanceStaker, redeemCtokensAndWithdrawLiquidityRequest, repay, reserveConfigBuilder, setFeeReceivers, unstakeSuiFromStaker, updateRateLimiterConfig, updateReserveConfig, withdrawCtokens, } from "./_generated/suilend/lending-market/functions.js";
|
|
10
11
|
import { LendingMarket, ObligationOwnerCap, } from "./_generated/suilend/lending-market/structs.js";
|
|
11
12
|
import { createLendingMarket } from "./_generated/suilend/lending-market-registry/functions.js";
|
|
@@ -44,12 +45,8 @@ export function needsPriceRefresh(stalenessSeconds) {
|
|
|
44
45
|
// the moment it is read.
|
|
45
46
|
return stalenessSeconds > 20 || stalenessSeconds < -MAX_FORWARD_SECONDS;
|
|
46
47
|
}
|
|
47
|
-
export const ADMIN_ADDRESS =
|
|
48
|
-
|
|
49
|
-
: "0xb1ffbc2e1915f44b8f271a703becc1bf8aa79bc22431a58900a102892b783c25";
|
|
50
|
-
const SUILEND_UPGRADE_CAP_ID = process.env.NEXT_PUBLIC_SUILEND_USE_BETA_MARKET === "true"
|
|
51
|
-
? "0x05da14368a42a351e106806c09727968ae26be77a6741a018239ef0f99d5185e"
|
|
52
|
-
: "0x3d4ef1859c3ee9fc72858f588b56a09da5466e64f8cc4e90a7b3b909fba8a7ae";
|
|
48
|
+
export const ADMIN_ADDRESS = "0xb1ffbc2e1915f44b8f271a703becc1bf8aa79bc22431a58900a102892b783c25";
|
|
49
|
+
const SUILEND_UPGRADE_CAP_ID = "0x3d4ef1859c3ee9fc72858f588b56a09da5466e64f8cc4e90a7b3b909fba8a7ae";
|
|
53
50
|
// A suilend package accepts only markets whose `version` equals the
|
|
54
51
|
// CURRENT_VERSION it was compiled with, and the UpgradeCap names the newest
|
|
55
52
|
// package before any market migrates to it. So only the newest market version
|
|
@@ -61,27 +58,15 @@ const PUBLISHED_AT_BY_MARKET_VERSION = new Map([
|
|
|
61
58
|
"0x59672975e15c58ffc9450f5236b6aa9fa2407d94b8081e634778aa01957d8c6f",
|
|
62
59
|
],
|
|
63
60
|
]);
|
|
64
|
-
export const LENDING_MARKET_REGISTRY_ID =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",
|
|
74
|
-
"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",
|
|
75
|
-
];
|
|
76
|
-
export const [STEAMM_LM_LENDING_MARKET_ID, STEAMM_LM_LENDING_MARKET_TYPE] = process.env.NEXT_PUBLIC_SUILEND_USE_BETA_MARKET === "true"
|
|
77
|
-
? [
|
|
78
|
-
"0xb1d89cf9082cedce09d3647f0ebda4a8b5db125aff5d312a8bfd7eefa715bd35",
|
|
79
|
-
"0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
|
|
80
|
-
]
|
|
81
|
-
: [
|
|
82
|
-
"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",
|
|
83
|
-
"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",
|
|
84
|
-
];
|
|
61
|
+
export const LENDING_MARKET_REGISTRY_ID = "0x64faff8d91a56c4f55debbb44767b009ee744a70bc2cc8e3bbd2718c92f85931";
|
|
62
|
+
export const [LENDING_MARKET_ID, LENDING_MARKET_TYPE] = [
|
|
63
|
+
"0x84030d26d85eaa7035084a057f2f11f701b7e2e4eda87551becbc7c97505ece1",
|
|
64
|
+
"0xf95b06141ed4a174f239417323bde3f209b972f5930d8521ea38a52aff3a6ddf::suilend::MAIN_POOL",
|
|
65
|
+
];
|
|
66
|
+
export const [STEAMM_LM_LENDING_MARKET_ID, STEAMM_LM_LENDING_MARKET_TYPE] = [
|
|
67
|
+
"0xc1888ec1b81a414e427a44829310508352aec38252ee0daa9f8b181b6947de9f",
|
|
68
|
+
"0x0a071f4976abae1a7f722199cf0bfcbe695ef9408a878e7d12a7ca87b7e582a6::lp_rewards::LP_REWARDS",
|
|
69
|
+
];
|
|
85
70
|
// Keyed by upgradeCapId. Only dedupes calls that are still in flight — e.g.
|
|
86
71
|
// initializing N lending markets at once each calling SuilendClient.initialize()
|
|
87
72
|
// with the same upgrade cap. Deliberately not cached past settlement: this
|
|
@@ -105,10 +90,9 @@ export async function getLatestPackageId(suiGrpcClient, upgradeCapId) {
|
|
|
105
90
|
return promise;
|
|
106
91
|
}
|
|
107
92
|
// Keyed by owner + type + include mask, and scoped to the issuing client: two
|
|
108
|
-
// SuiGrpcClients can point at different endpoints or networks (
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
// be served another's in-flight response.
|
|
93
|
+
// SuiGrpcClients can point at different endpoints or networks (a frontend
|
|
94
|
+
// swapping RPCs holds both clients briefly), so one client must never be served
|
|
95
|
+
// another's in-flight response.
|
|
112
96
|
//
|
|
113
97
|
// Same in-flight-only contract as latestPackageIdCache above: N lending markets
|
|
114
98
|
// asking for the same owner's caps at once collapse to one request, and the
|
|
@@ -232,7 +216,7 @@ async function fetchDynamicFieldJson(suiGrpcClient, parentId, nameType) {
|
|
|
232
216
|
return object.json;
|
|
233
217
|
}
|
|
234
218
|
// Scans by type-tag suffix, ignoring the package address: codegen doesn't
|
|
235
|
-
// track a struct's originally-defining address, only the current
|
|
219
|
+
// track a struct's originally-defining address, only the current published address.
|
|
236
220
|
async function findBagEntryByTypeSuffix(suiGrpcClient, parentId, typeSuffix) {
|
|
237
221
|
let cursor = null;
|
|
238
222
|
while (true) {
|
|
@@ -261,8 +245,7 @@ function startLatestPackageIdRead(suiGrpcClient) {
|
|
|
261
245
|
return latestPackageId;
|
|
262
246
|
}
|
|
263
247
|
async function publishedAtForMainVersion(mainVersion, latestPackageId) {
|
|
264
|
-
if (
|
|
265
|
-
mainVersion === LATEST_MARKET_VERSION)
|
|
248
|
+
if (mainVersion === LATEST_MARKET_VERSION)
|
|
266
249
|
return latestPackageId;
|
|
267
250
|
const pinned = PUBLISHED_AT_BY_MARKET_VERSION.get(mainVersion);
|
|
268
251
|
if (!pinned)
|
|
@@ -394,7 +377,7 @@ export class SuilendClient {
|
|
|
394
377
|
*/
|
|
395
378
|
static async initializeAll(lendingMarkets, suiGrpcClient, logPackageId) {
|
|
396
379
|
// Chosen even for an empty list: move-call targets are built off the
|
|
397
|
-
//
|
|
380
|
+
// published-at override regardless of how many clients came back. Like
|
|
398
381
|
// initialize(), a call that fails at any read leaves it unchanged.
|
|
399
382
|
const latestPackageId = startLatestPackageIdRead(suiGrpcClient);
|
|
400
383
|
const mainRequested = lendingMarkets.some(({ id }) => isMainMarket(id));
|
|
@@ -604,7 +587,7 @@ export class SuilendClient {
|
|
|
604
587
|
return transaction_;
|
|
605
588
|
}
|
|
606
589
|
findReserveArrayIndex(coinType) {
|
|
607
|
-
const arrayIndex = this.lendingMarket.reserves.findIndex((r) => normalizeStructTag(r.coinType
|
|
590
|
+
const arrayIndex = this.lendingMarket.reserves.findIndex((r) => normalizeStructTag(r.coinType) === normalizeStructTag(coinType));
|
|
608
591
|
return BigInt(arrayIndex);
|
|
609
592
|
}
|
|
610
593
|
submitReserveConfigUpdate(lendingMarketOwnerCapId, transaction, coinType, config) {
|
|
@@ -669,7 +652,7 @@ export class SuilendClient {
|
|
|
669
652
|
}
|
|
670
653
|
createObligation(transaction) {
|
|
671
654
|
return transaction.moveCall({
|
|
672
|
-
target: `${
|
|
655
|
+
target: `${getPublishedAt("suilend")}::lending_market::create_obligation`,
|
|
673
656
|
arguments: [transaction.object(this.lendingMarket.id)],
|
|
674
657
|
typeArguments: this.lendingMarket.$typeArgs,
|
|
675
658
|
});
|
|
@@ -881,7 +864,7 @@ export class SuilendClient {
|
|
|
881
864
|
const [optionalExemption] = transaction.moveCall({
|
|
882
865
|
target: `0x1::option::some`,
|
|
883
866
|
typeArguments: [
|
|
884
|
-
`${
|
|
867
|
+
`${getPublishedAt("suilend")}::lending_market::RateLimiterExemption<${this.lendingMarket.$typeArgs[0]}, ${withdrawCoinType}>`,
|
|
885
868
|
],
|
|
886
869
|
arguments: [exemption],
|
|
887
870
|
});
|