@paraswap/dex-lib 2.35.2-opbnb-integration.2 → 2.35.3-base-support.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 (86) hide show
  1. package/build/config.js +26 -0
  2. package/build/config.js.map +1 -1
  3. package/build/constants.d.ts +2 -2
  4. package/build/constants.js +1 -1
  5. package/build/constants.js.map +1 -1
  6. package/build/dex/algebra/algebra.js +3 -1
  7. package/build/dex/algebra/algebra.js.map +1 -1
  8. package/build/dex/algebra/config.js +1 -0
  9. package/build/dex/algebra/config.js.map +1 -1
  10. package/build/dex/algebra/types.d.ts +1 -0
  11. package/build/dex/pancakeswap-v3/types.d.ts +137 -0
  12. package/build/dex/pancakeswap-v3/types.js +9 -0
  13. package/build/dex/pancakeswap-v3/types.js.map +1 -0
  14. package/build/dex/uniswap-v2/config.js +0 -18
  15. package/build/dex/uniswap-v2/config.js.map +1 -1
  16. package/build/dex/uniswap-v3/config.js +16 -0
  17. package/build/dex/uniswap-v3/config.js.map +1 -1
  18. package/build/dex/weth/config.js +3 -6
  19. package/build/dex/weth/config.js.map +1 -1
  20. package/build/web3-provider.d.ts +3 -0
  21. package/build/web3-provider.js +13 -0
  22. package/build/web3-provider.js.map +1 -0
  23. package/package.json +1 -1
  24. package/src/config.ts +27 -1
  25. package/src/constants.ts +1 -1
  26. package/src/dex/algebra/algebra.ts +5 -2
  27. package/src/dex/algebra/config.ts +1 -0
  28. package/src/dex/algebra/types.ts +1 -0
  29. package/src/dex/uniswap-v2/config.ts +0 -20
  30. package/src/dex/uniswap-v3/config.ts +17 -0
  31. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +95 -0
  32. package/src/dex/weth/config.ts +3 -6
  33. package/tests/constants-e2e.ts +10 -17
  34. package/build/abi/quickPerps/fast-price-events.json +0 -70
  35. package/build/abi/quickPerps/fast-price-feed.json +0 -748
  36. package/build/abi/quickPerps/reader.json +0 -313
  37. package/build/abi/quickPerps/vault-price-feed.json +0 -477
  38. package/build/abi/quickPerps/vault.json +0 -1953
  39. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  40. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  41. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  42. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  43. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  44. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  45. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  46. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  47. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  48. package/build/dex/quickswap/camelot-v3.js +0 -19
  49. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  50. package/build/dex/quickswap-v3.d.ts +0 -21
  51. package/build/dex/quickswap-v3.js +0 -40
  52. package/build/dex/quickswap-v3.js.map +0 -1
  53. package/build/dex/test-dex/config.d.ts +0 -4
  54. package/build/dex/test-dex/config.js +0 -15
  55. package/build/dex/test-dex/config.js.map +0 -1
  56. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  57. package/build/dex/test-dex/test-dex-pool.js +0 -63
  58. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  59. package/build/dex/test-dex/test-dex.d.ts +0 -37
  60. package/build/dex/test-dex/test-dex.js +0 -126
  61. package/build/dex/test-dex/test-dex.js.map +0 -1
  62. package/build/dex/test-dex/types.d.ts +0 -6
  63. package/build/dex/test-dex/types.js +0 -3
  64. package/build/dex/test-dex/types.js.map +0 -1
  65. package/build/dex/woo-fi/config.d.ts +0 -4
  66. package/build/dex/woo-fi/config.js +0 -141
  67. package/build/dex/woo-fi/config.js.map +0 -1
  68. package/build/dex/woo-fi/constants.d.ts +0 -5
  69. package/build/dex/woo-fi/constants.js +0 -20
  70. package/build/dex/woo-fi/constants.js.map +0 -1
  71. package/build/dex/woo-fi/types.d.ts +0 -48
  72. package/build/dex/woo-fi/types.js +0 -3
  73. package/build/dex/woo-fi/types.js.map +0 -1
  74. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  75. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  76. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  77. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  78. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  79. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  80. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  81. package/build/dex/woo-fi/woo-fi.js +0 -480
  82. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  83. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  84. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  85. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  86. package/src/dex/uniswap-v2/uniswap-v2-e2e-opbnb.test.ts +0 -162
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRpcProvider = void 0;
4
+ const providers_1 = require("@ethersproject/providers");
5
+ const config_1 = require("./config");
6
+ function getRpcProvider(network, url) {
7
+ return new providers_1.StaticJsonRpcProvider({
8
+ url: url ?? (0, config_1.generateConfig)(network).privateHttpProvider,
9
+ allowGzip: true,
10
+ }, network);
11
+ }
12
+ exports.getRpcProvider = getRpcProvider;
13
+ //# sourceMappingURL=web3-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web3-provider.js","sourceRoot":"","sources":["../src/web3-provider.ts"],"names":[],"mappings":";;;AACA,wDAAiE;AACjE,qCAA0C;AAG1C,SAAgB,cAAc,CAAC,OAAgB,EAAE,GAAY;IAC3D,OAAO,IAAI,iCAAqB,CAC9B;QACE,GAAG,EAAE,GAAG,IAAI,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC,mBAAmB;QACvD,SAAS,EAAE,IAAI;KAChB,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AARD,wCAQC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.35.2-opbnb-integration.2",
3
+ "version": "2.35.3-base-support.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
package/src/config.ts CHANGED
@@ -317,7 +317,6 @@ const baseConfigs: { [network: number]: BaseConfig } = {
317
317
  rpcPollingBlocksBackToTriggerUpdate: 3,
318
318
  forceRpcFallbackDexs: [],
319
319
  },
320
-
321
320
  [Network.ZKEVM]: {
322
321
  network: Network.ZKEVM,
323
322
  networkName: 'Polygon zkEVM',
@@ -347,6 +346,33 @@ const baseConfigs: { [network: number]: BaseConfig } = {
347
346
  // FIXME: Not set properly
348
347
  uniswapV2ExchangeRouterAddress: '',
349
348
  },
349
+ [Network.BASE]: {
350
+ network: Network.BASE,
351
+ networkName: 'Base',
352
+ isTestnet: false,
353
+ nativeTokenName: 'Ether',
354
+ nativeTokenSymbol: 'ETH',
355
+ wrappedNativeTokenAddress: '0x4200000000000000000000000000000000000006',
356
+ hasEIP1559: false,
357
+ augustusAddress: '0x793a0Bb089c6787e84277f08179DAC594eDb9443',
358
+ augustusRFQAddress: '0xa003dFBA51C9e1e56C67ae445b852bdEd7aC5EEd',
359
+ tokenTransferProxyAddress: '0xCADa28FC80ceB3baF3BEa4C2d7a819e69435907E',
360
+ multicallV2Address: '0xeDF6D2a16e8081F777eB623EeB4411466556aF3d',
361
+ privateHttpProvider: process.env.HTTP_PROVIDER_8453,
362
+ hashFlowAuthToken: process.env.API_KEY_HASHFLOW_AUTH_TOKEN || '',
363
+ hashFlowDisabledMMs: [],
364
+ adapterAddresses: {
365
+ BaseAdapter01: '0x9F77bb28e97F093Aa6CbE37cE095C18605d98Af2',
366
+ BaseBuyAdapter: '0x8DE036910e34b0d8447Dd0D34C742636de1DDfEb',
367
+ },
368
+ uniswapV2ExchangeRouterAddress:
369
+ '0x75d199EfB540e47D27D52c62Da3E7daC2B9e834F',
370
+ uniswapV3EventLoggingSampleRate: 0,
371
+ rfqConfigs: {},
372
+ rpcPollingMaxAllowedStateDelayInBlocks: 5,
373
+ rpcPollingBlocksBackToTriggerUpdate: 3,
374
+ forceRpcFallbackDexs: [],
375
+ },
350
376
  };
351
377
 
352
378
  // Should not be used, except by internal test code
package/src/constants.ts CHANGED
@@ -33,12 +33,12 @@ export enum Network {
33
33
  RINKEBY = 4,
34
34
  BSC = 56,
35
35
  POLYGON = 137,
36
- OPBNB = 204,
37
36
  ZKEVM = 1101,
38
37
  AVALANCHE = 43114,
39
38
  FANTOM = 250,
40
39
  ARBITRUM = 42161,
41
40
  OPTIMISM = 10,
41
+ BASE = 8453,
42
42
  }
43
43
  export const SUBGRAPH_TIMEOUT = 20 * 1000;
44
44
 
@@ -126,10 +126,13 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
126
126
  }
127
127
 
128
128
  async initializePricing(blockNumber: number) {
129
+ const cleanNonExistingPoolTTLMs =
130
+ this.config.cleanExistingPoolTTLMs ||
131
+ ALGEBRA_CLEAN_NOT_EXISTING_POOL_TTL_MS;
132
+
129
133
  if (!this.dexHelper.config.isSlave) {
130
134
  const cleanExpiredNotExistingPoolsKeys = async () => {
131
- const maxTimestamp =
132
- Date.now() - ALGEBRA_CLEAN_NOT_EXISTING_POOL_TTL_MS;
135
+ const maxTimestamp = Date.now() - cleanNonExistingPoolTTLMs;
133
136
  await this.dexHelper.cache.zremrangebyscore(
134
137
  this.notExistingPoolSetKey,
135
138
  0,
@@ -83,6 +83,7 @@ export const AlgebraConfig: DexConfigMap<DexParams> = {
83
83
  uniswapMulticall: '0x1F98415757620B543A52E61c46B32eB19261F984',
84
84
  deployer: '0x6dd3fb9653b10e806650f107c3b5a0a6ff974f65',
85
85
  version: 'v1.9',
86
+ cleanExistingPoolTTLMs: 20 * 60 * 1000,
86
87
  },
87
88
  },
88
89
  };
@@ -73,6 +73,7 @@ export type DexParams = {
73
73
  version: 'v1.1' | 'v1.9';
74
74
  forceRPC?: boolean;
75
75
  forceManualStateGenerate?: boolean;
76
+ cleanExistingPoolTTLMs?: number;
76
77
  };
77
78
 
78
79
  export type IAlgebraPoolState = PoolStateV1_1 | PoolState_v1_9;
@@ -117,10 +117,6 @@ export const Adapters: {
117
117
  },
118
118
  ],
119
119
  },
120
- [Network.OPBNB]: {
121
- [SwapSide.SELL]: [{ name: 'OpBnbAdapter01', index: 2 }],
122
- [SwapSide.BUY]: [{ name: 'OpBnbBuyAdapter', index: 1 }],
123
- },
124
120
  };
125
121
 
126
122
  export const UniswapV2Config: DexConfigMap<DexParams> = {
@@ -700,20 +696,4 @@ export const UniswapV2Config: DexConfigMap<DexParams> = {
700
696
  feeCode: 30,
701
697
  },
702
698
  },
703
- BinarySwap: {
704
- [Network.OPBNB]: {
705
- factoryAddress: '0xd50aaE6C73E2486B0Da718D23F35Dcf5aad25911',
706
- initCode:
707
- '0x5ef9d9226744e2d0335d11ea48193e4ccd224fb01d8557c9db762f93cfe52881',
708
- feeCode: 30,
709
- },
710
- },
711
- LuigiSwap: {
712
- [Network.OPBNB]: {
713
- factoryAddress: '0x0dAe6d22182c20AB9150a4DCB3160591Dc41027a',
714
- initCode:
715
- '0xbff47a1925fa689deb4b6dfefbb1970779754f4fde5ba903fc5d0db1160c1901',
716
- feeCode: 30,
717
- },
718
- },
719
699
  };
@@ -106,6 +106,19 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
106
106
  subgraphURL:
107
107
  'https://api.thegraph.com/subgraphs/name/lynnshaoyu/uniswap-v3-avax',
108
108
  },
109
+ [Network.BASE]: {
110
+ factory: '0x33128a8fC17869897dcE68Ed026d694621f6FDfD',
111
+ quoter: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
112
+ router: '0xaeE2b8d4A154e36f479dAeCe3FB3e6c3c03d396E',
113
+ supportedFees: SUPPORTED_FEES,
114
+ stateMulticall: '0x7160f736c52e1e78e92FD4eE4D73e21A7Cf4F950',
115
+ uniswapMulticall: '0x091e99cb1C49331a94dD62755D168E941AbD0693',
116
+ chunksCount: 10,
117
+ initRetryFrequency: 10,
118
+ initHash: `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`,
119
+ subgraphURL:
120
+ 'https://api.thegraph.com/subgraphs/name/lynnshaoyu/uniswap-v3-base',
121
+ },
109
122
  },
110
123
  SushiSwapV3: {
111
124
  [Network.MAINNET]: {
@@ -283,4 +296,8 @@ export const Adapters: Record<number, AdapterMappings> = {
283
296
  [SwapSide.SELL]: [{ name: 'AvalancheAdapter02', index: 5 }],
284
297
  [SwapSide.BUY]: [{ name: 'AvalancheBuyAdapter', index: 6 }],
285
298
  },
299
+ [Network.BASE]: {
300
+ [SwapSide.SELL]: [{ name: 'BaseAdapter01', index: 1 }],
301
+ [SwapSide.BUY]: [{ name: 'BaseBuyAdapter', index: 1 }],
302
+ },
286
303
  };
@@ -403,6 +403,101 @@ describe('UniswapV3 E2E', () => {
403
403
  );
404
404
  });
405
405
 
406
+ describe('UniswapV3 Base', () => {
407
+ const network = Network.BASE;
408
+ const tokens = Tokens[network];
409
+ const holders = Holders[network];
410
+ const provider = new StaticJsonRpcProvider(
411
+ generateConfig(network).privateHttpProvider,
412
+ network,
413
+ );
414
+
415
+ const tokenASymbol: string = 'PRIME';
416
+ const tokenBSymbol: string = 'WETH';
417
+ const nativeTokenSymbol = NativeTokenSymbols[network];
418
+
419
+ const tokenAAmount: string = '1000000000000000000';
420
+ const tokenBAmount: string = '1000000000000000000';
421
+ const nativeTokenAmount = '1000000000000000000';
422
+
423
+ const sideToContractMethods = new Map([
424
+ [
425
+ SwapSide.SELL,
426
+ [
427
+ // ContractMethod.simpleSwap,
428
+ ContractMethod.multiSwap,
429
+ // ContractMethod.megaSwap,
430
+ ],
431
+ ],
432
+ [
433
+ SwapSide.BUY,
434
+ [
435
+ // ContractMethod.simpleBuy,
436
+ // ContractMethod.buy
437
+ ],
438
+ ],
439
+ ]);
440
+
441
+ sideToContractMethods.forEach((contractMethods, side) =>
442
+ contractMethods.forEach((contractMethod: ContractMethod) => {
443
+ describe(`${contractMethod}`, () => {
444
+ it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
445
+ await testE2E(
446
+ tokens[nativeTokenSymbol],
447
+ tokens[tokenASymbol],
448
+ holders[nativeTokenSymbol],
449
+ side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
450
+ side,
451
+ dexKey,
452
+ contractMethod,
453
+ network,
454
+ provider,
455
+ );
456
+ });
457
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
458
+ await testE2E(
459
+ tokens[tokenASymbol],
460
+ tokens[nativeTokenSymbol],
461
+ holders[tokenASymbol],
462
+ side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
463
+ side,
464
+ dexKey,
465
+ contractMethod,
466
+ network,
467
+ provider,
468
+ );
469
+ });
470
+ it(`${network} ${side} ${contractMethod} ${tokenBSymbol} -> ${tokenASymbol}`, async () => {
471
+ await testE2E(
472
+ tokens[tokenBSymbol],
473
+ tokens[tokenASymbol],
474
+ holders[tokenASymbol],
475
+ side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
476
+ side,
477
+ dexKey,
478
+ contractMethod,
479
+ network,
480
+ provider,
481
+ );
482
+ });
483
+ it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
484
+ await testE2E(
485
+ tokens[tokenASymbol],
486
+ tokens[tokenBSymbol],
487
+ holders[tokenASymbol],
488
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
489
+ side,
490
+ dexKey,
491
+ contractMethod,
492
+ network,
493
+ provider,
494
+ );
495
+ });
496
+ });
497
+ }),
498
+ );
499
+ });
500
+
406
501
  describe('UniswapV3 Avalanche', () => {
407
502
  const network = Network.AVALANCHE;
408
503
  const tokens = Tokens[network];
@@ -25,14 +25,14 @@ export const WethConfig: DexConfigMap<DexParams> = {
25
25
  [Network.ZKEVM]: {
26
26
  poolGasCost: WethGasCost,
27
27
  },
28
+ [Network.BASE]: {
29
+ poolGasCost: WethGasCost,
30
+ },
28
31
  },
29
32
  Wbnb: {
30
33
  [Network.BSC]: {
31
34
  poolGasCost: WethGasCost,
32
35
  },
33
- [Network.OPBNB]: {
34
- poolGasCost: WethGasCost,
35
- },
36
36
  },
37
37
  Wmatic: {
38
38
  [Network.POLYGON]: {
@@ -73,7 +73,4 @@ export const Adapters: {
73
73
  [Network.OPTIMISM]: {
74
74
  [SwapSide.SELL]: [{ name: 'OptimismAdapter01', index: 1 }],
75
75
  },
76
- [Network.OPBNB]: {
77
- [SwapSide.SELL]: [{ name: 'OpBnbAdapter01', index: 1 }],
78
- },
79
76
  };
@@ -883,23 +883,16 @@ export const Tokens: {
883
883
  decimals: 6,
884
884
  },
885
885
  },
886
- [Network.OPBNB]: {
887
- BNB: {
888
- address: ETHER_ADDRESS,
886
+ [Network.BASE]: {
887
+ PRIME: {
888
+ address: '0xfA980cEd6895AC314E7dE34Ef1bFAE90a5AdD21b',
889
889
  decimals: 18,
890
890
  },
891
- WBNB: {
891
+ WETH: {
892
892
  address: '0x4200000000000000000000000000000000000006',
893
893
  decimals: 18,
894
894
  },
895
- '0101': {
896
- address: '0xa41B3067eC694DBec668c389550bA8fc589e5797',
897
- decimals: 18,
898
- },
899
- LUIGI: {
900
- address: '0x196AD5A70279Fc112db4F8Baf6f5022c9B1cF0a5',
901
- decimals: 18,
902
- },
895
+ ETH: { address: ETHER_ADDRESS, decimals: 18 },
903
896
  },
904
897
  };
905
898
 
@@ -1120,11 +1113,10 @@ export const Holders: {
1120
1113
  WBTC: '0x99b31498b0a1dae01fc3433e3cb60f095340935c',
1121
1114
  USDC: '0x99b31498b0a1dae01fc3433e3cb60f095340935c',
1122
1115
  },
1123
- [Network.OPBNB]: {
1124
- BNB: '0xb12e5f8f44b167f609e189d5ed66970328efdd22',
1125
- WBNB: '0x506B8322E1159d06E493EBe7ffA41a24291e7Ae3',
1126
- '0101': '0x39a786421889EB581bd105508a0D2Dc03523B903',
1127
- LUIGI: '0x245736d44f7A77c8DB80625Ea498d85eF8AE629d',
1116
+ [Network.BASE]: {
1117
+ WETH: '0x4bb6b2efe7036020ba6f02a05602546c9f25bf28',
1118
+ PRIME: '0x956bcc6b56c99db382d9d97a30ba5f1402144b3e',
1119
+ ETH: '0xdd9176ea3e7559d6b68b537ef555d3e89403f742',
1128
1120
  },
1129
1121
  };
1130
1122
 
@@ -1150,4 +1142,5 @@ export const NativeTokenSymbols: { [network: number]: string } = {
1150
1142
  [Network.FANTOM]: 'FTM',
1151
1143
  [Network.ARBITRUM]: 'ETH',
1152
1144
  [Network.OPTIMISM]: 'ETH',
1145
+ [Network.BASE]: 'ETH',
1153
1146
  };
@@ -1,70 +0,0 @@
1
- [
2
- {
3
- "anonymous": false,
4
- "inputs": [
5
- {
6
- "indexed": false,
7
- "internalType": "address",
8
- "name": "token",
9
- "type": "address"
10
- },
11
- {
12
- "indexed": false,
13
- "internalType": "uint256",
14
- "name": "price",
15
- "type": "uint256"
16
- },
17
- {
18
- "indexed": false,
19
- "internalType": "address",
20
- "name": "priceFeed",
21
- "type": "address"
22
- }
23
- ],
24
- "name": "PriceUpdate",
25
- "type": "event"
26
- },
27
- {
28
- "inputs": [
29
- { "internalType": "address", "name": "_token", "type": "address" },
30
- { "internalType": "uint256", "name": "_price", "type": "uint256" }
31
- ],
32
- "name": "emitPriceEvent",
33
- "outputs": [],
34
- "stateMutability": "nonpayable",
35
- "type": "function"
36
- },
37
- {
38
- "inputs": [],
39
- "name": "gov",
40
- "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
41
- "stateMutability": "view",
42
- "type": "function"
43
- },
44
- {
45
- "inputs": [{ "internalType": "address", "name": "", "type": "address" }],
46
- "name": "isPriceFeed",
47
- "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
48
- "stateMutability": "view",
49
- "type": "function"
50
- },
51
- {
52
- "inputs": [
53
- { "internalType": "address", "name": "_gov", "type": "address" }
54
- ],
55
- "name": "setGov",
56
- "outputs": [],
57
- "stateMutability": "nonpayable",
58
- "type": "function"
59
- },
60
- {
61
- "inputs": [
62
- { "internalType": "address", "name": "_priceFeed", "type": "address" },
63
- { "internalType": "bool", "name": "_isPriceFeed", "type": "bool" }
64
- ],
65
- "name": "setIsPriceFeed",
66
- "outputs": [],
67
- "stateMutability": "nonpayable",
68
- "type": "function"
69
- }
70
- ]