curvance 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +17 -0
  2. package/dist/abis/BaseCToken.json +1550 -0
  3. package/dist/abis/BorrowableCToken.json +2188 -0
  4. package/dist/abis/IDynamicIRM.json +158 -0
  5. package/dist/abis/MarketManagerIsolated.json +1587 -0
  6. package/dist/abis/ProtocolReader.json +767 -0
  7. package/dist/classes/CToken.d.ts +170 -0
  8. package/dist/classes/CToken.d.ts.map +1 -0
  9. package/dist/classes/CToken.js +292 -0
  10. package/dist/classes/CToken.js.map +1 -0
  11. package/dist/classes/CVE.d.ts +7 -0
  12. package/dist/classes/CVE.d.ts.map +1 -0
  13. package/dist/classes/CVE.js +7 -0
  14. package/dist/classes/CVE.js.map +1 -0
  15. package/dist/classes/ERC20.d.ts +35 -0
  16. package/dist/classes/ERC20.d.ts.map +1 -0
  17. package/dist/classes/ERC20.js +68 -0
  18. package/dist/classes/ERC20.js.map +1 -0
  19. package/dist/classes/Faucet.d.ts +25 -0
  20. package/dist/classes/Faucet.d.ts.map +1 -0
  21. package/dist/classes/Faucet.js +48 -0
  22. package/dist/classes/Faucet.js.map +1 -0
  23. package/dist/classes/Market.d.ts +68 -0
  24. package/dist/classes/Market.d.ts.map +1 -0
  25. package/dist/classes/Market.js +136 -0
  26. package/dist/classes/Market.js.map +1 -0
  27. package/dist/classes/OracleManager.d.ts +13 -0
  28. package/dist/classes/OracleManager.d.ts.map +1 -0
  29. package/dist/classes/OracleManager.js +34 -0
  30. package/dist/classes/OracleManager.js.map +1 -0
  31. package/dist/classes/ProtocolReader.d.ts +116 -0
  32. package/dist/classes/ProtocolReader.d.ts.map +1 -0
  33. package/dist/classes/ProtocolReader.js +136 -0
  34. package/dist/classes/ProtocolReader.js.map +1 -0
  35. package/dist/helpers.d.ts +20 -0
  36. package/dist/helpers.d.ts.map +1 -0
  37. package/dist/helpers.js +45 -0
  38. package/dist/helpers.js.map +1 -0
  39. package/dist/setup.d.ts +11 -0
  40. package/dist/setup.d.ts.map +1 -0
  41. package/dist/setup.js +28 -0
  42. package/dist/setup.js.map +1 -0
  43. package/dist/types.d.ts +10 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +3 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +31 -0
@@ -0,0 +1,20 @@
1
+ import { JsonRpcSigner, Wallet } from "ethers";
2
+ import { BorrowableCToken, CToken } from "./classes/CToken";
3
+ import { Contract } from "ethers";
4
+ import { Decimal } from "decimal.js";
5
+ import { address } from "./types";
6
+ export declare const WAD: bigint;
7
+ export declare const WAD_DECIMAL: Decimal;
8
+ export declare enum AdaptorTypes {
9
+ CHAINLINK = 1,
10
+ REDSTONE_CORE = 2,
11
+ REDSTONE_CLASSIC = 3,
12
+ MOCK = 1337
13
+ }
14
+ export declare function toDecimal(amount: bigint, decimals?: bigint): bigint;
15
+ export declare function toInteger(amount: bigint, decimals?: bigint): bigint;
16
+ export declare function contractSetup<I>(signer: JsonRpcSigner | Wallet, contractAddress: address, abi: any): Contract & I;
17
+ export declare function handleTransactionWithOracles<T>(exec_func: Function, token: CToken | BorrowableCToken, adaptor: AdaptorTypes): Promise<T>;
18
+ export declare const AVAILABLE_CHAINS: string[];
19
+ export type ChainRpcPrefix = typeof AVAILABLE_CHAINS[number];
20
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,eAAO,MAAM,GAAG,QAAqB,CAAC;AACtC,eAAO,MAAM,WAAW,SAAmB,CAAC;AAE5C,oBAAY,YAAY;IACpB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,gBAAgB,IAAI;IACpB,IAAI,OAAO;CACd;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ,GAAG,CAAC,CAMjH;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxI;AAED,eAAO,MAAM,gBAAgB,UAK5B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AVAILABLE_CHAINS = exports.AdaptorTypes = exports.WAD_DECIMAL = exports.WAD = void 0;
4
+ exports.toDecimal = toDecimal;
5
+ exports.toInteger = toInteger;
6
+ exports.contractSetup = contractSetup;
7
+ exports.handleTransactionWithOracles = handleTransactionWithOracles;
8
+ const ethers_1 = require("ethers");
9
+ const decimal_js_1 = require("decimal.js");
10
+ exports.WAD = BigInt(10n ** 18n);
11
+ exports.WAD_DECIMAL = new decimal_js_1.Decimal(exports.WAD);
12
+ var AdaptorTypes;
13
+ (function (AdaptorTypes) {
14
+ AdaptorTypes[AdaptorTypes["CHAINLINK"] = 1] = "CHAINLINK";
15
+ AdaptorTypes[AdaptorTypes["REDSTONE_CORE"] = 2] = "REDSTONE_CORE";
16
+ AdaptorTypes[AdaptorTypes["REDSTONE_CLASSIC"] = 3] = "REDSTONE_CLASSIC";
17
+ AdaptorTypes[AdaptorTypes["MOCK"] = 1337] = "MOCK";
18
+ })(AdaptorTypes || (exports.AdaptorTypes = AdaptorTypes = {}));
19
+ function toDecimal(amount, decimals = 18n) {
20
+ return amount / BigInt(10n ** BigInt(decimals));
21
+ }
22
+ function toInteger(amount, decimals = 18n) {
23
+ return amount * BigInt(10n ** BigInt(decimals));
24
+ }
25
+ function contractSetup(signer, contractAddress, abi) {
26
+ const contract = new ethers_1.Contract(contractAddress, abi, signer);
27
+ if (contract == undefined || contract == null) {
28
+ throw new Error(`Failed to load contract at address ${contractAddress}.`);
29
+ }
30
+ return contract;
31
+ }
32
+ function handleTransactionWithOracles(exec_func, token, adaptor) {
33
+ if (adaptor == AdaptorTypes.REDSTONE_CORE) {
34
+ // TODO:
35
+ // Handle Redstone Core specific logic
36
+ }
37
+ return exec_func();
38
+ }
39
+ exports.AVAILABLE_CHAINS = [
40
+ 'eth-sepolia',
41
+ 'arb-sepolia',
42
+ 'monad-testnet',
43
+ 'berachain-bepolia'
44
+ ];
45
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAgBA,8BAEC;AAED,8BAEC;AAED,sCAMC;AAED,oEAOC;AArCD,mCAAkC;AAClC,2CAAqC;AAGxB,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AACzB,QAAA,WAAW,GAAG,IAAI,oBAAO,CAAC,WAAG,CAAC,CAAC;AAE5C,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,yDAAa,CAAA;IACb,iEAAiB,CAAA;IACjB,uEAAoB,CAAA;IACpB,kDAAW,CAAA;AACf,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAED,SAAgB,SAAS,CAAC,MAAc,EAAE,QAAQ,GAAG,GAAG;IACpD,OAAO,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,SAAS,CAAC,MAAc,EAAE,QAAQ,GAAG,GAAG;IACpD,OAAO,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,aAAa,CAAI,MAA8B,EAAE,eAAwB,EAAE,GAAQ;IAC/F,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5D,IAAG,QAAQ,IAAI,SAAS,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,sCAAsC,eAAe,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,QAAwB,CAAC;AACpC,CAAC;AAED,SAAgB,4BAA4B,CAAI,SAAmB,EAAE,KAAgC,EAAE,OAAqB;IACxH,IAAG,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QACvC,QAAQ;QACR,sCAAsC;IAC1C,CAAC;IAED,OAAO,SAAS,EAAgB,CAAC;AACrC,CAAC;AAEY,QAAA,gBAAgB,GAAG;IAC5B,aAAa;IACb,aAAa;IACb,eAAe;IACf,mBAAmB;CACtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { JsonRpcSigner, Wallet } from "ethers";
2
+ import { ChainRpcPrefix } from "./helpers";
3
+ import { Market } from "./classes/Market";
4
+ import { ProtocolReader } from "./classes/ProtocolReader";
5
+ import { Faucet } from "./classes/Faucet";
6
+ export default function SetupChain(chain: ChainRpcPrefix, signer: JsonRpcSigner | Wallet): Promise<{
7
+ markets: Market[];
8
+ faucet: Faucet;
9
+ reader: ProtocolReader;
10
+ }>;
11
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,wBAA8B,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM;;;;GAgB7F"}
package/dist/setup.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = SetupChain;
7
+ const Market_1 = require("./classes/Market");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const ProtocolReader_1 = require("./classes/ProtocolReader");
10
+ const Faucet_1 = require("./classes/Faucet");
11
+ const OracleManager_1 = require("./classes/OracleManager");
12
+ const path_1 = __importDefault(require("path"));
13
+ async function SetupChain(chain, signer) {
14
+ const file_path = path_1.default.join(__dirname, 'chains', `${chain}.json`);
15
+ if (!fs_1.default.existsSync(file_path)) {
16
+ throw new Error(`No configuration found for chain ${chain}`);
17
+ }
18
+ const chain_addresses = JSON.parse(fs_1.default.readFileSync(file_path, 'utf-8'));
19
+ const reader = new ProtocolReader_1.ProtocolReader(signer, chain_addresses.ProtocolReader);
20
+ const faucet = new Faucet_1.Faucet(signer, chain_addresses.Faucet);
21
+ const oracle_manager = new OracleManager_1.OracleManager(signer, chain_addresses.OracleManager);
22
+ return {
23
+ markets: await Market_1.Market.getAll(signer, reader, oracle_manager),
24
+ faucet,
25
+ reader,
26
+ };
27
+ }
28
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";;;;;AAUA,6BAgBC;AAxBD,6CAA0C;AAC1C,4CAAoB;AAEpB,6DAA0D;AAC1D,6CAA0C;AAC1C,2DAAwD;AACxD,gDAAwB;AAET,KAAK,UAAU,UAAU,CAAC,KAAqB,EAAE,MAA8B;IAC1F,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,eAAe,CAAC,cAAyB,CAAC,CAAA;IACpF,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,EAAE,eAAe,CAAC,MAAiB,CAAC,CAAC;IACrE,MAAM,cAAc,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,eAAe,CAAC,aAAwB,CAAC,CAAC;IAE3F,OAAO;QACH,OAAO,EAAE,MAAM,eAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC;QAC5D,MAAM;QACN,MAAM;KACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { JsonRpcSigner, Wallet } from "ethers";
2
+ export type address = `0x${string}`;
3
+ export type bytes = `0x${string}`;
4
+ export type uint = bigint | number;
5
+ export type uint240 = uint;
6
+ export type uint8 = uint;
7
+ export type uint256 = uint;
8
+ export type uint128 = uint;
9
+ export type curvance_signer = JsonRpcSigner | Wallet;
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC;AACpC,MAAM,MAAM,KAAK,GAAG,KAAK,MAAM,EAAE,CAAC;AAClC,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;AAClC,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AAC3B,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC;AACzB,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AAC3B,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AAC3B,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,MAAM,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "curvance",
3
+ "version": "1.0.0",
4
+ "main": "dist/setup.js",
5
+ "types": "dist/types.d.ts",
6
+ "files": ["dist", "README.md"],
7
+ "repository": { "type": "git", "url": "https://github.com/curvance-web/contract-sdk.git" },
8
+ "author": "Austinhs",
9
+ "description": "A SDK to explore the curvance protocol efficently & easily.",
10
+ "license": "MIT",
11
+ "directories": {
12
+ "test": "tests"
13
+ },
14
+ "scripts": {
15
+ "fetch": "ts-node fetch-deployment.ts",
16
+ "build": "tsc",
17
+ "test": "node --test --require ts-node/register tests/*.test.ts",
18
+ "test:ctoken": "ts-node tests/CToken.test.ts",
19
+ "test:faucet": "ts-node tests/Faucet.test.ts",
20
+ "test:market": "ts-node tests/Market.test.ts",
21
+ "test:oracle": "ts-node tests/OracleManager.test.ts"
22
+ },
23
+ "dependencies": {
24
+ "@types/node": "^24.3.0",
25
+ "decimal.js": "^10.6.0",
26
+ "dotenv": "^17.2.1",
27
+ "ethers": "^6.15.0",
28
+ "ts-node": "^10.9.2",
29
+ "typescript": "^5.9.2"
30
+ }
31
+ }