carbon-js-sdk 0.3.2 → 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.
@@ -379,8 +379,10 @@ class TokenClient {
379
379
  return swthTokens;
380
380
  }
381
381
  getCdpUnderlyingToken(cdpDenom) {
382
- if (!this.cdpTokens[cdpDenom])
383
- throw new Error("not a CDP denom");
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
  }
@@ -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(message: MsgCreateRewardSchemeResponse, writer?: _m0.Writer): _m0.Writer;
649
+ encode(_: MsgCreateRewardSchemeResponse, writer?: _m0.Writer): _m0.Writer;
657
650
  decode(input: _m0.Reader | Uint8Array, length?: number | undefined): MsgCreateRewardSchemeResponse;
658
- fromJSON(object: any): MsgCreateRewardSchemeResponse;
659
- toJSON(message: MsgCreateRewardSchemeResponse): unknown;
660
- fromPartial(object: DeepPartial<MsgCreateRewardSchemeResponse>): MsgCreateRewardSchemeResponse;
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;
@@ -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(message, writer = minimal_1.default.Writer.create()) {
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(object) {
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(message) {
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(object) {
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();
@@ -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<BigNumber>;
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;
@@ -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 interest = principal.multipliedBy((0, number_1.bnOrZero)(debtInfo.cumulativeInterestMultiplier).shiftedBy(-18).minus(1));
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 interestWithoutFee = interest.times(number_1.BN_10000.minus(interestFee)).dividedToIntegerBy(number_1.BN_10000);
524
- return principal.plus(interestWithoutFee);
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 cim = yield this.recalculateCIM(denom, debtInfo);
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 interest = CDPModule.calculateInterestForTimePeriod(apy, (_a = debtInfo.lastUpdatedTime) !== null && _a !== void 0 ? _a : new Date(0), new Date());
651
- const newCIM = cim.times(interest.plus(1));
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/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 Error(`[${response.code}] ${response.rawLog}`);
171
+ throw new tx_1.CarbonTxError(`[${response.code}] ${response.rawLog}`, response);
172
172
  }
173
173
  return response;
174
174
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-js-sdk",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "TypeScript SDK for Carbon blockchain",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",