@sherwoodagent/cli 0.59.11 → 0.59.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -933,6 +933,50 @@ function resolveTemplate(key) {
|
|
|
933
933
|
}
|
|
934
934
|
return { def, address };
|
|
935
935
|
}
|
|
936
|
+
function computeProposalAssetChecks(templateKey, opts) {
|
|
937
|
+
if (templateKey === "moonwell-supply" || templateKey === "mamo-yield") {
|
|
938
|
+
if (!opts.amount) return [];
|
|
939
|
+
const token = opts.token || "USDC";
|
|
940
|
+
const asset = resolveToken(token);
|
|
941
|
+
const decimals = token.toUpperCase() === "USDC" ? 6 : 18;
|
|
942
|
+
return [{ asset, amount: parseUnits(opts.amount, decimals), label: token.toUpperCase() }];
|
|
943
|
+
}
|
|
944
|
+
if (templateKey === "venice-inference") {
|
|
945
|
+
if (!opts.amount) return [];
|
|
946
|
+
const assetSymbol = opts.asset || "USDC";
|
|
947
|
+
const asset = resolveToken(assetSymbol);
|
|
948
|
+
const decimals = assetSymbol.toUpperCase() === "USDC" ? 6 : 18;
|
|
949
|
+
return [{ asset, amount: parseUnits(opts.amount, decimals), label: assetSymbol.toUpperCase() }];
|
|
950
|
+
}
|
|
951
|
+
if (templateKey === "aerodrome-lp") {
|
|
952
|
+
if (!opts.tokenA || !opts.tokenB || !opts.amountA || !opts.amountB) return [];
|
|
953
|
+
return [];
|
|
954
|
+
}
|
|
955
|
+
if (templateKey === "wsteth-moonwell") {
|
|
956
|
+
if (!opts.amount) return [];
|
|
957
|
+
return [{
|
|
958
|
+
asset: TOKENS().WETH,
|
|
959
|
+
amount: parseUnits(opts.amount, 18),
|
|
960
|
+
label: "WETH"
|
|
961
|
+
}];
|
|
962
|
+
}
|
|
963
|
+
if (templateKey === "portfolio") {
|
|
964
|
+
if (!opts.amount) return [];
|
|
965
|
+
const defaultAsset = getNetwork() === "robinhood-testnet" ? "WETH" : "USDC";
|
|
966
|
+
const assetSymbol = opts.asset || defaultAsset;
|
|
967
|
+
const asset = resolveToken(assetSymbol);
|
|
968
|
+
const decimals = assetSymbol.toUpperCase() === "USDC" ? 6 : 18;
|
|
969
|
+
return [{ asset, amount: parseUnits(opts.amount, decimals), label: assetSymbol.toUpperCase() }];
|
|
970
|
+
}
|
|
971
|
+
if (templateKey === "hyperliquid-perp" || templateKey === "hyperliquid-grid") {
|
|
972
|
+
if (!opts.amount) return [];
|
|
973
|
+
const token = opts.token || "USDC";
|
|
974
|
+
const asset = resolveToken(token);
|
|
975
|
+
const decimals = token.toUpperCase() === "USDC" ? 6 : 18;
|
|
976
|
+
return [{ asset, amount: parseUnits(opts.amount, decimals), label: token.toUpperCase() }];
|
|
977
|
+
}
|
|
978
|
+
return [];
|
|
979
|
+
}
|
|
936
980
|
async function buildInitDataForTemplate(templateKey, opts, vault) {
|
|
937
981
|
if (templateKey === "moonwell-supply") {
|
|
938
982
|
if (!opts.amount) {
|
|
@@ -1513,6 +1557,37 @@ function registerStrategyTemplateCommands(strategy2) {
|
|
|
1513
1557
|
console.error(chalk.red(` Vault ${vault} is paused. Cannot propose.`));
|
|
1514
1558
|
process.exit(1);
|
|
1515
1559
|
}
|
|
1560
|
+
const checks = computeProposalAssetChecks(templateKey, opts);
|
|
1561
|
+
for (const check of checks) {
|
|
1562
|
+
if (check.amount === 0n) continue;
|
|
1563
|
+
const [balance, decimals] = await Promise.all([
|
|
1564
|
+
publicClient.readContract({
|
|
1565
|
+
address: check.asset,
|
|
1566
|
+
abi: erc20Abi,
|
|
1567
|
+
functionName: "balanceOf",
|
|
1568
|
+
args: [vault]
|
|
1569
|
+
}),
|
|
1570
|
+
publicClient.readContract({
|
|
1571
|
+
address: check.asset,
|
|
1572
|
+
abi: erc20Abi,
|
|
1573
|
+
functionName: "decimals"
|
|
1574
|
+
})
|
|
1575
|
+
]);
|
|
1576
|
+
if (balance < check.amount) {
|
|
1577
|
+
preflightSpinner.fail("Preflight failed");
|
|
1578
|
+
console.error(
|
|
1579
|
+
chalk.red(
|
|
1580
|
+
` Vault ${vault} holds ${formatUnits(balance, decimals)} ${check.label} but proposal requires ${formatUnits(check.amount, decimals)} ${check.label}.`
|
|
1581
|
+
)
|
|
1582
|
+
);
|
|
1583
|
+
console.error(
|
|
1584
|
+
chalk.yellow(
|
|
1585
|
+
` Hint: --amount is in human units (e.g. "10" = 10 ${check.label}), not raw decimals.`
|
|
1586
|
+
)
|
|
1587
|
+
);
|
|
1588
|
+
process.exit(1);
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1516
1591
|
preflightSpinner.succeed("Preflight OK");
|
|
1517
1592
|
} catch (err) {
|
|
1518
1593
|
preflightSpinner.fail("Preflight failed");
|