@mento-protocol/mento-sdk 1.10.2 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -48
- package/dist/abis/bipoolmanager.d.ts +15 -0
- package/dist/abis/bipoolmanager.d.ts.map +1 -0
- package/dist/abis/bipoolmanager.js +26 -0
- package/dist/abis/bipoolmanager.js.map +1 -0
- package/dist/abis/broker.d.ts +2 -0
- package/dist/abis/broker.d.ts.map +1 -0
- package/dist/abis/broker.js +8 -0
- package/dist/abis/broker.js.map +1 -0
- package/dist/abis/erc20.d.ts +2 -0
- package/dist/abis/erc20.d.ts.map +1 -0
- package/dist/abis/erc20.js +11 -0
- package/dist/abis/erc20.js.map +1 -0
- package/dist/abis/index.d.ts +5 -0
- package/dist/abis/index.d.ts.map +1 -0
- package/dist/{cjs/constants → abis}/index.js +5 -2
- package/dist/abis/index.js.map +1 -0
- package/dist/abis/pricingmodule.d.ts +2 -0
- package/dist/abis/pricingmodule.d.ts.map +1 -0
- package/dist/abis/pricingmodule.js +5 -0
- package/dist/abis/pricingmodule.js.map +1 -0
- package/dist/abis/reserve.d.ts +2 -0
- package/dist/abis/reserve.d.ts.map +1 -0
- package/dist/abis/reserve.js +9 -0
- package/dist/abis/reserve.js.map +1 -0
- package/dist/abis/uniswapV3.d.ts +4 -0
- package/dist/abis/uniswapV3.d.ts.map +1 -0
- package/dist/abis/uniswapV3.js +15 -0
- package/dist/abis/uniswapV3.js.map +1 -0
- package/dist/adapters/implementations/ethersAdapter.d.ts +9 -0
- package/dist/adapters/implementations/ethersAdapter.d.ts.map +1 -0
- package/dist/adapters/implementations/ethersAdapter.js +19 -0
- package/dist/adapters/implementations/ethersAdapter.js.map +1 -0
- package/dist/adapters/implementations/ethersV5Adapter.d.ts +9 -0
- package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +1 -0
- package/dist/adapters/implementations/ethersV5Adapter.js +19 -0
- package/dist/adapters/implementations/ethersV5Adapter.js.map +1 -0
- package/dist/adapters/implementations/viemAdapter.d.ts +9 -0
- package/dist/adapters/implementations/viemAdapter.d.ts.map +1 -0
- package/dist/adapters/implementations/viemAdapter.js +26 -0
- package/dist/adapters/implementations/viemAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +10 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/proxies/ethersAdapterProxy.d.ts +25 -0
- package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/ethersAdapterProxy.js +71 -0
- package/dist/adapters/proxies/ethersAdapterProxy.js.map +1 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +25 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.js +71 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +1 -0
- package/dist/adapters/proxies/viemAdapterProxy.d.ts +25 -0
- package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/viemAdapterProxy.js +71 -0
- package/dist/adapters/proxies/viemAdapterProxy.js.map +1 -0
- package/dist/constants/aaveConfig.d.ts +7 -0
- package/dist/constants/aaveConfig.d.ts.map +1 -0
- package/dist/constants/aaveConfig.js +22 -0
- package/dist/constants/aaveConfig.js.map +1 -0
- package/dist/constants/addresses.d.ts +14 -0
- package/dist/constants/addresses.d.ts.map +1 -0
- package/dist/{esm/constants → constants}/addresses.js +17 -16
- package/dist/constants/addresses.js.map +1 -0
- package/dist/{cjs/enums → constants}/chainId.d.ts +1 -0
- package/dist/constants/chainId.d.ts.map +1 -0
- package/dist/{cjs/enums → constants}/chainId.js +2 -1
- package/dist/constants/chainId.js.map +1 -0
- package/dist/constants/contractNames.d.ts +21 -0
- package/dist/constants/contractNames.d.ts.map +1 -0
- package/dist/constants/contractNames.js +24 -0
- package/dist/constants/contractNames.js.map +1 -0
- package/dist/constants/index.d.ts +9 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +25 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/mentoAddresses.d.ts +6 -0
- package/dist/constants/mentoAddresses.d.ts.map +1 -0
- package/dist/constants/mentoAddresses.js +9 -0
- package/dist/constants/mentoAddresses.js.map +1 -0
- package/dist/{cjs/enums → constants}/proposalState.d.ts +1 -0
- package/dist/constants/proposalState.d.ts.map +1 -0
- package/dist/{cjs/enums → constants}/proposalState.js +2 -1
- package/dist/constants/proposalState.js.map +1 -0
- package/dist/constants/protocolAddresses.d.ts +5 -0
- package/dist/constants/protocolAddresses.d.ts.map +1 -0
- package/dist/constants/protocolAddresses.js +8 -0
- package/dist/constants/protocolAddresses.js.map +1 -0
- package/dist/constants/stableTokenMetadata.d.ts +12 -0
- package/dist/constants/stableTokenMetadata.d.ts.map +1 -0
- package/dist/constants/stableTokenMetadata.js +14 -0
- package/dist/constants/stableTokenMetadata.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/services/collateralAssetService.d.ts +8 -0
- package/dist/services/collateralAssetService.d.ts.map +1 -0
- package/dist/services/collateralAssetService.js +47 -0
- package/dist/services/collateralAssetService.js.map +1 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/{cjs/interfaces → services}/index.js +6 -4
- package/dist/services/index.js.map +1 -0
- package/dist/services/stableTokenService.d.ts +9 -0
- package/dist/services/stableTokenService.d.ts.map +1 -0
- package/dist/services/stableTokenService.js +40 -0
- package/dist/services/stableTokenService.js.map +1 -0
- package/dist/services/supply/ISupplyCalculator.d.ts +14 -0
- package/dist/services/supply/ISupplyCalculator.d.ts.map +1 -0
- package/dist/{cjs/interfaces/tradingLimitsState.js → services/supply/ISupplyCalculator.js} +1 -0
- package/dist/services/supply/ISupplyCalculator.js.map +1 -0
- package/dist/services/supply/aaveSupplyCalculator.d.ts +21 -0
- package/dist/services/supply/aaveSupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/aaveSupplyCalculator.js +46 -0
- package/dist/services/supply/aaveSupplyCalculator.js.map +1 -0
- package/dist/services/supply/calculatorFactory.d.ts +8 -0
- package/dist/services/supply/calculatorFactory.d.ts.map +1 -0
- package/dist/services/supply/calculatorFactory.js +3 -0
- package/dist/services/supply/calculatorFactory.js.map +1 -0
- package/dist/services/supply/defaultCalculatorFactory.d.ts +9 -0
- package/dist/services/supply/defaultCalculatorFactory.d.ts.map +1 -0
- package/dist/services/supply/defaultCalculatorFactory.js +27 -0
- package/dist/services/supply/defaultCalculatorFactory.js.map +1 -0
- package/dist/services/supply/index.d.ts +7 -0
- package/dist/services/supply/index.d.ts.map +1 -0
- package/dist/{cjs → services/supply}/index.js +7 -6
- package/dist/services/supply/index.js.map +1 -0
- package/dist/services/supply/multisigSupplyCalculator.d.ts +9 -0
- package/dist/services/supply/multisigSupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/multisigSupplyCalculator.js +33 -0
- package/dist/services/supply/multisigSupplyCalculator.js.map +1 -0
- package/dist/services/supply/uniV3SupplyCalculator.d.ts +21 -0
- package/dist/services/supply/uniV3SupplyCalculator.d.ts.map +1 -0
- package/dist/services/supply/uniV3SupplyCalculator.js +233 -0
- package/dist/services/supply/uniV3SupplyCalculator.js.map +1 -0
- package/dist/services/supplyAdjustmentService.d.ts +14 -0
- package/dist/services/supplyAdjustmentService.d.ts.map +1 -0
- package/dist/services/supplyAdjustmentService.js +46 -0
- package/dist/services/supplyAdjustmentService.js.map +1 -0
- package/dist/services/tokenMetadataService.d.ts +8 -0
- package/dist/services/tokenMetadataService.d.ts.map +1 -0
- package/dist/services/tokenMetadataService.js +44 -0
- package/dist/services/tokenMetadataService.js.map +1 -0
- package/dist/{cjs/types → types}/contractAddresses.d.ts +1 -1
- package/dist/types/contractAddresses.d.ts.map +1 -0
- package/dist/{cjs/types → types}/contractAddresses.js +1 -0
- package/dist/types/contractAddresses.js.map +1 -0
- package/dist/types/exchange.d.ts +6 -0
- package/dist/types/exchange.d.ts.map +1 -0
- package/dist/{cjs/interfaces/tradingLimit.js → types/exchange.js} +1 -0
- package/dist/types/exchange.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{cjs/types → types}/index.js +4 -1
- package/dist/types/index.js.map +1 -0
- package/dist/types/provider.d.ts +11 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/{cjs/interfaces/tradingLimitsConfig.js → types/provider.js} +1 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/token.d.ts +25 -0
- package/dist/types/token.d.ts.map +1 -0
- package/dist/{cjs/interfaces/IChainClient.js → types/token.js} +1 -0
- package/dist/types/token.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/{cjs/enums → utils}/index.js +2 -2
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/retry.d.ts +12 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +28 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +33 -61
- package/dist/cjs/ChainClient.d.ts +0 -9
- package/dist/cjs/ChainClient.js +0 -58
- package/dist/cjs/TestChainClient.d.ts +0 -7
- package/dist/cjs/TestChainClient.js +0 -41
- package/dist/cjs/constants/addresses.d.ts +0 -4
- package/dist/cjs/constants/addresses.js +0 -64
- package/dist/cjs/constants/index.d.ts +0 -2
- package/dist/cjs/constants/tradablePairs.42220.d.ts +0 -2
- package/dist/cjs/constants/tradablePairs.42220.js +0 -6407
- package/dist/cjs/constants/tradablePairs.44787.d.ts +0 -2
- package/dist/cjs/constants/tradablePairs.44787.js +0 -7391
- package/dist/cjs/constants/tradablePairs.d.ts +0 -16
- package/dist/cjs/constants/tradablePairs.js +0 -53
- package/dist/cjs/enums/index.d.ts +0 -2
- package/dist/cjs/governance.d.ts +0 -62
- package/dist/cjs/governance.js +0 -151
- package/dist/cjs/index.d.ts +0 -6
- package/dist/cjs/interfaces/IChainClient.d.ts +0 -6
- package/dist/cjs/interfaces/index.d.ts +0 -4
- package/dist/cjs/interfaces/tradingLimit.d.ts +0 -7
- package/dist/cjs/interfaces/tradingLimitsConfig.d.ts +0 -10
- package/dist/cjs/interfaces/tradingLimitsState.d.ts +0 -9
- package/dist/cjs/limits.d.ts +0 -33
- package/dist/cjs/limits.js +0 -130
- package/dist/cjs/mento.d.ts +0 -238
- package/dist/cjs/mento.js +0 -559
- package/dist/cjs/routeUtils.d.ts +0 -304
- package/dist/cjs/routeUtils.js +0 -372
- package/dist/cjs/types/contractAddressMap.d.ts +0 -4
- package/dist/cjs/types/contractAddressMap.js +0 -2
- package/dist/cjs/types/index.d.ts +0 -2
- package/dist/cjs/utils.d.ts +0 -50
- package/dist/cjs/utils.js +0 -129
- package/dist/esm/ChainClient.d.ts +0 -9
- package/dist/esm/ChainClient.js +0 -54
- package/dist/esm/TestChainClient.d.ts +0 -7
- package/dist/esm/TestChainClient.js +0 -37
- package/dist/esm/constants/addresses.d.ts +0 -4
- package/dist/esm/constants/index.d.ts +0 -2
- package/dist/esm/constants/index.js +0 -2
- package/dist/esm/constants/tradablePairs.42220.d.ts +0 -2
- package/dist/esm/constants/tradablePairs.42220.js +0 -6404
- package/dist/esm/constants/tradablePairs.44787.d.ts +0 -2
- package/dist/esm/constants/tradablePairs.44787.js +0 -7388
- package/dist/esm/constants/tradablePairs.d.ts +0 -16
- package/dist/esm/constants/tradablePairs.js +0 -26
- package/dist/esm/enums/chainId.d.ts +0 -4
- package/dist/esm/enums/chainId.js +0 -5
- package/dist/esm/enums/index.d.ts +0 -2
- package/dist/esm/enums/index.js +0 -2
- package/dist/esm/enums/proposalState.d.ts +0 -10
- package/dist/esm/enums/proposalState.js +0 -11
- package/dist/esm/governance.d.ts +0 -62
- package/dist/esm/governance.js +0 -147
- package/dist/esm/index.d.ts +0 -6
- package/dist/esm/index.js +0 -6
- package/dist/esm/interfaces/IChainClient.d.ts +0 -6
- package/dist/esm/interfaces/IChainClient.js +0 -1
- package/dist/esm/interfaces/index.d.ts +0 -4
- package/dist/esm/interfaces/index.js +0 -4
- package/dist/esm/interfaces/tradingLimit.d.ts +0 -7
- package/dist/esm/interfaces/tradingLimit.js +0 -1
- package/dist/esm/interfaces/tradingLimitsConfig.d.ts +0 -10
- package/dist/esm/interfaces/tradingLimitsConfig.js +0 -1
- package/dist/esm/interfaces/tradingLimitsState.d.ts +0 -9
- package/dist/esm/interfaces/tradingLimitsState.js +0 -1
- package/dist/esm/limits.d.ts +0 -33
- package/dist/esm/limits.js +0 -123
- package/dist/esm/mento.d.ts +0 -238
- package/dist/esm/mento.js +0 -555
- package/dist/esm/routeUtils.d.ts +0 -304
- package/dist/esm/routeUtils.js +0 -362
- package/dist/esm/types/contractAddressMap.d.ts +0 -4
- package/dist/esm/types/contractAddressMap.js +0 -1
- package/dist/esm/types/contractAddresses.d.ts +0 -23
- package/dist/esm/types/contractAddresses.js +0 -1
- package/dist/esm/types/index.d.ts +0 -2
- package/dist/esm/types/index.js +0 -2
- package/dist/esm/utils.d.ts +0 -50
- package/dist/esm/utils.js +0 -119
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { PublicClient } from 'viem';
|
|
2
|
+
import type { Provider as EthersV6Provider } from 'ethers';
|
|
3
|
+
import type { providers as EthersV5Providers } from 'ethers-v5';
|
|
4
|
+
import { CollateralAsset, ContractAddresses, StableToken } from './types';
|
|
5
|
+
export type SupportedProvider = EthersV6Provider | PublicClient | EthersV5Providers.Provider;
|
|
6
|
+
export interface MentoConfig {
|
|
7
|
+
/** Provider can be one of:
|
|
8
|
+
* - Ethers v6 Provider (from 'ethers')
|
|
9
|
+
* - Ethers v5 Provider (from 'ethers-v5')
|
|
10
|
+
* - Viem PublicClient (from 'viem')
|
|
11
|
+
*/
|
|
12
|
+
provider: SupportedProvider;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @class Mento
|
|
16
|
+
* @description The main class for the Mento SDK. It initializes the provider and services,
|
|
17
|
+
* and provides a public API for interacting with the Mento Protocol.
|
|
18
|
+
* @dev example usage:
|
|
19
|
+
* // Ethers v6
|
|
20
|
+
* const mento = await Mento.create({
|
|
21
|
+
* provider: new ethers.JsonRpcProvider("https://forno.celo.org")
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Ethers v5
|
|
25
|
+
* const mento = await Mento.create({
|
|
26
|
+
* provider: new ethersV5.providers.JsonRpcProvider("https://forno.celo.org")
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Viem
|
|
30
|
+
* const mento = await Mento.create({
|
|
31
|
+
* provider: createPublicClient({
|
|
32
|
+
* transport: http("https://forno.celo.org")
|
|
33
|
+
* })
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
36
|
+
* // Get all stable tokens
|
|
37
|
+
* const stableTokens = await mento.getStableTokens();
|
|
38
|
+
*
|
|
39
|
+
* // Get all collateral assets
|
|
40
|
+
* const collateralAssets = await mento.getCollateralAssets();
|
|
41
|
+
*/
|
|
42
|
+
export declare class Mento {
|
|
43
|
+
private provider;
|
|
44
|
+
private stableTokenService;
|
|
45
|
+
private collateralAssetService;
|
|
46
|
+
private constructor();
|
|
47
|
+
static create(config: MentoConfig): Promise<Mento>;
|
|
48
|
+
getStableTokens(): Promise<StableToken[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Get all collateral assets that are available on the current chain.
|
|
51
|
+
* @returns An array of collateral assets
|
|
52
|
+
*/
|
|
53
|
+
getCollateralAssets(): Promise<CollateralAsset[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Get the address of a contract for the current chain
|
|
56
|
+
* @param contractName - The contract name
|
|
57
|
+
* @returns The contract address
|
|
58
|
+
*/
|
|
59
|
+
getContractAddress(contractName: keyof ContractAddresses): Promise<string>;
|
|
60
|
+
}
|
|
61
|
+
export * from './constants';
|
|
62
|
+
export * from './types';
|
|
63
|
+
export * from './adapters';
|
|
64
|
+
export * from './services';
|
|
65
|
+
export * from './abis';
|
|
66
|
+
export * from './utils';
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG/D,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,WAAW,EACZ,MAAM,SAAS,CAAA;AAKhB,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,YAAY,GACZ,iBAAiB,CAAC,QAAQ,CAAA;AAE9B,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,EAAE,iBAAiB,CAAA;CAC5B;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,sBAAsB,CAAwB;IAEtD,OAAO;WAUa,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAsBlD,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAItD;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAI9D;;;;OAIG;IACU,kBAAkB,CAC7B,YAAY,EAAE,MAAM,iBAAiB,GACpC,OAAO,CAAC,MAAM,CAAC;CAInB;AAED,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
exports.Mento = void 0;
|
|
18
|
+
const adapters_1 = require("./adapters");
|
|
19
|
+
const services_1 = require("./services");
|
|
20
|
+
const addresses_1 = require("./constants/addresses");
|
|
21
|
+
/** Helper type guard for Ethers v5 Provider */
|
|
22
|
+
function isEthersV5Provider(provider) {
|
|
23
|
+
// Check for v5 specific properties that don't exist in v6
|
|
24
|
+
return ('getNetwork' in provider &&
|
|
25
|
+
'_network' in provider &&
|
|
26
|
+
// v5 specific internal property
|
|
27
|
+
'formatter' in provider);
|
|
28
|
+
}
|
|
29
|
+
/** Helper type guard for Ethers v6 Provider */
|
|
30
|
+
function isEthersV6Provider(provider) {
|
|
31
|
+
// Check for v6 specific properties that don't exist in v5
|
|
32
|
+
return ('getNetwork' in provider &&
|
|
33
|
+
// v6 specific methods
|
|
34
|
+
'broadcastTransaction' in provider);
|
|
35
|
+
}
|
|
36
|
+
/** Helper type guard for Viem Provider */
|
|
37
|
+
function isViemProvider(provider) {
|
|
38
|
+
return !('getNetwork' in provider);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @class Mento
|
|
42
|
+
* @description The main class for the Mento SDK. It initializes the provider and services,
|
|
43
|
+
* and provides a public API for interacting with the Mento Protocol.
|
|
44
|
+
* @dev example usage:
|
|
45
|
+
* // Ethers v6
|
|
46
|
+
* const mento = await Mento.create({
|
|
47
|
+
* provider: new ethers.JsonRpcProvider("https://forno.celo.org")
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* // Ethers v5
|
|
51
|
+
* const mento = await Mento.create({
|
|
52
|
+
* provider: new ethersV5.providers.JsonRpcProvider("https://forno.celo.org")
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* // Viem
|
|
56
|
+
* const mento = await Mento.create({
|
|
57
|
+
* provider: createPublicClient({
|
|
58
|
+
* transport: http("https://forno.celo.org")
|
|
59
|
+
* })
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* // Get all stable tokens
|
|
63
|
+
* const stableTokens = await mento.getStableTokens();
|
|
64
|
+
*
|
|
65
|
+
* // Get all collateral assets
|
|
66
|
+
* const collateralAssets = await mento.getCollateralAssets();
|
|
67
|
+
*/
|
|
68
|
+
class Mento {
|
|
69
|
+
constructor(provider, stableTokenService, collateralAssetService) {
|
|
70
|
+
this.provider = provider;
|
|
71
|
+
this.stableTokenService = stableTokenService;
|
|
72
|
+
this.collateralAssetService = collateralAssetService;
|
|
73
|
+
}
|
|
74
|
+
static async create(config) {
|
|
75
|
+
if (!config.provider) {
|
|
76
|
+
throw new Error('Provider is required to initialize Mento SDK');
|
|
77
|
+
}
|
|
78
|
+
let provider;
|
|
79
|
+
if (isEthersV5Provider(config.provider)) {
|
|
80
|
+
provider = new adapters_1.EthersV5Adapter(config.provider);
|
|
81
|
+
}
|
|
82
|
+
else if (isEthersV6Provider(config.provider)) {
|
|
83
|
+
provider = new adapters_1.EthersAdapter(config.provider);
|
|
84
|
+
}
|
|
85
|
+
else if (isViemProvider(config.provider)) {
|
|
86
|
+
provider = new adapters_1.ViemAdapter(config.provider);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new Error('Unsupported provider type');
|
|
90
|
+
}
|
|
91
|
+
const stableTokenService = new services_1.StableTokenService(provider);
|
|
92
|
+
const collateralAssetService = new services_1.CollateralAssetService(provider);
|
|
93
|
+
return new Mento(provider, stableTokenService, collateralAssetService);
|
|
94
|
+
}
|
|
95
|
+
async getStableTokens() {
|
|
96
|
+
return this.stableTokenService.getStableTokens();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get all collateral assets that are available on the current chain.
|
|
100
|
+
* @returns An array of collateral assets
|
|
101
|
+
*/
|
|
102
|
+
async getCollateralAssets() {
|
|
103
|
+
return this.collateralAssetService.getCollateralAssets();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get the address of a contract for the current chain
|
|
107
|
+
* @param contractName - The contract name
|
|
108
|
+
* @returns The contract address
|
|
109
|
+
*/
|
|
110
|
+
async getContractAddress(contractName) {
|
|
111
|
+
const chainId = (await this.provider.getChainId());
|
|
112
|
+
return addresses_1.addresses[chainId][contractName];
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.Mento = Mento;
|
|
116
|
+
__exportStar(require("./constants"), exports);
|
|
117
|
+
__exportStar(require("./types"), exports);
|
|
118
|
+
__exportStar(require("./adapters"), exports);
|
|
119
|
+
__exportStar(require("./services"), exports);
|
|
120
|
+
__exportStar(require("./abis"), exports);
|
|
121
|
+
__exportStar(require("./utils"), exports);
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,yCAAwE;AAOxE,yCAAuE;AAEvE,qDAAiD;AAgBjD,+CAA+C;AAC/C,SAAS,kBAAkB,CACzB,QAA2B;IAE3B,0DAA0D;IAC1D,OAAO,CACL,YAAY,IAAI,QAAQ;QACxB,UAAU,IAAI,QAAQ;QACtB,gCAAgC;QAChC,WAAW,IAAI,QAAQ,CACxB,CAAA;AACH,CAAC;AAED,+CAA+C;AAC/C,SAAS,kBAAkB,CACzB,QAA2B;IAE3B,0DAA0D;IAC1D,OAAO,CACL,YAAY,IAAI,QAAQ;QACxB,sBAAsB;QACtB,sBAAsB,IAAI,QAAQ,CACnC,CAAA;AACH,CAAC;AAED,0CAA0C;AAC1C,SAAS,cAAc,CAAC,QAA2B;IACjD,OAAO,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAa,KAAK;IAKhB,YACE,QAAyB,EACzB,kBAAsC,EACtC,sBAA8C;QAE9C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;IACtD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAmB;QAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QAED,IAAI,QAAyB,CAAA;QAC7B,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,QAAQ,GAAG,IAAI,0BAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC;aAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,QAAQ,GAAG,IAAI,wBAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,QAAQ,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,6BAAkB,CAAC,QAAQ,CAAC,CAAA;QAC3D,MAAM,sBAAsB,GAAG,IAAI,iCAAsB,CAAC,QAAQ,CAAC,CAAA;QAEnE,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAA;IACxE,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAA;IAClD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,mBAAmB;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,CAAA;IAC1D,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,kBAAkB,CAC7B,YAAqC;QAErC,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAY,CAAA;QAC7D,OAAO,qBAAS,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IACzC,CAAC;CACF;AA5DD,sBA4DC;AAED,8CAA2B;AAC3B,0CAAuB;AACvB,6CAA0B;AAC1B,6CAA0B;AAC1B,yCAAsB;AACtB,0CAAuB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CollateralAsset, ProviderAdapter } from '../types';
|
|
2
|
+
export declare class CollateralAssetService {
|
|
3
|
+
private provider;
|
|
4
|
+
private tokenMetadataService;
|
|
5
|
+
constructor(provider: ProviderAdapter);
|
|
6
|
+
getCollateralAssets(): Promise<CollateralAsset[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=collateralAssetService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateralAssetService.d.ts","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,eAAe,EAAE,MAAM,UAAU,CAAA;AAKrE,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CA2CxD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CollateralAssetService = void 0;
|
|
4
|
+
const abis_1 = require("../abis");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const tokenMetadataService_1 = require("./tokenMetadataService");
|
|
8
|
+
class CollateralAssetService {
|
|
9
|
+
constructor(provider) {
|
|
10
|
+
this.provider = provider;
|
|
11
|
+
this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
|
|
12
|
+
}
|
|
13
|
+
async getCollateralAssets() {
|
|
14
|
+
const chainId = await this.provider.getChainId();
|
|
15
|
+
const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, constants_1.BIPOOLMANAGER);
|
|
16
|
+
const reserveAddress = (0, constants_1.getContractAddress)(chainId, constants_1.RESERVE);
|
|
17
|
+
const exchanges = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
18
|
+
address: biPoolManagerAddress,
|
|
19
|
+
abi: abis_1.BIPOOL_MANAGER_ABI,
|
|
20
|
+
functionName: 'getExchanges',
|
|
21
|
+
})));
|
|
22
|
+
const uniqueAddresses = new Set();
|
|
23
|
+
for (const exchange of exchanges) {
|
|
24
|
+
exchange.assets.forEach((address) => uniqueAddresses.add(address));
|
|
25
|
+
}
|
|
26
|
+
// Check which tokens are collateral assets and get their info
|
|
27
|
+
const assets = [];
|
|
28
|
+
for (const address of uniqueAddresses) {
|
|
29
|
+
const isCollateral = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
30
|
+
address: reserveAddress,
|
|
31
|
+
abi: abis_1.RESERVE_ABI,
|
|
32
|
+
functionName: 'isCollateralAsset',
|
|
33
|
+
args: [address],
|
|
34
|
+
})));
|
|
35
|
+
if (isCollateral) {
|
|
36
|
+
const metadata = await this.tokenMetadataService.getTokenMetadata(address);
|
|
37
|
+
assets.push({
|
|
38
|
+
address,
|
|
39
|
+
...metadata,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return assets;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.CollateralAssetService = CollateralAssetService;
|
|
47
|
+
//# sourceMappingURL=collateralAssetService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateralAssetService.js","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":";;;AAAA,kCAAyD;AAEzD,4CAAyE;AACzE,oCAAyC;AACzC,iEAA6D;AAE7D,MAAa,sBAAsB;IAGjC,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAChD,MAAM,oBAAoB,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,yBAAa,CAAC,CAAA;QACvE,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,mBAAO,CAAC,CAAA;QAE3D,MAAM,SAAS,GAAG,CAAC,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC3C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,yBAAkB;YACvB,YAAY,EAAE,cAAc;SAC7B,CAAC,CACH,CAAe,CAAA;QAEhB,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QACpE,CAAC;QAED,8DAA8D;QAC9D,MAAM,MAAM,GAAsB,EAAE,CAAA;QACpC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC9C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO,EAAE,cAAc;gBACvB,GAAG,EAAE,kBAAW;gBAChB,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,CAAC,OAAO,CAAC;aAChB,CAAC,CACH,CAAY,CAAA;YAEb,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAC/D,OAAO,CACR,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO;oBACP,GAAG,QAAQ;iBACZ,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAlDD,wDAkDC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,UAAU,CAAA"}
|
|
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./collateralAssetService"), exports);
|
|
18
|
+
__exportStar(require("./stableTokenService"), exports);
|
|
19
|
+
__exportStar(require("./supplyAdjustmentService"), exports);
|
|
20
|
+
__exportStar(require("./tokenMetadataService"), exports);
|
|
21
|
+
__exportStar(require("./supply"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC;AACxC,uDAAoC;AACpC,4DAAyC;AACzC,yDAAsC;AACtC,2CAAwB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProviderAdapter, StableToken } from '../types';
|
|
2
|
+
export declare class StableTokenService {
|
|
3
|
+
private provider;
|
|
4
|
+
private tokenMetadataService;
|
|
5
|
+
private supplyAdjustmentService;
|
|
6
|
+
constructor(provider: ProviderAdapter);
|
|
7
|
+
getStableTokens(): Promise<StableToken[]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stableTokenService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stableTokenService.d.ts","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,uBAAuB,CAAyB;gBAEpC,QAAQ,EAAE,eAAe;IAQvC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAiChD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StableTokenService = void 0;
|
|
4
|
+
const abis_1 = require("../abis");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const supply_1 = require("./supply");
|
|
7
|
+
const supplyAdjustmentService_1 = require("./supplyAdjustmentService");
|
|
8
|
+
const tokenMetadataService_1 = require("./tokenMetadataService");
|
|
9
|
+
class StableTokenService {
|
|
10
|
+
constructor(provider) {
|
|
11
|
+
this.provider = provider;
|
|
12
|
+
this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
|
|
13
|
+
this.supplyAdjustmentService = new supplyAdjustmentService_1.SupplyAdjustmentService(provider, new supply_1.DefaultCalculatorFactory());
|
|
14
|
+
}
|
|
15
|
+
async getStableTokens() {
|
|
16
|
+
const chainId = await this.provider.getChainId();
|
|
17
|
+
const reserveAddress = (0, constants_1.getContractAddress)(chainId, constants_1.RESERVE);
|
|
18
|
+
const tokenAddresses = (await this.provider.readContract({
|
|
19
|
+
address: reserveAddress,
|
|
20
|
+
abi: abis_1.RESERVE_ABI,
|
|
21
|
+
functionName: 'getTokens',
|
|
22
|
+
}));
|
|
23
|
+
const tokens = [];
|
|
24
|
+
for (const address of tokenAddresses) {
|
|
25
|
+
const metadata = await this.tokenMetadataService.getTokenMetadata(address);
|
|
26
|
+
const totalSupply = await this.tokenMetadataService.getTotalSupply(address);
|
|
27
|
+
const token = {
|
|
28
|
+
address,
|
|
29
|
+
...metadata,
|
|
30
|
+
totalSupply,
|
|
31
|
+
};
|
|
32
|
+
const adjustedSupply = await this.supplyAdjustmentService.getAdjustedSupply(token);
|
|
33
|
+
token.totalSupply = adjustedSupply;
|
|
34
|
+
tokens.push(token);
|
|
35
|
+
}
|
|
36
|
+
return tokens;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.StableTokenService = StableTokenService;
|
|
40
|
+
//# sourceMappingURL=stableTokenService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stableTokenService.js","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,4CAA0D;AAE1D,qCAAmD;AACnD,uEAAmE;AACnE,iEAA6D;AAE7D,MAAa,kBAAkB;IAI7B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;QAC9D,IAAI,CAAC,uBAAuB,GAAG,IAAI,iDAAuB,CACxD,QAAQ,EACR,IAAI,iCAAwB,EAAE,CAC/B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAChD,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,mBAAO,CAAC,CAAA;QAE3D,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvD,OAAO,EAAE,cAAc;YACvB,GAAG,EAAE,kBAAW;YAChB,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAa,CAAA;QAEf,MAAM,MAAM,GAAkB,EAAE,CAAA;QAEhC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC1E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAChE,OAAO,CACR,CAAA;YAED,MAAM,KAAK,GAAG;gBACZ,OAAO;gBACP,GAAG,QAAQ;gBACX,WAAW;aACZ,CAAA;YAED,MAAM,cAAc,GAClB,MAAM,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAE7D,KAAK,CAAC,WAAW,GAAG,cAAc,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA7CD,gDA6CC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for calculating non-circulating token supply.
|
|
3
|
+
*
|
|
4
|
+
* Determines the amount of tokens that should be excluded from total supply
|
|
5
|
+
* calculations because they are pre-minted or otherwise not available for
|
|
6
|
+
* trading (e.g., locked, reserved, or in protocol-owned positions).
|
|
7
|
+
*
|
|
8
|
+
* @param tokenAddress - The address of the token.
|
|
9
|
+
* @returns The amount to subtract from total supply.
|
|
10
|
+
*/
|
|
11
|
+
export interface ISupplyCalculator {
|
|
12
|
+
getAmount(tokenAddress: string): Promise<bigint>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ISupplyCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/ISupplyCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/ISupplyCalculator.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
2
|
+
import { ProviderAdapter } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the amount of tokens supplied to AAVE protocol.
|
|
5
|
+
*
|
|
6
|
+
* When tokens are supplied to AAVE, the protocol mints corresponding "aTokens"
|
|
7
|
+
* as receipt tokens. The balance of the aTokens represents the total
|
|
8
|
+
* amount of the original token supplied to the protocol.
|
|
9
|
+
*/
|
|
10
|
+
export declare class AAVESupplyCalculator implements ISupplyCalculator {
|
|
11
|
+
private readonly provider;
|
|
12
|
+
private holderAddresses;
|
|
13
|
+
constructor(provider: ProviderAdapter, holderAddresses: string[]);
|
|
14
|
+
/**
|
|
15
|
+
* Gets the balance of the corresponding aToken for the specified token address that is held by the holder addresses.
|
|
16
|
+
* @param tokenAddress - The address of the token to get the balance for.
|
|
17
|
+
* @returns The balance of the corresponding aToken.
|
|
18
|
+
*/
|
|
19
|
+
getAmount(tokenAddress: string): Promise<bigint>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=aaveSupplyCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aaveSupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/aaveSupplyCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAG1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,eAAe;gBADN,QAAQ,EAAE,eAAe,EAClC,eAAe,EAAE,MAAM,EAAE;IAGnC;;;;OAIG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CA2BvD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AAVESupplyCalculator = void 0;
|
|
4
|
+
const abis_1 = require("../../abis");
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
/**
|
|
7
|
+
* Calculates the amount of tokens supplied to AAVE protocol.
|
|
8
|
+
*
|
|
9
|
+
* When tokens are supplied to AAVE, the protocol mints corresponding "aTokens"
|
|
10
|
+
* as receipt tokens. The balance of the aTokens represents the total
|
|
11
|
+
* amount of the original token supplied to the protocol.
|
|
12
|
+
*/
|
|
13
|
+
class AAVESupplyCalculator {
|
|
14
|
+
constructor(provider, holderAddresses) {
|
|
15
|
+
this.provider = provider;
|
|
16
|
+
this.holderAddresses = holderAddresses;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets the balance of the corresponding aToken for the specified token address that is held by the holder addresses.
|
|
20
|
+
* @param tokenAddress - The address of the token to get the balance for.
|
|
21
|
+
* @returns The balance of the corresponding aToken.
|
|
22
|
+
*/
|
|
23
|
+
async getAmount(tokenAddress) {
|
|
24
|
+
const chainId = await this.provider.getChainId();
|
|
25
|
+
const chainMappings = constants_1.AAVE_TOKEN_MAPPINGS[chainId];
|
|
26
|
+
if (!chainMappings) {
|
|
27
|
+
return 0n; // No mappings for this chain, return 0
|
|
28
|
+
}
|
|
29
|
+
const aTokenAddress = chainMappings[tokenAddress];
|
|
30
|
+
if (!aTokenAddress) {
|
|
31
|
+
return 0n; // No aToken mapping for this token, return 0
|
|
32
|
+
}
|
|
33
|
+
const balances = await Promise.all(this.holderAddresses.map(async (holderAddress) => {
|
|
34
|
+
const balance = (await this.provider.readContract({
|
|
35
|
+
address: aTokenAddress,
|
|
36
|
+
abi: abis_1.ERC20_ABI,
|
|
37
|
+
functionName: 'balanceOf',
|
|
38
|
+
args: [holderAddress],
|
|
39
|
+
}));
|
|
40
|
+
return balance;
|
|
41
|
+
}));
|
|
42
|
+
return balances.reduce((acc, balance) => acc + balance, 0n);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.AAVESupplyCalculator = AAVESupplyCalculator;
|
|
46
|
+
//# sourceMappingURL=aaveSupplyCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aaveSupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/aaveSupplyCalculator.ts"],"names":[],"mappings":";;;AAEA,qCAAsC;AACtC,+CAAqD;AAErD;;;;;;GAMG;AACH,MAAa,oBAAoB;IAE/B,YACmB,QAAyB,EAClC,eAAyB;QADhB,aAAQ,GAAR,QAAQ,CAAiB;QAClC,oBAAe,GAAf,eAAe,CAAU;IAChC,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAEhD,MAAM,aAAa,GAAG,+BAAmB,CAAC,OAAO,CAAC,CAAA;QAClD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAA,CAAC,uCAAuC;QACnD,CAAC;QACD,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,CAAA,CAAC,6CAA6C;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChD,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,CAAC,aAAa,CAAC;aACtB,CAAC,CAAW,CAAA;YAEb,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CACH,CAAA;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;IAC7D,CAAC;CACF;AAvCD,oDAuCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
2
|
+
import { ProviderAdapter } from '../../types';
|
|
3
|
+
export interface CalculatorFactory {
|
|
4
|
+
createUniV3Calculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
5
|
+
createAAVECalculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
6
|
+
createMultisigCalculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=calculatorFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculatorFactory.d.ts","sourceRoot":"","sources":["../../../src/services/supply/calculatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;IACnE,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;IAClE,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAA;CACvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculatorFactory.js","sourceRoot":"","sources":["../../../src/services/supply/calculatorFactory.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProviderAdapter } from '../../types';
|
|
2
|
+
import { CalculatorFactory } from './calculatorFactory';
|
|
3
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
4
|
+
export declare class DefaultCalculatorFactory implements CalculatorFactory {
|
|
5
|
+
createUniV3Calculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
6
|
+
createAAVECalculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
7
|
+
createMultisigCalculator(provider: ProviderAdapter): ISupplyCalculator;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=defaultCalculatorFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultCalculatorFactory.d.ts","sourceRoot":"","sources":["../../../src/services/supply/defaultCalculatorFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAIvD,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;IASnE,oBAAoB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;IAOlE,wBAAwB,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB;CAOvE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultCalculatorFactory = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
const aaveSupplyCalculator_1 = require("./aaveSupplyCalculator");
|
|
6
|
+
const uniV3SupplyCalculator_1 = require("./uniV3SupplyCalculator");
|
|
7
|
+
const multisigSupplyCalculator_1 = require("./multisigSupplyCalculator");
|
|
8
|
+
class DefaultCalculatorFactory {
|
|
9
|
+
createUniV3Calculator(provider) {
|
|
10
|
+
return new uniV3SupplyCalculator_1.UniV3SupplyCalculator(provider, constants_1.PROTOCOL_ADDRESSES.UNIV3_POSITION_MANAGER, constants_1.PROTOCOL_ADDRESSES.UNIV3_FACTORY, constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG);
|
|
11
|
+
}
|
|
12
|
+
createAAVECalculator(provider) {
|
|
13
|
+
return new aaveSupplyCalculator_1.AAVESupplyCalculator(provider, [
|
|
14
|
+
constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET,
|
|
15
|
+
constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG,
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
createMultisigCalculator(provider) {
|
|
19
|
+
return new multisigSupplyCalculator_1.MultisigSupplyCalculator(provider, [
|
|
20
|
+
constants_1.MENTO_ADDRESSES.PROTOCOL_MULTISIG,
|
|
21
|
+
constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET,
|
|
22
|
+
constants_1.MENTO_ADDRESSES.OPERATIONAL_WALLET_2,
|
|
23
|
+
]);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.DefaultCalculatorFactory = DefaultCalculatorFactory;
|
|
27
|
+
//# sourceMappingURL=defaultCalculatorFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultCalculatorFactory.js","sourceRoot":"","sources":["../../../src/services/supply/defaultCalculatorFactory.ts"],"names":[],"mappings":";;;AACA,+CAAqE;AACrE,iEAA6D;AAG7D,mEAA+D;AAC/D,yEAAqE;AAErE,MAAa,wBAAwB;IACnC,qBAAqB,CAAC,QAAyB;QAC7C,OAAO,IAAI,6CAAqB,CAC9B,QAAQ,EACR,8BAAkB,CAAC,sBAAsB,EACzC,8BAAkB,CAAC,aAAa,EAChC,2BAAe,CAAC,iBAAiB,CAClC,CAAA;IACH,CAAC;IAED,oBAAoB,CAAC,QAAyB;QAC5C,OAAO,IAAI,2CAAoB,CAAC,QAAQ,EAAE;YACxC,2BAAe,CAAC,kBAAkB;YAClC,2BAAe,CAAC,iBAAiB;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB,CAAC,QAAyB;QAChD,OAAO,IAAI,mDAAwB,CAAC,QAAQ,EAAE;YAC5C,2BAAe,CAAC,iBAAiB;YACjC,2BAAe,CAAC,kBAAkB;YAClC,2BAAe,CAAC,oBAAoB;SACrC,CAAC,CAAA;IACJ,CAAC;CACF;AAxBD,4DAwBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './uniV3SupplyCalculator';
|
|
2
|
+
export * from './multisigSupplyCalculator';
|
|
3
|
+
export * from './ISupplyCalculator';
|
|
4
|
+
export * from './aaveSupplyCalculator';
|
|
5
|
+
export * from './calculatorFactory';
|
|
6
|
+
export * from './defaultCalculatorFactory';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* istanbul ignore file */
|
|
3
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
3
|
if (k2 === undefined) k2 = k;
|
|
5
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -15,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
15
|
};
|
|
17
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
21
|
-
__exportStar(require("./
|
|
22
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./uniV3SupplyCalculator"), exports);
|
|
18
|
+
__exportStar(require("./multisigSupplyCalculator"), exports);
|
|
19
|
+
__exportStar(require("./ISupplyCalculator"), exports);
|
|
20
|
+
__exportStar(require("./aaveSupplyCalculator"), exports);
|
|
21
|
+
__exportStar(require("./calculatorFactory"), exports);
|
|
22
|
+
__exportStar(require("./defaultCalculatorFactory"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/supply/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAuC;AACvC,6DAA0C;AAC1C,sDAAmC;AACnC,yDAAsC;AACtC,sDAAmC;AACnC,6DAA0C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProviderAdapter } from '../../types';
|
|
2
|
+
import { ISupplyCalculator } from './ISupplyCalculator';
|
|
3
|
+
export declare class MultisigSupplyCalculator implements ISupplyCalculator {
|
|
4
|
+
private provider;
|
|
5
|
+
private multisigAddresses;
|
|
6
|
+
constructor(provider: ProviderAdapter, multisigAddresses: string[]);
|
|
7
|
+
getAmount(tokenAddress: string): Promise<bigint>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=multisigSupplyCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisigSupplyCalculator.d.ts","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,wBAAyB,YAAW,iBAAiB;IAE9D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,iBAAiB;gBADjB,QAAQ,EAAE,eAAe,EACzB,iBAAiB,EAAE,MAAM,EAAE;IAG/B,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBvD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MultisigSupplyCalculator = void 0;
|
|
4
|
+
const abis_1 = require("../../abis");
|
|
5
|
+
class MultisigSupplyCalculator {
|
|
6
|
+
constructor(provider, multisigAddresses) {
|
|
7
|
+
this.provider = provider;
|
|
8
|
+
this.multisigAddresses = multisigAddresses;
|
|
9
|
+
}
|
|
10
|
+
async getAmount(tokenAddress) {
|
|
11
|
+
const balancePromises = this.multisigAddresses.map(async (multisigAddress) => {
|
|
12
|
+
try {
|
|
13
|
+
const balance = (await this.provider.readContract({
|
|
14
|
+
address: tokenAddress,
|
|
15
|
+
abi: abis_1.ERC20_ABI,
|
|
16
|
+
functionName: 'balanceOf',
|
|
17
|
+
args: [multisigAddress],
|
|
18
|
+
}));
|
|
19
|
+
return balance;
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
// TODO: Failures are silent here which could lead to
|
|
23
|
+
// incorrect supply calculations. This will be addressed
|
|
24
|
+
// in the V2 release.
|
|
25
|
+
return BigInt(0);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
const balances = await Promise.all(balancePromises);
|
|
29
|
+
return balances.reduce((sum, balance) => sum + balance, BigInt(0));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.MultisigSupplyCalculator = MultisigSupplyCalculator;
|
|
33
|
+
//# sourceMappingURL=multisigSupplyCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisigSupplyCalculator.js","sourceRoot":"","sources":["../../../src/services/supply/multisigSupplyCalculator.ts"],"names":[],"mappings":";;;AAAA,qCAAsC;AAItC,MAAa,wBAAwB;IACnC,YACU,QAAyB,EACzB,iBAA2B;QAD3B,aAAQ,GAAR,QAAQ,CAAiB;QACzB,sBAAiB,GAAjB,iBAAiB,CAAU;IAClC,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;YAC3E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAChD,OAAO,EAAE,YAAY;oBACrB,GAAG,EAAE,gBAAS;oBACd,YAAY,EAAE,WAAW;oBACzB,IAAI,EAAE,CAAC,eAAe,CAAC;iBACxB,CAAC,CAAW,CAAA;gBACb,OAAO,OAAO,CAAA;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qDAAqD;gBACrD,8DAA8D;gBAC9D,4BAA4B;gBAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC;CACF;AA3BD,4DA2BC"}
|