diff --git a/projects/dex-ui/package.json b/projects/dex-ui/package.json index b4eedbdd23..a01c41b755 100644 --- a/projects/dex-ui/package.json +++ b/projects/dex-ui/package.json @@ -21,9 +21,12 @@ }, "dependencies": { "@beanstalk/sdk": "workspace:*", + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-dropdown-menu": "2.1.1", "@tanstack/react-query": "5.28.4", "@tanstack/react-query-devtools": "5.28.4", "@typechain/ethers-v5": "10.2.1", + "alchemy-sdk": "3.3.1", "connectkit": "1.7.2", "ethers": "^5.7.2", "graphql-request": "5.2.0", diff --git a/projects/dex-ui/src/components/Dropdown.tsx b/projects/dex-ui/src/components/Dropdown.tsx index c2208c3409..3482e18224 100644 --- a/projects/dex-ui/src/components/Dropdown.tsx +++ b/projects/dex-ui/src/components/Dropdown.tsx @@ -21,8 +21,8 @@ const Dropdown = ({ open, children, trigger, offset, setOpen }: DropdownProps) = e.preventDefault()} - onClick={(e) => e.preventDefault()} + onMouseDown={(e: any) => e.preventDefault()} + onClick={(e: any) => e.preventDefault()} > {trigger} @@ -31,7 +31,7 @@ const Dropdown = ({ open, children, trigger, offset, setOpen }: DropdownProps) = e.preventDefault()} + onFocus={(e: any) => e.preventDefault()} > <>{children} diff --git a/projects/sdk/src/classes/Token/Token.ts b/projects/sdk/src/classes/Token/Token.ts index ebba0e4dc5..37d0310db1 100644 --- a/projects/sdk/src/classes/Token/Token.ts +++ b/projects/sdk/src/classes/Token/Token.ts @@ -5,19 +5,41 @@ import { BigNumber, ContractTransaction } from "ethers"; const STALK_DECIMALS = 10; const SEED_DECIMALS = 6; + declare module "@beanstalk/sdk-core" { - abstract class Token { - static _source: string; + interface Token { isUnripe: boolean; rewards?: { stalk: TokenValue; seeds: TokenValue | null }; getStalk(bdv?: TokenValue): TokenValue; getSeeds(bdv?: TokenValue): TokenValue; approveBeanstalk(amount: TokenValue | BigNumber): Promise; } + + namespace Token { + let _source: string; + } } +// Adding the static Token._source property Object.defineProperty(CoreToken, "_source", { - value: "BeanstalkSDK" + value: "BeanstalkSDK", + writable: false, + configurable: false, + enumerable: true +}); + +// define property Token.prototype.isUnripe +Object.defineProperty(CoreToken.prototype, "isUnripe", { + value: false, + writable: true, + configurable: true +}); + +// define property Token.prototype.rewards +Object.defineProperty(CoreToken.prototype, "rewards", { + value: undefined, + writable: true, + configurable: true }); /** diff --git a/projects/sdk/src/lib/events/EventManager.ts b/projects/sdk/src/lib/events/EventManager.ts index 78d8382ac7..52d323185f 100644 --- a/projects/sdk/src/lib/events/EventManager.ts +++ b/projects/sdk/src/lib/events/EventManager.ts @@ -88,11 +88,17 @@ export class EventManager { return Promise.all([ this.sdk.contracts.beanstalkRead.queryFilter( - this.sdk.contracts.beanstalkRead.filters["Sow(address,uint256,uint256,uint256)"](account), + this.sdk.contracts.beanstalkRead.filters["Sow(address,uint256,uint256,uint256,uint256)"]( + account + ), + fromBlock, + toBlock + ), + this.sdk.contracts.beanstalkRead.queryFilter( + this.sdk.contracts.beanstalkRead.filters.Harvest(account), fromBlock, toBlock ), - this.sdk.contracts.beanstalkRead.queryFilter(this.sdk.contracts.beanstalkRead.filters.Harvest(account), fromBlock, toBlock), this.sdk.contracts.beanstalkRead.queryFilter( this.sdk.contracts.beanstalkRead.filters.PlotTransfer(account, null), // from fromBlock, diff --git a/projects/sdk/src/lib/events/processor.ts b/projects/sdk/src/lib/events/processor.ts index e4f66261fe..14eb910f61 100644 --- a/projects/sdk/src/lib/events/processor.ts +++ b/projects/sdk/src/lib/events/processor.ts @@ -88,11 +88,11 @@ export class EventProcessor { if (!event.event) { return; } - if (!SupportedEventsSet.has(event.event as typeof SupportedEvents[number])) { + if (!SupportedEventsSet.has(event.event as (typeof SupportedEvents)[number])) { return; } // @ts-ignore - return this[event.event as typeof SupportedEvents[number]]?.(event as any); + return this[event.event as (typeof SupportedEvents)[number]]?.(event as any); } ingestAll(events: T[]) { @@ -169,8 +169,10 @@ export class EventProcessor { }); } - PlotTransfer(event: EventManager.Simplify) { + PlotTransfer(_event: EventManager.Simplify) { // Numerical "index" of the Plot. Absolute, with respect to Pod 0. + + const event = _event as any; const transferIndex = event.args.id; const podsTransferred = event.args.pods; @@ -371,9 +373,13 @@ export class EventProcessor { } _removeDeposit(stem: string, token: Token, amount: ethers.BigNumber) { - if (!this.whitelist.has(token)) throw new Error(`Attempted to process an event with an unknown token: ${token}`); + if (!this.whitelist.has(token)) + throw new Error(`Attempted to process an event with an unknown token: ${token}`); const existingDeposit = this.deposits.get(token)?.[stem]; - if (!existingDeposit) throw new Error(`Received a 'RemoveDeposit' event for an unknown deposit: ${token.address} ${stem}`); + if (!existingDeposit) + throw new Error( + `Received a 'RemoveDeposit' event for an unknown deposit: ${token.address} ${stem}` + ); // BDV scales linearly with the amount of the underlying token. // Ex. if we remove 60% of the `amount`, we also remove 60% of the BDV. @@ -397,7 +403,8 @@ export class EventProcessor { const token = this.getToken(event); const stem = this.migrateStem(event.args.stem); - if (!this.whitelist.has(token)) throw new Error(`Attempted to process an event with an unknown token: ${token}`); + if (!this.whitelist.has(token)) + throw new Error(`Attempted to process an event with an unknown token: ${token}`); const tokDeposits = this.deposits.get(token); this.deposits.set(token, { diff --git a/projects/sdk/src/lib/farm/actions/AddLiquidity.ts b/projects/sdk/src/lib/farm/actions/AddLiquidity.ts index d3f8402bd7..bc7e3b97d4 100644 --- a/projects/sdk/src/lib/farm/actions/AddLiquidity.ts +++ b/projects/sdk/src/lib/farm/actions/AddLiquidity.ts @@ -1,9 +1,19 @@ import { BigNumber, ethers } from "ethers"; -import { BasicPreparedResult, RunContext, RunMode, Step, StepClass, Workflow } from "src/classes/Workflow"; +import { + BasicPreparedResult, + RunContext, + RunMode, + Step, + StepClass, + Workflow +} from "src/classes/Workflow"; import { CurveMetaPool__factory, CurvePlainPool__factory } from "src/constants/generated"; import { assert } from "src/utils"; import { FarmFromMode, FarmToMode } from "../types"; +/** + * @deprecated + */ export class AddLiquidity extends StepClass { public name: string = "addLiquidity"; @@ -17,14 +27,19 @@ export class AddLiquidity extends StepClass { super(); } - async run(_amountInStep: ethers.BigNumber, context: RunContext): Promise> { + async run( + _amountInStep: ethers.BigNumber, + context: RunContext + ): Promise> { if (context.runMode === RunMode.EstimateReversed) { throw new Error("Reverse estimation is not yet supported for this action"); } /// [0, 0, 1] => [0, 0, amountIn] /// FIXME: this uses a binary approach instead of a multiplier. - const amountInStep = this._amounts.map((k) => (k === 1 ? _amountInStep : ethers.BigNumber.from(0))); + const amountInStep = this._amounts.map((k) => + k === 1 ? _amountInStep : ethers.BigNumber.from(0) + ); /// Get amount out based on the selected pool const poolAddr = this._pool.toLowerCase(); @@ -54,16 +69,22 @@ export class AddLiquidity extends StepClass { /// Case: Metapools else if (this._registry === AddLiquidity.sdk.contracts.curve.registries.metaFactory.address) { assert(amountInStep.length === 2); - amountOut = await CurveMetaPool__factory.connect(this._pool, AddLiquidity.sdk.provider).callStatic[ - "calc_token_amount(uint256[2],bool)" - ]( + amountOut = await CurveMetaPool__factory.connect( + this._pool, + AddLiquidity.sdk.provider + ).callStatic["calc_token_amount(uint256[2],bool)"]( amountInStep as [any, any], true, // _is_deposit { gasLimit: 10000000 } ); - } else if (this._registry === AddLiquidity.sdk.contracts.curve.registries.cryptoFactory.address) { + } else if ( + this._registry === AddLiquidity.sdk.contracts.curve.registries.cryptoFactory.address + ) { assert(amountInStep.length === 2); - amountOut = await CurvePlainPool__factory.connect(this._pool, AddLiquidity.sdk.provider).callStatic.calc_token_amount( + amountOut = await CurvePlainPool__factory.connect( + this._pool, + AddLiquidity.sdk.provider + ).callStatic.calc_token_amount( amountInStep as [any, any], true, // _is_deposit { gasLimit: 10000000 } @@ -99,18 +120,21 @@ export class AddLiquidity extends StepClass { if (!minAmountOut) throw new Error("AddLiquidity: missing minAmountOut"); return { target: AddLiquidity.sdk.contracts.beanstalk.address, - callData: AddLiquidity.sdk.contracts.beanstalk.interface.encodeFunctionData("addLiquidity", [ - this._pool, - this._registry, - amountInStep as any[], // could be 2 or 3 elems - minAmountOut, - this._fromMode, - this._toMode - ]) + callData: "" + // callData: AddLiquidity.sdk.contracts.beanstalk.interface.encodeFunctionData("addLiquidity", [ + // this._pool, + // this._registry, + // amountInStep as any[], // could be 2 or 3 elems + // minAmountOut, + // this._fromMode, + // this._toMode + // ]) }; }, - decode: (data: string) => AddLiquidity.sdk.contracts.beanstalk.interface.decodeFunctionData("addLiquidity", data), - decodeResult: (result: string) => AddLiquidity.sdk.contracts.beanstalk.interface.decodeFunctionResult("addLiquidity", result) + decode: (data: string) => undefined, + // decode: (data: string) => AddLiquidity.sdk.contracts.beanstalk.interface.decodeFunctionData("addLiquidity", data), + decodeResult: (result: string) => undefined + // decodeResult: (result: string) => AddLiquidity.sdk.contracts.beanstalk.interface.decodeFunctionResult("addLiquidity", result) }; } } diff --git a/projects/sdk/src/lib/farm/actions/ClaimWithdrawal.ts b/projects/sdk/src/lib/farm/actions/ClaimWithdrawal.ts index 15cc0d8711..4b4f017167 100644 --- a/projects/sdk/src/lib/farm/actions/ClaimWithdrawal.ts +++ b/projects/sdk/src/lib/farm/actions/ClaimWithdrawal.ts @@ -29,15 +29,18 @@ export class ClaimWithdrawal extends StepClass { }); return { target: ClaimWithdrawal.sdk.contracts.beanstalk.address, - callData: ClaimWithdrawal.sdk.contracts.beanstalk.interface.encodeFunctionData("claimWithdrawal", [ - this._tokenIn, // - this._season, // - this._to - ]) + callData: "" + // callData: ClaimWithdrawal.sdk.contracts.beanstalk.interface.encodeFunctionData("claimWithdrawal", [ + // this._tokenIn, // + // this._season, // + // this._to + // ]) }; }, - decode: (data: string) => ClaimWithdrawal.sdk.contracts.beanstalk.interface.decodeFunctionData("claimWithdrawal", data), - decodeResult: (result: string) => ClaimWithdrawal.sdk.contracts.beanstalk.interface.decodeFunctionResult("claimWithdrawal", result) + decode: (data: string) => undefined, + decodeResult: (result: string) => undefined + // decode: (data: string) => undefined, ClaimWithdrawal.sdk.contracts.beanstalk.interface.decodeFunctionData("claimWithdrawal", data), + // decodeResult: (result: string) => undefined, ClaimWithdrawal.sdk.contracts.beanstalk.interface.decodeFunctionResult("claimWithdrawal", result) }; } } diff --git a/projects/sdk/src/lib/farm/actions/ClaimWithdrawals.ts b/projects/sdk/src/lib/farm/actions/ClaimWithdrawals.ts index f94b3f60b2..d0580b0b4a 100644 --- a/projects/sdk/src/lib/farm/actions/ClaimWithdrawals.ts +++ b/projects/sdk/src/lib/farm/actions/ClaimWithdrawals.ts @@ -29,15 +29,18 @@ export class ClaimWithdrawals extends StepClass { }); return { target: ClaimWithdrawals.sdk.contracts.beanstalk.address, - callData: ClaimWithdrawals.sdk.contracts.beanstalk.interface.encodeFunctionData("claimWithdrawals", [ - this._tokenIn, // - this._seasons, // - this._to - ]) + callData: "" + // callData: ClaimWithdrawals.sdk.contracts.beanstalk.interface.encodeFunctionData("claimWithdrawals", [ + // this._tokenIn, // + // this._seasons, // + // this._to + // ]) }; }, - decode: (data: string) => ClaimWithdrawals.sdk.contracts.beanstalk.interface.decodeFunctionData("claimWithdrawals", data), - decodeResult: (result: string) => ClaimWithdrawals.sdk.contracts.beanstalk.interface.decodeFunctionResult("claimWithdrawals", result) + decode: (data: string) => undefined, + decodeResult: (result: string) => undefined + // decode: (data: string) => ClaimWithdrawals.sdk.contracts.beanstalk.interface.decodeFunctionData("claimWithdrawals", data), + // decodeResult: (result: string) => ClaimWithdrawals.sdk.contracts.beanstalk.interface.decodeFunctionResult("claimWithdrawals", result) }; } } diff --git a/projects/sdk/src/lib/farm/actions/Exchange.ts b/projects/sdk/src/lib/farm/actions/Exchange.ts index 06689d2aba..41607edc82 100644 --- a/projects/sdk/src/lib/farm/actions/Exchange.ts +++ b/projects/sdk/src/lib/farm/actions/Exchange.ts @@ -4,6 +4,9 @@ import { Token } from "src/classes/Token"; import { CurveMetaPool__factory, CurvePlainPool__factory } from "src/constants/generated"; import { FarmFromMode, FarmToMode } from "../types"; +/** + * @deprecated + */ export class Exchange extends StepClass implements StepClass { public name: string = "exchange"; @@ -87,20 +90,23 @@ export class Exchange extends StepClass implements StepClass Exchange.sdk.contracts.beanstalk.interface.decodeFunctionData("exchange", data), - decodeResult: (result: string) => Exchange.sdk.contracts.beanstalk.interface.decodeFunctionResult("exchange", result) + decode: () => undefined, + decodeResult: () => undefined + // decode: (data: string) => Exchange.sdk.contracts.beanstalk.interface.decodeFunctionData("exchange", data), + // decodeResult: (result: string) => Exchange.sdk.contracts.beanstalk.interface.decodeFunctionResult("exchange", result) }; } } diff --git a/projects/sdk/src/lib/farm/actions/ExchangeUnderlying.ts b/projects/sdk/src/lib/farm/actions/ExchangeUnderlying.ts index ca928c5606..af039292e0 100644 --- a/projects/sdk/src/lib/farm/actions/ExchangeUnderlying.ts +++ b/projects/sdk/src/lib/farm/actions/ExchangeUnderlying.ts @@ -4,6 +4,10 @@ import { Token } from "src/classes/Token"; import { CurveMetaPool__factory } from "src/constants/generated"; import { FarmFromMode, FarmToMode } from "../types"; +/** + * @deprecated + * deprecated after beanstalk3 upgrade + */ export class ExchangeUnderlying extends StepClass { public name: string = "exchangeUnderlying"; @@ -69,20 +73,22 @@ export class ExchangeUnderlying extends StepClass { if (!minAmountOut) throw new Error("ExchangeUnderlying: Missing minAmountOut"); return { target: ExchangeUnderlying.sdk.contracts.beanstalk.address, - callData: ExchangeUnderlying.sdk.contracts.beanstalk.interface.encodeFunctionData("exchangeUnderlying", [ - this.pool, - tokenIn.address, - tokenOut.address, - _amountInStep, - minAmountOut, - this.fromMode, - this.toMode - ]) + callData: "" + // callData: ExchangeUnderlying.sdk.contracts.beanstalk.interface.encodeFunctionData("exchangeUnderlying", [ + // this.pool, + // tokenIn.address, + // tokenOut.address, + // _amountInStep, + // minAmountOut, + // this.fromMode, + // this.toMode + // ]) }; }, - decode: (data: string) => ExchangeUnderlying.sdk.contracts.beanstalk.interface.decodeFunctionData("exchangeUnderlying", data), - decodeResult: (result: string) => - ExchangeUnderlying.sdk.contracts.beanstalk.interface.decodeFunctionResult("exchangeUnderlying", result) + decode: (data: string) => undefined, + // decode: (data: string) => ExchangeUnderlying.sdk.contracts.beanstalk.interface.decodeFunctionData("exchangeUnderlying", data), + decodeResult: (result: string) => undefined + // ExchangeUnderlying.sdk.contracts.beanstalk.interface.decodeFunctionResult("exchangeUnderlying", result) }; } } diff --git a/projects/sdk/src/lib/farm/actions/RemoveLiquidityOneToken.ts b/projects/sdk/src/lib/farm/actions/RemoveLiquidityOneToken.ts index bd622013de..85a73f5e9e 100644 --- a/projects/sdk/src/lib/farm/actions/RemoveLiquidityOneToken.ts +++ b/projects/sdk/src/lib/farm/actions/RemoveLiquidityOneToken.ts @@ -3,6 +3,10 @@ import { BasicPreparedResult, RunContext, RunMode, StepClass, Workflow } from "s import { CurveMetaPool__factory, CurvePlainPool__factory } from "src/constants/generated"; import { FarmFromMode, FarmToMode } from "../types"; +/** + * @deprecated + * deprecated after beanstalk3 upgrade + */ export class RemoveLiquidityOneToken extends StepClass { public name: string = "RemoveLiquidityOneToken"; @@ -74,21 +78,22 @@ export class RemoveLiquidityOneToken extends StepClass { if (!minAmountOut) throw new Error("RemoveLiquidityOneToken: missing minAmountOut"); return { target: RemoveLiquidityOneToken.sdk.contracts.beanstalk.address, - callData: RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.encodeFunctionData("removeLiquidityOneToken", [ - this._pool, - this._registry, - this._tokenOut, - _amountInStep, - minAmountOut, - this._fromMode, - this._toMode - ]) + callData: "" + // callData: RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.encodeFunctionData("removeLiquidityOneToken", [ + // this._pool, + // this._registry, + // this._tokenOut, + // _amountInStep, + // minAmountOut, + // this._fromMode, + // this._toMode + // ]) }; }, - decode: (data: string) => - RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.decodeFunctionData("removeLiquidityOneToken", data), - decodeResult: (result: string) => - RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.decodeFunctionResult("removeLiquidityOneToken", result) + decode: (data: string) => undefined, + // RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.decodeFunctionData("removeLiquidityOneToken", data), + decodeResult: (result: string) => undefined + // RemoveLiquidityOneToken.sdk.contracts.beanstalk.interface.decodeFunctionResult("removeLiquidityOneToken", result) }; } } diff --git a/projects/sdk/src/lib/farm/farm.ts b/projects/sdk/src/lib/farm/farm.ts index 0ddc565864..442409fdc0 100644 --- a/projects/sdk/src/lib/farm/farm.ts +++ b/projects/sdk/src/lib/farm/farm.ts @@ -16,7 +16,9 @@ type FarmPreparedResult = { callData: string }; * FarmWorkflow * => `beanstalk.farm()`. */ -export class FarmWorkflow extends Workflow< +export class FarmWorkflow< + RunData extends { slippage: number } = { slippage: number } +> extends Workflow< string, // EncodedResult FarmPreparedResult, // PreparedResult RunData // RunData @@ -24,7 +26,11 @@ export class FarmWorkflow { + async execute( + amountIn: ethers.BigNumber | TokenValue, + data: RunData, + overrides?: CallOverrides + ): Promise { const encodedSteps = await this.estimateAndEncodeSteps(amountIn, RunMode.Execute, data); if (overrides) { overrides.value = this.value; @@ -64,6 +74,7 @@ export class FarmWorkflow { + async estimateGas( + amountIn: ethers.BigNumber | TokenValue, + data: RunData + ): Promise { const encodedSteps = await this.estimateAndEncodeSteps(amountIn, RunMode.EstimateGas, data); return this.contract.estimateGas.farm(encodedSteps, { value: this.value }); } @@ -86,15 +100,16 @@ type AdvancedFarmPreparedResult = { callData: string; clipboard?: string; }; -export class AdvancedFarmWorkflow extends Workflow< - AdvancedFarmCallStruct, - AdvancedFarmPreparedResult, - RunData -> { +export class AdvancedFarmWorkflow< + RunData extends { slippage: number } = { slippage: number } +> extends Workflow { public readonly FUNCTION_NAME = "advancedFarm"; private contract: Beanstalk; - constructor(protected sdk: BeanstalkSDK, public name: string = "AdvancedFarm") { + constructor( + protected sdk: BeanstalkSDK, + public name: string = "AdvancedFarm" + ) { super(sdk, name); this.contract = Workflow.sdk.contracts.beanstalk; // ? } @@ -128,7 +143,11 @@ export class AdvancedFarmWorkflow { + async execute( + amountIn: ethers.BigNumber | TokenValue, + data: RunData, + overrides?: CallOverrides + ): Promise { const encoded = await this.estimateAndEncodeSteps(amountIn, RunMode.Execute, data); if (overrides) { overrides.value = this.value; @@ -136,6 +155,7 @@ export class AdvancedFarmWorkflow { + async estimateGas( + amountIn: ethers.BigNumber | TokenValue, + data: RunData + ): Promise { const encoded = await this.estimateAndEncodeSteps(amountIn, RunMode.EstimateGas, data); return this.contract.estimateGas.advancedFarm(encoded, { value: this.value }); } @@ -164,7 +187,10 @@ export class Farm { this.presets = new LibraryPresets(Farm.sdk); } - create>(name?: string, using: "beanstalk" | "depot" = "beanstalk"): FarmWorkflow<{ slippage: number } & T> { + create>( + name?: string, + using: "beanstalk" | "depot" = "beanstalk" + ): FarmWorkflow<{ slippage: number } & T> { return new FarmWorkflow(Farm.sdk, name, using); } diff --git a/projects/sdk/src/lib/market/pods/pods.ts b/projects/sdk/src/lib/market/pods/pods.ts index 6514677400..a5b9412065 100644 --- a/projects/sdk/src/lib/market/pods/pods.ts +++ b/projects/sdk/src/lib/market/pods/pods.ts @@ -15,6 +15,9 @@ class NotFoundError extends BaseError { } } +/** + * @deprecated + */ export class PodsMarket { static sdk: BeanstalkSDK; @@ -35,18 +38,16 @@ export class PodsMarket { validate: boolean; } ) { - const [isValid, query] = await Promise.all([ - options?.validate - ? PodsMarket.sdk.contracts.beanstalk.podListing(id).then((r) => ethers.BigNumber.from(r).gt(0)) - : Promise.resolve(true), - PodsMarket.sdk.queries.getListingByIndex({ index: id }) - ]); - - if (!isValid || !query.podListings[0]) { - throw new NotFoundError("Listing", id); - } - - return query.podListings[0]; // FIXME: cast + // const [isValid, query] = await Promise.all([ + // options?.validate + // ? PodsMarket.sdk.contracts.beanstalk.getPodListing(id).then((r) => ethers.BigNumber.from(r).gt(0)) + // : Promise.resolve(true), + // PodsMarket.sdk.queries.getListingByIndex({ index: id }) + // ]); + // if (!isValid || !query.podListings[0]) { + // throw new NotFoundError("Listing", id); + // } + // return query.podListings[0]; // FIXME: cast } /** diff --git a/projects/sdk/src/lib/silo.ts b/projects/sdk/src/lib/silo.ts index 7a01d6fa49..d1f106c9b4 100644 --- a/projects/sdk/src/lib/silo.ts +++ b/projects/sdk/src/lib/silo.ts @@ -405,7 +405,8 @@ export class Silo { */ async getSeeds(_account?: string) { const account = await Silo.sdk.getAccount(_account); - return Silo.sdk.contracts.beanstalk.balanceOfLegacySeeds(account).then((v) => Silo.sdk.tokens.SEEDS.fromBlockchain(v)); + return Silo.sdk.tokens.SEEDS.fromHuman(1); + // return Silo.sdk.contracts.beanstalk.balanceOfLegacySeeds(account).then((v) => Silo.sdk.tokens.SEEDS.fromBlockchain(v)); } /** diff --git a/projects/ui/src/components/Common/Connection/WalletButton.tsx b/projects/ui/src/components/Common/Connection/WalletButton.tsx index 5e07e2f3e9..1bcb0c72e7 100644 --- a/projects/ui/src/components/Common/Connection/WalletButton.tsx +++ b/projects/ui/src/components/Common/Connection/WalletButton.tsx @@ -25,7 +25,6 @@ import useAnchor from '~/hooks/display/useAnchor'; import useToggle from '~/hooks/display/useToggle'; import useAccount from '~/hooks/ledger/useAccount'; import { CHAIN_INFO } from '~/constants'; -import PickBeansDialog from '~/components/Farmer/Unripe/PickDialog'; import AddressIcon from '~/components/Common/AddressIcon'; import useGlobal from '~/hooks/app/useGlobal'; import Row from '~/components/Common/Row'; @@ -56,7 +55,7 @@ const WalletButton: FC<{ showFullText?: boolean } & ButtonProps> = ({ const [selectingWallet, showWallets, hideWallets] = useToggle(); /// Dialog: Pick Unripe Beans - const [picking, showPick, hidePick] = useToggle(toggleMenuAnchor); + // const [picking, showPick, hidePick] = useToggle(toggleMenuAnchor); /// Dialog: Settings const [_, setSettingsOpen] = useGlobal('showSettings'); @@ -155,25 +154,6 @@ const WalletButton: FC<{ showFullText?: boolean } & ButtonProps> = ({ - - - - - - ))} + {step === 9 && ( + + + + You've Migrated! + + + + + )} ); diff --git a/projects/ui/src/hooks/farmer/market/useFarmerMarketCancelTxn.ts b/projects/ui/src/hooks/farmer/market/useFarmerMarketCancelTxn.ts index 8f3de8871b..850b170f8d 100644 --- a/projects/ui/src/hooks/farmer/market/useFarmerMarketCancelTxn.ts +++ b/projects/ui/src/hooks/farmer/market/useFarmerMarketCancelTxn.ts @@ -2,15 +2,15 @@ import { useCallback, useState } from 'react'; import { FarmToMode } from '@beanstalk/sdk'; import TransactionToast from '~/components/Common/TxnToast'; import { useFetchFarmerField } from '~/state/farmer/field/updater'; -import { useBeanstalkContract } from '../../ledger/useContract'; -import useFormMiddleware from '../../ledger/useFormMiddleware'; import { BEAN, PODS } from '~/constants/tokens'; -import useChainConstant from '../../chain/useChainConstant'; import { useFetchFarmerBalances } from '~/state/farmer/balances/updater'; import { PodOrder } from '~/state/farmer/market'; import { useSigner } from '~/hooks/ledger/useSigner'; import useAccount from '~/hooks/ledger/useAccount'; import { useFetchFarmerMarketItems } from '~/hooks/farmer/market/useFarmerMarket2'; +import useChainConstant from '../../chain/useChainConstant'; +import useFormMiddleware from '../../ledger/useFormMiddleware'; +import { useBeanstalkContract } from '../../ledger/useContract'; export default function useFarmerMarketCancelTxn() { /// Helpers @@ -45,7 +45,7 @@ export default function useFarmerMarketCancelTxn() { setLoading(true); middleware.before(); - const txn = await beanstalk.cancelPodListing(listingId); + const txn = await beanstalk.cancelPodListing('0', listingId); txToast.confirming(txn); const receipt = await txn.wait(); @@ -87,10 +87,19 @@ export default function useFarmerMarketCancelTxn() { // Check: Verify these params actually hash to an on-chain order // This prevents invalid orders from getting cancelled and emitting // a bogus PodOrderCancelled event. - const verify = await beanstalk.podOrder(account, ...params); + const verify = await beanstalk.getPodOrder(order.id); if (!verify || verify.eq(0)) throw new Error('Order not found'); - const txn = await beanstalk.cancelPodOrder(...params, destination); + const txn = await beanstalk.cancelPodOrder( + { + orderer: account, + fieldId: '0', + pricePerPod: Bean.stringify(order.pricePerPod), + maxPlaceInLine: Bean.stringify(order.maxPlaceInLine), + minFillAmount: PODS.stringify(order.minFillAmount || 0), + }, + destination + ); txToast.confirming(txn); const receipt = await txn.wait(); diff --git a/projects/ui/src/lib/Txn/FarmSteps/barn/BuyFarmStep.ts b/projects/ui/src/lib/Txn/FarmSteps/barn/BuyFarmStep.ts index 459c26a59d..1fa6af0ebe 100644 --- a/projects/ui/src/lib/Txn/FarmSteps/barn/BuyFarmStep.ts +++ b/projects/ui/src/lib/Txn/FarmSteps/barn/BuyFarmStep.ts @@ -16,7 +16,10 @@ import { getChainConstant } from '~/util/Chain'; export class BuyFertilizerFarmStep extends FarmStep { private _tokenList: (ERC20Token | NativeToken)[]; - constructor(_sdk: BeanstalkSDK, private _account: string) { + constructor( + _sdk: BeanstalkSDK, + private _account: string + ) { super(_sdk); this._account = _account; this._tokenList = BuyFertilizerFarmStep.getTokenList(_sdk.tokens); @@ -71,7 +74,6 @@ export class BuyFertilizerFarmStep extends FarmStep { amountWeth.toBlockchain(), // wethAmountIn amountFert.toBlockchain(), // minFertilizerOut minLP.subSlippage(slippage).toBlockchain(), // minLPTokensOut (with slippage applied) - fromMode, // fromMode ]), }), decode: (data: string) => diff --git a/projects/ui/src/lib/Txn/FarmSteps/field/HarvestFarmStep.ts b/projects/ui/src/lib/Txn/FarmSteps/field/HarvestFarmStep.ts index 579fe02742..781c9e4af3 100644 --- a/projects/ui/src/lib/Txn/FarmSteps/field/HarvestFarmStep.ts +++ b/projects/ui/src/lib/Txn/FarmSteps/field/HarvestFarmStep.ts @@ -14,6 +14,7 @@ export class HarvestFarmStep extends FarmStep implements EstimatesGas { async estimateGas() { const { beanstalk } = this._sdk.contracts; const gasEstimate = await beanstalk.estimateGas.harvest( + '0', this._plotIds, FarmToMode.INTERNAL ); @@ -33,6 +34,7 @@ export class HarvestFarmStep extends FarmStep implements EstimatesGas { prepare: () => ({ target: beanstalk.address, callData: beanstalk.interface.encodeFunctionData('harvest', [ + '0', this._plotIds, toMode, ]), diff --git a/projects/ui/src/lib/Txn/FarmSteps/market/BuyPlotsFarmStep.ts b/projects/ui/src/lib/Txn/FarmSteps/market/BuyPlotsFarmStep.ts index e82837e629..2c0aa42b42 100644 --- a/projects/ui/src/lib/Txn/FarmSteps/market/BuyPlotsFarmStep.ts +++ b/projects/ui/src/lib/Txn/FarmSteps/market/BuyPlotsFarmStep.ts @@ -15,7 +15,10 @@ import { ethers } from 'ethers'; import { toStringBaseUnitBN, tokenValueToBN } from '~/util'; export class BuyPlotsFarmStep extends FarmStep { - constructor(_sdk: BeanstalkSDK, private _account: string) { + constructor( + _sdk: BeanstalkSDK, + private _account: string + ) { super(_sdk); this._account = _account; } @@ -47,10 +50,14 @@ export class BuyPlotsFarmStep extends FarmStep { prepare: () => ({ target: beanstalk.address, callData: beanstalk.interface.encodeFunctionData('createPodOrder', [ + { + orderer: this._account, + fieldId: '0', + pricePerPod: BEAN[1].stringify(pricePerPod), + maxPlaceInLine: BEAN[1].stringify(placeInLine), + minFillAmount: toStringBaseUnitBN(new BigNumber(1), PODS.decimals), + }, BEAN[1].stringify(tokenValueToBN(beanAmountOut)), - BEAN[1].stringify(pricePerPod), - BEAN[1].stringify(placeInLine), - toStringBaseUnitBN(new BigNumber(1), PODS.decimals), FarmFromMode.INTERNAL_TOLERANT, ]), }), diff --git a/projects/ui/src/lib/Txn/FarmSteps/silo/ClaimFarmStep.ts b/projects/ui/src/lib/Txn/FarmSteps/silo/ClaimFarmStep.ts index 469f151692..2766432f0b 100644 --- a/projects/ui/src/lib/Txn/FarmSteps/silo/ClaimFarmStep.ts +++ b/projects/ui/src/lib/Txn/FarmSteps/silo/ClaimFarmStep.ts @@ -9,6 +9,9 @@ import { ethers } from 'ethers'; import { EstimatesGas, FarmStep } from '~/lib/Txn/Interface'; // TODO(silo-v3): something about this implementation chain breaks the typing of `this._sdk` +/** + * @deprecated + */ export class ClaimFarmStep extends FarmStep implements EstimatesGas { constructor( _sdk: BeanstalkSDK, @@ -22,20 +25,20 @@ export class ClaimFarmStep extends FarmStep implements EstimatesGas { async estimateGas() { const { beanstalk } = this._sdk.contracts; - let gasEstimate: ethers.BigNumber; + const gasEstimate: ethers.BigNumber = ethers.BigNumber.from(0); if (this._seasons.length === 1) { - gasEstimate = await beanstalk.estimateGas.claimWithdrawal( - this._tokenIn.address, - this._seasons[0], - FarmToMode.INTERNAL - ); + // gasEstimate = await beanstalk.estimateGas.claimWithdrawal( + // this._tokenIn.address, + // this._seasons[0], + // FarmToMode.INTERNAL + // ); } - gasEstimate = await beanstalk.estimateGas.claimWithdrawals( - this._tokenIn.address, - this._seasons, - FarmToMode.INTERNAL - ); + // gasEstimate = await beanstalk.estimateGas.claimWithdrawals( + // this._tokenIn.address, + // this._seasons, + // FarmToMode.INTERNAL + // ); console.debug(`[ClaimFarmStep][estimateGas]: `, gasEstimate.toString()); return gasEstimate; diff --git a/projects/ui/src/state/beanstalk/field/updater.ts b/projects/ui/src/state/beanstalk/field/updater.ts index eaad83c05b..c97b346731 100644 --- a/projects/ui/src/state/beanstalk/field/updater.ts +++ b/projects/ui/src/state/beanstalk/field/updater.ts @@ -22,11 +22,11 @@ export const useFetchBeanstalkField = () => { adjustedTemperature, maxTemperature, ] = await Promise.all([ - beanstalk.harvestableIndex().then(tokenResult(BEAN)), // FIXME - beanstalk.podIndex().then(tokenResult(BEAN)), + beanstalk.harvestableIndex('0').then(tokenResult(BEAN)), // FIXME + beanstalk.podIndex('0').then(tokenResult(BEAN)), beanstalk.totalSoil().then(tokenResult(BEAN)), beanstalk.weather().then((_weather) => ({ - lastDSoil: tokenResult(BEAN)(_weather.lastDSoil), + lastDSoil: tokenResult(BEAN)(_weather.lastDeltaSoil), lastSowTime: bigNumberResult(_weather.lastSowTime), thisSowTime: bigNumberResult(_weather.thisSowTime), })), diff --git a/projects/ui/src/state/beanstalk/silo/updater.ts b/projects/ui/src/state/beanstalk/silo/updater.ts index bd0e0f791c..3bf94acd99 100644 --- a/projects/ui/src/state/beanstalk/silo/updater.ts +++ b/projects/ui/src/state/beanstalk/silo/updater.ts @@ -12,9 +12,9 @@ import { bigNumberResult } from '~/util/Ledger'; import { tokenResult, transform } from '~/util'; import { BEAN, STALK } from '~/constants/tokens'; import { useGetChainConstant } from '~/hooks/chain/useChainConstant'; +import useSdk from '~/hooks/sdk'; import { resetBeanstalkSilo, updateBeanstalkSilo } from './actions'; import { BeanstalkSiloBalance } from './index'; -import useSdk from '~/hooks/sdk'; export const useFetchBeanstalkSilo = () => { const dispatch = useDispatch(); @@ -52,9 +52,9 @@ export const useFetchBeanstalkSilo = () => { sdk.contracts.beanstalk .getTotalDeposited(token.address) .then((v) => transform(v, 'bnjs', token)), - sdk.contracts.beanstalk - .getTotalWithdrawn(token.address) - .then((v) => transform(v, 'bnjs', token)), + // sdk.contracts.beanstalk + // .getTotalWithdrawn(token.address) + // .then((v) => transform(v, 'bnjs', token)), // BEAN will always have a fixed BDV of 1, skip to save a network request token === sdk.tokens.BEAN @@ -76,10 +76,10 @@ export const useFetchBeanstalkSilo = () => { ]).then((data) => ({ address: token.address.toLowerCase(), deposited: data[0], - withdrawn: data[1], - bdvPerToken: data[2], - stemTip: data[3], - depositedBdv: data[4], + // withdrawn: data[1], + bdvPerToken: data[1], + stemTip: data[2], + depositedBdv: data[3], })) ) ), @@ -117,7 +117,8 @@ export const useFetchBeanstalkSilo = () => { amount: curr.deposited, }, withdrawn: { - amount: curr.withdrawn, + amount: ZERO_BN, + // amount: curr.withdrawn, }, }; diff --git a/projects/ui/src/state/farmer/field/updater.ts b/projects/ui/src/state/farmer/field/updater.ts index 55ce736be9..ffeb42c28d 100644 --- a/projects/ui/src/state/farmer/field/updater.ts +++ b/projects/ui/src/state/farmer/field/updater.ts @@ -4,15 +4,15 @@ import { EventProcessor } from '@beanstalk/sdk'; import useChainId from '~/hooks/chain/useChainId'; import useAccount from '~/hooks/ledger/useAccount'; import useHarvestableIndex from '~/hooks/beanstalk/useHarvestableIndex'; -import useEvents, { GetEventsFn } from '../events2/updater'; +import useSdk from '~/hooks/sdk'; +import { transform } from '~/util/BigNumber'; +import { FarmerField } from '~/state/farmer/field'; import { resetFarmerField, updateFarmerField, updateFarmerFieldLoading, } from './actions'; -import useSdk from '~/hooks/sdk'; -import { transform } from '~/util/BigNumber'; -import { FarmerField } from '~/state/farmer/field'; +import useEvents, { GetEventsFn } from '../events2/updater'; export const useFetchFarmerField = () => { /// Helpers diff --git a/projects/ui/src/state/farmer/silo/updater.ts b/projects/ui/src/state/farmer/silo/updater.ts index 6beb4eb9ff..2034bd5342 100644 --- a/projects/ui/src/state/farmer/silo/updater.ts +++ b/projects/ui/src/state/farmer/silo/updater.ts @@ -3,7 +3,6 @@ import { useDispatch } from 'react-redux'; import BigNumber from 'bignumber.js'; import axios from 'axios'; import { Deposit, Token, TokenValue } from '@beanstalk/sdk'; -import { ethers } from 'ethers'; import { TokenMap, ZERO_BN } from '~/constants'; import { useBeanstalkContract } from '~/hooks/ledger/useContract'; import useChainId from '~/hooks/chain/useChainId'; @@ -16,7 +15,6 @@ import { resetFarmerSilo, updateLegacyFarmerSiloBalances, UpdateFarmerSiloBalancesPayload, - updateFarmerMigrationStatus, updateLegacyFarmerSiloRewards, updateFarmerSiloBalanceSdk, updateFarmerSiloLoading, @@ -88,10 +86,10 @@ export const useFetchFarmerSilo = () => { { grownStalkBalance, grownStalkByToken }, rootBalance, earnedBeanBalance, - migrationNeeded, + // migrationNeeded, mowStatuses, lastUpdate, - stemTips + stemTips, ] = await Promise.all([ // `getStalk()` returns `stalk + earnedStalk` but NOT grown stalk sdk.silo.getStalk(account), @@ -120,7 +118,7 @@ export const useFetchFarmerSilo = () => { // FIXME: this only needs to get fetched once and then can probably be cached // in LocalStorage or at least moved to a separate updater to prevent it from // getting called every time the farmer refreshes their Silo - sdk.contracts.beanstalk.migrationNeeded(account), + // sdk.contracts.beanstalk.migrationNeeded(account), // Get the mowStatus struct for each whitelisted token Promise.all( @@ -138,168 +136,54 @@ export const useFetchFarmerSilo = () => { >(statuses) ), beanstalk.lastUpdate(account), - sdk.silo.getStemTips([...sdk.tokens.siloWhitelist]) + sdk.silo.getStemTips([...sdk.tokens.siloWhitelist]), ] as const); - dispatch(updateFarmerMigrationStatus(migrationNeeded)); + // dispatch(updateFarmerMigrationStatus(migrationNeeded)); // Transform the flatfile data into the legacy UI data structure const payload: UpdateFarmerSiloBalancesPayload = {}; let activeSeedBalance: TokenValue = TokenValue.ZERO; - - if (migrationNeeded) { - // After the migration block is locked in, no deposits can change in - // Silo V2, so we use a flatfile with silo data for each account to - // prevent the needed to support two different historical event schemas. - const [balances, _activeSeedBalance] = await Promise.all([ - fetchMigrationData(account), - sdk.silo.getSeeds(account), - ]); - - // Pre-migration, # of seeds is calc'd from the contract getter - activeSeedBalance = _activeSeedBalance; - - // const currentSeason = TokenValue.fromBlockchain(season.toString(), 0); - Object.entries(balances.deposits).forEach( - ([addr, depositsBySeason]) => { - // All of the tokens addresses in the flatfile - // should exist in the SDK already - const token = sdk.tokens.findByAddress(addr); - if (!token) return; - - // const mowStatus = mowStatuses.get(token); - // if (!mowStatus) return; - - payload[token.address] = { - mowStatus: undefined, - deposited: { - // Note that deposits in the flatfile are keyed by season - // instead of stem - ...Object.keys(depositsBySeason).reduce( - (dep, depositSeason) => { - const crate = depositsBySeason[depositSeason]; - - // For simplicity we operate here with TokenValues using the SDK - const bdvTV = sdk.tokens.BEAN.fromBlockchain(crate.bdv); - const amountTV = token.fromBlockchain(crate.amount); - - // HACK: since we set the seeds value to zero, need to - // use the old value here - let seedsTV; - if (token === sdk.tokens.UNRIPE_BEAN) { - seedsTV = sdk.tokens.SEEDS.amount(2).mul(bdvTV); - } else if (token === sdk.tokens.BEAN) { - seedsTV = sdk.tokens.SEEDS.amount(2).mul(bdvTV); - } else if (token === sdk.tokens.BEAN_CRV3_LP) { - seedsTV = sdk.tokens.SEEDS.amount(4).mul(bdvTV); - } else if (token === sdk.tokens.UNRIPE_BEAN_WETH) { - seedsTV = sdk.tokens.SEEDS.amount(4).mul(bdvTV); - } else { - seedsTV = token.getSeeds(bdvTV); - }; - - // This token's stem tip - const tokenStemTip = stemTips.get(token.address); - - // This token's base stalk - const baseStalkTV = bdvTV; - - // Delta between this account's last Silo update and Silo V3 deployment - const updateDelta = TokenValue.fromHuman(14210 - lastUpdate, 0); - - // Mown Stalk - const mownTV = sdk.silo.calculateGrownStalkSeeds(lastUpdate, depositSeason.toString(), seedsTV); - - // Stalk Grown between last Silo update and Silo V3 deployment - const grownBeforeStemsTV = TokenValue.fromBlockchain(seedsTV.mul(updateDelta).toBlockchain(), sdk.tokens.STALK.decimals); - - // Stalk Grown after Silo V3 deployment - const ethersZERO = TokenValue.ZERO.toBigNumber(); - const grownAfterStemsTV = sdk.silo.calculateGrownStalk(tokenStemTip || ethersZERO, ethersZERO, bdvTV); - - // Legacy BigNumberJS values - const bdv = transform(bdvTV, 'bnjs'); - const amount = transform(amountTV, 'bnjs'); - - // Update totals - dep.amount = dep.amount.plus(amount); - dep.bdv = dep.bdv.plus(bdv); - - // Create deposit crate - dep.crates.push({ - stem: ethers.BigNumber.from(depositSeason), - amount: amount, - bdv: bdv, - stalk: { - base: transform(baseStalkTV.add(mownTV), 'bnjs', sdk.tokens.STALK), - grown: transform(grownBeforeStemsTV.add(grownAfterStemsTV), 'bnjs', sdk.tokens.STALK), - total: transform( - baseStalkTV.add(mownTV).add(grownBeforeStemsTV).add(grownAfterStemsTV), - 'bnjs', - sdk.tokens.STALK - ), - }, - seeds: transform(seedsTV, 'bnjs'), - isGerminating: false - }); - return dep; - }, - { - amount: ZERO_BN, - convertibleAmount: ZERO_BN, - bdv: ZERO_BN, - crates: [] as LegacyDepositCrate[], // FIXME - convertibleCrates: [] as LegacyDepositCrate[], - } - ), - }, - }; - } - ); - } else { - const balances = await sdk.silo.getBalances(account); - balances.forEach((balance, token) => { - // Post-migration, # of active seeds is calc'd from BDV - activeSeedBalance = activeSeedBalance.add( - token.getSeeds(balance.bdv) - ); - const handleCrate = ( - crate: Deposit - ): LegacyDepositCrate => ({ - // stem: transform(crate.stem, 'bnjs'), // FIXME - // ALECKS: I changed above line to below line. Typescript was expecting stem to be ethers.BigNumber - // Leaving this comment here in case there's unexpected issues somewhere downstream. - stem: crate.stem, - amount: transform(crate.amount, 'bnjs', token), - bdv: transform(crate.bdv, 'bnjs', sdk.tokens.BEAN), - stalk: { - base: transform(crate.stalk.base, 'bnjs', sdk.tokens.STALK), - grown: transform(crate.stalk.grown, 'bnjs', sdk.tokens.STALK), - total: transform(crate.stalk.total, 'bnjs', sdk.tokens.STALK), - }, - seeds: transform(crate.seeds, 'bnjs'), - isGerminating: crate.isGerminating, - }); - - payload[token.address] = { - mowStatus: mowStatuses.get(token), - deposited: { - amount: transform(balance.amount, 'bnjs', token), - convertibleAmount: transform( - balance.convertibleAmount, - 'bnjs', - token - ), - bdv: transform(balance.bdv, 'bnjs', sdk.tokens.BEAN), - crates: balance.deposits.map(handleCrate), - convertibleCrates: balance.convertibleDeposits.map(handleCrate), - }, - }; + const balances = await sdk.silo.getBalances(account); + balances.forEach((balance, token) => { + // Post-migration, # of active seeds is calc'd from BDV + activeSeedBalance = activeSeedBalance.add(token.getSeeds(balance.bdv)); + const handleCrate = ( + crate: Deposit + ): LegacyDepositCrate => ({ + // stem: transform(crate.stem, 'bnjs'), // FIXME + // ALECKS: I changed above line to below line. Typescript was expecting stem to be ethers.BigNumber + // Leaving this comment here in case there's unexpected issues somewhere downstream. + stem: crate.stem, + amount: transform(crate.amount, 'bnjs', token), + bdv: transform(crate.bdv, 'bnjs', sdk.tokens.BEAN), + stalk: { + base: transform(crate.stalk.base, 'bnjs', sdk.tokens.STALK), + grown: transform(crate.stalk.grown, 'bnjs', sdk.tokens.STALK), + total: transform(crate.stalk.total, 'bnjs', sdk.tokens.STALK), + }, + seeds: transform(crate.seeds, 'bnjs'), + isGerminating: crate.isGerminating, }); - dispatch(updateFarmerSiloBalanceSdk(balances)); - } + payload[token.address] = { + mowStatus: mowStatuses.get(token), + deposited: { + amount: transform(balance.amount, 'bnjs', token), + convertibleAmount: transform( + balance.convertibleAmount, + 'bnjs', + token + ), + bdv: transform(balance.bdv, 'bnjs', sdk.tokens.BEAN), + crates: balance.deposits.map(handleCrate), + convertibleCrates: balance.convertibleDeposits.map(handleCrate), + }, + }; + }); + + dispatch(updateFarmerSiloBalanceSdk(balances)); /** * We need to calculate the stalk for un-migrated accounts differently than migrated ones @@ -349,9 +233,10 @@ export const useFetchFarmerSilo = () => { total: ZERO_BN, } ); - stalkForUnMigrated.total = stalkForUnMigrated.base - .plus(stalkForUnMigrated.grown) - // .plus(stalkForUnMigrated.earned); + stalkForUnMigrated.total = stalkForUnMigrated.base.plus( + stalkForUnMigrated.grown + ); + // .plus(stalkForUnMigrated.earned); // End of un-migrated stalk calculation const earnedStalkBalance = sdk.tokens.BEAN.getStalk(earnedBeanBalance); @@ -368,18 +253,10 @@ export const useFetchFarmerSilo = () => { earned: transform(earnedBeanBalance, 'bnjs', sdk.tokens.BEAN), }, stalk: { - active: migrationNeeded - ? stalkForUnMigrated.base // .plus(stalkForUnMigrated.earned) - : transform(activeStalkBalance, 'bnjs', sdk.tokens.STALK), - earned: migrationNeeded - ? stalkForUnMigrated.earned - : transform(earnedStalkBalance, 'bnjs', sdk.tokens.STALK), - grown: migrationNeeded - ? stalkForUnMigrated.grown - : transform(grownStalkBalance, 'bnjs', sdk.tokens.STALK), - total: migrationNeeded - ? stalkForUnMigrated.total - : transform(totalStalkBalance, 'bnjs', sdk.tokens.STALK), + active: transform(activeStalkBalance, 'bnjs', sdk.tokens.STALK), + earned: transform(earnedStalkBalance, 'bnjs', sdk.tokens.STALK), + grown: transform(grownStalkBalance, 'bnjs', sdk.tokens.STALK), + total: transform(totalStalkBalance, 'bnjs', sdk.tokens.STALK), grownByToken: grownStalkByToken, }, seeds: { diff --git a/protocol/abi/Beanstalk.json b/protocol/abi/Beanstalk.json index 7bcc75a74e..79d529d0e0 100644 --- a/protocol/abi/Beanstalk.json +++ b/protocol/abi/Beanstalk.json @@ -357,30 +357,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "cumulativeReserves", - "type": "bytes" - }, - { - "internalType": "uint40", - "name": "timestamp", - "type": "uint40" - } - ], - "name": "getLockedBeansFromTwaReserves", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "getLockedBeansUnderlyingUnripeBean", @@ -4653,6 +4629,35 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "reciever", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "getMigrationHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -4735,6 +4740,101 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint128[]", + "name": "amounts", + "type": "uint128[]" + }, + { + "internalType": "uint128[]", + "name": "bdvs", + "type": "uint128[]" + } + ], + "internalType": "struct L2ContractMigrationFacet.AccountDepositData[]", + "name": "deposits", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct L2ContractMigrationFacet.AccountInternalBalance[]", + "name": "internalBalances", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "ownerRoots", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "verifyMigrationDepositsAndInternalBalances", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "reciever", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyMigrationSignature", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, { "anonymous": false, "inputs": [ @@ -7813,6 +7913,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "totalRainRoots", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "totalRoots", @@ -8440,224 +8553,6 @@ "stateMutability": "view", "type": "function" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaGerminatingStalk", - "type": "int256" - }, - { - "indexed": false, - "internalType": "enum LibGerminate.Germinate", - "name": "germinationState", - "type": "uint8" - } - ], - "name": "FarmerGerminatingStalkBalanceChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "germinationSeason", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaAmount", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaBdv", - "type": "int256" - } - ], - "name": "TotalGerminatingBalanceChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "germinationSeason", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaGerminatingStalk", - "type": "int256" - } - ], - "name": "TotalGerminatingStalkChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "int256", - "name": "deltaStalk", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaRoots", - "type": "int256" - } - ], - "name": "TotalStalkChangedFromGermination", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelisted", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelistedLp", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelistedWell", - "type": "bool" - } - ], - "name": "AddWhitelistStatus", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "RemoveWhitelistStatus", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelisted", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelistedLp", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "isWhitelistedWell", - "type": "bool" - } - ], - "name": "UpdateWhitelistStatus", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint32", - "name": "season", - "type": "uint32" - }, - { - "indexed": false, - "internalType": "address", - "name": "well", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "deltaB", - "type": "int256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "cumulativeReserves", - "type": "bytes" - } - ], - "name": "WellOracle", - "type": "event" - }, { "inputs": [], "name": "maxWeight", @@ -10300,4 +10195,4 @@ "stateMutability": "view", "type": "function" } -] \ No newline at end of file +] diff --git a/protocol/abi/MockBeanstalk.json b/protocol/abi/MockBeanstalk.json index 9cfc80e746..39b0bae57a 100644 --- a/protocol/abi/MockBeanstalk.json +++ b/protocol/abi/MockBeanstalk.json @@ -4629,6 +4629,35 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "reciever", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "getMigrationHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -4711,6 +4740,101 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "depositIds", + "type": "uint256[]" + }, + { + "internalType": "uint128[]", + "name": "amounts", + "type": "uint128[]" + }, + { + "internalType": "uint128[]", + "name": "bdvs", + "type": "uint128[]" + } + ], + "internalType": "struct L2ContractMigrationFacet.AccountDepositData[]", + "name": "deposits", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "internalType": "struct L2ContractMigrationFacet.AccountInternalBalance[]", + "name": "internalBalances", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "ownerRoots", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "verifyMigrationDepositsAndInternalBalances", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "reciever", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyMigrationSignature", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, { "anonymous": false, "inputs": [ @@ -7207,6 +7331,44 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getGerminatingStem", + "outputs": [ + { + "internalType": "int96", + "name": "germinatingStem", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "getGerminatingStems", + "outputs": [ + { + "internalType": "int96[]", + "name": "germinatingStems", + "type": "int96[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -7751,6 +7913,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "totalRainRoots", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "totalRoots", @@ -10096,6 +10271,82 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "exploitFertilizer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "exploitSop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "exploitUserInternalTokenBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "exploitUserSendTokenInternal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revert_netFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revert_oneOutFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revert_outFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revert_supplyChange", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "revert_supplyIncrease", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "stealBeans", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "anonymous": false, "inputs": [ @@ -10215,130 +10466,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "entitlementsMatchBalances", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "exploitBurnBeans", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitBurnStalk0", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitBurnStalk1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitFertilizer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitMintBeans0", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitMintBeans1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitMintBeans2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitMintBeans3", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sopWell", - "type": "address" - } - ], - "name": "exploitSop", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitTokenBalance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitUserDoubleSendTokenExternal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitUserInternalTokenBalance", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitUserSendTokenExternal0", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitUserSendTokenExternal1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "exploitUserSendTokenInternal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -11108,6 +11235,11 @@ }, { "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, { "internalType": "address", "name": "token", @@ -11134,39 +11266,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "bytes4", - "name": "gaugePointSelector", - "type": "bytes4" - }, - { - "internalType": "bytes4", - "name": "liquidityWeightSelector", - "type": "bytes4" - }, - { - "internalType": "uint96", - "name": "gaugePoints", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "optimalPercentDepositedBdv", - "type": "uint64" - } - ], - "name": "mockInitalizeGaugeForToken", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -11227,6 +11326,39 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "gaugePointSelector", + "type": "bytes4" + }, + { + "internalType": "bytes4", + "name": "liquidityWeightSelector", + "type": "bytes4" + }, + { + "internalType": "uint96", + "name": "gaugePoints", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "optimalPercentDepositedBdv", + "type": "uint64" + } + ], + "name": "mockinitializeGaugeForToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -11324,6 +11456,11 @@ "internalType": "uint256", "name": "caseId", "type": "uint256" + }, + { + "internalType": "bool", + "name": "oracleFailure", + "type": "bool" } ], "name": "seedGaugeSunSunrise", @@ -12075,4 +12212,4 @@ "stateMutability": "nonpayable", "type": "function" } -] \ No newline at end of file +] diff --git a/yarn.lock b/yarn.lock index 15fe787543..6743289036 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3036,6 +3036,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.13.10": + version: 7.25.0 + resolution: "@babel/runtime@npm:7.25.0" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10/6870e9e0e9125075b3aeba49a266f442b10820bfc693019eb6c1785c5a0edbe927e98b8238662cdcdba17842107c040386c3b69f39a0a3b217f9d00ffe685b27 + languageName: node + linkType: hard + "@babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9": version: 7.23.9 resolution: "@babel/runtime@npm:7.23.9" @@ -4725,7 +4734,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/contracts@npm:5.7.0, @ethersproject/contracts@npm:^5.6.2": +"@ethersproject/contracts@npm:5.7.0, @ethersproject/contracts@npm:^5.6.2, @ethersproject/contracts@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/contracts@npm:5.7.0" dependencies: @@ -4846,7 +4855,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/providers@npm:5.7.2, @ethersproject/providers@npm:^5.6.8": +"@ethersproject/providers@npm:5.7.2, @ethersproject/providers@npm:^5.6.8, @ethersproject/providers@npm:^5.7.0": version: 5.7.2 resolution: "@ethersproject/providers@npm:5.7.2" dependencies: @@ -4972,7 +4981,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/wallet@npm:5.7.0, @ethersproject/wallet@npm:^5.6.2": +"@ethersproject/wallet@npm:5.7.0, @ethersproject/wallet@npm:^5.6.2, @ethersproject/wallet@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/wallet@npm:5.7.0" dependencies: @@ -5132,6 +5141,18 @@ __metadata: languageName: node linkType: hard +"@floating-ui/react-dom@npm:^2.0.0": + version: 2.1.1 + resolution: "@floating-ui/react-dom@npm:2.1.1" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10/cafabfb5dd0b25547863520b3bcf6faee7f087d0c3187a8779910a6838d496bf494f237bf1fe883bbfae1a7fcc399611ae52377b696065d8118bd7c1b9c0d253 + languageName: node + linkType: hard + "@floating-ui/react-dom@npm:^2.0.8": version: 2.1.0 resolution: "@floating-ui/react-dom@npm:2.1.0" @@ -11273,6 +11294,736 @@ __metadata: languageName: node linkType: hard +"@radix-ui/primitive@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/primitive@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + checksum: 10/2b93e161d3fdabe9a64919def7fa3ceaecf2848341e9211520c401181c9eaebb8451c630b066fad2256e5c639c95edc41de0ba59c40eff37e799918d019822d1 + languageName: node + linkType: hard + +"@radix-ui/primitive@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/primitive@npm:1.1.0" + checksum: 10/7cbf70bfd4b2200972dbd52a9366801b5a43dd844743dc97eb673b3ec8e64f5dd547538faaf9939abbfe8bb275773767ecf5a87295d90ba09c15cba2b5528c89 + languageName: node + linkType: hard + +"@radix-ui/react-arrow@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-arrow@npm:1.1.0" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/8522e0a8095ecc32d3a719f9c3bc0514c677a9c9d5ac26985d5416576dbc487c2a49ba2484397d9de502b54657856cb41ca3ea0b2165563eeeae45a83750885b + languageName: node + linkType: hard + +"@radix-ui/react-collection@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-collection@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-slot": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/d3e656761773602f3a6be0fb568c328125d07ed202527f5fe839d1cdcc38a05d32f0568d2430199534206b86fad2dbe96725691300810033e65ec1e2e5181ccb + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-compose-refs@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/2b9a613b6db5bff8865588b6bf4065f73021b3d16c0a90b2d4c23deceeb63612f1f15de188227ebdc5f88222cab031be617a9dd025874c0487b303be3e5cc2a8 + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-compose-refs@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/047a4ed5f87cb848be475507cd62836cf5af5761484681f521ea543ea7c9d59d61d42806d6208863d5e2380bf38cdf4cff73c2bbe5f52dbbe50fb04e1a13ac72 + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-context@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/a02187a3bae3a0f1be5fab5ad19c1ef06ceff1028d957e4d9994f0186f594a9c3d93ee34bacb86d1fa8eb274493362944398e1c17054d12cb3b75384f9ae564b + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-context@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/755aea1966dc9b778890e6d330482e9285e9cd9417425da364706cf1d43a041f0b5b2412e6dfebb81e35f68ce47304dd52bcda01f223685c287ac654e6142d7e + languageName: node + linkType: hard + +"@radix-ui/react-dialog@npm:1.0.5": + version: 1.0.5 + resolution: "@radix-ui/react-dialog@npm:1.0.5" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/primitive": "npm:1.0.1" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-context": "npm:1.0.1" + "@radix-ui/react-dismissable-layer": "npm:1.0.5" + "@radix-ui/react-focus-guards": "npm:1.0.1" + "@radix-ui/react-focus-scope": "npm:1.0.4" + "@radix-ui/react-id": "npm:1.0.1" + "@radix-ui/react-portal": "npm:1.0.4" + "@radix-ui/react-presence": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-slot": "npm:1.0.2" + "@radix-ui/react-use-controllable-state": "npm:1.0.1" + aria-hidden: "npm:^1.1.1" + react-remove-scroll: "npm:2.5.5" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/adbd7301586db712616a0f8dd54a25e7544853cbf61b5d6e279215d479f57ac35157847ee424d54a7e707969a926ca0a7c28934400c9ac224bd0c7cc19229aca + languageName: node + linkType: hard + +"@radix-ui/react-direction@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-direction@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/25ad0d1d65ad08c93cebfbefdff9ef2602e53f4573a66b37d2c366ede9485e75ec6fc8e7dd7d2939b34ea5504ca0fe6ac4a3acc2f6ee9b62d131d65486eafd49 + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.0.5": + version: 1.0.5 + resolution: "@radix-ui/react-dismissable-layer@npm:1.0.5" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/primitive": "npm:1.0.1" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + "@radix-ui/react-use-escape-keydown": "npm:1.0.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/f1626d69bb50ec226032bb7d8c5abaaf7359c2d7660309b0ed3daaedd91f30717573aac1a1cb82d589b7f915cf464b95a12da0a3b91b6acfefb6fbbc62b992de + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.0" + dependencies: + "@radix-ui/primitive": "npm:1.1.0" + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-escape-keydown": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/08baf3441f811ce88649fa90cf8031f496f81a404cda75fa2a7b42020e3368f8f2a96911a4a1f7065cfa3fb2c091156c009d9255f81feeaf2f7ffadcfd12caf1 + languageName: node + linkType: hard + +"@radix-ui/react-dropdown-menu@npm:2.1.1": + version: 2.1.1 + resolution: "@radix-ui/react-dropdown-menu@npm:2.1.1" + dependencies: + "@radix-ui/primitive": "npm:1.1.0" + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-menu": "npm:2.1.1" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/61f671711cb49f102fc1fc4999968273009f8373b3d11ab0ae1bcf72554c06a297910b044df868b5ec90d55de4e3181a2c8c9e67bbc630add8a7dcd7f6d2b543 + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-focus-guards@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/1f8ca8f83b884b3612788d0742f3f054e327856d90a39841a47897dbed95e114ee512362ae314177de226d05310047cabbf66b686ae86ad1b65b6b295be24ef7 + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-focus-guards@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/199717e7da1ba9b3fa74b04f6a245aaebf6bdb8ae7d6f4b5f21f95f4086414a3587beebc77399a99be7d3a4b2499eaa52bf72bef660f8e69856b0fd0593b074f + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-focus-scope@npm:1.0.4" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-primitive": "npm:1.0.3" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/3590e74c6b682737c7ac4bf8db41b3df7b09a0320f3836c619e487df9915451e5dafade9923a74383a7366c59e9436f5fff4301d70c0d15928e0e16b36e58bc9 + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-focus-scope@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/a34dc5caecc56483e293de770fde3addcebd975b94625cb7057bee3f0837d82bba9a672bef7c7902d28d68d31ab9b3847c88285664b5b747ac9141dabf11df3c + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-id@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-layout-effect": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/446a453d799cc790dd2a1583ff8328da88271bff64530b5a17c102fa7fb35eece3cf8985359d416f65e330cd81aa7b8fe984ea125fc4f4eaf4b3801d698e49fe + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-id@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970 + languageName: node + linkType: hard + +"@radix-ui/react-menu@npm:2.1.1": + version: 2.1.1 + resolution: "@radix-ui/react-menu@npm:2.1.1" + dependencies: + "@radix-ui/primitive": "npm:1.1.0" + "@radix-ui/react-collection": "npm:1.1.0" + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-dismissable-layer": "npm:1.1.0" + "@radix-ui/react-focus-guards": "npm:1.1.0" + "@radix-ui/react-focus-scope": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-popper": "npm:1.2.0" + "@radix-ui/react-portal": "npm:1.1.1" + "@radix-ui/react-presence": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-roving-focus": "npm:1.1.0" + "@radix-ui/react-slot": "npm:1.1.0" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + aria-hidden: "npm:^1.1.1" + react-remove-scroll: "npm:2.5.7" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/4d523b89a91c0355337cbaafbb0eb4645daa67f6fcef00dbe499a448079ab51e01011a87474f048a54aefbe28829d61f387e67ce30e2ce0aba26734a23c62f1c + languageName: node + linkType: hard + +"@radix-ui/react-popper@npm:1.2.0": + version: 1.2.0 + resolution: "@radix-ui/react-popper@npm:1.2.0" + dependencies: + "@floating-ui/react-dom": "npm:^2.0.0" + "@radix-ui/react-arrow": "npm:1.1.0" + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + "@radix-ui/react-use-rect": "npm:1.1.0" + "@radix-ui/react-use-size": "npm:1.1.0" + "@radix-ui/rect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/33aeb8e3436c4764e53ac97b85617309f77b4a34ac3848e2f2c638ed01590895d4787a4382e4e8cedc1a04fd0346e35108adc296ce600399545d8587f4201d09 + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.0.4": + version: 1.0.4 + resolution: "@radix-ui/react-portal@npm:1.0.4" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-primitive": "npm:1.0.3" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/c4cf35e2f26a89703189d0eef3ceeeb706ae0832e98e558730a5e929ca7c72c7cb510413a24eca94c7732f8d659a1e81942bec7b90540cb73ce9e4885d040b64 + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-portal@npm:1.1.1" + dependencies: + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/84dab64ce9c9f4ed7d75df6d1d82877dc7976a98cc192287d39ba2ea512415ed7bf34caf02d579a18fe21766403fa9ae41d2482a14dee5514179ee1b09cc333c + languageName: node + linkType: hard + +"@radix-ui/react-presence@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-presence@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-compose-refs": "npm:1.0.1" + "@radix-ui/react-use-layout-effect": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/406f0b5a54ea4e7881e15bddc3863234bb14bf3abd4a6e56ea57c6df6f9265a9ad5cfa158e3a98614f0dcbbb7c5f537e1f7158346e57cc3f29b522d62cf28823 + languageName: node + linkType: hard + +"@radix-ui/react-presence@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-presence@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/e3ce746560e1551c9c480f0ef1f085763faf7094ac9600ca15d8bacb1bf5c70e59effe889bd2116b56c798f69f8d2bfa32d14defd30b9381fb2dcc555367f11c + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-primitive@npm:1.0.3" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-slot": "npm:1.0.2" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/bedb934ac07c710dc5550a7bfc7065d47e099d958cde1d37e4b1947ae5451f1b7e6f8ff5965e242578bf2c619065e6038c3a3aa779e5eafa7da3e3dbc685799f + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:2.0.0": + version: 2.0.0 + resolution: "@radix-ui/react-primitive@npm:2.0.0" + dependencies: + "@radix-ui/react-slot": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/f3dc683f5ba6534739356ac78ba5008d237b2f0e97eb3d578fcb01ecdb869a0729c24adc6dec238bfb1074763629935724381451313c109ca1be2a60fe4c16e3 + languageName: node + linkType: hard + +"@radix-ui/react-roving-focus@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-roving-focus@npm:1.1.0" + dependencies: + "@radix-ui/primitive": "npm:1.1.0" + "@radix-ui/react-collection": "npm:1.1.0" + "@radix-ui/react-compose-refs": "npm:1.1.0" + "@radix-ui/react-context": "npm:1.1.0" + "@radix-ui/react-direction": "npm:1.1.0" + "@radix-ui/react-id": "npm:1.1.0" + "@radix-ui/react-primitive": "npm:2.0.0" + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + "@radix-ui/react-use-controllable-state": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10/f7c3d9b6d9dc1036d56b6005c58a948ee20f07ba21a00063dc1c1a790918feae13f16f9383dea3a1ccc3698ac552b8382c6885844580f0eeb11108a6d4824ea7 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.0.2": + version: 1.0.2 + resolution: "@radix-ui/react-slot@npm:1.0.2" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-compose-refs": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/734866561e991438fbcf22af06e56b272ed6ee8f7b536489ee3bf2f736f8b53bf6bc14ebde94834aa0aceda854d018a0ce20bb171defffbaed1f566006cbb887 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-slot@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/95e190868418b1c83adf6627256f6b664b0dcbea95d7215de9c64ac2c31102fc09155565d9ca27be6abd20fc63d0b0bacfe1b67d78b2de1d198244c848e1a54e + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-callback-ref@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/b9fd39911c3644bbda14a84e4fca080682bef84212b8d8931fcaa2d2814465de242c4cfd8d7afb3020646bead9c5e539d478cea0a7031bee8a8a3bb164f3bc4c + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/dee2be1937d293c3a492cb6d279fc11495a8f19dc595cdbfe24b434e917302f9ac91db24e8cc5af9a065f3f209c3423115b5442e65a5be9fd1e9091338972be9 + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/9583679150dc521c9de20ee22cb858697dd4f5cefc46ab8ebfc5e7511415a053994e87d4ca3f49de84d27eebc13535b0a6c9892c91ab43e3e553e5d7270f378f + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.0.3": + version: 1.0.3 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" + dependencies: + "@babel/runtime": "npm:^7.13.10" + "@radix-ui/react-use-callback-ref": "npm:1.0.1" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/c6ed0d9ce780f67f924980eb305af1f6cce2a8acbaf043a58abe0aa3cc551d9aa76ccee14531df89bbee302ead7ecc7fce330886f82d4672c5eda52f357ef9b8 + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/9bf88ea272b32ea0f292afd336780a59c5646f795036b7e6105df2d224d73c54399ee5265f61d571eb545d28382491a8b02dc436e3088de8dae415d58b959b71 + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.0.1": + version: 1.0.1 + resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" + dependencies: + "@babel/runtime": "npm:^7.13.10" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/bed9c7e8de243a5ec3b93bb6a5860950b0dba359b6680c84d57c7a655e123dec9b5891c5dfe81ab970652e7779fe2ad102a23177c7896dde95f7340817d47ae5 + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2 + languageName: node + linkType: hard + +"@radix-ui/react-use-rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-rect@npm:1.1.0" + dependencies: + "@radix-ui/rect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/facc9528af43df3b01952dbb915ff751b5924db2c31d41f053ddea19a7cc5cac5b096c4d7a2059e8f564a3f0d4a95bcd909df8faed52fa01709af27337628e2c + languageName: node + linkType: hard + +"@radix-ui/react-use-size@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-size@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": "npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/01a11d4c07fc620b8a081e53d7ec8495b19a11e02688f3d9f47cf41a5fe0428d1e52ed60b2bf88dfd447dc2502797b9dad2841097389126dd108530913c4d90d + languageName: node + linkType: hard + +"@radix-ui/rect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/rect@npm:1.1.0" + checksum: 10/3ffdc5e3f7bcd91de4d5983513bd11c3a82b89b966e5c1bd8c17690a8f5da2d83fa156474c7b68fc6b9465df2281f81983b146e1d9dc57d332abda05751a9cbc + languageName: node + linkType: hard + "@react-native-async-storage/async-storage@npm:^1.17.11": version: 1.23.1 resolution: "@react-native-async-storage/async-storage@npm:1.23.1" @@ -17380,6 +18131,28 @@ __metadata: languageName: node linkType: hard +"alchemy-sdk@npm:3.3.1": + version: 3.3.1 + resolution: "alchemy-sdk@npm:3.3.1" + dependencies: + "@ethersproject/abi": "npm:^5.7.0" + "@ethersproject/abstract-provider": "npm:^5.7.0" + "@ethersproject/bignumber": "npm:^5.7.0" + "@ethersproject/bytes": "npm:^5.7.0" + "@ethersproject/contracts": "npm:^5.7.0" + "@ethersproject/hash": "npm:^5.7.0" + "@ethersproject/networks": "npm:^5.7.0" + "@ethersproject/providers": "npm:^5.7.0" + "@ethersproject/units": "npm:^5.7.0" + "@ethersproject/wallet": "npm:^5.7.0" + "@ethersproject/web": "npm:^5.7.0" + axios: "npm:^1.6.5" + sturdy-websocket: "npm:^0.2.1" + websocket: "npm:^1.0.34" + checksum: 10/7b00e5ba85bac77742db5b598eb8649b7c5c103d71fd9d6ecb3c3d158bdb9f51b76c3fb2fe717d5361e4a789e551c93654ee5ed477bc942b67b4cfc08e968d2c + languageName: node + linkType: hard + "all-node-versions@npm:^11.3.0": version: 11.3.0 resolution: "all-node-versions@npm:11.3.0" @@ -17850,6 +18623,15 @@ __metadata: languageName: node linkType: hard +"aria-hidden@npm:^1.1.1": + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10/df4bc15423aaaba3729a7d40abcbf6d3fffa5b8fd5eb33d3ac8b7da0110c47552fca60d97f2e1edfbb68a27cae1da499f1c3896966efb3e26aac4e3b57e3cc8b + languageName: node + linkType: hard + "aria-query@npm:5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" @@ -18498,6 +19280,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.6.5": + version: 1.7.3 + resolution: "axios@npm:1.7.3" + dependencies: + follow-redirects: "npm:^1.15.6" + form-data: "npm:^4.0.0" + proxy-from-env: "npm:^1.1.0" + checksum: 10/7f92af205705a8fb4a9d35666b663729507657f252a1d39d83582590119941872d49078017cf992e32f47aa3b7317f5439f77be772a173dac2ae0fedd38f43ae + languageName: node + linkType: hard + "axobject-query@npm:^3.2.1": version: 3.2.1 resolution: "axobject-query@npm:3.2.1" @@ -19597,7 +20390,7 @@ __metadata: languageName: node linkType: hard -"bufferutil@npm:^4.0.8": +"bufferutil@npm:^4.0.1, bufferutil@npm:^4.0.8": version: 4.0.8 resolution: "bufferutil@npm:4.0.8" dependencies: @@ -22173,6 +22966,16 @@ __metadata: languageName: node linkType: hard +"d@npm:1, d@npm:^1.0.1, d@npm:^1.0.2": + version: 1.0.2 + resolution: "d@npm:1.0.2" + dependencies: + es5-ext: "npm:^0.10.64" + type: "npm:^2.7.2" + checksum: 10/a3f45ef964622f683f6a1cb9b8dcbd75ce490cd2f4ac9794099db3d8f0e2814d412d84cd3fe522e58feb1f273117bb480f29c5381f6225f0abca82517caaa77a + languageName: node + linkType: hard + "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" @@ -22703,6 +23506,13 @@ __metadata: languageName: node linkType: hard +"detect-node-es@npm:^1.1.0": + version: 1.1.0 + resolution: "detect-node-es@npm:1.1.0" + checksum: 10/e46307d7264644975b71c104b9f028ed1d3d34b83a15b8a22373640ce5ea630e5640b1078b8ea15f202b54641da71e4aa7597093bd4b91f113db520a26a37449 + languageName: node + linkType: hard + "detect-package-manager@npm:^2.0.1": version: 2.0.1 resolution: "detect-package-manager@npm:2.0.1" @@ -22822,6 +23632,8 @@ __metadata: "@graphql-codegen/cli": "npm:3.2.2" "@graphql-codegen/client-preset": "npm:2.1.1" "@graphql-codegen/typescript-react-query": "npm:4.1.0" + "@radix-ui/react-dialog": "npm:1.0.5" + "@radix-ui/react-dropdown-menu": "npm:2.1.1" "@tanstack/react-query": "npm:5.28.4" "@tanstack/react-query-devtools": "npm:5.28.4" "@typechain/ethers-v5": "npm:10.2.1" @@ -22831,6 +23643,7 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:7.1.0" "@typescript-eslint/parser": "npm:7.1.0" "@vitejs/plugin-react": "npm:4.2.1" + alchemy-sdk: "npm:3.3.1" connectkit: "npm:1.7.2" eslint: "npm:8.57.0" eslint-plugin-import: "npm:2.29.1" @@ -23760,6 +24573,18 @@ __metadata: languageName: node linkType: hard +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.62, es5-ext@npm:^0.10.63, es5-ext@npm:^0.10.64, es5-ext@npm:~0.10.14": + version: 0.10.64 + resolution: "es5-ext@npm:0.10.64" + dependencies: + es6-iterator: "npm:^2.0.3" + es6-symbol: "npm:^3.1.3" + esniff: "npm:^2.0.1" + next-tick: "npm:^1.1.0" + checksum: 10/0c5d8657708b1695ddc4b06f4e0b9fbdda4d2fe46d037b6bedb49a7d1931e542ec9eecf4824d59e1d357e93229deab014bb4b86485db2d41b1d68e54439689ce + languageName: node + linkType: hard + "es5-shim@npm:^4.5.13": version: 4.6.7 resolution: "es5-shim@npm:4.6.7" @@ -23767,6 +24592,17 @@ __metadata: languageName: node linkType: hard +"es6-iterator@npm:^2.0.3": + version: 2.0.3 + resolution: "es6-iterator@npm:2.0.3" + dependencies: + d: "npm:1" + es5-ext: "npm:^0.10.35" + es6-symbol: "npm:^3.1.1" + checksum: 10/dbadecf3d0e467692815c2b438dfa99e5a97cbbecf4a58720adcb467a04220e0e36282399ba297911fd472c50ae4158fffba7ed0b7d4273fe322b69d03f9e3a5 + languageName: node + linkType: hard + "es6-promise@npm:^4.0.3": version: 4.2.8 resolution: "es6-promise@npm:4.2.8" @@ -23797,6 +24633,16 @@ __metadata: languageName: node linkType: hard +"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3": + version: 3.1.4 + resolution: "es6-symbol@npm:3.1.4" + dependencies: + d: "npm:^1.0.2" + ext: "npm:^1.7.0" + checksum: 10/3743119fe61f89e2f049a6ce52bd82fab5f65d13e2faa72453b73f95c15292c3cb9bdf3747940d504517e675e45fd375554c6b5d35d2bcbefd35f5489ecba546 + languageName: node + linkType: hard + "esbuild-android-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-android-64@npm:0.15.18" @@ -24645,6 +25491,18 @@ __metadata: languageName: node linkType: hard +"esniff@npm:^2.0.1": + version: 2.0.1 + resolution: "esniff@npm:2.0.1" + dependencies: + d: "npm:^1.0.1" + es5-ext: "npm:^0.10.62" + event-emitter: "npm:^0.3.5" + type: "npm:^2.7.2" + checksum: 10/f6a2abd2f8c5fe57c5fcf53e5407c278023313d0f6c3a92688e7122ab9ac233029fd424508a196ae5bc561aa1f67d23f4e2435b1a0d378030f476596129056ac + languageName: node + linkType: hard + "espree@npm:^9.6.0, espree@npm:^9.6.1": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -25088,6 +25946,16 @@ __metadata: languageName: node linkType: hard +"event-emitter@npm:^0.3.5": + version: 0.3.5 + resolution: "event-emitter@npm:0.3.5" + dependencies: + d: "npm:1" + es5-ext: "npm:~0.10.14" + checksum: 10/a7f5ea80029193f4869782d34ef7eb43baa49cd397013add1953491b24588468efbe7e3cc9eb87d53f33397e7aab690fd74c079ec440bf8b12856f6bdb6e9396 + languageName: node + linkType: hard + "event-stream@npm:=3.3.4": version: 3.3.4 resolution: "event-stream@npm:3.3.4" @@ -25452,6 +26320,15 @@ __metadata: languageName: node linkType: hard +"ext@npm:^1.7.0": + version: 1.7.0 + resolution: "ext@npm:1.7.0" + dependencies: + type: "npm:^2.7.2" + checksum: 10/666a135980b002df0e75c8ac6c389140cdc59ac953db62770479ee2856d58ce69d2f845e5f2586716350b725400f6945e51e9159573158c39f369984c72dcd84 + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -26972,6 +27849,13 @@ __metadata: languageName: node linkType: hard +"get-nonce@npm:^1.0.0": + version: 1.0.1 + resolution: "get-nonce@npm:1.0.1" + checksum: 10/ad5104871d114a694ecc506a2d406e2331beccb961fe1e110dc25556b38bcdbf399a823a8a375976cd8889668156a9561e12ebe3fa6a4c6ba169c8466c2ff868 + languageName: node + linkType: hard + "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" @@ -35107,6 +35991,13 @@ __metadata: languageName: node linkType: hard +"next-tick@npm:^1.1.0": + version: 1.1.0 + resolution: "next-tick@npm:1.1.0" + checksum: 10/83b5cf36027a53ee6d8b7f9c0782f2ba87f4858d977342bfc3c20c21629290a2111f8374d13a81221179603ffc4364f38374b5655d17b6a8f8a8c77bdea4fe8b + languageName: node + linkType: hard + "nice-try@npm:^1.0.4": version: 1.0.5 resolution: "nice-try@npm:1.0.5" @@ -38317,6 +39208,60 @@ __metadata: languageName: node linkType: hard +"react-remove-scroll-bar@npm:^2.3.3, react-remove-scroll-bar@npm:^2.3.4": + version: 2.3.6 + resolution: "react-remove-scroll-bar@npm:2.3.6" + dependencies: + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/5ab8eda61d5b10825447d11e9c824486c929351a471457c22452caa19b6898e18c3af6a46c3fa68010c713baed1eb9956106d068b4a1058bdcf97a1a9bbed734 + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.5": + version: 2.5.5 + resolution: "react-remove-scroll@npm:2.5.5" + dependencies: + react-remove-scroll-bar: "npm:^2.3.3" + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.1.0" + use-callback-ref: "npm:^1.3.0" + use-sidecar: "npm:^1.1.2" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/f0646ac384ce3852d1f41e30a9f9e251b11cf3b430d1d114c937c8fa7f90a895c06378d0d6b6ff0b2d00cbccf15e845921944fd6074ae67a0fb347a718106d88 + languageName: node + linkType: hard + +"react-remove-scroll@npm:2.5.7": + version: 2.5.7 + resolution: "react-remove-scroll@npm:2.5.7" + dependencies: + react-remove-scroll-bar: "npm:^2.3.4" + react-style-singleton: "npm:^2.2.1" + tslib: "npm:^2.1.0" + use-callback-ref: "npm:^1.3.0" + use-sidecar: "npm:^1.1.2" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/a1285d118e734855be6a1cf6c83a2ee39d8c5a5c3c336a1e9b80ab571326669bf39a52607f1889337c559c18b9e5fd5a0772fa82f748de3fcfe114ee6f772cc6 + languageName: node + linkType: hard + "react-router-dom@npm:^6.22.1": version: 6.23.1 resolution: "react-router-dom@npm:6.23.1" @@ -38358,6 +39303,23 @@ __metadata: languageName: node linkType: hard +"react-style-singleton@npm:^2.2.1": + version: 2.2.1 + resolution: "react-style-singleton@npm:2.2.1" + dependencies: + get-nonce: "npm:^1.0.0" + invariant: "npm:^2.2.4" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/80c58fd6aac3594e351e2e7b048d8a5b09508adb21031a38b3c40911fe58295572eddc640d4b20a7be364842c8ed1120fe30097e22ea055316b375b88d4ff02a + languageName: node + linkType: hard + "react-transition-group@npm:^4.4.5": version: 4.4.5 resolution: "react-transition-group@npm:4.4.5" @@ -41613,6 +42575,13 @@ __metadata: languageName: node linkType: hard +"sturdy-websocket@npm:^0.2.1": + version: 0.2.1 + resolution: "sturdy-websocket@npm:0.2.1" + checksum: 10/6de51bc70fe3995ecd9e443c7fc78dea24727871219a7cb58fc073f06acaa1f702b917dbb30da1a5a09ec480f4b797c86fb1f78721efbd55e34eec556448c5d9 + languageName: node + linkType: hard + "style-loader@npm:^1.3.0": version: 1.3.0 resolution: "style-loader@npm:1.3.0" @@ -43032,6 +44001,13 @@ __metadata: languageName: node linkType: hard +"type@npm:^2.7.2": + version: 2.7.3 + resolution: "type@npm:2.7.3" + checksum: 10/82e99e7795b3de3ecfe685680685e79a77aea515fad9f60b7c55fbf6d43a5c360b1e6e9443354ec8906b38cdf5325829c69f094cb7cd2a1238e85bef9026dc04 + languageName: node + linkType: hard + "typechain@npm:8.1.1": version: 8.1.1 resolution: "typechain@npm:8.1.1" @@ -44004,6 +44980,37 @@ __metadata: languageName: node linkType: hard +"use-callback-ref@npm:^1.3.0": + version: 1.3.2 + resolution: "use-callback-ref@npm:1.3.2" + dependencies: + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/3be76eae71b52ab233b4fde974eddeff72e67e6723100a0c0297df4b0d60daabedfa706ffb314d0a52645f2c1235e50fdbd53d99f374eb5df68c74d412e98a9b + languageName: node + linkType: hard + +"use-sidecar@npm:^1.1.2": + version: 1.1.2 + resolution: "use-sidecar@npm:1.1.2" + dependencies: + detect-node-es: "npm:^1.1.0" + tslib: "npm:^2.0.0" + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/ec99e31aefeb880f6dc4d02cb19a01d123364954f857811470ece32872f70d6c3eadbe4d073770706a9b7db6136f2a9fbf1bb803e07fbb21e936a47479281690 + languageName: node + linkType: hard + "use-sync-external-store@npm:1.2.0": version: 1.2.0 resolution: "use-sync-external-store@npm:1.2.0" @@ -44030,6 +45037,16 @@ __metadata: languageName: node linkType: hard +"utf-8-validate@npm:^5.0.2": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" + dependencies: + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.3.0" + checksum: 10/b89cbc13b4badad04828349ebb7aa2ab1edcb02b46ab12ce0ba5b2d6886d684ad4e93347819e3c8d36224c8742422d2dca69f5cc16c72ae4d7eeecc0c5cb544b + languageName: node + linkType: hard + "utf-8-validate@npm:^6.0.3": version: 6.0.4 resolution: "utf-8-validate@npm:6.0.4" @@ -44983,6 +46000,20 @@ __metadata: languageName: node linkType: hard +"websocket@npm:^1.0.34": + version: 1.0.35 + resolution: "websocket@npm:1.0.35" + dependencies: + bufferutil: "npm:^4.0.1" + debug: "npm:^2.2.0" + es5-ext: "npm:^0.10.63" + typedarray-to-buffer: "npm:^3.1.5" + utf-8-validate: "npm:^5.0.2" + yaeti: "npm:^0.0.6" + checksum: 10/c05a80c536de7befadc530e5134947f7cc000493038ab78e3ed03080bb873b4ecedf95ea4e7087e6a98d04f02f31723bd98ec67f85e9159525a769b5a478fa8d + languageName: node + linkType: hard + "well-known-symbols@npm:^2.0.0": version: 2.0.0 resolution: "well-known-symbols@npm:2.0.0" @@ -45594,6 +46625,13 @@ __metadata: languageName: node linkType: hard +"yaeti@npm:^0.0.6": + version: 0.0.6 + resolution: "yaeti@npm:0.0.6" + checksum: 10/6db12c152f7c363b80071086a3ebf5032e03332604eeda988872be50d6c8469e1f13316175544fa320f72edad696c2d83843ad0ff370659045c1a68bcecfcfea + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1"