@mento-protocol/mento-sdk 1.0.0 → 2.0.0-beta.1
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 +124 -8
- 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 +4 -0
- package/dist/abis/index.d.ts.map +1 -0
- package/dist/{cjs → abis}/index.js +4 -5
- 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/adapters/implementations/ethersAdapter.d.ts +10 -0
- package/dist/adapters/implementations/ethersAdapter.d.ts.map +1 -0
- package/dist/adapters/implementations/ethersAdapter.js +22 -0
- package/dist/adapters/implementations/ethersAdapter.js.map +1 -0
- package/dist/adapters/implementations/ethersV5Adapter.d.ts +10 -0
- package/dist/adapters/implementations/ethersV5Adapter.d.ts.map +1 -0
- package/dist/adapters/implementations/ethersV5Adapter.js +22 -0
- package/dist/adapters/implementations/ethersV5Adapter.js.map +1 -0
- package/dist/adapters/implementations/viemAdapter.d.ts +10 -0
- package/dist/adapters/implementations/viemAdapter.d.ts.map +1 -0
- package/dist/adapters/implementations/viemAdapter.js +29 -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 +27 -0
- package/dist/adapters/proxies/ethersAdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/ethersAdapterProxy.js +77 -0
- package/dist/adapters/proxies/ethersAdapterProxy.js.map +1 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts +27 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.js +77 -0
- package/dist/adapters/proxies/ethersV5AdapterProxy.js.map +1 -0
- package/dist/adapters/proxies/viemAdapterProxy.d.ts +28 -0
- package/dist/adapters/proxies/viemAdapterProxy.d.ts.map +1 -0
- package/dist/adapters/proxies/viemAdapterProxy.js +77 -0
- package/dist/adapters/proxies/viemAdapterProxy.js.map +1 -0
- package/dist/constants/addresses.d.ts +14 -0
- package/dist/constants/addresses.d.ts.map +1 -0
- package/dist/{cjs/constants → constants}/addresses.js +14 -25
- package/dist/constants/addresses.js.map +1 -0
- package/dist/constants/chainId.d.ts +5 -0
- package/dist/constants/chainId.d.ts.map +1 -0
- package/dist/{cjs/enums → constants}/chainId.js +2 -2
- 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 +6 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/{cjs/interfaces → constants}/index.js +6 -4
- package/dist/constants/index.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/stableTokenMetadata.d.ts +13 -0
- package/dist/constants/stableTokenMetadata.d.ts.map +1 -0
- package/dist/constants/stableTokenMetadata.js +30 -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 +44 -0
- package/dist/services/collateralAssetService.js.map +1 -0
- package/dist/services/exchangeService.d.ts +18 -0
- package/dist/services/exchangeService.d.ts.map +1 -0
- package/dist/services/exchangeService.js +78 -0
- package/dist/services/exchangeService.js.map +1 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/{cjs/enums → services}/index.js +3 -2
- package/dist/services/index.js.map +1 -0
- package/dist/services/stableTokenService.d.ts +8 -0
- package/dist/services/stableTokenService.d.ts.map +1 -0
- package/dist/services/stableTokenService.js +35 -0
- package/dist/services/stableTokenService.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 +45 -0
- package/dist/services/tokenMetadataService.js.map +1 -0
- package/dist/{esm/types → types}/contractAddresses.d.ts +1 -0
- 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 +12 -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 +12 -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 +12 -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/constants → utils}/index.js +2 -1
- 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 +31 -43
- 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 -2
- package/dist/cjs/constants/index.d.ts +0 -1
- package/dist/cjs/enums/chainId.d.ts +0 -5
- 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 -5
- 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/interfaces/tradingLimitsState.js +0 -2
- package/dist/cjs/limits.d.ts +0 -33
- package/dist/cjs/limits.js +0 -130
- package/dist/cjs/mento.d.ts +0 -152
- package/dist/cjs/mento.js +0 -318
- package/dist/cjs/types/contractAddressMap.d.ts +0 -4
- package/dist/cjs/types/contractAddressMap.js +0 -2
- package/dist/cjs/types/contractAddresses.d.ts +0 -22
- package/dist/cjs/types/index.d.ts +0 -2
- package/dist/cjs/utils.d.ts +0 -36
- package/dist/cjs/utils.js +0 -98
- 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 -2
- package/dist/esm/constants/addresses.js +0 -69
- package/dist/esm/constants/index.d.ts +0 -1
- package/dist/esm/constants/index.js +0 -1
- package/dist/esm/enums/chainId.d.ts +0 -5
- package/dist/esm/enums/chainId.js +0 -6
- 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 -5
- package/dist/esm/index.js +0 -5
- 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 -152
- package/dist/esm/mento.js +0 -314
- package/dist/esm/types/contractAddressMap.d.ts +0 -4
- package/dist/esm/types/contractAddressMap.js +0 -1
- 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 -36
- package/dist/esm/utils.js +0 -90
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,EACL,eAAe,EAEf,eAAe,EAChB,MAAM,UAAU,CAAA;AAKjB,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,mBAAmB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAwCxD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
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, 'BiPoolManager');
|
|
16
|
+
const reserveAddress = (0, constants_1.getContractAddress)(chainId, '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((asset) => uniqueAddresses.add(asset));
|
|
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(metadata);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return assets;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.CollateralAssetService = CollateralAssetService;
|
|
44
|
+
//# sourceMappingURL=collateralAssetService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collateralAssetService.js","sourceRoot":"","sources":["../../src/services/collateralAssetService.ts"],"names":[],"mappings":";;;AAAA,kCAAyD;AAMzD,4CAAiD;AACjD,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,eAAe,CAAC,CAAA;QACzE,MAAM,cAAc,GAAG,IAAA,8BAAkB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAE7D,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,CAA2B,CAAA;QAE5B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QAChE,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,QAAQ,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AA/CD,wDA+CC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ProviderAdapter, Exchange } from '../types';
|
|
2
|
+
export declare class ExchangeService {
|
|
3
|
+
private provider;
|
|
4
|
+
private tokenMetadataService;
|
|
5
|
+
constructor(provider: ProviderAdapter);
|
|
6
|
+
/**
|
|
7
|
+
* Returns a list of all the exchanges and their tokens that can be traded on Mento
|
|
8
|
+
*/
|
|
9
|
+
getExchanges(): Promise<Exchange[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Gets the exchange with the given id. If no exchange is found, returns undefined.
|
|
12
|
+
* @param id The exchange id to be retrieved.
|
|
13
|
+
* @returns The exchange with the given id, or undefined if no exchange is found.
|
|
14
|
+
*/
|
|
15
|
+
getExchangeById(id: string): Promise<Exchange | undefined>;
|
|
16
|
+
getExchangeForTokens(token0: string, token1: string): Promise<Exchange | undefined>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=exchangeService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchangeService.d.ts","sourceRoot":"","sources":["../../src/services/exchangeService.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,QAAQ,EAGT,MAAM,UAAU,CAAA;AAejB,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAI7C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA0CzC;;;;OAIG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAK1D,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;CAiBjC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExchangeService = void 0;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
const abis_1 = require("../abis");
|
|
7
|
+
const tokenMetadataService_1 = require("./tokenMetadataService");
|
|
8
|
+
// TODO:
|
|
9
|
+
// - async getAmountIn
|
|
10
|
+
// - get amount out
|
|
11
|
+
// - Swap in
|
|
12
|
+
// - Swap out
|
|
13
|
+
// - Increase trading allowancew
|
|
14
|
+
// - getExchangeForTokens
|
|
15
|
+
// - getExchangeById
|
|
16
|
+
// - isTradingEnabled -> Circuit breaker service
|
|
17
|
+
class ExchangeService {
|
|
18
|
+
constructor(provider) {
|
|
19
|
+
this.provider = provider;
|
|
20
|
+
this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns a list of all the exchanges and their tokens that can be traded on Mento
|
|
24
|
+
*/
|
|
25
|
+
async getExchanges() {
|
|
26
|
+
// The Broker can store references to multiple implementatios of the IExchangeProvider
|
|
27
|
+
// Currently there is only one implementation, the BiPoolManager, which manages pools with
|
|
28
|
+
// two assets. To simplify this logic we only fetch exchanges from the BiPoolManager.
|
|
29
|
+
// If in the future we have more than one implementation we can extend this function to
|
|
30
|
+
// first fetch the known exchange providers, then for each exchange provider fetch the exchanges.
|
|
31
|
+
const exchangeList = [];
|
|
32
|
+
const chainId = await this.provider.getChainId();
|
|
33
|
+
const biPoolManagerAddress = (0, constants_1.getContractAddress)(chainId, constants_1.BIPOOLMANAGER);
|
|
34
|
+
const rawExchanges = (await (0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
35
|
+
address: biPoolManagerAddress,
|
|
36
|
+
abi: abis_1.BIPOOL_MANAGER_ABI,
|
|
37
|
+
functionName: 'getExchanges',
|
|
38
|
+
})));
|
|
39
|
+
const uniqueAddresses = new Set();
|
|
40
|
+
for (const exchange of rawExchanges) {
|
|
41
|
+
exchange.assets.forEach((asset) => uniqueAddresses.add(asset));
|
|
42
|
+
}
|
|
43
|
+
const tokenMetadataMap = {};
|
|
44
|
+
for (const address of uniqueAddresses) {
|
|
45
|
+
const metadata = await this.tokenMetadataService.getTokenMetadata(address);
|
|
46
|
+
tokenMetadataMap[address] = metadata;
|
|
47
|
+
}
|
|
48
|
+
for (const exchange of rawExchanges) {
|
|
49
|
+
exchangeList.push({
|
|
50
|
+
providerAddr: exchange.providerAddr,
|
|
51
|
+
id: exchange.id,
|
|
52
|
+
assets: exchange.assets.map((asset) => tokenMetadataMap[asset]),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return exchangeList;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Gets the exchange with the given id. If no exchange is found, returns undefined.
|
|
59
|
+
* @param id The exchange id to be retrieved.
|
|
60
|
+
* @returns The exchange with the given id, or undefined if no exchange is found.
|
|
61
|
+
*/
|
|
62
|
+
async getExchangeById(id) {
|
|
63
|
+
const exchanges = await this.getExchanges();
|
|
64
|
+
return exchanges.find((exchange) => exchange.id === id);
|
|
65
|
+
}
|
|
66
|
+
async getExchangeForTokens(token0, token1) {
|
|
67
|
+
let exchange = undefined;
|
|
68
|
+
if (!(await this.provider.isAddress(token0)) ||
|
|
69
|
+
!(await this.provider.isAddress(token1))) {
|
|
70
|
+
throw new Error('Invalid token address was supplied');
|
|
71
|
+
}
|
|
72
|
+
exchange = (await this.getExchanges()).find((exchange) => exchange.assets.some((asset) => asset.address === token0) &&
|
|
73
|
+
exchange.assets.some((asset) => asset.address === token1));
|
|
74
|
+
return exchange;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.ExchangeService = ExchangeService;
|
|
78
|
+
//# sourceMappingURL=exchangeService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchangeService.js","sourceRoot":"","sources":["../../src/services/exchangeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -14,5 +14,6 @@ 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("./
|
|
17
|
+
__exportStar(require("./collateralAssetService"), exports);
|
|
18
|
+
__exportStar(require("./stableTokenService"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,uDAAqC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ProviderAdapter, StableToken } from '../types';
|
|
2
|
+
export declare class StableTokenService {
|
|
3
|
+
private provider;
|
|
4
|
+
private tokenMetadataService;
|
|
5
|
+
constructor(provider: ProviderAdapter);
|
|
6
|
+
getStableTokens(): Promise<StableToken[]>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=stableTokenService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stableTokenService.d.ts","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":"AAME,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGzD,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,oBAAoB,CAAsB;gBAE9B,QAAQ,EAAE,eAAe;IAIvC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CA6BhD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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 tokenMetadataService_1 = require("./tokenMetadataService");
|
|
7
|
+
class StableTokenService {
|
|
8
|
+
constructor(provider) {
|
|
9
|
+
this.provider = provider;
|
|
10
|
+
this.tokenMetadataService = new tokenMetadataService_1.TokenMetadataService(provider);
|
|
11
|
+
}
|
|
12
|
+
async getStableTokens() {
|
|
13
|
+
const chainId = await this.provider.getChainId();
|
|
14
|
+
const reserveAddress = (0, constants_1.getContractAddress)(chainId, 'Reserve');
|
|
15
|
+
const tokenAddresses = (await this.provider.readContract({
|
|
16
|
+
address: reserveAddress,
|
|
17
|
+
abi: abis_1.RESERVE_ABI,
|
|
18
|
+
functionName: 'getTokens',
|
|
19
|
+
}));
|
|
20
|
+
const tokens = [];
|
|
21
|
+
for (const address of tokenAddresses) {
|
|
22
|
+
const metadata = await this.tokenMetadataService.getTokenMetadata(address);
|
|
23
|
+
const totalSupply = await this.tokenMetadataService.getTotalSupply(address);
|
|
24
|
+
const token = {
|
|
25
|
+
...metadata,
|
|
26
|
+
totalSupply,
|
|
27
|
+
fiatTicker: (0, constants_1.getFiatTicker)(metadata.symbol),
|
|
28
|
+
};
|
|
29
|
+
tokens.push(token);
|
|
30
|
+
}
|
|
31
|
+
return tokens;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.StableTokenService = StableTokenService;
|
|
35
|
+
//# sourceMappingURL=stableTokenService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stableTokenService.js","sourceRoot":"","sources":["../../src/services/stableTokenService.ts"],"names":[],"mappings":";;;AAAA,kCAAqC;AACrC,4CAIqB;AAErB,iEAA6D;AAE7D,MAAa,kBAAkB;IAG7B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;QAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,QAAQ,CAAC,CAAA;IAChE,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,SAAS,CAAC,CAAA;QAE7D,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,GAAG,QAAQ;gBACX,WAAW;gBACX,UAAU,EAAE,IAAA,yBAAa,EAAC,QAAQ,CAAC,MAA2B,CAAC;aAChE,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AApCD,gDAoCC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ProviderAdapter, IERC20Token } from '../types';
|
|
2
|
+
export declare class TokenMetadataService {
|
|
3
|
+
private provider;
|
|
4
|
+
constructor(provider: ProviderAdapter);
|
|
5
|
+
getTokenMetadata(address: string): Promise<IERC20Token>;
|
|
6
|
+
getTotalSupply(address: string): Promise<string>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=tokenMetadataService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenMetadataService.d.ts","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAIvD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAEvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCvD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWvD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenMetadataService = void 0;
|
|
4
|
+
const abis_1 = require("../abis");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
class TokenMetadataService {
|
|
7
|
+
constructor(provider) {
|
|
8
|
+
this.provider = provider;
|
|
9
|
+
}
|
|
10
|
+
async getTokenMetadata(address) {
|
|
11
|
+
const [name, symbol, decimals] = await Promise.all([
|
|
12
|
+
(0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
13
|
+
address,
|
|
14
|
+
abi: abis_1.ERC20_ABI,
|
|
15
|
+
functionName: 'name',
|
|
16
|
+
})),
|
|
17
|
+
(0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
18
|
+
address,
|
|
19
|
+
abi: abis_1.ERC20_ABI,
|
|
20
|
+
functionName: 'symbol',
|
|
21
|
+
})),
|
|
22
|
+
(0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
23
|
+
address,
|
|
24
|
+
abi: abis_1.ERC20_ABI,
|
|
25
|
+
functionName: 'decimals',
|
|
26
|
+
})),
|
|
27
|
+
]);
|
|
28
|
+
return {
|
|
29
|
+
address,
|
|
30
|
+
name: name,
|
|
31
|
+
symbol: symbol,
|
|
32
|
+
decimals: Number(decimals),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async getTotalSupply(address) {
|
|
36
|
+
const totalSupply = await (0, utils_1.retryOperation)(() => this.provider.readContract({
|
|
37
|
+
address,
|
|
38
|
+
abi: abis_1.ERC20_ABI,
|
|
39
|
+
functionName: 'totalSupply',
|
|
40
|
+
}));
|
|
41
|
+
return totalSupply.toString();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.TokenMetadataService = TokenMetadataService;
|
|
45
|
+
//# sourceMappingURL=tokenMetadataService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenMetadataService.js","sourceRoot":"","sources":["../../src/services/tokenMetadataService.ts"],"names":[],"mappings":";;;AACA,kCAAmC;AACnC,oCAAyC;AAEzC,MAAa,oBAAoB;IAC/B,YAAoB,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAEjD,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACjD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,MAAM;aACrB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,QAAQ;aACvB,CAAC,CACH;YACD,IAAA,sBAAc,EAAC,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACzB,OAAO;gBACP,GAAG,EAAE,gBAAS;gBACd,YAAY,EAAE,UAAU;aACzB,CAAC,CACH;SACF,CAAC,CAAA;QAEF,OAAO;YACL,OAAO;YACP,IAAI,EAAE,IAAc;YACpB,MAAM,EAAE,MAAgB;YACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,WAAW,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,OAAO;YACP,GAAG,EAAE,gBAAS;YACd,YAAY,EAAE,aAAa;SAC5B,CAAC,CACH,CAAA;QAED,OAAQ,WAAsB,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;CACF;AA/CD,oDA+CC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractAddresses.d.ts","sourceRoot":"","sources":["../../src/types/contractAddresses.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractAddresses.js","sourceRoot":"","sources":["../../src/types/contractAddresses.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IERC20Token } from './token';
|
|
2
|
+
export interface getExchangesResponse {
|
|
3
|
+
providerAddr: string;
|
|
4
|
+
id: string;
|
|
5
|
+
assets: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface Exchange {
|
|
8
|
+
providerAddr: string;
|
|
9
|
+
id: string;
|
|
10
|
+
assets: IERC20Token[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=exchange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../src/types/exchange.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
|
|
@@ -15,4 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./contractAddresses"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./provider"), exports);
|
|
19
|
+
__exportStar(require("./token"), exports);
|
|
20
|
+
__exportStar(require("./exchange"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,6CAA0B;AAC1B,0CAAuB;AACvB,6CAA0B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ContractCallOptions {
|
|
2
|
+
address: string;
|
|
3
|
+
abi: string[] | unknown[];
|
|
4
|
+
functionName: string;
|
|
5
|
+
args?: unknown[];
|
|
6
|
+
}
|
|
7
|
+
export interface ProviderAdapter {
|
|
8
|
+
readContract(options: ContractCallOptions): Promise<unknown>;
|
|
9
|
+
getChainId(): Promise<number>;
|
|
10
|
+
isAddress(address: string): Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC/B,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/types/provider.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface IERC20Token {
|
|
2
|
+
name: string;
|
|
3
|
+
symbol: string;
|
|
4
|
+
address: string;
|
|
5
|
+
decimals: number;
|
|
6
|
+
}
|
|
7
|
+
export interface StableToken extends IERC20Token {
|
|
8
|
+
totalSupply: string;
|
|
9
|
+
fiatTicker: string;
|
|
10
|
+
}
|
|
11
|
+
export type CollateralAsset = IERC20Token;
|
|
12
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/types/token.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
|
|
@@ -14,4 +14,5 @@ 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("./
|
|
17
|
+
__exportStar(require("./retry"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface RetryOptions {
|
|
2
|
+
maxAttempts?: number;
|
|
3
|
+
initialDelayMs?: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Retry an operation a number of times with exponential backoff.
|
|
7
|
+
* @param operation - The operation to retry
|
|
8
|
+
* @param options - The retry options
|
|
9
|
+
* @returns The result of the operation
|
|
10
|
+
*/
|
|
11
|
+
export declare function retryOperation<T>(operation: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
12
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAoBZ"}
|