From e5f2f2722047e48afe7248dc1af641db5146d7ca Mon Sep 17 00:00:00 2001 From: tientran3 <141128026+tientran3@users.noreply.github.com> Date: Thu, 22 Aug 2024 09:08:48 +0700 Subject: [PATCH] Add hosted SDK example (#4) * Add hosted SDK docs * remove `enableAggregator` since it is enabled by default * Add `/api` to endpoints --- hosted-sdk-demo/package.json | 15 + hosted-sdk-demo/src/add-liquidity-dual.ts | 37 ++ hosted-sdk-demo/src/add-liquidity.ts | 87 +++ hosted-sdk-demo/src/constants.ts | 9 + hosted-sdk-demo/src/helper.ts | 27 + hosted-sdk-demo/src/mint-py.ts | 37 ++ hosted-sdk-demo/src/redeem-py.ts | 37 ++ hosted-sdk-demo/src/remove-liquidity-dual.ts | 37 ++ hosted-sdk-demo/src/remove-liquidity.ts | 51 ++ hosted-sdk-demo/src/roll-over-pt.ts | 21 + hosted-sdk-demo/src/swap.ts | 139 ++++ hosted-sdk-demo/src/transfer-liquidity.ts | 43 ++ hosted-sdk-demo/src/types.ts | 9 + hosted-sdk-demo/tsconfig.json | 63 ++ hosted-sdk-demo/yarn.lock | 646 +++++++++++++++++++ 15 files changed, 1258 insertions(+) create mode 100644 hosted-sdk-demo/package.json create mode 100644 hosted-sdk-demo/src/add-liquidity-dual.ts create mode 100644 hosted-sdk-demo/src/add-liquidity.ts create mode 100644 hosted-sdk-demo/src/constants.ts create mode 100644 hosted-sdk-demo/src/helper.ts create mode 100644 hosted-sdk-demo/src/mint-py.ts create mode 100644 hosted-sdk-demo/src/redeem-py.ts create mode 100644 hosted-sdk-demo/src/remove-liquidity-dual.ts create mode 100644 hosted-sdk-demo/src/remove-liquidity.ts create mode 100644 hosted-sdk-demo/src/roll-over-pt.ts create mode 100644 hosted-sdk-demo/src/swap.ts create mode 100644 hosted-sdk-demo/src/transfer-liquidity.ts create mode 100644 hosted-sdk-demo/src/types.ts create mode 100644 hosted-sdk-demo/tsconfig.json create mode 100644 hosted-sdk-demo/yarn.lock diff --git a/hosted-sdk-demo/package.json b/hosted-sdk-demo/package.json new file mode 100644 index 0000000..55898d3 --- /dev/null +++ b/hosted-sdk-demo/package.json @@ -0,0 +1,15 @@ +{ + "name": "hosted-sdk-demo", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "axios": "^1.7.4", + "ethers": "5", + "typescript": "^5.5.4" + }, + "devDependencies": { + "@types/node": "^22.2.0", + "ts-node": "^10.9.2" + } +} diff --git a/hosted-sdk-demo/src/add-liquidity-dual.ts b/hosted-sdk-demo/src/add-liquidity-dual.ts new file mode 100644 index 0000000..0c1a255 --- /dev/null +++ b/hosted-sdk-demo/src/add-liquidity-dual.ts @@ -0,0 +1,37 @@ +import { CHAIN_ID, MARKET_ADDRESS, RECEIVER_ADDRESS, SY_ADDRESS, wstETH } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { AddLiquidityDualData } from "./types"; + +export async function addLiquidityDualSyAndPt() { + // Use 1 SY and 1 PT to add liquidity to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity-dual`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + amountTokenIn: '1000000000000000000', + amountPtIn: '1000000000000000000', + }); + + console.log('Amount LP Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function addLiquidityDualTokenAndPt() { + // USe 1 wstETH and 1 PT to add liquidity to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity-dual`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + amountTokenIn: '1000000000000000000', + amountPtIn: '1000000000000000000', + }); + + console.log('Amount LP Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/add-liquidity.ts b/hosted-sdk-demo/src/add-liquidity.ts new file mode 100644 index 0000000..c27bb29 --- /dev/null +++ b/hosted-sdk-demo/src/add-liquidity.ts @@ -0,0 +1,87 @@ +import { CHAIN_ID, MARKET_ADDRESS, PT_ADDRESS, RECEIVER_ADDRESS, SY_ADDRESS, wstETH } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { AddLiquidityData } from "./types"; + +export async function addLiquiditySinglePt() { + // Use 1 PT to add liquidity to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: PT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function addLiquiditySingleSy() { + // Use 1 SY to add liquidity to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + amountIn: '1000000000000000000', + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function addLiquiditySingleSyKeepYt() { + // Use 1 SY to add liquidity to wstETH pool (zero price impact mode) with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + amountIn: '1000000000000000000', + zpi: true, + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Amount YT Out: ', res.data.amountYtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function addLiquiditySingleToken() { + // Use 1 wstETH to add liquidity to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + amountIn: '1000000000000000000' + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function addLiquiditySingleTokenKeepYt() { + // Use 1 wstETH to add liquidity to wstETH pool (zero price impact mode) with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/add-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + amountIn: '1000000000000000000', + zpi: true, + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Amount YT Out: ', res.data.amountYtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} \ No newline at end of file diff --git a/hosted-sdk-demo/src/constants.ts b/hosted-sdk-demo/src/constants.ts new file mode 100644 index 0000000..fdbcab1 --- /dev/null +++ b/hosted-sdk-demo/src/constants.ts @@ -0,0 +1,9 @@ +// Tokens +export const wstETH = '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'; +export const MARKET_ADDRESS = '0x34280882267ffa6383b363e278b027be083bbe3b'; +export const SY_ADDRESS = '0xcbc72d92b2dc8187414f6734718563898740c0bc'; +export const PT_ADDRESS = '0xb253eff1104802b97ac7e3ac9fdd73aece295a2c'; +export const YT_ADDRESS = '0x04b7fa1e727d7290d6e24fa9b426d0c940283a95'; + +export const CHAIN_ID = 1; +export const RECEIVER_ADDRESS = ''; \ No newline at end of file diff --git a/hosted-sdk-demo/src/helper.ts b/hosted-sdk-demo/src/helper.ts new file mode 100644 index 0000000..6f3171a --- /dev/null +++ b/hosted-sdk-demo/src/helper.ts @@ -0,0 +1,27 @@ +import axios from 'axios'; +import { ethers } from 'ethers'; + +const HOSTED_SDK_URL = 'https://api-v2.pendle.finance/api/external/'; + +type MethodReturnType = { + tx: { + data: string; + to: string; + value: string; + }; + data: Data; +}; + +export async function callSDK(path: string, params: Record = {}) { + const response = await axios.get>(HOSTED_SDK_URL + path, { + params + }); + + return response.data; +} + +export function getSigner() { + const provider = new ethers.providers.JsonRpcProvider('https://rpc.ankr.com/eth'); + const signer = new ethers.Wallet(process.env.PRIVATE_KEY!, provider); + return signer; +} \ No newline at end of file diff --git a/hosted-sdk-demo/src/mint-py.ts b/hosted-sdk-demo/src/mint-py.ts new file mode 100644 index 0000000..eca4054 --- /dev/null +++ b/hosted-sdk-demo/src/mint-py.ts @@ -0,0 +1,37 @@ +import { CHAIN_ID, RECEIVER_ADDRESS, SY_ADDRESS, wstETH, YT_ADDRESS } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { MintPyData } from "./types"; + +export async function mintPyFromSy() { + // Use 1 SY to mint PT and YT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/mint`, { + receiver: RECEIVER_ADDRESS, + yt: YT_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + amountIn: '1000000000000000000', + }); + + console.log('Amount PT & YT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function mintPyFromToken() { + // Use 1 wstETH to mint PT and YT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/mint`, { + receiver: RECEIVER_ADDRESS, + yt: YT_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + amountIn: '1000000000000000000', + }); + + console.log('Amount PT & YT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/redeem-py.ts b/hosted-sdk-demo/src/redeem-py.ts new file mode 100644 index 0000000..3b14b62 --- /dev/null +++ b/hosted-sdk-demo/src/redeem-py.ts @@ -0,0 +1,37 @@ +import { CHAIN_ID, RECEIVER_ADDRESS, SY_ADDRESS, wstETH, YT_ADDRESS } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { RedeemPyData } from "./types"; + +export async function redeemPyToSy() { + // Redeem 1 PT and 1 YT to SY with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/redeem`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + yt: YT_ADDRESS, + amountIn: '1000000000000000000', + tokenOut: SY_ADDRESS, + }); + + console.log('Amount SY Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function redeemPyToToken() { + // Redeem 1 PT and 1 YT to wstETH with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/redeem`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + yt: YT_ADDRESS, + amountIn: '1000000000000000000', + tokenOut: wstETH, + }); + + console.log('Amount wstETH Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/remove-liquidity-dual.ts b/hosted-sdk-demo/src/remove-liquidity-dual.ts new file mode 100644 index 0000000..9fc1731 --- /dev/null +++ b/hosted-sdk-demo/src/remove-liquidity-dual.ts @@ -0,0 +1,37 @@ +import { CHAIN_ID, MARKET_ADDRESS, RECEIVER_ADDRESS, SY_ADDRESS, wstETH } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { RemoveLiquidityDualData } from "./types"; + +export async function removeLiquidityDualSyAndPt() { + // Remove 1 LP from wstETH pool to SY and PT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/remove-liquidity-dual`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenOut: SY_ADDRESS, + amountIn: '1000000000000000000', + }); + + console.log('Amount SY Out: ', res.data.amountTokenOut); + console.log('Amount PT Out: ', res.data.amountPtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function removeLiquidityDualTokenAndPt() { + // Remove 1 LP from wstETH pool to wstETH and PT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/remove-liquidity-dual`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenOut: wstETH, + amountIn: '1000000000000000000', + }); + + console.log('Amount wstETH Out: ', res.data.amountTokenOut); + console.log('Amount PT Out: ', res.data.amountPtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/remove-liquidity.ts b/hosted-sdk-demo/src/remove-liquidity.ts new file mode 100644 index 0000000..0ccdcf4 --- /dev/null +++ b/hosted-sdk-demo/src/remove-liquidity.ts @@ -0,0 +1,51 @@ +import { CHAIN_ID, MARKET_ADDRESS, PT_ADDRESS, RECEIVER_ADDRESS, SY_ADDRESS, wstETH } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { RemoveLiquidityData } from "./types"; + +export async function removeLiquiditySinglePt() { + // Remove 1 LP from wstETH pool to PT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/remove-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenOut: PT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount PT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function removeLiquiditySingleSy() { + // Remove 1 LP from wstETH pool to SY with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/remove-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenOut: SY_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount SY Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function removeLiquiditySingleToken() { + // Remove 1 LP from wstETH pool to wstETH with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/remove-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenOut: wstETH, + amountIn: '1000000000000000000' + }); + + console.log('Amount wstETH Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/roll-over-pt.ts b/hosted-sdk-demo/src/roll-over-pt.ts new file mode 100644 index 0000000..ae18acf --- /dev/null +++ b/hosted-sdk-demo/src/roll-over-pt.ts @@ -0,0 +1,21 @@ +import { CHAIN_ID, MARKET_ADDRESS, RECEIVER_ADDRESS } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { RollOverPtData } from "./types"; + +const eETH_MARKET_ADDRESS = '0xe1f19cbda26b6418b0c8e1ee978a533184496066'; + +export async function rollOverPt() { + // Transfer 1 PT eETH to wstETH PT with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${eETH_MARKET_ADDRESS}/roll-over-pt`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + dstMarket: MARKET_ADDRESS, + ptAmount: '1000000000000000000', + }); + + console.log('Amount PT Out: ', res.data.amountPtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/swap.ts b/hosted-sdk-demo/src/swap.ts new file mode 100644 index 0000000..869211d --- /dev/null +++ b/hosted-sdk-demo/src/swap.ts @@ -0,0 +1,139 @@ +import { CHAIN_ID, MARKET_ADDRESS, PT_ADDRESS, RECEIVER_ADDRESS, SY_ADDRESS, wstETH, YT_ADDRESS } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { SwapData } from "./types"; + +export async function swapPtToSy() { + // Swap 1 PT to SY in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: PT_ADDRESS, + tokenOut: SY_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount SY Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapPtToToken() { + // Swap 1 PT to wstETH in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: PT_ADDRESS, + tokenOut: wstETH, + amountIn: '1000000000000000000' + }); + + console.log('Amount wstETH Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapSyToPt() { + // Swap 1 SY to PT in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + tokenOut: PT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount PT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapSyToYt() { + // Swap 1 SY to YT in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: SY_ADDRESS, + tokenOut: YT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount YT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapTokenToYt() { + // Swap 1 wstETH to YT in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + tokenOut: YT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount YT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapTokenToPt() { + // Swap 1 wstETH to PT in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: wstETH, + tokenOut: PT_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount PT Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapYtToSy() { + // Swap 1 YT to SY in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: YT_ADDRESS, + tokenOut: SY_ADDRESS, + amountIn: '1000000000000000000' + }); + + console.log('Amount SY Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function swapYtToToken() { + // Swap 1 YT to wstETH in wstETH market with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${MARKET_ADDRESS}/swap`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + tokenIn: YT_ADDRESS, + tokenOut: wstETH, + amountIn: '1000000000000000000' + }); + + console.log('Amount wstETH Out: ', res.data.amountOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/transfer-liquidity.ts b/hosted-sdk-demo/src/transfer-liquidity.ts new file mode 100644 index 0000000..00965b3 --- /dev/null +++ b/hosted-sdk-demo/src/transfer-liquidity.ts @@ -0,0 +1,43 @@ +import { CHAIN_ID, MARKET_ADDRESS, RECEIVER_ADDRESS } from "./constants"; +import { callSDK, getSigner } from "./helper"; +import { TransferLiquidityData } from "./types"; + +const eETH_MARKET_ADDRESS = '0x7d372819240d14fb477f17b964f95f33beb4c704'; + +export async function transferLiquidity() { + // Transfer 1 LP from eETH pool to wstETH pool with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${eETH_MARKET_ADDRESS}/transfer-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + dstMarket: MARKET_ADDRESS, + lpAmount: '1000000000000000000', + ptAmount: '0', + ytAmount: '0', + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} + +export async function transferLiquidityKeepYt() { + // Transfer 1 LP from eETH pool to wstETH pool (zero price impact mode) with 1% slippage + const res = await callSDK(`/v1/sdk/${CHAIN_ID}/markets/${eETH_MARKET_ADDRESS}/transfer-liquidity`, { + receiver: RECEIVER_ADDRESS, + slippage: 0.01, + dstMarket: MARKET_ADDRESS, + lpAmount: '1000000000000000000', + ptAmount: '0', + ytAmount: '0', + zpi: true, + }); + + console.log('Amount LP Out: ', res.data.amountLpOut); + console.log('Amount YT Out: ', res.data.amountYtOut); + console.log('Price impact: ', res.data.priceImpact); + + // Send tx + getSigner().sendTransaction(res.tx); +} diff --git a/hosted-sdk-demo/src/types.ts b/hosted-sdk-demo/src/types.ts new file mode 100644 index 0000000..427bbad --- /dev/null +++ b/hosted-sdk-demo/src/types.ts @@ -0,0 +1,9 @@ +export type SwapData = { amountOut: string, priceImpact: number }; +export type AddLiquidityData = { amountLpOut: string; amountYtOut: string; priceImpact: number }; +export type AddLiquidityDualData = { amountOut: string, priceImpact: number }; +export type RemoveLiquidityData = { amountOut: string, priceImpact: number }; +export type RemoveLiquidityDualData = { amountTokenOut: string; amountPtOut: string, priceImpact: number }; +export type MintPyData = { amountOut: string, priceImpact: number }; +export type RedeemPyData = { amountOut: string, priceImpact: number }; +export type TransferLiquidityData = { amountLpOut: string; amountYtOut: string, priceImpact: number }; +export type RollOverPtData = { amountPtOut: string, priceImpact: number }; \ No newline at end of file diff --git a/hosted-sdk-demo/tsconfig.json b/hosted-sdk-demo/tsconfig.json new file mode 100644 index 0000000..a7d6849 --- /dev/null +++ b/hosted-sdk-demo/tsconfig.json @@ -0,0 +1,63 @@ +{ + "compilerOptions": { + /* Basic Options */ + "incremental": true, /* Enable incremental compilation */ + "target": "es2020", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* Experimental Options */ + "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + "resolveJsonModule": true, + }, + "exclude": [ + "node_modules", + "dist" + ] +} diff --git a/hosted-sdk-demo/yarn.lock b/hosted-sdk-demo/yarn.lock new file mode 100644 index 0000000..bd71046 --- /dev/null +++ b/hosted-sdk-demo/yarn.lock @@ -0,0 +1,646 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/node@^22.2.0": + version "22.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.2.0.tgz#7cf046a99f0ba4d628ad3088cb21f790df9b0c5b" + integrity sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ== + dependencies: + undici-types "~6.13.0" + +acorn-walk@^8.1.1: + version "8.3.3" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2" + integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +ethers@5: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +typescript@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== + +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==