@venusprotocol/venus-protocol 9.8.0-dev.6 → 9.8.0-dev.7

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.
Files changed (88) hide show
  1. package/deploy/002-interest-rate-model.ts +59 -83
  2. package/deploy/007-deploy-mock-tokens.ts +4 -3
  3. package/deploy/011-deploy-markets.ts +21 -37
  4. package/deploy/999-checks/001-check-rate-models.ts +183 -0
  5. package/deployments/bscmainnet.json +429 -429
  6. package/deployments/bscmainnet_addresses.json +29 -29
  7. package/deployments/bsctestnet.json +413 -413
  8. package/deployments/bsctestnet_addresses.json +14 -14
  9. package/dist/deploy/002-interest-rate-model.js +61 -78
  10. package/dist/deploy/007-deploy-mock-tokens.js +4 -2
  11. package/dist/deploy/011-deploy-markets.js +18 -35
  12. package/dist/deploy/999-checks/001-check-rate-models.d.ts +3 -0
  13. package/dist/deploy/999-checks/001-check-rate-models.js +107 -0
  14. package/dist/deployments/bscmainnet.json +429 -429
  15. package/dist/deployments/bsctestnet.json +413 -413
  16. package/dist/hardhat.config.js +2 -0
  17. package/dist/helpers/chains.d.ts +38 -0
  18. package/dist/helpers/chains.js +76 -0
  19. package/dist/helpers/deploymentConfig.d.ts +3 -29
  20. package/dist/helpers/deploymentConfig.js +1 -530
  21. package/dist/helpers/markets/bscmainnet.d.ts +653 -0
  22. package/dist/helpers/markets/bscmainnet.js +691 -0
  23. package/dist/helpers/markets/bsctestnet.d.ts +529 -0
  24. package/dist/helpers/markets/bsctestnet.js +561 -0
  25. package/dist/helpers/markets/hardhat.d.ts +65 -0
  26. package/dist/helpers/markets/hardhat.js +70 -0
  27. package/dist/helpers/markets/index.d.ts +122 -0
  28. package/dist/helpers/markets/index.js +94 -0
  29. package/dist/helpers/markets/types.d.ts +60 -0
  30. package/dist/helpers/markets/types.js +2 -0
  31. package/dist/helpers/rateModelHelpers.d.ts +4 -0
  32. package/dist/helpers/rateModelHelpers.js +35 -0
  33. package/dist/helpers/tokens/bscmainnet.d.ts +253 -0
  34. package/dist/helpers/tokens/bscmainnet.js +258 -0
  35. package/dist/helpers/tokens/bsctestnet.d.ts +204 -0
  36. package/dist/helpers/tokens/bsctestnet.js +209 -0
  37. package/dist/helpers/tokens/common/indexBySymbol.d.ts +6 -0
  38. package/dist/helpers/tokens/common/indexBySymbol.js +8 -0
  39. package/dist/helpers/tokens/hardhat.d.ts +27 -0
  40. package/dist/helpers/tokens/hardhat.js +30 -0
  41. package/dist/helpers/tokens/index.d.ts +1498 -0
  42. package/dist/helpers/tokens/index.js +38 -0
  43. package/dist/helpers/tokens/types.d.ts +12 -0
  44. package/dist/helpers/tokens/types.js +2 -0
  45. package/package.json +1 -1
  46. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope10000bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope10000bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  47. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope10000bps_jump50000bps_kink8000bps.json → JumpRateModel_base0bps_slope10000bps_jump50000bps_kink8000bps_bpy10512000.json} +0 -0
  48. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1000bps_jump20000bps_kink7500bps.json → JumpRateModel_base0bps_slope1000bps_jump20000bps_kink7500bps_bpy10512000.json} +0 -0
  49. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1000bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope1000bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  50. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1000bps_jump50000bps_kink8000bps.json → JumpRateModel_base0bps_slope1000bps_jump50000bps_kink8000bps_bpy10512000.json} +0 -0
  51. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1250bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope1250bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  52. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1250bps_jump50000bps_kink8000bps.json → JumpRateModel_base0bps_slope1250bps_jump50000bps_kink8000bps_bpy10512000.json} +0 -0
  53. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1500bps_jump30000bps_kink6000bps.json → JumpRateModel_base0bps_slope1500bps_jump30000bps_kink6000bps_bpy10512000.json} +0 -0
  54. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope1750bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope1750bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  55. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope2000bps_jump30000bps_kink5000bps.json → JumpRateModel_base0bps_slope2000bps_jump30000bps_kink5000bps_bpy10512000.json} +0 -0
  56. /package/deployments/bscmainnet/{InterestRateModelVETH.json → JumpRateModel_base0bps_slope300bps_jump45000bps_kink9000bps_bpy10512000.json} +0 -0
  57. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope687bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope687bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  58. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope750bps_jump50000bps_kink8000bps.json → JumpRateModel_base0bps_slope750bps_jump50000bps_kink8000bps_bpy10512000.json} +0 -0
  59. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope750bps_jump5000bps_kink8000bps.json → JumpRateModel_base0bps_slope750bps_jump5000bps_kink8000bps_bpy10512000.json} +0 -0
  60. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope875bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope875bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  61. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope875bps_jump50000bps_kink8000bps.json → JumpRateModel_base0bps_slope875bps_jump50000bps_kink8000bps_bpy10512000.json} +0 -0
  62. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope900bps_jump20000bps_kink5000bps.json → JumpRateModel_base0bps_slope900bps_jump20000bps_kink5000bps_bpy10512000.json} +0 -0
  63. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope900bps_jump20000bps_kink7500bps.json → JumpRateModel_base0bps_slope900bps_jump20000bps_kink7500bps_bpy10512000.json} +0 -0
  64. /package/deployments/bscmainnet/{JumpRateModel_base0bps_slope900bps_jump35000bps_kink4500bps.json → JumpRateModel_base0bps_slope900bps_jump35000bps_kink4500bps_bpy10512000.json} +0 -0
  65. /package/deployments/bscmainnet/{JumpRateModel_base200bps_slope10000bps_jump30000bps_kink100bps.json → JumpRateModel_base200bps_slope10000bps_jump30000bps_kink100bps_bpy10512000.json} +0 -0
  66. /package/deployments/bscmainnet/{JumpRateModel_base200bps_slope1200bps_jump30000bps_kink6000bps.json → JumpRateModel_base200bps_slope1200bps_jump30000bps_kink6000bps_bpy10512000.json} +0 -0
  67. /package/deployments/bscmainnet/{JumpRateModel_base200bps_slope1500bps_jump30000bps_kink6000bps.json → JumpRateModel_base200bps_slope1500bps_jump30000bps_kink6000bps_bpy10512000.json} +0 -0
  68. /package/deployments/bscmainnet/{JumpRateModel_base200bps_slope2000bps_jump30000bps_kink5000bps.json → JumpRateModel_base200bps_slope2000bps_jump30000bps_kink5000bps_bpy10512000.json} +0 -0
  69. /package/deployments/bscmainnet/{JumpRateModel_base5000bps_slope3000bps_jump30000bps_kink6000bps.json → JumpRateModel_base5000bps_slope3000bps_jump30000bps_kink6000bps_bpy10512000.json} +0 -0
  70. /package/deployments/bscmainnet/{TwoKinks_base0bps_slope1500bps_kink8000bps_slope29000bps_base20bps_kink29000bps_jump30000bps.json → TwoKinks_base0bps_slope1500bps_kink8000bps_slope29000bps_base20bps_kink29000bps_jump30000bps_bpy10512000.json} +0 -0
  71. /package/deployments/bscmainnet/{InterestRateModelVBNB.json → TwoKinks_base0bps_slope350bps_kink8000bps_slope217500bps_base20bps_kink29000bps_jump30000bps_bpy10512000.json} +0 -0
  72. /package/deployments/bscmainnet/{WhitePaperInterestRateModel_base0bps_slope0bps.json → WhitePaperInterestRateModel_base0bps_slope0bps_bpy10512000.json} +0 -0
  73. /package/deployments/bscmainnet/{WhitePaperInterestRateModel_base0bps_slope24000bps.json → WhitePaperInterestRateModel_base0bps_slope24000bps_bpy10512000.json} +0 -0
  74. /package/deployments/bscmainnet/{WhitePaperInterestRateModel_base2629bps_slope30000bps.json → WhitePaperInterestRateModel_base2629bps_slope30000bps_bpy10512000.json} +0 -0
  75. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope1000bps_jump20000bps_kink7500bps.json → JumpRateModel_base0bps_slope1000bps_jump20000bps_kink7500bps_bpy10512000.json} +0 -0
  76. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope1000bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope1000bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  77. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope2000bps_jump30000bps_kink5000bps.json → JumpRateModel_base0bps_slope2000bps_jump30000bps_kink5000bps_bpy10512000.json} +0 -0
  78. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope500bps_jump10900bps_kink8000bps.json → JumpRateModel_base0bps_slope500bps_jump10900bps_kink8000bps_bpy10512000.json} +0 -0
  79. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope500bps_jump5000bps_kink8000bps.json → JumpRateModel_base0bps_slope500bps_jump5000bps_kink8000bps_bpy10512000.json} +0 -0
  80. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope687bps_jump25000bps_kink8000bps.json → JumpRateModel_base0bps_slope687bps_jump25000bps_kink8000bps_bpy10512000.json} +0 -0
  81. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope750bps_jump5000bps_kink8000bps.json → JumpRateModel_base0bps_slope750bps_jump5000bps_kink8000bps_bpy10512000.json} +0 -0
  82. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope900bps_jump20000bps_kink5000bps.json → JumpRateModel_base0bps_slope900bps_jump20000bps_kink5000bps_bpy10512000.json} +0 -0
  83. /package/deployments/bsctestnet/{JumpRateModel_base0bps_slope900bps_jump35000bps_kink4500bps.json → JumpRateModel_base0bps_slope900bps_jump35000bps_kink4500bps_bpy10512000.json} +0 -0
  84. /package/deployments/bsctestnet/{JumpRateModel_base200bps_slope1500bps_jump30000bps_kink6000bps.json → JumpRateModel_base200bps_slope1500bps_jump30000bps_kink6000bps_bpy10512000.json} +0 -0
  85. /package/deployments/bsctestnet/{JumpRateModel_base200bps_slope2000bps_jump30000bps_kink5000bps.json → JumpRateModel_base200bps_slope2000bps_jump30000bps_kink5000bps_bpy10512000.json} +0 -0
  86. /package/deployments/bsctestnet/{InterestRateModelVBNB.json → TwoKinks_base0bps_slope350bps_kink8000bps_slope217500bps_base20bps_kink29000bps_jump30000bps_bpy10512000.json} +0 -0
  87. /package/deployments/bsctestnet/{WhitePaperInterestRateModel_base0bps_slope10000bps.json → WhitePaperInterestRateModel_base0bps_slope10000bps_bpy10512000.json} +0 -0
  88. /package/deployments/bsctestnet/{WhitepaperInterestRateModel.json → WhitePaperInterestRateModel_base200bps_slope1000bps_bpy10512000.json} +0 -0
@@ -0,0 +1,122 @@
1
+ export declare const markets: {
2
+ readonly hardhat: {
3
+ name: string;
4
+ symbol: string;
5
+ asset: import("../tokens/types").TokenConfig;
6
+ interestRateModel: {
7
+ model: "whitepaper";
8
+ baseRatePerYear: import("ethers").BigNumber;
9
+ multiplierPerYear: import("ethers").BigNumber;
10
+ } | {
11
+ model: "jump";
12
+ baseRatePerYear: import("ethers").BigNumber;
13
+ multiplierPerYear: import("ethers").BigNumber;
14
+ jumpMultiplierPerYear: import("ethers").BigNumber;
15
+ kink: import("ethers").BigNumber;
16
+ } | {
17
+ model: "two-kinks";
18
+ baseRatePerYear: import("ethers").BigNumber;
19
+ multiplierPerYear: import("ethers").BigNumber;
20
+ kink: import("ethers").BigNumber;
21
+ baseRatePerYear2: import("ethers").BigNumber;
22
+ multiplierPerYear2: import("ethers").BigNumber;
23
+ kink2: import("ethers").BigNumber;
24
+ jumpMultiplierPerYear: import("ethers").BigNumber;
25
+ };
26
+ riskParameters: {
27
+ collateralFactor: import("ethers").BigNumber;
28
+ reserveFactor: import("ethers").BigNumber;
29
+ supplyCap: import("ethers").BigNumber;
30
+ borrowCap: import("ethers").BigNumber;
31
+ };
32
+ initialSupply?: {
33
+ amount: import("ethers").BigNumber;
34
+ vTokenReceiver: string;
35
+ } | undefined;
36
+ }[];
37
+ readonly bscmainnet: {
38
+ name: string;
39
+ symbol: string;
40
+ asset: import("../tokens/types").TokenConfig;
41
+ interestRateModel: {
42
+ model: "whitepaper";
43
+ baseRatePerYear: import("ethers").BigNumber;
44
+ multiplierPerYear: import("ethers").BigNumber;
45
+ } | {
46
+ model: "jump";
47
+ baseRatePerYear: import("ethers").BigNumber;
48
+ multiplierPerYear: import("ethers").BigNumber;
49
+ jumpMultiplierPerYear: import("ethers").BigNumber;
50
+ kink: import("ethers").BigNumber;
51
+ } | {
52
+ model: "two-kinks";
53
+ baseRatePerYear: import("ethers").BigNumber;
54
+ multiplierPerYear: import("ethers").BigNumber;
55
+ kink: import("ethers").BigNumber;
56
+ baseRatePerYear2: import("ethers").BigNumber;
57
+ multiplierPerYear2: import("ethers").BigNumber;
58
+ kink2: import("ethers").BigNumber;
59
+ jumpMultiplierPerYear: import("ethers").BigNumber;
60
+ };
61
+ riskParameters: {
62
+ collateralFactor: import("ethers").BigNumber;
63
+ reserveFactor: import("ethers").BigNumber;
64
+ supplyCap: import("ethers").BigNumber;
65
+ borrowCap: import("ethers").BigNumber;
66
+ };
67
+ initialSupply?: {
68
+ amount: import("ethers").BigNumber;
69
+ vTokenReceiver: string;
70
+ } | undefined;
71
+ }[];
72
+ readonly bsctestnet: {
73
+ name: string;
74
+ symbol: string;
75
+ asset: import("../tokens/types").TokenConfig;
76
+ interestRateModel: {
77
+ model: "whitepaper";
78
+ baseRatePerYear: import("ethers").BigNumber;
79
+ multiplierPerYear: import("ethers").BigNumber;
80
+ } | {
81
+ model: "jump";
82
+ baseRatePerYear: import("ethers").BigNumber;
83
+ multiplierPerYear: import("ethers").BigNumber;
84
+ jumpMultiplierPerYear: import("ethers").BigNumber;
85
+ kink: import("ethers").BigNumber;
86
+ } | {
87
+ model: "two-kinks";
88
+ baseRatePerYear: import("ethers").BigNumber;
89
+ multiplierPerYear: import("ethers").BigNumber;
90
+ kink: import("ethers").BigNumber;
91
+ baseRatePerYear2: import("ethers").BigNumber;
92
+ multiplierPerYear2: import("ethers").BigNumber;
93
+ kink2: import("ethers").BigNumber;
94
+ jumpMultiplierPerYear: import("ethers").BigNumber;
95
+ };
96
+ riskParameters: {
97
+ collateralFactor: import("ethers").BigNumber;
98
+ reserveFactor: import("ethers").BigNumber;
99
+ supplyCap: import("ethers").BigNumber;
100
+ borrowCap: import("ethers").BigNumber;
101
+ };
102
+ initialSupply?: {
103
+ amount: import("ethers").BigNumber;
104
+ vTokenReceiver: string;
105
+ } | undefined;
106
+ }[];
107
+ readonly sepolia: readonly [];
108
+ readonly ethereum: readonly [];
109
+ readonly opbnbtestnet: readonly [];
110
+ readonly opbnbmainnet: readonly [];
111
+ readonly arbitrumsepolia: readonly [];
112
+ readonly arbitrumone: readonly [];
113
+ readonly opsepolia: readonly [];
114
+ readonly opmainnet: readonly [];
115
+ readonly basesepolia: readonly [];
116
+ readonly basemainnet: readonly [];
117
+ readonly unichainsepolia: readonly [];
118
+ readonly unichainmainnet: readonly [];
119
+ readonly berachainbartio: readonly [];
120
+ readonly zksyncsepolia: readonly [];
121
+ readonly zksyncmainnet: readonly [];
122
+ };
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.markets = void 0;
7
+ const utils_1 = require("ethers/lib/utils");
8
+ const hardhat_1 = require("hardhat");
9
+ const tokens_1 = require("../tokens");
10
+ const bscmainnet_1 = __importDefault(require("./bscmainnet"));
11
+ const bsctestnet_1 = __importDefault(require("./bsctestnet"));
12
+ const hardhat_2 = __importDefault(require("./hardhat"));
13
+ const parseWpRateModel = (raw) => {
14
+ return {
15
+ ...raw,
16
+ baseRatePerYear: (0, utils_1.parseUnits)(raw.baseRatePerYear, 18),
17
+ multiplierPerYear: (0, utils_1.parseUnits)(raw.multiplierPerYear, 18),
18
+ };
19
+ };
20
+ const parseJumpRateModel = (raw) => {
21
+ return {
22
+ ...raw,
23
+ baseRatePerYear: (0, utils_1.parseUnits)(raw.baseRatePerYear, 18),
24
+ multiplierPerYear: (0, utils_1.parseUnits)(raw.multiplierPerYear, 18),
25
+ jumpMultiplierPerYear: (0, utils_1.parseUnits)(raw.jumpMultiplierPerYear, 18),
26
+ kink: (0, utils_1.parseUnits)(raw.kink, 18),
27
+ };
28
+ };
29
+ const parseTwoKinksRateModel = (raw) => {
30
+ return {
31
+ ...raw,
32
+ baseRatePerYear: (0, utils_1.parseUnits)(raw.baseRatePerYear, 18),
33
+ multiplierPerYear: (0, utils_1.parseUnits)(raw.multiplierPerYear, 18),
34
+ kink: (0, utils_1.parseUnits)(raw.kink, 18),
35
+ baseRatePerYear2: (0, utils_1.parseUnits)(raw.baseRatePerYear2, 18),
36
+ multiplierPerYear2: (0, utils_1.parseUnits)(raw.multiplierPerYear2, 18),
37
+ kink2: (0, utils_1.parseUnits)(raw.kink2, 18),
38
+ jumpMultiplierPerYear: (0, utils_1.parseUnits)(raw.jumpMultiplierPerYear, 18),
39
+ };
40
+ };
41
+ const parseRateModel = (raw) => {
42
+ switch (raw.model) {
43
+ case "whitepaper":
44
+ return parseWpRateModel(raw);
45
+ case "jump":
46
+ return parseJumpRateModel(raw);
47
+ case "two-kinks":
48
+ return parseTwoKinksRateModel(raw);
49
+ }
50
+ };
51
+ const parseMarket = (chain, raw) => {
52
+ const { supplyCap, borrowCap } = raw.riskParameters;
53
+ const { MaxUint256 } = hardhat_1.ethers.constants;
54
+ return {
55
+ ...raw,
56
+ asset: (0, tokens_1.getToken)(chain, raw.asset),
57
+ interestRateModel: parseRateModel(raw.interestRateModel),
58
+ riskParameters: {
59
+ collateralFactor: (0, utils_1.parseUnits)(raw.riskParameters.collateralFactor, 18),
60
+ reserveFactor: (0, utils_1.parseUnits)(raw.riskParameters.reserveFactor, 18),
61
+ supplyCap: supplyCap === "uncapped" ? MaxUint256 : (0, tokens_1.parseTokens)(supplyCap, chain, raw.asset),
62
+ borrowCap: borrowCap === "uncapped" ? MaxUint256 : (0, tokens_1.parseTokens)(borrowCap, chain, raw.asset),
63
+ },
64
+ initialSupply: raw.initialSupply
65
+ ? {
66
+ amount: (0, tokens_1.parseTokens)(raw.initialSupply.amount, chain, raw.asset),
67
+ vTokenReceiver: raw.initialSupply.vTokenReceiver,
68
+ }
69
+ : undefined,
70
+ };
71
+ };
72
+ const parseMarkets = (chain, configs) => {
73
+ return configs.map(config => parseMarket(chain, config));
74
+ };
75
+ exports.markets = {
76
+ hardhat: parseMarkets("hardhat", hardhat_2.default),
77
+ bscmainnet: parseMarkets("bscmainnet", bscmainnet_1.default),
78
+ bsctestnet: parseMarkets("bsctestnet", bsctestnet_1.default),
79
+ sepolia: [],
80
+ ethereum: [],
81
+ opbnbtestnet: [],
82
+ opbnbmainnet: [],
83
+ arbitrumsepolia: [],
84
+ arbitrumone: [],
85
+ opsepolia: [],
86
+ opmainnet: [],
87
+ basesepolia: [],
88
+ basemainnet: [],
89
+ unichainsepolia: [],
90
+ unichainmainnet: [],
91
+ berachainbartio: [],
92
+ zksyncsepolia: [],
93
+ zksyncmainnet: [],
94
+ };
@@ -0,0 +1,60 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Chain } from "helpers/chains";
3
+ import { Tokens } from "helpers/tokens";
4
+ import { TokenConfig } from "helpers/tokens/types";
5
+ type Parsable<RawType, ParsedType> = {
6
+ _t: "parsable";
7
+ rawType: RawType;
8
+ parsedType: ParsedType;
9
+ };
10
+ type ParsableNumberString = Parsable<`${number}`, BigNumber>;
11
+ export type WpRateModelParams = {
12
+ model: "whitepaper";
13
+ baseRatePerYear: ParsableNumberString;
14
+ multiplierPerYear: ParsableNumberString;
15
+ };
16
+ export type JumpRateModelParams = {
17
+ model: "jump";
18
+ baseRatePerYear: ParsableNumberString;
19
+ multiplierPerYear: ParsableNumberString;
20
+ jumpMultiplierPerYear: ParsableNumberString;
21
+ kink: ParsableNumberString;
22
+ };
23
+ export type TwoKinksRateModelParams = {
24
+ model: "two-kinks";
25
+ baseRatePerYear: ParsableNumberString;
26
+ multiplierPerYear: ParsableNumberString;
27
+ kink: ParsableNumberString;
28
+ baseRatePerYear2: ParsableNumberString;
29
+ multiplierPerYear2: ParsableNumberString;
30
+ kink2: ParsableNumberString;
31
+ jumpMultiplierPerYear: ParsableNumberString;
32
+ };
33
+ export type RateModelParams = WpRateModelParams | JumpRateModelParams | TwoKinksRateModelParams;
34
+ export type RiskParameters = {
35
+ collateralFactor: ParsableNumberString;
36
+ reserveFactor: ParsableNumberString;
37
+ supplyCap: Parsable<`${number}` | "uncapped", BigNumber>;
38
+ borrowCap: Parsable<`${number}` | "uncapped", BigNumber>;
39
+ };
40
+ export type InitialSupply = {
41
+ amount: ParsableNumberString;
42
+ vTokenReceiver: string;
43
+ };
44
+ export type VTokenConfig<chain extends Chain = Chain> = {
45
+ name: string;
46
+ symbol: string;
47
+ asset: Parsable<keyof Tokens[chain] & string, TokenConfig>;
48
+ interestRateModel: RateModelParams;
49
+ riskParameters: RiskParameters;
50
+ initialSupply?: InitialSupply;
51
+ };
52
+ export type Raw<T> = T extends object ? {
53
+ [k in keyof T]: T[k] extends Parsable<infer rawType, infer _parsedType> ? rawType : Raw<T[k]>;
54
+ } : T;
55
+ export type Parsed<T> = T extends object ? {
56
+ [k in keyof T]: T[k] extends Parsable<infer _rawType, infer parsedType> ? parsedType : Parsed<T[k]>;
57
+ } : T;
58
+ export type RawVTokenConfig<chain extends Chain> = Raw<VTokenConfig<chain>>;
59
+ export type ParsedVTokenConfig = Parsed<VTokenConfig>;
60
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Parsed, RateModelParams } from "./markets/types";
3
+ export declare const mantissaToBps: (num: BigNumber) => string;
4
+ export declare const getRateModelName: (params: Parsed<RateModelParams>, blocksPerYear: number) => string;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRateModelName = exports.mantissaToBps = void 0;
4
+ const utils_1 = require("ethers/lib/utils");
5
+ const mantissaToBps = (num) => {
6
+ return num.div((0, utils_1.parseUnits)("1", 14)).toString();
7
+ };
8
+ exports.mantissaToBps = mantissaToBps;
9
+ const getRateModelName = (params, blocksPerYear) => {
10
+ const suffix = `bpy${blocksPerYear}`;
11
+ switch (params.model) {
12
+ case "whitepaper": {
13
+ const [b, m] = [params.baseRatePerYear, params.multiplierPerYear].map(exports.mantissaToBps);
14
+ return `WhitePaperInterestRateModel_base${b}bps_slope${m}bps_${suffix}`;
15
+ }
16
+ case "jump": {
17
+ const { baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink } = params;
18
+ const [b, m, j, k] = [baseRatePerYear, multiplierPerYear, jumpMultiplierPerYear, kink].map(exports.mantissaToBps);
19
+ return `JumpRateModel_base${b}bps_slope${m}bps_jump${j}bps_kink${k}bps_${suffix}`;
20
+ }
21
+ case "two-kinks": {
22
+ const [b, m, k, m2, b2, k2, j] = [
23
+ params.baseRatePerYear,
24
+ params.multiplierPerYear,
25
+ params.kink,
26
+ params.multiplierPerYear2,
27
+ params.baseRatePerYear2,
28
+ params.kink2,
29
+ params.jumpMultiplierPerYear,
30
+ ].map(exports.mantissaToBps);
31
+ return `TwoKinks_base${b}bps_slope${m}bps_kink${k}bps_slope2${m2}bps_base2${b2}bps_kink2${k2}bps_jump${j}bps_${suffix}`;
32
+ }
33
+ }
34
+ };
35
+ exports.getRateModelName = getRateModelName;
@@ -0,0 +1,253 @@
1
+ declare const _default: {
2
+ USDC: {
3
+ readonly isMock: false;
4
+ readonly tokenAddress: "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d";
5
+ readonly symbol: "USDC";
6
+ readonly name: "USD Coin";
7
+ readonly decimals: 18;
8
+ };
9
+ USDT: {
10
+ readonly isMock: false;
11
+ readonly tokenAddress: "0x55d398326f99059fF775485246999027B3197955";
12
+ readonly symbol: "USDT";
13
+ readonly name: "Tether USD";
14
+ readonly decimals: 18;
15
+ };
16
+ BUSD: {
17
+ readonly isMock: false;
18
+ readonly tokenAddress: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56";
19
+ readonly symbol: "BUSD";
20
+ readonly name: "BUSD Token";
21
+ readonly decimals: 18;
22
+ };
23
+ SXP: {
24
+ readonly isMock: false;
25
+ readonly tokenAddress: "0x47BEAd2563dCBf3bF2c9407fEa4dC236fAbA485A";
26
+ readonly symbol: "SXP";
27
+ readonly name: "Swipe";
28
+ readonly decimals: 18;
29
+ };
30
+ XVS: {
31
+ readonly isMock: false;
32
+ readonly tokenAddress: "0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63";
33
+ readonly symbol: "XVS";
34
+ readonly name: "Venus";
35
+ readonly decimals: 18;
36
+ };
37
+ BNB: {
38
+ readonly isMock: false;
39
+ readonly tokenAddress: "native";
40
+ readonly symbol: "BNB";
41
+ readonly name: "BNB";
42
+ readonly decimals: 18;
43
+ };
44
+ BTCB: {
45
+ readonly isMock: false;
46
+ readonly tokenAddress: "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c";
47
+ readonly symbol: "BTCB";
48
+ readonly name: "BTCB Token";
49
+ readonly decimals: 18;
50
+ };
51
+ ETH: {
52
+ readonly isMock: false;
53
+ readonly tokenAddress: "0x2170Ed0880ac9A755fd29B2688956BD959F933F8";
54
+ readonly symbol: "ETH";
55
+ readonly name: "Ethereum Token";
56
+ readonly decimals: 18;
57
+ };
58
+ LTC: {
59
+ readonly isMock: false;
60
+ readonly tokenAddress: "0x4338665CBB7B2485A8855A139b75D5e34AB0DB94";
61
+ readonly symbol: "LTC";
62
+ readonly name: "Litecoin Token";
63
+ readonly decimals: 18;
64
+ };
65
+ XRP: {
66
+ readonly isMock: false;
67
+ readonly tokenAddress: "0x1D2F0da169ceB9fC7B3144628dB156f3F6c60dBE";
68
+ readonly symbol: "XRP";
69
+ readonly name: "XRP Token";
70
+ readonly decimals: 18;
71
+ };
72
+ BCH: {
73
+ readonly isMock: false;
74
+ readonly tokenAddress: "0x8fF795a6F4D97E7887C79beA79aba5cc76444aDf";
75
+ readonly symbol: "BCH";
76
+ readonly name: "Bitcoin Cash Token";
77
+ readonly decimals: 18;
78
+ };
79
+ DOT: {
80
+ readonly isMock: false;
81
+ readonly tokenAddress: "0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402";
82
+ readonly symbol: "DOT";
83
+ readonly name: "Polkadot Token";
84
+ readonly decimals: 18;
85
+ };
86
+ LINK: {
87
+ readonly isMock: false;
88
+ readonly tokenAddress: "0xF8A0BF9cF54Bb92F17374d9e9A321E6a111a51bD";
89
+ readonly symbol: "LINK";
90
+ readonly name: "ChainLink Token";
91
+ readonly decimals: 18;
92
+ };
93
+ DAI: {
94
+ readonly isMock: false;
95
+ readonly tokenAddress: "0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3";
96
+ readonly symbol: "DAI";
97
+ readonly name: "Dai Token";
98
+ readonly decimals: 18;
99
+ };
100
+ FIL: {
101
+ readonly isMock: false;
102
+ readonly tokenAddress: "0x0D8Ce2A99Bb6e3B7Db580eD848240e4a0F9aE153";
103
+ readonly symbol: "FIL";
104
+ readonly name: "Filecoin";
105
+ readonly decimals: 18;
106
+ };
107
+ BETH: {
108
+ readonly isMock: false;
109
+ readonly tokenAddress: "0x250632378E573c6Be1AC2f97Fcdf00515d0Aa91B";
110
+ readonly symbol: "BETH";
111
+ readonly name: "Binance Beacon ETH";
112
+ readonly decimals: 18;
113
+ };
114
+ ADA: {
115
+ readonly isMock: false;
116
+ readonly tokenAddress: "0x3EE2200Efb3400fAbB9AacF31297cBdD1d435D47";
117
+ readonly symbol: "ADA";
118
+ readonly name: "Cardano Token";
119
+ readonly decimals: 18;
120
+ };
121
+ DOGE: {
122
+ readonly isMock: false;
123
+ readonly tokenAddress: "0xbA2aE424d960c26247Dd6c32edC70B295c744C43";
124
+ readonly symbol: "DOGE";
125
+ readonly name: "Dogecoin";
126
+ readonly decimals: 8;
127
+ };
128
+ MATIC: {
129
+ readonly isMock: false;
130
+ readonly tokenAddress: "0xCC42724C6683B7E57334c4E856f4c9965ED682bD";
131
+ readonly symbol: "MATIC";
132
+ readonly name: "Matic Token";
133
+ readonly decimals: 18;
134
+ };
135
+ Cake: {
136
+ readonly isMock: false;
137
+ readonly tokenAddress: "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82";
138
+ readonly symbol: "Cake";
139
+ readonly name: "PancakeSwap Token";
140
+ readonly decimals: 18;
141
+ };
142
+ AAVE: {
143
+ readonly isMock: false;
144
+ readonly tokenAddress: "0xfb6115445Bff7b52FeB98650C87f44907E58f802";
145
+ readonly symbol: "AAVE";
146
+ readonly name: "Aave Token";
147
+ readonly decimals: 18;
148
+ };
149
+ TUSD: {
150
+ readonly isMock: false;
151
+ readonly tokenAddress: "0x14016E85a25aeb13065688cAFB43044C2ef86784";
152
+ readonly symbol: "TUSD";
153
+ readonly name: "TrueUSD";
154
+ readonly decimals: 18;
155
+ } | {
156
+ readonly isMock: false;
157
+ readonly tokenAddress: "0x40af3827F39D0EAcBF4A168f8D4ee67c121D11c9";
158
+ readonly symbol: "TUSD";
159
+ readonly name: "TrueUSD";
160
+ readonly decimals: 18;
161
+ };
162
+ TRX: {
163
+ readonly isMock: false;
164
+ readonly tokenAddress: "0x85EAC5Ac2F758618dFa09bDbe0cf174e7d574D5B";
165
+ readonly symbol: "TRX";
166
+ readonly name: "TRON";
167
+ readonly decimals: 18;
168
+ } | {
169
+ readonly isMock: false;
170
+ readonly tokenAddress: "0xCE7de646e7208a4Ef112cb6ed5038FA6cC6b12e3";
171
+ readonly symbol: "TRX";
172
+ readonly name: "TRON";
173
+ readonly decimals: 6;
174
+ };
175
+ wBETH: {
176
+ readonly isMock: false;
177
+ readonly tokenAddress: "0xa2E3356610840701BDf5611a53974510Ae27E2e1";
178
+ readonly symbol: "wBETH";
179
+ readonly name: "Wrapped Binance Beacon ETH";
180
+ readonly decimals: 18;
181
+ };
182
+ UNI: {
183
+ readonly isMock: false;
184
+ readonly tokenAddress: "0xBf5140A22578168FD562DCcF235E5D43A02ce9B1";
185
+ readonly symbol: "UNI";
186
+ readonly name: "Uniswap";
187
+ readonly decimals: 18;
188
+ };
189
+ FDUSD: {
190
+ readonly isMock: false;
191
+ readonly tokenAddress: "0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409";
192
+ readonly symbol: "FDUSD";
193
+ readonly name: "First Digital USD";
194
+ readonly decimals: 18;
195
+ };
196
+ TWT: {
197
+ readonly isMock: false;
198
+ readonly tokenAddress: "0x4B0F1812e5Df2A09796481Ff14017e6005508003";
199
+ readonly symbol: "TWT";
200
+ readonly name: "Trust Wallet";
201
+ readonly decimals: 18;
202
+ };
203
+ SolvBTC: {
204
+ readonly isMock: false;
205
+ readonly tokenAddress: "0x4aae823a6a0b376De6A78e74eCC5b079d38cBCf7";
206
+ readonly symbol: "SolvBTC";
207
+ readonly name: "Solv BTC";
208
+ readonly decimals: 18;
209
+ };
210
+ THE: {
211
+ readonly isMock: false;
212
+ readonly tokenAddress: "0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11";
213
+ readonly symbol: "THE";
214
+ readonly name: "THENA";
215
+ readonly decimals: 18;
216
+ };
217
+ SOL: {
218
+ readonly isMock: false;
219
+ readonly tokenAddress: "0x570A5D26f7765Ecb712C0924E4De545B89fD43dF";
220
+ readonly symbol: "SOL";
221
+ readonly name: "SOLANA";
222
+ readonly decimals: 18;
223
+ };
224
+ lisUSD: {
225
+ readonly isMock: false;
226
+ readonly tokenAddress: "0x0782b6d8c4551B9760e74c0545a9bCD90bdc41E5";
227
+ readonly symbol: "lisUSD";
228
+ readonly name: "Lista USD";
229
+ readonly decimals: 18;
230
+ };
231
+ "PT-sUSDE-26JUN2025": {
232
+ readonly isMock: false;
233
+ readonly name: "PT Ethena sUSDE 26JUN2025";
234
+ readonly symbol: "PT-sUSDE-26JUN2025";
235
+ readonly decimals: 18;
236
+ readonly tokenAddress: "0xdd809435ba6c9d6903730f923038801781ca66ce";
237
+ };
238
+ sUSDe: {
239
+ readonly isMock: false;
240
+ readonly name: "Staked USDe";
241
+ readonly symbol: "sUSDe";
242
+ readonly decimals: 18;
243
+ readonly tokenAddress: "0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2";
244
+ };
245
+ USDe: {
246
+ readonly isMock: false;
247
+ readonly name: "USDe";
248
+ readonly symbol: "USDe";
249
+ readonly decimals: 18;
250
+ readonly tokenAddress: "0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34";
251
+ };
252
+ };
253
+ export default _default;