@dhedge/v2-sdk 1.5.3 → 1.7.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 (44) hide show
  1. package/dist/config.d.ts +2 -1
  2. package/dist/entities/pool.d.ts +44 -2
  3. package/dist/entities/utils.d.ts +7 -2
  4. package/dist/services/lyra/markets.d.ts +6 -0
  5. package/dist/services/lyra/positions.d.ts +2 -0
  6. package/dist/services/lyra/quote.d.ts +4 -0
  7. package/dist/services/lyra/trade.d.ts +4 -0
  8. package/dist/services/lyra/tradeOptionType.d.ts +3 -0
  9. package/dist/services/velodrome/liquidity.d.ts +4 -0
  10. package/dist/services/velodrome/staking.d.ts +4 -0
  11. package/dist/test/constants.d.ts +3 -0
  12. package/dist/types.d.ts +21 -1
  13. package/dist/v2-sdk.cjs.development.js +6701 -291
  14. package/dist/v2-sdk.cjs.development.js.map +1 -1
  15. package/dist/v2-sdk.cjs.production.min.js +1 -1
  16. package/dist/v2-sdk.cjs.production.min.js.map +1 -1
  17. package/dist/v2-sdk.esm.js +6699 -290
  18. package/dist/v2-sdk.esm.js.map +1 -1
  19. package/package.json +6 -2
  20. package/src/abi/IOptionMArketWrapper.json +1038 -0
  21. package/src/abi/IOptionMarket.json +1473 -0
  22. package/src/abi/IOptionToken.json +1671 -0
  23. package/src/abi/IVeldodromeRouter.json +438 -0
  24. package/src/abi/IVelodromeGauge.json +559 -0
  25. package/src/config.ts +11 -5
  26. package/src/entities/pool.ts +167 -20
  27. package/src/entities/utils.ts +45 -2
  28. package/src/services/lyra/markets.ts +52 -0
  29. package/src/services/lyra/positions.ts +19 -0
  30. package/src/services/lyra/quote.ts +12 -0
  31. package/src/services/lyra/trade.ts +101 -0
  32. package/src/services/lyra/tradeOptionType.ts +19 -0
  33. package/src/services/velodrome/liquidity.ts +48 -0
  34. package/src/services/velodrome/staking.ts +31 -0
  35. package/src/test/constants.ts +3 -0
  36. package/src/test/lyra.test.ts +163 -0
  37. package/src/test/pool.test.ts +1 -1
  38. package/src/test/toros.test.ts +1 -1
  39. package/src/test/txOptions.ts +1 -1
  40. package/src/test/uniswap.test.ts +1 -1
  41. package/src/test/velodrome.test.ts +141 -0
  42. package/src/test/wallet.ts +8 -0
  43. package/src/types.ts +21 -1
  44. package/src/test/sushi.test.ts +0 -173
package/dist/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AddressNetworkMap, AddressDappNetworkMap } from "./types";
1
+ import { AddressNetworkMap, AddressDappNetworkMap, LyraNetworkMap } from "./types";
2
2
  import { NetworkChainIdMap } from ".";
3
3
  export declare const factoryAddress: AddressNetworkMap;
4
4
  export declare const routerAddress: AddressDappNetworkMap;
@@ -9,6 +9,7 @@ export declare const nonfungiblePositionManagerAddress: AddressNetworkMap;
9
9
  export declare const networkChainIdMap: NetworkChainIdMap;
10
10
  export declare const balancerSubgraph: AddressNetworkMap;
11
11
  export declare const multiCallAddress: AddressNetworkMap;
12
+ export declare const lyraNetworkMap: LyraNetworkMap;
12
13
  export declare const deadline: number;
13
14
  export declare const MaxUint128 = "0xffffffffffffffffffffffffffffffff";
14
15
  export declare const UNISWAPV3_QUOTER_ADDRESS = "0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6";
@@ -1,5 +1,5 @@
1
1
  import { Contract, Wallet, BigNumber } from "ethers";
2
- import { Dapp, FundComposition, AssetEnabled, Network } from "../types";
2
+ import { Dapp, FundComposition, AssetEnabled, Network, LyraOptionMarket, LyraOptionType, LyraTradeType, LyraPosition } from "../types";
3
3
  import { Utils } from "./utils";
4
4
  import { FeeAmount } from "@uniswap/v3-sdk";
5
5
  export declare class Pool {
@@ -118,12 +118,13 @@ export declare class Pool {
118
118
  stake(dapp: Dapp, asset: string, amount: BigNumber | string, options?: any): Promise<any>;
119
119
  /**
120
120
  * Stake liquidity pool tokens in gauge contract
121
+ * @param {Dapp} dapp Platform like Balancer or Velodrome
121
122
  * @param {string} gauge Gauge contract address
122
123
  * @param {BigNumber | string} amount Amount of liquidity pool tokens
123
124
  * @param {any} options Transaction options
124
125
  * @returns {Promise<any>} Transaction
125
126
  */
126
- stakeInGauge(gauge: string, amount: BigNumber | string, options?: any): Promise<any>;
127
+ stakeInGauge(dapp: Dapp, gauge: string, amount: BigNumber | string, options?: any): Promise<any>;
127
128
  /**
128
129
  * Unstake liquidity pool tokens from a yield farm
129
130
  * @param {Dapp} dapp Platform like Sushiswap or Uniswap
@@ -296,4 +297,45 @@ export declare class Pool {
296
297
  * @returns {Promise<any>} Transaction
297
298
  */
298
299
  tradeUniswapV3(assetFrom: string, assetTo: string, amountIn: BigNumber | string, feeAmount: FeeAmount, slippage?: number, options?: any): Promise<any>;
300
+ /**
301
+ * Add liquidity to Velodrome pool
302
+ * @param {string} assetA First asset
303
+ * @param {string} assetB Second asset
304
+ * @param {BigNumber | string} amountA Amount first asset
305
+ * @param {BigNumber | string} amountB Amount second asset
306
+ * @param { boolean } isStable Is stable pool
307
+ * @param {any} options Transaction options
308
+ * @returns {Promise<any>} Transaction
309
+ */
310
+ addLiquidityVelodrome(assetA: string, assetB: string, amountA: BigNumber | string, amountB: BigNumber | string, isStable: boolean, options?: any): Promise<any>;
311
+ /**
312
+ * Remove liquidity from Velodrome pool
313
+ * @param {string} assetA First asset
314
+ * @param {string} assetB Second asset
315
+ * @param {BigNumber | string} amount Amount of LP tokens
316
+ * @param { boolean } isStable Is stable pool
317
+ * @param {any} options Transaction options
318
+ * @returns {Promise<any>} Transaction
319
+ */
320
+ removeLiquidityVelodrome(assetA: string, assetB: string, amount: BigNumber | string, isStable: boolean, options?: any): Promise<any>;
321
+ /**
322
+ * Trade options on lyra
323
+ * @param {LyraOptionMarket} market Underlying market e.g. eth
324
+ * @param {number} expiry Expiry timestamp
325
+ * @param { number} strike Strike price
326
+ * @param {LyraOptionType} optionType Call or put
327
+ * @param { LyraTradeType} tradeType By or sell
328
+ * @param {BigNumber | string } optionAmount Option amount
329
+ * @param {string } assetIn Asset to invest
330
+ * @param {BigNumber | string } collateralChangeAmount Collateral amount to add when shorting options and to remove when covering shorts
331
+ * @param {boolean} isCoveredCall Selling covered call options
332
+ * @param {any} options Transaction options
333
+ * @returns {Promise<any>} Transaction
334
+ */
335
+ tradeLyraOption(market: LyraOptionMarket, expiry: number, strike: number, optionType: LyraOptionType, tradeType: LyraTradeType, optionAmount: BigNumber | string, assetIn: string, collateralChangeAmount?: BigNumber | string, isCoveredCall?: boolean, options?: any): Promise<any>;
336
+ /**
337
+ * Gets Lyra option positions
338
+ * @returns {Promise<Position>} Transaction
339
+ */
340
+ getLyraPositions(market: LyraOptionMarket): Promise<LyraPosition[]>;
299
341
  }
@@ -1,6 +1,7 @@
1
- import { ethers, Wallet } from "ethers";
2
- import { Dapp, Network, Reserves } from "../types";
1
+ import { BigNumber, ethers, Wallet } from "ethers";
2
+ import { Dapp, LyraOptionMarket, LyraOptionType, LyraTradeType, Network, Reserves } from "../types";
3
3
  import { Pool } from ".";
4
+ import { Quote, Strike } from "@lyrafinance/lyra-js";
4
5
  export declare class Utils {
5
6
  network: Network;
6
7
  signer: Wallet;
@@ -50,4 +51,8 @@ export declare class Utils {
50
51
  getBalancerSwapTx(pool: Pool, assetFrom: string, assetTo: string, amountIn: ethers.BigNumber | string, slippage: number): Promise<any>;
51
52
  getBalancerJoinPoolTx(pool: Pool, balancerPoolId: string, assets: string[], amountsIn: string[] | ethers.BigNumber[]): Promise<any>;
52
53
  getBalancerExitPoolTx(pool: Pool, balancerPoolId: string, assets: string[], singleExitAssetIndex: null | number, amount: string | ethers.BigNumber): Promise<any>;
54
+ getLyraOptionExpiries(market: LyraOptionMarket): Promise<number[]>;
55
+ getLyraOptionStrikes(market: LyraOptionMarket, expiry: number): Promise<Strike[]>;
56
+ getLyraOptionStrike(market: LyraOptionMarket, expiry: number, strike: number): Promise<Strike>;
57
+ getLyraOptionQuote(strike: Strike, type: LyraOptionType, tradeType: LyraTradeType, amount: BigNumber | string): Promise<Quote>;
53
58
  }
@@ -0,0 +1,6 @@
1
+ import { LyraOptionMarket, Network } from "../..";
2
+ import { Board, Strike } from "@lyrafinance/lyra-js";
3
+ export declare function getBoard(network: Network, market: LyraOptionMarket, expiry: number): Promise<Board>;
4
+ export declare function getExpiries(network: Network, market: LyraOptionMarket): Promise<number[]>;
5
+ export declare function getStrikes(network: Network, market: LyraOptionMarket, expiry: number): Promise<Strike[]>;
6
+ export declare function getStrike(network: Network, market: LyraOptionMarket, expiry: number, strike: number): Promise<Strike>;
@@ -0,0 +1,2 @@
1
+ import { LyraOptionMarket, LyraPosition, Pool } from "../..";
2
+ export declare function getOptionPositions(pool: Pool, market: LyraOptionMarket): Promise<LyraPosition[]>;
@@ -0,0 +1,4 @@
1
+ import { Quote, Strike } from "@lyrafinance/lyra-js";
2
+ import { ethers } from "ethers";
3
+ import { LyraOptionType, LyraTradeType } from "../../types";
4
+ export declare function getQuote(strike: Strike, type: LyraOptionType, tradeType: LyraTradeType, amount: ethers.BigNumber): Promise<Quote>;
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Pool } from "../..";
3
+ import { LyraOptionMarket, LyraOptionType, LyraTradeType } from "../../types";
4
+ export declare function getLyraOptionTxData(pool: Pool, market: LyraOptionMarket, optionType: LyraOptionType, expiry: number, strikePrice: number, tradeType: LyraTradeType, optionAmount: BigNumber | string, assetIn: string, collateralAmount: BigNumber, isCoveredCall: boolean): Promise<string>;
@@ -0,0 +1,3 @@
1
+ export declare function getLyraTradeOptionType(isCall: boolean, isLong: boolean, isCoveredCall: boolean): number;
2
+ export declare function isCall(optionType: number): boolean;
3
+ export declare function isLong(optionType: number): boolean;
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Pool } from "../../entities";
3
+ export declare function getVelodromeAddLiquidityTxData(pool: Pool, assetA: string, assetB: string, amountA: BigNumber | string, amountB: BigNumber | string, isStable: boolean): any;
4
+ export declare function getVelodromeRemoveLiquidityTxData(pool: Pool, assetA: string, assetB: string, amount: BigNumber | string, isStable: boolean): any;
@@ -0,0 +1,4 @@
1
+ import { BigNumber } from "ethers";
2
+ import { Pool } from "../../entities";
3
+ export declare function getVelodromeStakeTxData(amount: BigNumber | string): any;
4
+ export declare function getVelodromeClaimTxData(pool: Pool, gauge: string): Promise<any>;
@@ -15,4 +15,7 @@ export declare const DAI = "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1";
15
15
  export declare const USDy = "0x1ec50880101022c11530a069690f5446d1464592";
16
16
  export declare const WBTC = "0x68f180fcCe6836688e9084f035309E29Bf0A2095";
17
17
  export declare const OP = "4200000000000000000000000000000000000042";
18
+ export declare const WSTETH = "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb";
19
+ export declare const VEL = "0x3c8B650257cFb5f272f799F5e2b4e65093a11a05";
20
+ export declare const SUSD = "0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9";
18
21
  export declare const TEST_POOL = "TEST_POOL";
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { Deployment } from "@lyrafinance/lyra-js";
1
2
  import { BigNumber } from "ethers";
2
3
  export declare enum Network {
3
4
  POLYGON = "polygon",
@@ -13,7 +14,9 @@ export declare enum Dapp {
13
14
  SYNTHETIX = "synthetix",
14
15
  AAVEV3 = "aavev3",
15
16
  ARRAKIS = "arrakis",
16
- TOROS = "toros"
17
+ TOROS = "toros",
18
+ VELODROME = "velodrome",
19
+ LYRA = "lyra"
17
20
  }
18
21
  export declare enum Transaction {
19
22
  SWAP = "swapExactTokensForTokens",
@@ -57,3 +60,20 @@ export declare type Reserves = {
57
60
  assetB: BigNumber;
58
61
  };
59
62
  export declare type NetworkChainIdMap = Readonly<Record<Network, number>>;
63
+ export declare type LyraOptionMarket = "eth";
64
+ export declare type AddressMarketMap = {
65
+ [key in LyraOptionMarket]: string;
66
+ };
67
+ export declare type LyraTradeType = "buy" | "sell";
68
+ export declare type LyraOptionType = "call" | "put";
69
+ export declare type LyraNetworkMap = {
70
+ [key in Network]?: Deployment;
71
+ };
72
+ export declare type LyraPosition = {
73
+ positionId: BigNumber;
74
+ strikeId: BigNumber;
75
+ optionType: number;
76
+ amount: BigNumber;
77
+ collateral: BigNumber;
78
+ state: number;
79
+ };