@mento-protocol/mento-sdk 1.10.3 → 1.11.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 (34) hide show
  1. package/README.md +16 -18
  2. package/dist/cjs/constants/addresses.js +48 -32
  3. package/dist/cjs/constants/currencies.d.ts +5 -0
  4. package/dist/cjs/constants/currencies.js +29 -0
  5. package/dist/cjs/constants/index.d.ts +1 -0
  6. package/dist/cjs/constants/index.js +1 -0
  7. package/dist/cjs/constants/tradablePairs.11142220.d.ts +2 -0
  8. package/dist/cjs/constants/tradablePairs.11142220.js +7391 -0
  9. package/dist/cjs/constants/tradablePairs.42220.js +1 -1
  10. package/dist/cjs/constants/tradablePairs.44787.js +1 -1
  11. package/dist/cjs/enums/chainId.d.ts +3 -1
  12. package/dist/cjs/enums/chainId.js +2 -0
  13. package/dist/cjs/mento.d.ts +4 -0
  14. package/dist/cjs/mento.js +15 -1
  15. package/dist/cjs/types/contractAddressMap.d.ts +1 -1
  16. package/dist/cjs/utils.d.ts +1 -6
  17. package/dist/cjs/utils.js +5 -22
  18. package/dist/esm/constants/addresses.js +48 -32
  19. package/dist/esm/constants/currencies.d.ts +5 -0
  20. package/dist/esm/constants/currencies.js +26 -0
  21. package/dist/esm/constants/index.d.ts +1 -0
  22. package/dist/esm/constants/index.js +1 -0
  23. package/dist/esm/constants/tradablePairs.11142220.d.ts +2 -0
  24. package/dist/esm/constants/tradablePairs.11142220.js +7388 -0
  25. package/dist/esm/constants/tradablePairs.42220.js +1 -1
  26. package/dist/esm/constants/tradablePairs.44787.js +1 -1
  27. package/dist/esm/enums/chainId.d.ts +3 -1
  28. package/dist/esm/enums/chainId.js +2 -0
  29. package/dist/esm/mento.d.ts +4 -0
  30. package/dist/esm/mento.js +16 -2
  31. package/dist/esm/types/contractAddressMap.d.ts +1 -1
  32. package/dist/esm/utils.d.ts +1 -6
  33. package/dist/esm/utils.js +4 -21
  34. package/package.json +10 -7
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  // This file is auto-generated. Do not edit manually.
3
- // Generated on 2025-07-11T11:11:56.576Z
3
+ // Generated on 2025-09-12T16:06:28.873Z
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.tradablePairs42220 = void 0;
6
6
  exports.tradablePairs42220 = [
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  // This file is auto-generated. Do not edit manually.
3
- // Generated on 2025-07-11T11:12:19.594Z
3
+ // Generated on 2025-09-12T16:07:04.390Z
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.tradablePairs44787 = void 0;
6
6
  exports.tradablePairs44787 = [
@@ -1,4 +1,6 @@
1
1
  export declare enum ChainId {
2
2
  CELO = 42220,
3
- ALFAJORES = 44787
3
+ CELO_SEPOLIA = 11142220,
4
+ ALFAJORES = 44787,
5
+ BASE = 8453
4
6
  }
@@ -4,5 +4,7 @@ exports.ChainId = void 0;
4
4
  var ChainId;
5
5
  (function (ChainId) {
6
6
  ChainId[ChainId["CELO"] = 42220] = "CELO";
7
+ ChainId[ChainId["CELO_SEPOLIA"] = 11142220] = "CELO_SEPOLIA";
7
8
  ChainId[ChainId["ALFAJORES"] = 44787] = "ALFAJORES";
9
+ ChainId[ChainId["BASE"] = 8453] = "BASE";
8
10
  })(ChainId = exports.ChainId || (exports.ChainId = {}));
@@ -1,6 +1,7 @@
1
1
  import { IBroker } from '@mento-protocol/mento-core-ts';
2
2
  import { BigNumber, BigNumberish, providers, Signer } from 'ethers';
3
3
  import { Address, TradingLimit, TradingLimitsConfig, TradingLimitsState } from './interfaces';
4
+ import { Identifier } from './constants/addresses';
4
5
  import { TradablePairWithSpread } from './constants/tradablePairs';
5
6
  export interface Exchange {
6
7
  providerAddr: Address;
@@ -26,6 +27,7 @@ export declare class Mento {
26
27
  private readonly broker;
27
28
  private readonly router;
28
29
  private exchanges;
30
+ private cachedChainId;
29
31
  /**
30
32
  * This constructor is private, use the static create or createWithParams methods
31
33
  * to create a new Mento instance
@@ -235,4 +237,6 @@ export declare class Mento {
235
237
  * @returns the trading limits state
236
238
  */
237
239
  getTradingLimitState(exchangeId: string): Promise<TradingLimitsState[]>;
240
+ getAddress(identifier: Identifier): Promise<Address>;
241
+ chainId(): Promise<number>;
238
242
  }
package/dist/cjs/mento.js CHANGED
@@ -28,6 +28,7 @@ class Mento {
28
28
  * @param exchanges exchange data for the broker
29
29
  */
30
30
  constructor(signerOrProvider, brokerAddress, routerAddress, exchanges) {
31
+ this.cachedChainId = null;
31
32
  this.signerOrProvider = signerOrProvider;
32
33
  this.broker = mento_core_ts_1.IBroker__factory.connect(brokerAddress, signerOrProvider);
33
34
  this.router = mento_router_ts_1.IMentoRouter__factory.connect(routerAddress, signerOrProvider);
@@ -42,7 +43,7 @@ class Mento {
42
43
  static create(signerOrProvider) {
43
44
  return __awaiter(this, void 0, void 0, function* () {
44
45
  (0, utils_1.validateSignerOrProvider)(signerOrProvider);
45
- return new Mento(signerOrProvider, yield (0, utils_1.getBrokerAddressFromRegistry)(signerOrProvider), yield (0, addresses_1.getAddress)('MentoRouter', yield (0, utils_1.getChainId)(signerOrProvider)));
46
+ return new Mento(signerOrProvider, (0, addresses_1.getAddress)('Broker', yield (0, utils_1.getChainId)(signerOrProvider)), (0, addresses_1.getAddress)('MentoRouter', yield (0, utils_1.getChainId)(signerOrProvider)));
46
47
  });
47
48
  }
48
49
  /**
@@ -555,5 +556,18 @@ class Mento {
555
556
  return yield Promise.all(configuredLimitCfgs.map((cfg) => __awaiter(this, void 0, void 0, function* () { return yield (0, limits_1.getLimitsState)(broker, exchangeId, cfg.asset); })));
556
557
  });
557
558
  }
559
+ getAddress(identifier) {
560
+ return __awaiter(this, void 0, void 0, function* () {
561
+ return (0, addresses_1.getAddress)(identifier, yield this.chainId());
562
+ });
563
+ }
564
+ chainId() {
565
+ return __awaiter(this, void 0, void 0, function* () {
566
+ if (this.cachedChainId == null) {
567
+ this.cachedChainId = yield (0, utils_1.getChainId)(this.signerOrProvider);
568
+ }
569
+ return this.cachedChainId;
570
+ });
571
+ }
558
572
  }
559
573
  exports.Mento = Mento;
@@ -1,4 +1,4 @@
1
1
  import { ContractAddresses } from '.';
2
2
  export type ContractAddressMap = {
3
- [chainId: number]: ContractAddresses;
3
+ [chainId: number]: Partial<ContractAddresses>;
4
4
  };
@@ -19,12 +19,6 @@ export declare function validateSigner(signer: Signer): void;
19
19
  * @throws if signerOrProvider is invalid or not connected
20
20
  */
21
21
  export declare function validateSignerOrProvider(signerOrProvider: Signer | providers.Provider): void;
22
- /**
23
- * Returns the broker address from the Celo registry
24
- * @param signerOrProvider an ethers provider or signer
25
- * @returns the broker address
26
- */
27
- export declare function getBrokerAddressFromRegistry(signerOrProvider: Signer | providers.Provider): Promise<Address>;
28
22
  /**
29
23
  * Returns the symbol of an erc20 token
30
24
  * @param tokenAddr the address of the erc20 token
@@ -48,3 +42,4 @@ export declare function increaseAllowance(tokenAddr: string, spender: string, am
48
42
  * @returns the token address if found, null otherwise
49
43
  */
50
44
  export declare function findTokenBySymbol(pairs: readonly TradablePair[], symbol: string): string | null;
45
+ export declare function capitalize(str: string): string;
package/dist/cjs/utils.js CHANGED
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.findTokenBySymbol = exports.increaseAllowance = exports.getSymbolFromTokenAddress = exports.getBrokerAddressFromRegistry = exports.validateSignerOrProvider = exports.validateSigner = exports.getChainId = void 0;
12
+ exports.capitalize = exports.findTokenBySymbol = exports.increaseAllowance = exports.getSymbolFromTokenAddress = exports.validateSignerOrProvider = exports.validateSigner = exports.getChainId = void 0;
13
13
  const ethers_1 = require("ethers");
14
14
  /**
15
15
  * Gets the chain ID from a signer or provider
@@ -55,27 +55,6 @@ function validateSignerOrProvider(signerOrProvider) {
55
55
  }
56
56
  }
57
57
  exports.validateSignerOrProvider = validateSignerOrProvider;
58
- /**
59
- * Returns the broker address from the Celo registry
60
- * @param signerOrProvider an ethers provider or signer
61
- * @returns the broker address
62
- */
63
- function getBrokerAddressFromRegistry(signerOrProvider) {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- const celoRegistryAddress = '0x000000000000000000000000000000000000ce10';
66
- const brokerIdentifier = 'Broker';
67
- const registryAbi = [
68
- 'function getAddressForString(string calldata identifier) external view returns (address)',
69
- ];
70
- const contract = new ethers_1.Contract(celoRegistryAddress, registryAbi, signerOrProvider);
71
- const brokerAddress = yield contract.getAddressForString(brokerIdentifier);
72
- if (brokerAddress === ethers_1.constants.AddressZero) {
73
- throw Error('Broker address not found in the registry');
74
- }
75
- return brokerAddress;
76
- });
77
- }
78
- exports.getBrokerAddressFromRegistry = getBrokerAddressFromRegistry;
79
58
  /**
80
59
  * Returns the symbol of an erc20 token
81
60
  * @param tokenAddr the address of the erc20 token
@@ -127,3 +106,7 @@ function findTokenBySymbol(pairs, symbol) {
127
106
  return null;
128
107
  }
129
108
  exports.findTokenBySymbol = findTokenBySymbol;
109
+ function capitalize(str) {
110
+ return str.charAt(0).toUpperCase() + str.slice(1);
111
+ }
112
+ exports.capitalize = capitalize;
@@ -1,51 +1,67 @@
1
1
  import { ChainId } from './../enums';
2
2
  export const addresses = {
3
3
  [ChainId.CELO]: {
4
- GovernanceFactory: '0xee6CE2dbe788dFC38b8F583Da86cB9caf2C8cF5A',
4
+ // Oracles & Breakers
5
+ BreakerBox: '0x303ED1df62Fa067659B586EbEe8De0EcE824Ab39',
6
+ MedianDeltaBreaker: '0x49349F92D2B17d491e42C8fdB02D19f072F9B5D9',
7
+ SortedOracles: '0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33',
8
+ ValueDeltaBreaker: '0x4DBC33B3abA78475A5AA4BC7A5B11445d387BF68',
9
+ // DEX
10
+ BiPoolManager: '0x22d9db95E6Ae61c104A7B6F6C78D7993B94ec901',
11
+ Broker: '0x777A8255cA72412f0d706dc03C9D1987306B4CaD',
12
+ ConstantProductPricingModule: '0x0c07126d0CB30E66eF7553Cc7C37143B4f06DddB',
13
+ ConstantSumPricingModule: '0xDebED1F6f6ce9F6e73AA25F95acBFFE2397550Fb',
14
+ MentoRouter: '0xbe729350f8cdfc19db6866e8579841188ee57f67',
15
+ Reserve: '0x9380fA34Fd9e4Fd14c06305fd7B6199089eD4eb9',
16
+ // Governance
5
17
  Airgrab: '0x7D8E73deafDBAfc98fDBe7974168cFA6d8B9AE0C',
6
18
  Emission: '0x5C789592E2611df1873b46D394c69f75faB99778',
19
+ Locking: '0x001Bb66636dCd149A1A2bA8C50E408BdDd80279C',
7
20
  MentoGovernor: '0x47036d78bB3169b4F5560dD77BF93f4412A59852',
8
21
  MentoToken: '0x7FF62f59e3e89EA34163EA1458EEBCc81177Cfb6',
9
22
  TimelockController: '0x890DB8A597940165901372Dd7DB61C9f246e2147',
10
- Locking: '0x001Bb66636dCd149A1A2bA8C50E408BdDd80279C',
11
- MentoRouter: '0xbe729350f8cdfc19db6866e8579841188ee57f67',
12
- Broker: '0x777A8255cA72412f0d706dc03C9D1987306B4CaD',
13
- BiPoolManager: '0x22d9db95E6Ae61c104A7B6F6C78D7993B94ec901',
14
- BreakerBox: '0x303ED1df62Fa067659B586EbEe8De0EcE824Ab39',
15
- Reserve: '0x9380fA34Fd9e4Fd14c06305fd7B6199089eD4eb9',
16
- ConstantSumPricingModule: '0xDebED1F6f6ce9F6e73AA25F95acBFFE2397550Fb',
17
- ConstantProductPricingModule: '0x0c07126d0CB30E66eF7553Cc7C37143B4f06DddB',
18
- MedianDeltaBreaker: '0x49349F92D2B17d491e42C8fdB02D19f072F9B5D9',
19
- ValueDeltaBreaker: '0x4DBC33B3abA78475A5AA4BC7A5B11445d387BF68',
20
- StableToken: '0x765DE816845861e75A25fCA122bb6898B8B1282a',
21
- StableTokenEUR: '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73',
22
- StableTokenBRL: '0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787',
23
- StableTokenXOF: '0x73F93dcc49cB8A239e2032663e9475dd5ef29A08',
24
- SortedOracles: '0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33',
25
23
  },
26
24
  [ChainId.ALFAJORES]: {
27
- GovernanceFactory: '0x96Fe03DBFEc1EB419885a01d2335bE7c1a45e33b',
25
+ // Oracles & Breakers
26
+ BreakerBox: '0xC76BDf0AFb654888728003683cf748A8B1b4f5fD',
27
+ MedianDeltaBreaker: '0x6B0a2076713fDAef4F9301fe8404a228e3682DE4',
28
+ SortedOracles: '0xFdd8bD58115FfBf04e47411c1d228eCC45E93075',
29
+ ValueDeltaBreaker: '0xfa6fFf746a5E74055e432f3bba26138956AEfbFe',
30
+ // DEX
31
+ BiPoolManager: '0x9B64E8EaBD1a035b148cE970d3319c5C3Ad53EC3',
32
+ Broker: '0xD3Dff18E465bCa6241A244144765b4421Ac14D09',
33
+ ConstantProductPricingModule: '0x99EDce8143FF8AeFA1fBB6C2103B349Add2B9519',
34
+ ConstantSumPricingModule: '0x474DBf1eDF845410bdaC6aeE97C3CC403651ba2E',
35
+ MentoRouter: '0xe6101a457a69b53e298e35a7f6e3dcb0390df02a',
36
+ Reserve: '0xa7ed835288Aa4524bB6C73DD23c0bF4315D9Fe3e',
37
+ // Governance
28
38
  Airgrab: '0x8dC9282F0a74A2a36F41440e009AA0EADFe490c5',
29
39
  Emission: '0xe62cc88ca2A5E7Dd3Fe5ce8511C874e610Ddb0b6',
40
+ Locking: '0x537CaE97C588C6DA64A385817F3D3563DDCf0591',
30
41
  MentoGovernor: '0x558e92236f85Bb4e8A63ec0D5Bf9d34087Eab744',
31
42
  MentoToken: '0x3eDd2f7c90e2E931c817a44302Af7112E84be6Cc',
32
43
  TimelockController: '0xa0Ad8DD40104556122c21dF50eD14bb1B53A3338',
33
- Locking: '0x537CaE97C588C6DA64A385817F3D3563DDCf0591',
34
- MentoRouter: '0xe6101a457a69b53e298e35a7f6e3dcb0390df02a',
35
- Broker: '0xD3Dff18E465bCa6241A244144765b4421Ac14D09',
36
- BiPoolManager: '0x9B64E8EaBD1a035b148cE970d3319c5C3Ad53EC3',
37
- BreakerBox: '0xC76BDf0AFb654888728003683cf748A8B1b4f5fD',
38
- Reserve: '0xa7ed835288Aa4524bB6C73DD23c0bF4315D9Fe3e',
39
- ConstantSumPricingModule: '0x474DBf1eDF845410bdaC6aeE97C3CC403651ba2E',
40
- ConstantProductPricingModule: '0x99EDce8143FF8AeFA1fBB6C2103B349Add2B9519',
41
- MedianDeltaBreaker: '0x6B0a2076713fDAef4F9301fe8404a228e3682DE4',
42
- ValueDeltaBreaker: '0xfa6fFf746a5E74055e432f3bba26138956AEfbFe',
43
- StableToken: '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1',
44
- StableTokenEUR: '0x10c892A6EC43a53E45D0B916B4b7D383B1b78C0F',
45
- StableTokenBRL: '0xE4D517785D091D3c54818832dB6094bcc2744545',
46
- StableTokenXOF: '0xB0FA15e002516d0301884059c0aaC0F0C72b019D',
47
- SortedOracles: '0xFdd8bD58115FfBf04e47411c1d228eCC45E93075',
48
44
  },
45
+ [ChainId.CELO_SEPOLIA]: {
46
+ // Oracles & Breakers
47
+ BreakerBox: '0x578bD46003B9D3fd4c3C3f47c98B329562a6a1dE',
48
+ MedianDeltaBreaker: '0xd29B4e743F7B84D63fBF9149B6D983DF2eF5C952',
49
+ SortedOracles: '0xfaa7Ca2B056E60F6733aE75AA0709140a6eAfD20',
50
+ ValueDeltaBreaker: '0x03CDf2966185Eb0b980f2481Ad386B8aFdAB4534',
51
+ // DEX
52
+ BiPoolManager: '0xeCB3C656C131fCd9bB8D1d80898716bD684feb78',
53
+ Broker: '0xB9Ae2065142EB79b6c5EB1E8778F883fad6B07Ba',
54
+ ConstantProductPricingModule: '0x2584a5835e3aE7E901e6462E1de06920c2C68028',
55
+ ConstantSumPricingModule: '0x3b199d9EbEbe509bb711BfFb455c2d79102A9602',
56
+ MentoRouter: '0x8e4Fb12D86D5DF911086a9153e79CA27e0c96156',
57
+ Reserve: '0x2bC2D48735842924C508468C5A02580aD4F6d99A',
58
+ // Governance
59
+ Emission: '0x3C1BEA0F35b5dcAc1065CA9b3b6877657dEa4A69',
60
+ Locking: '0xB72320fC501cb30E55bAF0DA48c20b11fAc9f79D',
61
+ MentoGovernor: '0x23173Ac37b8E4e5a60d787aC543B3F51e8f398b4',
62
+ MentoToken: '0x07867fd40EB56b4380bE39c88D0a7EA59Aa99A20',
63
+ TimelockController: '0x74c44Be99937815173A3C56274331e0A05611e0D',
64
+ }
49
65
  };
50
66
  export function getAddress(identifier, chainId) {
51
67
  const addressesForChain = addresses[chainId];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * List of supported currencies for rate feed generation and validation
3
+ */
4
+ export declare const CURRENCIES: readonly ["AUD", "USD", "PHP", "ZAR", "CAD", "EUR", "BRL", "XOF", "COP", "GHS", "CHF", "NGN", "JPY", "GBP", "KES", "CELO", "ETH", "EURC", "EUROC", "USDC", "USDT"];
5
+ export type Currency = typeof CURRENCIES[number];
@@ -0,0 +1,26 @@
1
+ /**
2
+ * List of supported currencies for rate feed generation and validation
3
+ */
4
+ export const CURRENCIES = [
5
+ "AUD",
6
+ "USD",
7
+ "PHP",
8
+ "ZAR",
9
+ "CAD",
10
+ "EUR",
11
+ "BRL",
12
+ "XOF",
13
+ "COP",
14
+ "GHS",
15
+ "CHF",
16
+ "NGN",
17
+ "JPY",
18
+ "GBP",
19
+ "KES",
20
+ "CELO",
21
+ "ETH",
22
+ "EURC",
23
+ "EUROC",
24
+ "USDC",
25
+ "USDT"
26
+ ];
@@ -1,2 +1,3 @@
1
1
  export * from './addresses';
2
+ export * from './currencies';
2
3
  export * from './tradablePairs';
@@ -1,2 +1,3 @@
1
1
  export * from './addresses';
2
+ export * from './currencies';
2
3
  export * from './tradablePairs';
@@ -0,0 +1,2 @@
1
+ import { TradablePairWithSpread } from './tradablePairs';
2
+ export declare const tradablePairs11142220: TradablePairWithSpread[];