carbon-js-sdk 0.3.1 → 0.3.3
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/lib/clients/TokenClient.js +4 -2
- package/lib/codec/cdp/tx.d.ts +4 -11
- package/lib/codec/cdp/tx.js +5 -130
- package/lib/constant/ibc.d.ts +2 -1
- package/lib/constant/ibc.js +66 -1
- package/lib/modules/cdp.d.ts +4 -1
- package/lib/modules/cdp.js +12 -8
- package/lib/util/blockchain.d.ts +2 -1
- package/lib/util/blockchain.js +4 -0
- package/lib/util/ibc.js +1 -0
- package/lib/util/tx.d.ts +5 -1
- package/lib/util/tx.js +8 -1
- package/lib/wallet/CarbonWallet.js +1 -1
- package/package.json +1 -1
|
@@ -379,8 +379,10 @@ class TokenClient {
|
|
|
379
379
|
return swthTokens;
|
|
380
380
|
}
|
|
381
381
|
getCdpUnderlyingToken(cdpDenom) {
|
|
382
|
-
if (!this.cdpTokens[cdpDenom])
|
|
383
|
-
|
|
382
|
+
if (!this.cdpTokens[cdpDenom]) {
|
|
383
|
+
console.error("not a CDP denom");
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
384
386
|
const tokenDenom = cdpDenom.replace(regexCdpDenom, "");
|
|
385
387
|
return this.tokenForDenom(tokenDenom);
|
|
386
388
|
}
|
package/lib/codec/cdp/tx.d.ts
CHANGED
|
@@ -222,13 +222,6 @@ export interface MsgCreateRewardScheme {
|
|
|
222
222
|
createRewardSchemeParams?: CreateRewardSchemeParams;
|
|
223
223
|
}
|
|
224
224
|
export interface MsgCreateRewardSchemeResponse {
|
|
225
|
-
id: Long;
|
|
226
|
-
rewardDenom: string;
|
|
227
|
-
assetDenom: string;
|
|
228
|
-
rewardType: string;
|
|
229
|
-
rewardAmountPerSecond: string;
|
|
230
|
-
startTime?: Date;
|
|
231
|
-
endTime?: Date;
|
|
232
225
|
}
|
|
233
226
|
export interface MsgUpdateRewardScheme {
|
|
234
227
|
updator: string;
|
|
@@ -653,11 +646,11 @@ export declare const MsgCreateRewardScheme: {
|
|
|
653
646
|
fromPartial(object: DeepPartial<MsgCreateRewardScheme>): MsgCreateRewardScheme;
|
|
654
647
|
};
|
|
655
648
|
export declare const MsgCreateRewardSchemeResponse: {
|
|
656
|
-
encode(
|
|
649
|
+
encode(_: MsgCreateRewardSchemeResponse, writer?: _m0.Writer): _m0.Writer;
|
|
657
650
|
decode(input: _m0.Reader | Uint8Array, length?: number | undefined): MsgCreateRewardSchemeResponse;
|
|
658
|
-
fromJSON(
|
|
659
|
-
toJSON(
|
|
660
|
-
fromPartial(
|
|
651
|
+
fromJSON(_: any): MsgCreateRewardSchemeResponse;
|
|
652
|
+
toJSON(_: MsgCreateRewardSchemeResponse): unknown;
|
|
653
|
+
fromPartial(_: DeepPartial<MsgCreateRewardSchemeResponse>): MsgCreateRewardSchemeResponse;
|
|
661
654
|
};
|
|
662
655
|
export declare const MsgUpdateRewardScheme: {
|
|
663
656
|
encode(message: MsgUpdateRewardScheme, writer?: _m0.Writer): _m0.Writer;
|
package/lib/codec/cdp/tx.js
CHANGED
|
@@ -11,7 +11,6 @@ const minimal_1 = __importDefault(require("protobufjs/minimal"));
|
|
|
11
11
|
const rate_strategy_params_1 = require("./rate_strategy_params");
|
|
12
12
|
const asset_params_1 = require("./asset_params");
|
|
13
13
|
const reward_scheme_1 = require("./reward_scheme");
|
|
14
|
-
const timestamp_1 = require("../google/protobuf/timestamp");
|
|
15
14
|
exports.protobufPackage = "Switcheo.carbon.cdp";
|
|
16
15
|
const baseMsgAddRateStrategy = { creator: "" };
|
|
17
16
|
exports.MsgAddRateStrategy = {
|
|
@@ -3288,36 +3287,9 @@ exports.MsgCreateRewardScheme = {
|
|
|
3288
3287
|
return message;
|
|
3289
3288
|
},
|
|
3290
3289
|
};
|
|
3291
|
-
const baseMsgCreateRewardSchemeResponse = {
|
|
3292
|
-
id: long_1.default.UZERO,
|
|
3293
|
-
rewardDenom: "",
|
|
3294
|
-
assetDenom: "",
|
|
3295
|
-
rewardType: "",
|
|
3296
|
-
rewardAmountPerSecond: "",
|
|
3297
|
-
};
|
|
3290
|
+
const baseMsgCreateRewardSchemeResponse = {};
|
|
3298
3291
|
exports.MsgCreateRewardSchemeResponse = {
|
|
3299
|
-
encode(
|
|
3300
|
-
if (!message.id.isZero()) {
|
|
3301
|
-
writer.uint32(8).uint64(message.id);
|
|
3302
|
-
}
|
|
3303
|
-
if (message.rewardDenom !== "") {
|
|
3304
|
-
writer.uint32(18).string(message.rewardDenom);
|
|
3305
|
-
}
|
|
3306
|
-
if (message.assetDenom !== "") {
|
|
3307
|
-
writer.uint32(26).string(message.assetDenom);
|
|
3308
|
-
}
|
|
3309
|
-
if (message.rewardType !== "") {
|
|
3310
|
-
writer.uint32(34).string(message.rewardType);
|
|
3311
|
-
}
|
|
3312
|
-
if (message.rewardAmountPerSecond !== "") {
|
|
3313
|
-
writer.uint32(42).string(message.rewardAmountPerSecond);
|
|
3314
|
-
}
|
|
3315
|
-
if (message.startTime !== undefined) {
|
|
3316
|
-
timestamp_1.Timestamp.encode(toTimestamp(message.startTime), writer.uint32(50).fork()).ldelim();
|
|
3317
|
-
}
|
|
3318
|
-
if (message.endTime !== undefined) {
|
|
3319
|
-
timestamp_1.Timestamp.encode(toTimestamp(message.endTime), writer.uint32(58).fork()).ldelim();
|
|
3320
|
-
}
|
|
3292
|
+
encode(_, writer = minimal_1.default.Writer.create()) {
|
|
3321
3293
|
return writer;
|
|
3322
3294
|
},
|
|
3323
3295
|
decode(input, length) {
|
|
@@ -3327,27 +3299,6 @@ exports.MsgCreateRewardSchemeResponse = {
|
|
|
3327
3299
|
while (reader.pos < end) {
|
|
3328
3300
|
const tag = reader.uint32();
|
|
3329
3301
|
switch (tag >>> 3) {
|
|
3330
|
-
case 1:
|
|
3331
|
-
message.id = reader.uint64();
|
|
3332
|
-
break;
|
|
3333
|
-
case 2:
|
|
3334
|
-
message.rewardDenom = reader.string();
|
|
3335
|
-
break;
|
|
3336
|
-
case 3:
|
|
3337
|
-
message.assetDenom = reader.string();
|
|
3338
|
-
break;
|
|
3339
|
-
case 4:
|
|
3340
|
-
message.rewardType = reader.string();
|
|
3341
|
-
break;
|
|
3342
|
-
case 5:
|
|
3343
|
-
message.rewardAmountPerSecond = reader.string();
|
|
3344
|
-
break;
|
|
3345
|
-
case 6:
|
|
3346
|
-
message.startTime = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
|
|
3347
|
-
break;
|
|
3348
|
-
case 7:
|
|
3349
|
-
message.endTime = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
|
|
3350
|
-
break;
|
|
3351
3302
|
default:
|
|
3352
3303
|
reader.skipType(tag & 7);
|
|
3353
3304
|
break;
|
|
@@ -3355,68 +3306,16 @@ exports.MsgCreateRewardSchemeResponse = {
|
|
|
3355
3306
|
}
|
|
3356
3307
|
return message;
|
|
3357
3308
|
},
|
|
3358
|
-
fromJSON(
|
|
3309
|
+
fromJSON(_) {
|
|
3359
3310
|
const message = Object.assign({}, baseMsgCreateRewardSchemeResponse);
|
|
3360
|
-
message.id =
|
|
3361
|
-
object.id !== undefined && object.id !== null
|
|
3362
|
-
? long_1.default.fromString(object.id)
|
|
3363
|
-
: long_1.default.UZERO;
|
|
3364
|
-
message.rewardDenom =
|
|
3365
|
-
object.rewardDenom !== undefined && object.rewardDenom !== null
|
|
3366
|
-
? String(object.rewardDenom)
|
|
3367
|
-
: "";
|
|
3368
|
-
message.assetDenom =
|
|
3369
|
-
object.assetDenom !== undefined && object.assetDenom !== null
|
|
3370
|
-
? String(object.assetDenom)
|
|
3371
|
-
: "";
|
|
3372
|
-
message.rewardType =
|
|
3373
|
-
object.rewardType !== undefined && object.rewardType !== null
|
|
3374
|
-
? String(object.rewardType)
|
|
3375
|
-
: "";
|
|
3376
|
-
message.rewardAmountPerSecond =
|
|
3377
|
-
object.rewardAmountPerSecond !== undefined &&
|
|
3378
|
-
object.rewardAmountPerSecond !== null
|
|
3379
|
-
? String(object.rewardAmountPerSecond)
|
|
3380
|
-
: "";
|
|
3381
|
-
message.startTime =
|
|
3382
|
-
object.startTime !== undefined && object.startTime !== null
|
|
3383
|
-
? fromJsonTimestamp(object.startTime)
|
|
3384
|
-
: undefined;
|
|
3385
|
-
message.endTime =
|
|
3386
|
-
object.endTime !== undefined && object.endTime !== null
|
|
3387
|
-
? fromJsonTimestamp(object.endTime)
|
|
3388
|
-
: undefined;
|
|
3389
3311
|
return message;
|
|
3390
3312
|
},
|
|
3391
|
-
toJSON(
|
|
3313
|
+
toJSON(_) {
|
|
3392
3314
|
const obj = {};
|
|
3393
|
-
message.id !== undefined &&
|
|
3394
|
-
(obj.id = (message.id || long_1.default.UZERO).toString());
|
|
3395
|
-
message.rewardDenom !== undefined &&
|
|
3396
|
-
(obj.rewardDenom = message.rewardDenom);
|
|
3397
|
-
message.assetDenom !== undefined && (obj.assetDenom = message.assetDenom);
|
|
3398
|
-
message.rewardType !== undefined && (obj.rewardType = message.rewardType);
|
|
3399
|
-
message.rewardAmountPerSecond !== undefined &&
|
|
3400
|
-
(obj.rewardAmountPerSecond = message.rewardAmountPerSecond);
|
|
3401
|
-
message.startTime !== undefined &&
|
|
3402
|
-
(obj.startTime = message.startTime.toISOString());
|
|
3403
|
-
message.endTime !== undefined &&
|
|
3404
|
-
(obj.endTime = message.endTime.toISOString());
|
|
3405
3315
|
return obj;
|
|
3406
3316
|
},
|
|
3407
|
-
fromPartial(
|
|
3408
|
-
var _a, _b, _c, _d, _e, _f;
|
|
3317
|
+
fromPartial(_) {
|
|
3409
3318
|
const message = Object.assign({}, baseMsgCreateRewardSchemeResponse);
|
|
3410
|
-
message.id =
|
|
3411
|
-
object.id !== undefined && object.id !== null
|
|
3412
|
-
? long_1.default.fromValue(object.id)
|
|
3413
|
-
: long_1.default.UZERO;
|
|
3414
|
-
message.rewardDenom = (_a = object.rewardDenom) !== null && _a !== void 0 ? _a : "";
|
|
3415
|
-
message.assetDenom = (_b = object.assetDenom) !== null && _b !== void 0 ? _b : "";
|
|
3416
|
-
message.rewardType = (_c = object.rewardType) !== null && _c !== void 0 ? _c : "";
|
|
3417
|
-
message.rewardAmountPerSecond = (_d = object.rewardAmountPerSecond) !== null && _d !== void 0 ? _d : "";
|
|
3418
|
-
message.startTime = (_e = object.startTime) !== null && _e !== void 0 ? _e : undefined;
|
|
3419
|
-
message.endTime = (_f = object.endTime) !== null && _f !== void 0 ? _f : undefined;
|
|
3420
3319
|
return message;
|
|
3421
3320
|
},
|
|
3422
3321
|
};
|
|
@@ -3987,30 +3886,6 @@ class MsgClientImpl {
|
|
|
3987
3886
|
}
|
|
3988
3887
|
}
|
|
3989
3888
|
exports.MsgClientImpl = MsgClientImpl;
|
|
3990
|
-
function toTimestamp(date) {
|
|
3991
|
-
const seconds = numberToLong(date.getTime() / 1000);
|
|
3992
|
-
const nanos = (date.getTime() % 1000) * 1000000;
|
|
3993
|
-
return { seconds, nanos };
|
|
3994
|
-
}
|
|
3995
|
-
function fromTimestamp(t) {
|
|
3996
|
-
let millis = t.seconds.toNumber() * 1000;
|
|
3997
|
-
millis += t.nanos / 1000000;
|
|
3998
|
-
return new Date(millis);
|
|
3999
|
-
}
|
|
4000
|
-
function fromJsonTimestamp(o) {
|
|
4001
|
-
if (o instanceof Date) {
|
|
4002
|
-
return o;
|
|
4003
|
-
}
|
|
4004
|
-
else if (typeof o === "string") {
|
|
4005
|
-
return new Date(o);
|
|
4006
|
-
}
|
|
4007
|
-
else {
|
|
4008
|
-
return fromTimestamp(timestamp_1.Timestamp.fromJSON(o));
|
|
4009
|
-
}
|
|
4010
|
-
}
|
|
4011
|
-
function numberToLong(number) {
|
|
4012
|
-
return long_1.default.fromNumber(number);
|
|
4013
|
-
}
|
|
4014
3889
|
if (minimal_1.default.util.Long !== long_1.default) {
|
|
4015
3890
|
minimal_1.default.util.Long = long_1.default;
|
|
4016
3891
|
minimal_1.default.configure();
|
package/lib/constant/ibc.d.ts
CHANGED
|
@@ -49,7 +49,8 @@ export declare enum ChainIds {
|
|
|
49
49
|
Decentr = "mainnet-3",
|
|
50
50
|
Certik = "shentu-2.2",
|
|
51
51
|
Carbon = "carbon-1",
|
|
52
|
-
Axelar = "axelar-dojo-1"
|
|
52
|
+
Axelar = "axelar-dojo-1",
|
|
53
|
+
Stride = "stride-1"
|
|
53
54
|
}
|
|
54
55
|
export declare const swthIbcWhitelist: string[];
|
|
55
56
|
export declare const ibcWhitelist: string[];
|
package/lib/constant/ibc.js
CHANGED
|
@@ -87,11 +87,12 @@ var ChainIds;
|
|
|
87
87
|
ChainIds["Certik"] = "shentu-2.2";
|
|
88
88
|
ChainIds["Carbon"] = "carbon-1";
|
|
89
89
|
ChainIds["Axelar"] = "axelar-dojo-1";
|
|
90
|
+
ChainIds["Stride"] = "stride-1";
|
|
90
91
|
})(ChainIds = exports.ChainIds || (exports.ChainIds = {}));
|
|
91
92
|
// whitelisted networks for addition of swth as a currency
|
|
92
93
|
exports.swthIbcWhitelist = [ChainIds.Osmosis];
|
|
93
94
|
// whitelisted networks for addition of transfer options
|
|
94
|
-
exports.ibcWhitelist = [ChainIds.Osmosis, ChainIds.Terra, ChainIds.CosmosHub, ChainIds.Juno, ChainIds.Evmos, ChainIds.Axelar];
|
|
95
|
+
exports.ibcWhitelist = [ChainIds.Osmosis, ChainIds.Terra, ChainIds.CosmosHub, ChainIds.Juno, ChainIds.Evmos, ChainIds.Axelar, ChainIds.Stride];
|
|
95
96
|
exports.EmbedChainInfosInit = {
|
|
96
97
|
[ChainIds.Osmosis]: {
|
|
97
98
|
rpc: "https://rpc-osmosis.keplr.app",
|
|
@@ -1566,6 +1567,66 @@ exports.EmbedChainInfosInit = {
|
|
|
1566
1567
|
features: ["stargate", "ibc-transfer", "ibc-go", "no-legacy-stdTx"],
|
|
1567
1568
|
explorerUrlToTx: "https://axelarscan.io/tx/{txHash}",
|
|
1568
1569
|
},
|
|
1570
|
+
[ChainIds.Stride]: {
|
|
1571
|
+
rpc: "https://rpc-stride.keplr.app",
|
|
1572
|
+
rest: "https://lcd-stride.keplr.app",
|
|
1573
|
+
chainId: "stride-1",
|
|
1574
|
+
chainName: "Stride",
|
|
1575
|
+
stakeCurrency: {
|
|
1576
|
+
coinDenom: "STRD",
|
|
1577
|
+
coinMinimalDenom: "ustrd",
|
|
1578
|
+
coinDecimals: 6,
|
|
1579
|
+
coinGeckoId: "stride",
|
|
1580
|
+
},
|
|
1581
|
+
bip44: {
|
|
1582
|
+
coinType: 118,
|
|
1583
|
+
},
|
|
1584
|
+
bech32Config: exports.IBCAddress.defaultBech32Config("stride"),
|
|
1585
|
+
currencies: [
|
|
1586
|
+
{
|
|
1587
|
+
coinDenom: "STRD",
|
|
1588
|
+
coinMinimalDenom: "ustrd",
|
|
1589
|
+
coinDecimals: 6,
|
|
1590
|
+
coinGeckoId: "stride",
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
coinDenom: "stATOM",
|
|
1594
|
+
coinMinimalDenom: "stuatom",
|
|
1595
|
+
coinDecimals: 6,
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
coinDenom: "stOSMO",
|
|
1599
|
+
coinMinimalDenom: "stuosmo",
|
|
1600
|
+
coinDecimals: 6,
|
|
1601
|
+
},
|
|
1602
|
+
{
|
|
1603
|
+
coinDenom: "stJUNO",
|
|
1604
|
+
coinMinimalDenom: "stujuno",
|
|
1605
|
+
coinDecimals: 6,
|
|
1606
|
+
},
|
|
1607
|
+
{
|
|
1608
|
+
coinDenom: "stSTARS",
|
|
1609
|
+
coinMinimalDenom: "stustars",
|
|
1610
|
+
coinDecimals: 6,
|
|
1611
|
+
},
|
|
1612
|
+
],
|
|
1613
|
+
feeCurrencies: [
|
|
1614
|
+
{
|
|
1615
|
+
coinDenom: "STRD",
|
|
1616
|
+
coinMinimalDenom: "ustrd",
|
|
1617
|
+
coinDecimals: 6,
|
|
1618
|
+
coinGeckoId: "stride",
|
|
1619
|
+
},
|
|
1620
|
+
],
|
|
1621
|
+
gasPriceStep: {
|
|
1622
|
+
low: 0,
|
|
1623
|
+
average: 0,
|
|
1624
|
+
high: 0.04,
|
|
1625
|
+
},
|
|
1626
|
+
features: ["stargate", "ibc-transfer", "no-legacy-stdTx", "ibc-go"],
|
|
1627
|
+
explorerUrlToTx: "https://www.mintscan.io/stride/txs/{txHash}",
|
|
1628
|
+
tmRpc: "https://stride.rpc.kjnodes.com/",
|
|
1629
|
+
},
|
|
1569
1630
|
};
|
|
1570
1631
|
exports.swthChannels = {
|
|
1571
1632
|
[ChainIds.Osmosis]: {
|
|
@@ -1592,6 +1653,10 @@ exports.swthChannels = {
|
|
|
1592
1653
|
sourceChannel: "channel-7",
|
|
1593
1654
|
dstChannel: "channel-37",
|
|
1594
1655
|
},
|
|
1656
|
+
[ChainIds.Stride]: {
|
|
1657
|
+
sourceChannel: "channel-8",
|
|
1658
|
+
dstChannel: "channel-47",
|
|
1659
|
+
},
|
|
1595
1660
|
};
|
|
1596
1661
|
exports.ibcTokenRegex = /^ibc\/([a-f\d]+)$/i;
|
|
1597
1662
|
exports.ibcNetworkRegex = /^([a-z\d_-]+)-([\d]+)$/i;
|
package/lib/modules/cdp.d.ts
CHANGED
|
@@ -47,7 +47,10 @@ export declare class CDPModule extends BaseModule {
|
|
|
47
47
|
calculateAPY(denom: string, debtInfo?: DebtInfo, assetParams?: AssetParams, rateStrategyParams?: RateStrategyParams): Promise<BigNumber>;
|
|
48
48
|
static calculateInterestForTimePeriod(apy: BigNumber, start: Date, end: Date): BigNumber;
|
|
49
49
|
calculateLendAPY(denom: string, borrowInterest?: BigNumber, debtInfo?: DebtInfo, params?: Params): Promise<BigNumber>;
|
|
50
|
-
recalculateCIM(denom: string, debtInfo?: DebtInfo): Promise<
|
|
50
|
+
recalculateCIM(denom: string, debtInfo?: DebtInfo): Promise<{
|
|
51
|
+
cim: BigNumber;
|
|
52
|
+
interest: BigNumber;
|
|
53
|
+
}>;
|
|
51
54
|
recalculateStablecoinCIM(debtInfo?: StablecoinDebtInfo): Promise<BigNumber>;
|
|
52
55
|
getMaxCollateralForUnlock(account: string, cdpDenom: string): Promise<BigNumber | undefined>;
|
|
53
56
|
getCdpModuleAddress(): string;
|
package/lib/modules/cdp.js
CHANGED
|
@@ -516,12 +516,15 @@ class CDPModule extends base_1.default {
|
|
|
516
516
|
}
|
|
517
517
|
if (!debtInfo)
|
|
518
518
|
throw new Error("unable to retrieve debt info");
|
|
519
|
+
const cimRsp = yield this.recalculateCIM(denom, debtInfo);
|
|
520
|
+
const newInterestRate = cimRsp.interest;
|
|
519
521
|
const principal = (0, number_1.bnOrZero)(debtInfo.totalPrincipal);
|
|
520
|
-
const
|
|
522
|
+
const accumInterest = (0, number_1.bnOrZero)(debtInfo.totalAccumulatedInterest);
|
|
523
|
+
const newInterest = principal.times(newInterestRate).plus(accumInterest.times(number_1.BN_ONE.plus(newInterestRate)));
|
|
521
524
|
const cdpParamsRsp = yield this.sdkProvider.query.cdp.Params(query_1.QueryParamsRequest.fromPartial({}));
|
|
522
525
|
const interestFee = (0, number_1.bnOrZero)((_a = cdpParamsRsp.params) === null || _a === void 0 ? void 0 : _a.interestFee);
|
|
523
|
-
const
|
|
524
|
-
return principal.plus(
|
|
526
|
+
const interest = newInterest.times(number_1.BN_10000.minus(interestFee)).dividedToIntegerBy(number_1.BN_10000);
|
|
527
|
+
return principal.plus(interest);
|
|
525
528
|
});
|
|
526
529
|
}
|
|
527
530
|
getTotalAccountTokenDebt(account, denom, debt, debtInfo) {
|
|
@@ -541,7 +544,8 @@ class CDPModule extends base_1.default {
|
|
|
541
544
|
const initialCIM = (0, number_1.bnOrZero)(debt === null || debt === void 0 ? void 0 : debt.initialCumulativeInterestMultiplier);
|
|
542
545
|
if (principalAmount.isZero() || initialCIM.isZero())
|
|
543
546
|
return number_1.BN_ZERO;
|
|
544
|
-
const
|
|
547
|
+
const cimRsp = yield this.recalculateCIM(denom, debtInfo);
|
|
548
|
+
const cim = cimRsp.cim;
|
|
545
549
|
if (!cim)
|
|
546
550
|
throw new Error("unable to retrieve account debt");
|
|
547
551
|
// TODO: change to round up
|
|
@@ -642,14 +646,14 @@ class CDPModule extends base_1.default {
|
|
|
642
646
|
const debtInfoResponse = yield sdk.query.cdp.TokenDebt(query_1.QueryTokenDebtRequest.fromPartial({ denom }));
|
|
643
647
|
debtInfo = debtInfoResponse.debtInfo;
|
|
644
648
|
if (!debtInfo) {
|
|
645
|
-
return number_1.BN_ZERO;
|
|
649
|
+
return { cim: number_1.BN_ZERO, interest: number_1.BN_ZERO };
|
|
646
650
|
}
|
|
647
651
|
}
|
|
648
652
|
const cim = (0, number_1.bnOrZero)(debtInfo.cumulativeInterestMultiplier);
|
|
649
653
|
const apy = yield this.calculateAPY(denom, debtInfo);
|
|
650
|
-
const
|
|
651
|
-
const newCIM = cim.times(
|
|
652
|
-
return newCIM;
|
|
654
|
+
const newInterest = CDPModule.calculateInterestForTimePeriod(apy, (_a = debtInfo.lastUpdatedTime) !== null && _a !== void 0 ? _a : new Date(0), new Date());
|
|
655
|
+
const newCIM = cim.times(newInterest.plus(1));
|
|
656
|
+
return { cim: newCIM, interest: newInterest };
|
|
653
657
|
});
|
|
654
658
|
}
|
|
655
659
|
recalculateStablecoinCIM(debtInfo) {
|
package/lib/util/blockchain.d.ts
CHANGED
package/lib/util/blockchain.js
CHANGED
|
@@ -22,6 +22,7 @@ var Blockchain;
|
|
|
22
22
|
Blockchain["Juno"] = "juno";
|
|
23
23
|
Blockchain["Evmos"] = "evmos";
|
|
24
24
|
Blockchain["Axelar"] = "axelar";
|
|
25
|
+
Blockchain["Stride"] = "stride";
|
|
25
26
|
})(Blockchain = exports.Blockchain || (exports.Blockchain = {}));
|
|
26
27
|
;
|
|
27
28
|
exports.BRIDGE_IDS = {
|
|
@@ -51,6 +52,7 @@ exports.CHAIN_IDS = {
|
|
|
51
52
|
'juno': 247,
|
|
52
53
|
'evmos': 248,
|
|
53
54
|
'axelar': 249,
|
|
55
|
+
'stride': 313,
|
|
54
56
|
};
|
|
55
57
|
exports.CHAIN_IDS_DEV = {
|
|
56
58
|
'eth': 350,
|
|
@@ -134,6 +136,8 @@ const blockchainForChainId = (chainId) => {
|
|
|
134
136
|
return Blockchain.Evmos;
|
|
135
137
|
case 249: // mainnet
|
|
136
138
|
return Blockchain.Axelar;
|
|
139
|
+
case 313: // mainnet
|
|
140
|
+
return Blockchain.Stride;
|
|
137
141
|
default:
|
|
138
142
|
return undefined;
|
|
139
143
|
}
|
package/lib/util/ibc.js
CHANGED
|
@@ -49,6 +49,7 @@ exports.ChainIdBlockchainMap = {
|
|
|
49
49
|
[constant_1.ChainIds.Juno]: blockchain_1.Blockchain.Juno,
|
|
50
50
|
[constant_1.ChainIds.Evmos]: blockchain_1.Blockchain.Evmos,
|
|
51
51
|
[constant_1.ChainIds.Axelar]: blockchain_1.Blockchain.Axelar,
|
|
52
|
+
[constant_1.ChainIds.Stride]: blockchain_1.Blockchain.Stride,
|
|
52
53
|
};
|
|
53
54
|
const getIbcChainFromBlockchain = (blockchain) => {
|
|
54
55
|
let ibcChain = undefined;
|
package/lib/util/tx.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as CosmosModels from "../codec/cosmos-models";
|
|
3
3
|
import { StdFee } from "@cosmjs/amino";
|
|
4
|
-
import { SignerData } from "@cosmjs/stargate";
|
|
4
|
+
import { DeliverTxResponse, SignerData } from "@cosmjs/stargate";
|
|
5
5
|
import { SWTHAddressOptions } from "./address";
|
|
6
6
|
export { StdSignDoc } from "@cosmjs/amino";
|
|
7
7
|
export interface TxBody extends Omit<CosmosModels.Tx.TxBody, "messages"> {
|
|
@@ -47,6 +47,10 @@ export interface TxResponse {
|
|
|
47
47
|
code?: number;
|
|
48
48
|
codespace?: string;
|
|
49
49
|
}
|
|
50
|
+
export declare class CarbonTxError extends Error {
|
|
51
|
+
readonly response: DeliverTxResponse;
|
|
52
|
+
constructor(msg: string, response: DeliverTxResponse);
|
|
53
|
+
}
|
|
50
54
|
export declare const Types: {
|
|
51
55
|
MsgSetTradingFlag: string;
|
|
52
56
|
MsgSetTradingFlagResponse: string;
|
package/lib/util/tx.js
CHANGED
|
@@ -19,7 +19,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.TxGasCostTypeMap = exports.TxMinGasPriceTypeDefaultKey = exports.TxGasCostTypeDefaultKey = exports.DEFAULT_SIGN_OPTS = exports.Types = exports.BroadcastTxMode = exports.getSender = exports.decode = void 0;
|
|
22
|
+
exports.TxGasCostTypeMap = exports.TxMinGasPriceTypeDefaultKey = exports.TxGasCostTypeDefaultKey = exports.DEFAULT_SIGN_OPTS = exports.Types = exports.CarbonTxError = exports.BroadcastTxMode = exports.getSender = exports.decode = void 0;
|
|
23
23
|
const codec_1 = require("../codec");
|
|
24
24
|
const CosmosModels = __importStar(require("../codec/cosmos-models"));
|
|
25
25
|
const constant_1 = require("../constant");
|
|
@@ -104,6 +104,13 @@ var BroadcastTxMode;
|
|
|
104
104
|
BroadcastTxMode["BroadcastTxSync"] = "sync";
|
|
105
105
|
BroadcastTxMode["BroadcastTxBlock"] = "block";
|
|
106
106
|
})(BroadcastTxMode = exports.BroadcastTxMode || (exports.BroadcastTxMode = {}));
|
|
107
|
+
class CarbonTxError extends Error {
|
|
108
|
+
constructor(msg, response) {
|
|
109
|
+
super(msg);
|
|
110
|
+
this.response = response;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.CarbonTxError = CarbonTxError;
|
|
107
114
|
exports.Types = codec_1.TxTypes;
|
|
108
115
|
exports.DEFAULT_SIGN_OPTS = {
|
|
109
116
|
fee: constant_1.DEFAULT_FEE,
|
|
@@ -168,7 +168,7 @@ class CarbonWallet {
|
|
|
168
168
|
const response = yield carbonClient.broadcastTx(tx, timeoutMs, pollIntervalMs);
|
|
169
169
|
if ((0, stargate_1.isDeliverTxFailure)(response)) {
|
|
170
170
|
// tx failed
|
|
171
|
-
throw new
|
|
171
|
+
throw new tx_1.CarbonTxError(`[${response.code}] ${response.rawLog}`, response);
|
|
172
172
|
}
|
|
173
173
|
return response;
|
|
174
174
|
});
|