@morpho-org/blue-sdk 2.0.0-next.9 → 2.0.0

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 (56) hide show
  1. package/lib/addresses.d.ts +1 -1
  2. package/lib/addresses.js +63 -58
  3. package/lib/chain.js +9 -6
  4. package/lib/constants.js +12 -9
  5. package/lib/errors.d.ts +5 -0
  6. package/lib/errors.js +37 -13
  7. package/lib/holding/AssetBalances.d.ts +2 -2
  8. package/lib/holding/AssetBalances.js +5 -1
  9. package/lib/holding/Holding.d.ts +5 -5
  10. package/lib/holding/Holding.js +9 -5
  11. package/lib/holding/index.js +18 -2
  12. package/lib/index.js +28 -12
  13. package/lib/market/Market.d.ts +37 -25
  14. package/lib/market/Market.js +72 -51
  15. package/lib/market/MarketParams.d.ts +4 -3
  16. package/lib/market/MarketParams.js +16 -14
  17. package/lib/market/MarketUtils.d.ts +81 -30
  18. package/lib/market/MarketUtils.js +135 -51
  19. package/lib/market/index.js +19 -3
  20. package/lib/math/AdaptiveCurveIrmLib.js +25 -22
  21. package/lib/math/MathLib.d.ts +1 -16
  22. package/lib/math/MathLib.js +6 -29
  23. package/lib/math/SharesMath.js +8 -5
  24. package/lib/math/index.js +19 -3
  25. package/lib/position/Position.d.ts +28 -19
  26. package/lib/position/Position.js +49 -43
  27. package/lib/position/index.js +17 -1
  28. package/lib/token/ConstantWrappedToken.d.ts +2 -2
  29. package/lib/token/ConstantWrappedToken.js +10 -6
  30. package/lib/token/ExchangeRateWrappedToken.d.ts +2 -2
  31. package/lib/token/ExchangeRateWrappedToken.js +9 -5
  32. package/lib/token/Token.d.ts +15 -15
  33. package/lib/token/Token.js +27 -25
  34. package/lib/token/VaultToken.d.ts +4 -4
  35. package/lib/token/VaultToken.js +9 -5
  36. package/lib/token/WrappedToken.d.ts +2 -2
  37. package/lib/token/WrappedToken.js +11 -7
  38. package/lib/token/index.js +21 -5
  39. package/lib/types.js +9 -4
  40. package/lib/user/User.js +5 -1
  41. package/lib/user/index.js +17 -1
  42. package/lib/vault/Vault.d.ts +20 -12
  43. package/lib/vault/Vault.js +26 -21
  44. package/lib/vault/VaultConfig.d.ts +3 -4
  45. package/lib/vault/VaultConfig.js +9 -5
  46. package/lib/vault/VaultMarketAllocation.d.ts +3 -3
  47. package/lib/vault/VaultMarketAllocation.js +8 -4
  48. package/lib/vault/VaultMarketConfig.d.ts +3 -3
  49. package/lib/vault/VaultMarketConfig.js +5 -1
  50. package/lib/vault/VaultMarketPublicAllocatorConfig.d.ts +3 -3
  51. package/lib/vault/VaultMarketPublicAllocatorConfig.js +5 -1
  52. package/lib/vault/VaultUser.d.ts +3 -3
  53. package/lib/vault/VaultUser.js +5 -1
  54. package/lib/vault/VaultUtils.js +9 -6
  55. package/lib/vault/index.js +23 -7
  56. package/package.json +9 -19
@@ -14,7 +14,7 @@ export declare const addresses: {
14
14
  readonly aaveV2Bundler: "0xb3dCc75DB379925edFd3007511A8CE0cB4aa8e76";
15
15
  readonly aaveV3Bundler: "0x98ccB155E86bb478d514a827d16f58c6912f9BDC";
16
16
  readonly compoundV3Bundler: "0x3a0e2E9FB9c95fBc843daF166276C90B6C479558";
17
- readonly compoundV2Bundler: "0x26bf52a84360ad3d01d7cdc28fc2ddc04d8c8647";
17
+ readonly compoundV2Bundler: "0x26bF52a84360Ad3d01d7CDc28FC2dDC04d8c8647";
18
18
  readonly adaptiveCurveIrm: "0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC";
19
19
  readonly publicAllocator: "0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D";
20
20
  readonly metaMorphoFactory: "0xA9c3D3a366466Fa809d1Ae982Fb2c46E5fC41101";
package/lib/addresses.js CHANGED
@@ -1,12 +1,16 @@
1
- import { entries } from "@morpho-org/morpho-ts";
2
- import { ChainId, ChainUtils } from "./chain.js";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convexWrapperTokens = exports.permissionedCoinbaseTokens = exports.permissionedBackedTokens = exports.permissionedWrapperTokens = exports.erc20WrapperTokens = exports.unwrappedTokensMapping = exports.getChainAddresses = exports.addresses = exports.NATIVE_ADDRESS = void 0;
4
+ exports.getUnwrappedToken = getUnwrappedToken;
5
+ const morpho_ts_1 = require("@morpho-org/morpho-ts");
6
+ const chain_js_1 = require("./chain.js");
3
7
  /** Address used to replicate an erc20-behaviour for native token.
4
8
  *
5
9
  * NB: data might differ from expected onchain native token data
6
10
  */
7
- export const NATIVE_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
8
- export const addresses = {
9
- [ChainId.EthMainnet]: {
11
+ exports.NATIVE_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
12
+ exports.addresses = {
13
+ [chain_js_1.ChainId.EthMainnet]: {
10
14
  morpho: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb",
11
15
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
12
16
  bundler: "0x4095F064B8d3c3548A3bebfd0Bbfd04750E30077",
@@ -14,7 +18,7 @@ export const addresses = {
14
18
  aaveV2Bundler: "0xb3dCc75DB379925edFd3007511A8CE0cB4aa8e76",
15
19
  aaveV3Bundler: "0x98ccB155E86bb478d514a827d16f58c6912f9BDC",
16
20
  compoundV3Bundler: "0x3a0e2E9FB9c95fBc843daF166276C90B6C479558",
17
- compoundV2Bundler: "0x26bf52a84360ad3d01d7cdc28fc2ddc04d8c8647",
21
+ compoundV2Bundler: "0x26bF52a84360Ad3d01d7CDc28FC2dDC04d8c8647",
18
22
  adaptiveCurveIrm: "0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC",
19
23
  publicAllocator: "0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D",
20
24
  metaMorphoFactory: "0xA9c3D3a366466Fa809d1Ae982Fb2c46E5fC41101",
@@ -50,7 +54,7 @@ export const addresses = {
50
54
  "stkcvx2BTC-f-morpho": "0x385E12cf4040543Bc8C18e05C1298Be5B04f3f5e",
51
55
  "2BTC-f": "0xB7ECB2AA52AA64a717180E030241bC75Cd946726",
52
56
  },
53
- [ChainId.BaseMainnet]: {
57
+ [chain_js_1.ChainId.BaseMainnet]: {
54
58
  morpho: "0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb",
55
59
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
56
60
  bundler: "0x23055618898e202386e6c13955a58D3C68200BFB",
@@ -66,91 +70,92 @@ export const addresses = {
66
70
  testUsdc: "0xBC77067f829979812d795d516E523C4033b66409",
67
71
  },
68
72
  };
69
- export default addresses;
70
- export const getChainAddresses = (chainId) => {
71
- return addresses[ChainUtils.parseSupportedChainId(chainId)];
73
+ exports.default = exports.addresses;
74
+ const getChainAddresses = (chainId) => {
75
+ return exports.addresses[chain_js_1.ChainUtils.parseSupportedChainId(chainId)];
72
76
  };
77
+ exports.getChainAddresses = getChainAddresses;
73
78
  /**
74
79
  * Assumptions:
75
80
  * - unwrapped token has same number of decimals than wrapped tokens.
76
81
  */
77
- export const unwrappedTokensMapping = {
78
- [ChainId.EthMainnet]: {
79
- [addresses[ChainId.EthMainnet].wbIB01]: addresses[ChainId.EthMainnet].bIB01,
80
- [addresses[ChainId.EthMainnet].wbC3M]: addresses[ChainId.EthMainnet].bC3M,
81
- [addresses[ChainId.EthMainnet].wNative]: NATIVE_ADDRESS,
82
- [addresses[ChainId.EthMainnet].stEth]: NATIVE_ADDRESS,
83
- [addresses[ChainId.EthMainnet].wstEth]: addresses[ChainId.EthMainnet].stEth,
84
- [addresses[ChainId.EthMainnet]["stkcvxcrvUSDTWBTCWETH-morpho"]]: addresses[ChainId.EthMainnet].crvUSDTWBTCWETH,
85
- [addresses[ChainId.EthMainnet]["stkcvxcrvUSDCWBTCWETH-morpho"]]: addresses[ChainId.EthMainnet].crvUSDCWBTCWETH,
86
- [addresses[ChainId.EthMainnet]["stkcvxcrvCRVUSDTBTCWSTETH-morpho"]]: addresses[ChainId.EthMainnet].crvCRVUSDTBTCWSTETH,
87
- [addresses[ChainId.EthMainnet]["stkcvxTryLSD-morpho"]]: addresses[ChainId.EthMainnet].tryLSD,
88
- [addresses[ChainId.EthMainnet]["stkcvxcrvUSDETHCRV-morpho"]]: addresses[ChainId.EthMainnet].crvUSDETHCRV,
89
- [addresses[ChainId.EthMainnet]["stkcvx2BTC-f-morpho"]]: addresses[ChainId.EthMainnet]["2BTC-f"],
82
+ exports.unwrappedTokensMapping = {
83
+ [chain_js_1.ChainId.EthMainnet]: {
84
+ [exports.addresses[chain_js_1.ChainId.EthMainnet].wbIB01]: exports.addresses[chain_js_1.ChainId.EthMainnet].bIB01,
85
+ [exports.addresses[chain_js_1.ChainId.EthMainnet].wbC3M]: exports.addresses[chain_js_1.ChainId.EthMainnet].bC3M,
86
+ [exports.addresses[chain_js_1.ChainId.EthMainnet].wNative]: exports.NATIVE_ADDRESS,
87
+ [exports.addresses[chain_js_1.ChainId.EthMainnet].stEth]: exports.NATIVE_ADDRESS,
88
+ [exports.addresses[chain_js_1.ChainId.EthMainnet].wstEth]: exports.addresses[chain_js_1.ChainId.EthMainnet].stEth,
89
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDTWBTCWETH-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet].crvUSDTWBTCWETH,
90
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDCWBTCWETH-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet].crvUSDCWBTCWETH,
91
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvCRVUSDTBTCWSTETH-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet].crvCRVUSDTBTCWSTETH,
92
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxTryLSD-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet].tryLSD,
93
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDETHCRV-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet].crvUSDETHCRV,
94
+ [exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvx2BTC-f-morpho"]]: exports.addresses[chain_js_1.ChainId.EthMainnet]["2BTC-f"],
90
95
  },
91
- [ChainId.BaseMainnet]: {
92
- [addresses[ChainId.BaseMainnet].wNative]: NATIVE_ADDRESS,
93
- [addresses[ChainId.BaseMainnet].verUsdc]: addresses[ChainId.BaseMainnet].usdc,
94
- [addresses[ChainId.BaseMainnet].testUsdc]: addresses[ChainId.BaseMainnet].usdc,
96
+ [chain_js_1.ChainId.BaseMainnet]: {
97
+ [exports.addresses[chain_js_1.ChainId.BaseMainnet].wNative]: exports.NATIVE_ADDRESS,
98
+ [exports.addresses[chain_js_1.ChainId.BaseMainnet].verUsdc]: exports.addresses[chain_js_1.ChainId.BaseMainnet].usdc,
99
+ [exports.addresses[chain_js_1.ChainId.BaseMainnet].testUsdc]: exports.addresses[chain_js_1.ChainId.BaseMainnet].usdc,
95
100
  },
96
101
  };
97
- export function getUnwrappedToken(wrappedToken, chainId) {
98
- return unwrappedTokensMapping[chainId][wrappedToken];
102
+ function getUnwrappedToken(wrappedToken, chainId) {
103
+ return exports.unwrappedTokensMapping[chainId][wrappedToken];
99
104
  }
100
105
  /**
101
106
  * The registry of all known ERC20Wrapper tokens.
102
107
  */
103
- export const erc20WrapperTokens = {
104
- [ChainId.EthMainnet]: new Set(),
105
- [ChainId.BaseMainnet]: new Set(),
108
+ exports.erc20WrapperTokens = {
109
+ [chain_js_1.ChainId.EthMainnet]: new Set(),
110
+ [chain_js_1.ChainId.BaseMainnet]: new Set(),
106
111
  };
107
112
  /**
108
113
  * The registry of all known PermissionedERC20Wrapper with a `hasPermission` getter.
109
114
  * All permissioned wrapper tokens are considered ERC20Wrapper and automatically added to the erc20WrapperTokens registry.
110
115
  */
111
- export const permissionedWrapperTokens = {
112
- [ChainId.EthMainnet]: new Set(),
113
- [ChainId.BaseMainnet]: new Set([addresses[ChainId.BaseMainnet].testUsdc]),
116
+ exports.permissionedWrapperTokens = {
117
+ [chain_js_1.ChainId.EthMainnet]: new Set(),
118
+ [chain_js_1.ChainId.BaseMainnet]: new Set([exports.addresses[chain_js_1.ChainId.BaseMainnet].testUsdc]),
114
119
  };
115
120
  /**
116
121
  * The registry of all known permissioned wrapped Backed tokens.
117
122
  * All permissioned Backed tokens are considered ERC20Wrapper and automatically added to the erc20WrapperTokens registry.
118
123
  */
119
- export const permissionedBackedTokens = {
120
- [ChainId.EthMainnet]: new Set([
121
- addresses[ChainId.EthMainnet].wbIB01,
122
- addresses[ChainId.EthMainnet].wbC3M,
124
+ exports.permissionedBackedTokens = {
125
+ [chain_js_1.ChainId.EthMainnet]: new Set([
126
+ exports.addresses[chain_js_1.ChainId.EthMainnet].wbIB01,
127
+ exports.addresses[chain_js_1.ChainId.EthMainnet].wbC3M,
123
128
  ]),
124
- [ChainId.BaseMainnet]: new Set(),
129
+ [chain_js_1.ChainId.BaseMainnet]: new Set(),
125
130
  };
126
131
  /**
127
132
  * The registry of all known permissioned wrapped tokens that require a Coinbase attestation.
128
133
  * All permissioned Coinbase tokens are considered PermissionedERC20Wrapper and automatically added to the permissionedWrapperTokens registry.
129
134
  */
130
- export const permissionedCoinbaseTokens = {
131
- [ChainId.EthMainnet]: new Set(),
132
- [ChainId.BaseMainnet]: new Set([addresses[ChainId.BaseMainnet].verUsdc]),
135
+ exports.permissionedCoinbaseTokens = {
136
+ [chain_js_1.ChainId.EthMainnet]: new Set(),
137
+ [chain_js_1.ChainId.BaseMainnet]: new Set([exports.addresses[chain_js_1.ChainId.BaseMainnet].verUsdc]),
133
138
  };
134
- entries(permissionedBackedTokens).forEach(([chainId, tokens]) => {
135
- tokens.forEach((token) => erc20WrapperTokens[chainId].add(token));
139
+ (0, morpho_ts_1.entries)(exports.permissionedBackedTokens).forEach(([chainId, tokens]) => {
140
+ tokens.forEach((token) => exports.erc20WrapperTokens[chainId].add(token));
136
141
  });
137
- entries(permissionedCoinbaseTokens).forEach(([chainId, tokens]) => {
138
- tokens.forEach((token) => permissionedWrapperTokens[chainId].add(token));
142
+ (0, morpho_ts_1.entries)(exports.permissionedCoinbaseTokens).forEach(([chainId, tokens]) => {
143
+ tokens.forEach((token) => exports.permissionedWrapperTokens[chainId].add(token));
139
144
  });
140
- entries(permissionedWrapperTokens).forEach(([chainId, tokens]) => {
141
- tokens.forEach((token) => erc20WrapperTokens[chainId].add(token));
145
+ (0, morpho_ts_1.entries)(exports.permissionedWrapperTokens).forEach(([chainId, tokens]) => {
146
+ tokens.forEach((token) => exports.erc20WrapperTokens[chainId].add(token));
142
147
  });
143
148
  /** /!\ These tokens can not be listed in `erc20WrapperTokens` because the following specs are different:
144
149
  * - calling `depositFor` supplies on blue instead of minting wrapped token to the user
145
150
  */
146
- export const convexWrapperTokens = {
147
- [ChainId.EthMainnet]: new Set([
148
- addresses[ChainId.EthMainnet]["stkcvxcrvUSDTWBTCWETH-morpho"],
149
- addresses[ChainId.EthMainnet]["stkcvxcrvUSDCWBTCWETH-morpho"],
150
- addresses[ChainId.EthMainnet]["stkcvxcrvCRVUSDTBTCWSTETH-morpho"],
151
- addresses[ChainId.EthMainnet]["stkcvxTryLSD-morpho"],
152
- addresses[ChainId.EthMainnet]["stkcvxcrvUSDETHCRV-morpho"],
153
- addresses[ChainId.EthMainnet]["stkcvx2BTC-f-morpho"],
151
+ exports.convexWrapperTokens = {
152
+ [chain_js_1.ChainId.EthMainnet]: new Set([
153
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDTWBTCWETH-morpho"],
154
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDCWBTCWETH-morpho"],
155
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvCRVUSDTBTCWSTETH-morpho"],
156
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxTryLSD-morpho"],
157
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvxcrvUSDETHCRV-morpho"],
158
+ exports.addresses[chain_js_1.ChainId.EthMainnet]["stkcvx2BTC-f-morpho"],
154
159
  ]),
155
- [ChainId.BaseMainnet]: new Set(),
160
+ [chain_js_1.ChainId.BaseMainnet]: new Set(),
156
161
  };
package/lib/chain.js CHANGED
@@ -1,5 +1,8 @@
1
- import { UnsupportedChainIdError } from "./errors.js";
2
- export var ChainId;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainUtils = exports.ChainId = void 0;
4
+ const errors_js_1 = require("./errors.js");
5
+ var ChainId;
3
6
  (function (ChainId) {
4
7
  ChainId[ChainId["EthMainnet"] = 1] = "EthMainnet";
5
8
  ChainId[ChainId["BaseMainnet"] = 8453] = "BaseMainnet";
@@ -25,8 +28,8 @@ export var ChainId;
25
28
  // AvalancheFujiTestnet = 43113,
26
29
  // MoonbaseAlphaTestnet = 1287,
27
30
  // BaseGoerliTestnet = 84531,
28
- })(ChainId || (ChainId = {}));
29
- export var ChainUtils;
31
+ })(ChainId || (exports.ChainId = ChainId = {}));
32
+ var ChainUtils;
30
33
  (function (ChainUtils) {
31
34
  ChainUtils.toHexChainId = (chainId) => {
32
35
  return `0x${chainId.toString(16)}`;
@@ -47,7 +50,7 @@ export var ChainUtils;
47
50
  function parseSupportedChainId(candidate) {
48
51
  const chainId = Number.parseInt(candidate); // Force cast to string to silence TS because it works.
49
52
  if (!isSupported(chainId))
50
- throw new UnsupportedChainIdError(chainId);
53
+ throw new errors_js_1.UnsupportedChainIdError(chainId);
51
54
  return chainId;
52
55
  }
53
56
  ChainUtils.parseSupportedChainId = parseSupportedChainId;
@@ -283,4 +286,4 @@ export var ChainUtils;
283
286
  // isTestnet: true,
284
287
  // },
285
288
  };
286
- })(ChainUtils || (ChainUtils = {}));
289
+ })(ChainUtils || (exports.ChainUtils = ChainUtils = {}));
package/lib/constants.js CHANGED
@@ -1,30 +1,33 @@
1
- import { Time } from "@morpho-org/morpho-ts";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SECONDS_PER_YEAR = exports.DEFAULT_SUPPLY_TARGET_UTILIZATION = exports.DEFAULT_WITHDRAWAL_TARGET_UTILIZATION = exports.DEFAULT_SLIPPAGE_TOLERANCE = exports.ORACLE_PRICE_SCALE = exports.ORACLE_PRICE_OFFSET = exports.MAX_LIQUIDATION_INCENTIVE_FACTOR = exports.LIQUIDATION_CURSOR = void 0;
4
+ const morpho_ts_1 = require("@morpho-org/morpho-ts");
2
5
  /**
3
6
  * The liquidation cursor used to calculate the liquidation incentive. Hardcoded to 30%.
4
7
  */
5
- export const LIQUIDATION_CURSOR = 300000000000000000n;
8
+ exports.LIQUIDATION_CURSOR = 300000000000000000n;
6
9
  /**
7
10
  * The maximum liquidation incentive factor. Hardcoded to 115%.
8
11
  */
9
- export const MAX_LIQUIDATION_INCENTIVE_FACTOR = 1150000000000000000n;
10
- export const ORACLE_PRICE_OFFSET = 36;
12
+ exports.MAX_LIQUIDATION_INCENTIVE_FACTOR = 1150000000000000000n;
13
+ exports.ORACLE_PRICE_OFFSET = 36;
11
14
  /**
12
15
  * The scale of the oracle price. Hardcoded to 1e36.
13
16
  */
14
- export const ORACLE_PRICE_SCALE = 1000000000000000000000000000000000000n;
17
+ exports.ORACLE_PRICE_SCALE = 1000000000000000000000000000000000000n;
15
18
  /**
16
19
  * The default slippage tolerance used in the SDK. Hardcoded to 0.03%.
17
20
  */
18
- export const DEFAULT_SLIPPAGE_TOLERANCE = 300000000000000n;
21
+ exports.DEFAULT_SLIPPAGE_TOLERANCE = 300000000000000n;
19
22
  /**
20
23
  * The default withdrawal target utilization used by the shared liquidity algorithm. Hardcoded to 92%.
21
24
  */
22
- export const DEFAULT_WITHDRAWAL_TARGET_UTILIZATION = 920000000000000000n;
25
+ exports.DEFAULT_WITHDRAWAL_TARGET_UTILIZATION = 920000000000000000n;
23
26
  /**
24
27
  * The default supply target utilization used by the shared liquidity algorithm. Hardcoded to 90.5%.
25
28
  */
26
- export const DEFAULT_SUPPLY_TARGET_UTILIZATION = 905000000000000000n;
29
+ exports.DEFAULT_SUPPLY_TARGET_UTILIZATION = 905000000000000000n;
27
30
  /**
28
31
  * The number of seconds in a year.
29
32
  */
30
- export const SECONDS_PER_YEAR = Time.s.from.y(1n);
33
+ exports.SECONDS_PER_YEAR = morpho_ts_1.Time.s.from.y(1n);
package/lib/errors.d.ts CHANGED
@@ -35,6 +35,10 @@ export declare namespace BlueErrors {
35
35
  readonly marketId: MarketId;
36
36
  constructor(marketId: MarketId);
37
37
  }
38
+ class UnknownOraclePrice extends Error {
39
+ readonly marketId: MarketId;
40
+ constructor(marketId: MarketId);
41
+ }
38
42
  class InsufficientPosition extends Error {
39
43
  readonly user: Address;
40
44
  readonly marketId: MarketId;
@@ -49,4 +53,5 @@ export declare namespace BlueErrors {
49
53
  export interface ErrorClass<E extends Error> {
50
54
  new (...args: any[]): E;
51
55
  }
56
+ export declare function _try<T, E extends Error>(accessor: () => Promise<T>, ...errorClasses: ErrorClass<E>[]): Promise<T | undefined>;
52
57
  export declare function _try<T, E extends Error>(accessor: () => T, ...errorClasses: ErrorClass<E>[]): T | undefined;
package/lib/errors.js CHANGED
@@ -1,41 +1,51 @@
1
- export class UnknownDataError extends Error {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlueErrors = exports.UnsupportedChainIdError = exports.UnknownVaultConfigError = exports.UnknownMarketParamsError = exports.UnknownTokenPriceError = exports.UnknownTokenError = exports.UnknownDataError = void 0;
4
+ exports._try = _try;
5
+ class UnknownDataError extends Error {
2
6
  }
3
- export class UnknownTokenError extends UnknownDataError {
7
+ exports.UnknownDataError = UnknownDataError;
8
+ class UnknownTokenError extends UnknownDataError {
4
9
  address;
5
10
  constructor(address) {
6
11
  super(`unknown token ${address}`);
7
12
  this.address = address;
8
13
  }
9
14
  }
10
- export class UnknownTokenPriceError extends UnknownDataError {
15
+ exports.UnknownTokenError = UnknownTokenError;
16
+ class UnknownTokenPriceError extends UnknownDataError {
11
17
  address;
12
18
  constructor(address) {
13
19
  super(`unknown price of token ${address}`);
14
20
  this.address = address;
15
21
  }
16
22
  }
17
- export class UnknownMarketParamsError extends UnknownDataError {
23
+ exports.UnknownTokenPriceError = UnknownTokenPriceError;
24
+ class UnknownMarketParamsError extends UnknownDataError {
18
25
  marketId;
19
26
  constructor(marketId) {
20
27
  super(`unknown config for market ${marketId}`);
21
28
  this.marketId = marketId;
22
29
  }
23
30
  }
24
- export class UnknownVaultConfigError extends UnknownDataError {
31
+ exports.UnknownMarketParamsError = UnknownMarketParamsError;
32
+ class UnknownVaultConfigError extends UnknownDataError {
25
33
  vault;
26
34
  constructor(vault) {
27
35
  super(`unknown config for vault ${vault}`);
28
36
  this.vault = vault;
29
37
  }
30
38
  }
31
- export class UnsupportedChainIdError extends Error {
39
+ exports.UnknownVaultConfigError = UnknownVaultConfigError;
40
+ class UnsupportedChainIdError extends Error {
32
41
  chainId;
33
42
  constructor(chainId) {
34
43
  super(`unsupported chain ${chainId}`);
35
44
  this.chainId = chainId;
36
45
  }
37
46
  }
38
- export var BlueErrors;
47
+ exports.UnsupportedChainIdError = UnsupportedChainIdError;
48
+ var BlueErrors;
39
49
  (function (BlueErrors) {
40
50
  class InvalidInterestAccrual extends Error {
41
51
  marketId;
@@ -63,6 +73,14 @@ export var BlueErrors;
63
73
  }
64
74
  }
65
75
  BlueErrors.InsufficientLiquidity = InsufficientLiquidity;
76
+ class UnknownOraclePrice extends Error {
77
+ marketId;
78
+ constructor(marketId) {
79
+ super(`unknown oracle price of market "${marketId}"`);
80
+ this.marketId = marketId;
81
+ }
82
+ }
83
+ BlueErrors.UnknownOraclePrice = UnknownOraclePrice;
66
84
  class InsufficientPosition extends Error {
67
85
  user;
68
86
  marketId;
@@ -83,15 +101,21 @@ export var BlueErrors;
83
101
  }
84
102
  }
85
103
  BlueErrors.InsufficientCollateral = InsufficientCollateral;
86
- })(BlueErrors || (BlueErrors = {}));
87
- export function _try(accessor, ...errorClasses) {
88
- try {
89
- return accessor();
90
- }
91
- catch (error) {
104
+ })(BlueErrors || (exports.BlueErrors = BlueErrors = {}));
105
+ function _try(accessor, ...errorClasses) {
106
+ const maybeCatchError = (error) => {
92
107
  if (errorClasses.length === 0 ||
93
108
  errorClasses.some((errorClass) => error instanceof errorClass))
94
109
  return;
95
110
  throw error;
111
+ };
112
+ try {
113
+ const res = accessor();
114
+ if (res instanceof Promise)
115
+ return res.catch(maybeCatchError);
116
+ return res;
117
+ }
118
+ catch (error) {
119
+ return maybeCatchError(error);
96
120
  }
97
121
  }
@@ -27,7 +27,7 @@ export interface PeripheralBalance {
27
27
  */
28
28
  dstAmount: bigint;
29
29
  }
30
- export interface InputAssetBalances extends Omit<PeripheralBalance, "type"> {
30
+ export interface IAssetBalances extends Omit<PeripheralBalance, "type"> {
31
31
  }
32
32
  export declare class AssetBalances {
33
33
  /**
@@ -42,7 +42,7 @@ export declare class AssetBalances {
42
42
  } & {
43
43
  [T in Exclude<PeripheralBalanceType, "base">]?: PeripheralBalance;
44
44
  };
45
- constructor(balance: InputAssetBalances);
45
+ constructor(balance: IAssetBalances);
46
46
  add(balance: PeripheralBalance): this;
47
47
  sub(balance: PeripheralBalance): this;
48
48
  }
@@ -1,4 +1,7 @@
1
- export class AssetBalances {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AssetBalances = void 0;
4
+ class AssetBalances {
2
5
  /**
3
6
  * The total balance of all types of related tokens.
4
7
  */
@@ -36,3 +39,4 @@ export class AssetBalances {
36
39
  return this;
37
40
  }
38
41
  }
42
+ exports.AssetBalances = AssetBalances;
@@ -8,25 +8,25 @@ export interface Permit2Allowance {
8
8
  expiration: bigint;
9
9
  nonce: bigint;
10
10
  }
11
- export interface InputPermit2Allowance {
11
+ export interface IPermit2Allowance {
12
12
  amount: BigIntish;
13
13
  expiration: BigIntish;
14
14
  nonce: BigIntish;
15
15
  }
16
- export interface InputHolding {
16
+ export interface IHolding {
17
17
  user: Address;
18
18
  token: Address;
19
19
  erc20Allowances: {
20
20
  [key in Erc20AllowanceRecipient]: bigint;
21
21
  };
22
22
  permit2Allowances: {
23
- [key in Permit2AllowanceRecipient]: InputPermit2Allowance;
23
+ [key in Permit2AllowanceRecipient]: IPermit2Allowance;
24
24
  };
25
25
  erc2612Nonce?: bigint;
26
26
  canTransfer?: boolean;
27
27
  balance: bigint;
28
28
  }
29
- export declare class Holding implements InputHolding {
29
+ export declare class Holding implements IHolding {
30
30
  /**
31
31
  * The user of this holding.
32
32
  */
@@ -60,5 +60,5 @@ export declare class Holding implements InputHolding {
60
60
  * `undefined` if the token does not support ERC-2612.
61
61
  */
62
62
  erc2612Nonce?: bigint;
63
- constructor({ user, token, erc20Allowances, permit2Allowances, balance, erc2612Nonce, canTransfer, }: InputHolding);
63
+ constructor({ user, token, erc20Allowances, permit2Allowances, balance, erc2612Nonce, canTransfer, }: IHolding);
64
64
  }
@@ -1,14 +1,17 @@
1
- import { entries, fromEntries } from "@morpho-org/morpho-ts";
2
- export const ERC20_ALLOWANCE_RECIPIENTS = [
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Holding = exports.PERMIT2_ALLOWANCE_RECIPIENTS = exports.ERC20_ALLOWANCE_RECIPIENTS = void 0;
4
+ const morpho_ts_1 = require("@morpho-org/morpho-ts");
5
+ exports.ERC20_ALLOWANCE_RECIPIENTS = [
3
6
  "morpho",
4
7
  "permit2",
5
8
  "bundler",
6
9
  ];
7
- export const PERMIT2_ALLOWANCE_RECIPIENTS = [
10
+ exports.PERMIT2_ALLOWANCE_RECIPIENTS = [
8
11
  "morpho",
9
12
  "bundler",
10
13
  ];
11
- export class Holding {
14
+ class Holding {
12
15
  /**
13
16
  * The user of this holding.
14
17
  */
@@ -43,7 +46,7 @@ export class Holding {
43
46
  this.token = token;
44
47
  this.balance = balance;
45
48
  this.canTransfer = canTransfer;
46
- this.erc20Allowances = fromEntries(entries(erc20Allowances).map(([address, allowance]) => [
49
+ this.erc20Allowances = (0, morpho_ts_1.fromEntries)((0, morpho_ts_1.entries)(erc20Allowances).map(([address, allowance]) => [
47
50
  address,
48
51
  allowance,
49
52
  ]));
@@ -63,3 +66,4 @@ export class Holding {
63
66
  this.erc2612Nonce = erc2612Nonce;
64
67
  }
65
68
  }
69
+ exports.Holding = Holding;
@@ -1,2 +1,18 @@
1
- export * from "./Holding.js";
2
- export * from "./AssetBalances.js";
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Holding.js"), exports);
18
+ __exportStar(require("./AssetBalances.js"), exports);
package/lib/index.js CHANGED
@@ -1,12 +1,28 @@
1
- export * from "./addresses.js";
2
- export * from "./constants.js";
3
- export * from "./errors.js";
4
- export * from "./market/index.js";
5
- export * from "./chain.js";
6
- export * from "./token/index.js";
7
- export * from "./types.js";
8
- export * from "./math/index.js";
9
- export * from "./user/index.js";
10
- export * from "./holding/index.js";
11
- export * from "./position/index.js";
12
- export * from "./vault/index.js";
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./addresses.js"), exports);
18
+ __exportStar(require("./constants.js"), exports);
19
+ __exportStar(require("./errors.js"), exports);
20
+ __exportStar(require("./market/index.js"), exports);
21
+ __exportStar(require("./chain.js"), exports);
22
+ __exportStar(require("./token/index.js"), exports);
23
+ __exportStar(require("./types.js"), exports);
24
+ __exportStar(require("./math/index.js"), exports);
25
+ __exportStar(require("./user/index.js"), exports);
26
+ __exportStar(require("./holding/index.js"), exports);
27
+ __exportStar(require("./position/index.js"), exports);
28
+ __exportStar(require("./vault/index.js"), exports);