@sherwoodagent/cli 0.11.0 → 0.12.1
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/{chat-2X5FQI5X.js → chat-3PQDDLVR.js} +4 -4
- package/dist/{chunk-DVWORPEY.js → chunk-LEQLX7XF.js} +1 -1
- package/dist/chunk-LEQLX7XF.js.map +1 -0
- package/dist/{chunk-6IUSJWAL.js → chunk-SQID2KF4.js} +5 -50
- package/dist/chunk-SQID2KF4.js.map +1 -0
- package/dist/{chunk-56W62BYY.js → chunk-TTGRYJYY.js} +2 -2
- package/dist/{chunk-IXMM3TT3.js → chunk-X34TJQ4P.js} +69 -96
- package/dist/chunk-X34TJQ4P.js.map +1 -0
- package/dist/{eas-HQ5OTAFW.js → eas-4GIQARSZ.js} +3 -3
- package/dist/index.js +84 -142
- package/dist/index.js.map +1 -1
- package/dist/{ipfs-P3NVJQCF.js → ipfs-LUJHZGKF.js} +2 -2
- package/dist/{research-PLYYYJ4F.js → research-O44AJLGZ.js} +4 -4
- package/dist/{session-QBWUWXCH.js → session-5FYVX2DW.js} +5 -6
- package/dist/{session-QBWUWXCH.js.map → session-5FYVX2DW.js.map} +1 -1
- package/dist/{xmtp-A5G2GEWF.js → xmtp-ZGW4KGC4.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-6IUSJWAL.js.map +0 -1
- package/dist/chunk-DVWORPEY.js.map +0 -1
- package/dist/chunk-IXMM3TT3.js.map +0 -1
- /package/dist/{chat-2X5FQI5X.js.map → chat-3PQDDLVR.js.map} +0 -0
- /package/dist/{chunk-56W62BYY.js.map → chunk-TTGRYJYY.js.map} +0 -0
- /package/dist/{eas-HQ5OTAFW.js.map → eas-4GIQARSZ.js.map} +0 -0
- /package/dist/{ipfs-P3NVJQCF.js.map → ipfs-LUJHZGKF.js.map} +0 -0
- /package/dist/{research-PLYYYJ4F.js.map → research-O44AJLGZ.js.map} +0 -0
- /package/dist/{xmtp-A5G2GEWF.js.map → xmtp-ZGW4KGC4.js.map} +0 -0
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
getTextRecord,
|
|
3
3
|
resolveSyndicate,
|
|
4
4
|
setTextRecord
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-SQID2KF4.js";
|
|
6
|
+
import "./chunk-X34TJQ4P.js";
|
|
7
7
|
import {
|
|
8
8
|
getAccount
|
|
9
9
|
} from "./chunk-FWJBUK57.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import chalk from "chalk";
|
|
18
18
|
import ora from "ora";
|
|
19
19
|
async function loadXmtp() {
|
|
20
|
-
return import("./xmtp-
|
|
20
|
+
return import("./xmtp-ZGW4KGC4.js");
|
|
21
21
|
}
|
|
22
22
|
function formatTimestamp(date) {
|
|
23
23
|
return `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")}`;
|
|
@@ -352,4 +352,4 @@ function registerChatCommands(program) {
|
|
|
352
352
|
export {
|
|
353
353
|
registerChatCommands
|
|
354
354
|
};
|
|
355
|
-
//# sourceMappingURL=chat-
|
|
355
|
+
//# sourceMappingURL=chat-3PQDDLVR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/ipfs.ts"],"sourcesContent":["/**\n * IPFS metadata upload/fetch via Pinata.\n *\n * Used for syndicate metadata (name, description, strategies, terms).\n * Requires PINATA_API_KEY and PINATA_GATEWAY env vars.\n */\n\nexport interface SyndicateMetadata {\n schema: string;\n name: string;\n description: string;\n logo?: string;\n chain: string;\n strategies: {\n id: string;\n name: string;\n description: string;\n protocols: string[];\n riskLevel: string;\n }[];\n terms: {\n minDeposit?: string;\n minDepositFormatted?: string;\n feeModel?: string;\n lockPeriod?: number;\n };\n links: {\n moltbook?: string;\n dashboard?: string;\n github?: string;\n };\n}\n\n// Bundled Pinata credentials — used by all CLI users for syndicate metadata.\n// Override with PINATA_API_KEY / PINATA_GATEWAY env vars if needed.\nconst BUNDLED_PINATA_JWT =\n \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySW5mb3JtYXRpb24iOnsiaWQiOiI2NDQ0MGViOC1hYTYyLTQzY2EtOGYwNC04MDZjZmNjY2Y4YTUiLCJlbWFpbCI6ImltdGhhdGNhcmxvc0BnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicGluX3BvbGljeSI6eyJyZWdpb25zIjpbeyJkZXNpcmVkUmVwbGljYXRpb25Db3VudCI6MSwiaWQiOiJGUkExIn1dLCJ2ZXJzaW9uIjoxfSwibWZhX2VuYWJsZWQiOmZhbHNlLCJzdGF0dXMiOiJBQ1RJVkUifSwiYXV0aGVudGljYXRpb25UeXBlIjoic2NvcGVkS2V5Iiwic2NvcGVkS2V5S2V5IjoiMWJhZWFmMzQwODM3MGQ0NGZkZWEiLCJzY29wZWRLZXlTZWNyZXQiOiIzNDcxMmU5MTkyYTgxNWFhMGRmNjUyYjYyMDQzODQ1MDJjMmU0YWE0MDhkZTJmOTU2NWYwOTk3YTNlY2U3NGU3IiwiZXhwIjoxODAxMjc2ODExfQ.7OMJiOATpqkSwe7Orrpt2b8H_-czH-W61vBm4AHtqfA\";\nconst BUNDLED_PINATA_GATEWAY = \"https://sherwood.mypinata.cloud\";\n\nfunction getPinataApiKey(): string {\n return process.env.PINATA_API_KEY || BUNDLED_PINATA_JWT;\n}\n\nfunction getPinataGateway(): string {\n return process.env.PINATA_GATEWAY || BUNDLED_PINATA_GATEWAY;\n}\n\n/**\n * Pin arbitrary JSON to IPFS via Pinata.\n * Used for research results and other generic JSON payloads.\n * Returns the IPFS URI (ipfs://Qm...).\n */\nexport async function pinJSON(content: Record<string, unknown>, name: string): Promise<string> {\n const apiKey = getPinataApiKey();\n\n const response = await fetch(\"https://api.pinata.cloud/pinning/pinJSONToIPFS\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n pinataContent: content,\n pinataMetadata: { name },\n }),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Pinata upload failed (${response.status}): ${text}`);\n }\n\n const result = (await response.json()) as { IpfsHash: string };\n return `ipfs://${result.IpfsHash}`;\n}\n\n/**\n * Upload syndicate metadata to IPFS via Pinata.\n * Returns the IPFS URI (ipfs://Qm...).\n */\nexport async function uploadMetadata(metadata: SyndicateMetadata): Promise<string> {\n const apiKey = getPinataApiKey();\n\n const response = await fetch(\"https://api.pinata.cloud/pinning/pinJSONToIPFS\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n pinataContent: metadata,\n pinataMetadata: {\n name: `sherwood-syndicate-${metadata.name.toLowerCase().replace(/\\s+/g, \"-\")}`,\n },\n }),\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(`Pinata upload failed (${response.status}): ${text}`);\n }\n\n const result = (await response.json()) as { IpfsHash: string };\n return `ipfs://${result.IpfsHash}`;\n}\n\n/**\n * Fetch and parse metadata from an IPFS URI.\n * Supports ipfs:// protocol URIs and raw CIDs.\n */\nexport async function fetchMetadata(ipfsURI: string): Promise<SyndicateMetadata> {\n const gateway = getPinataGateway();\n let cid: string;\n\n if (ipfsURI.startsWith(\"ipfs://\")) {\n cid = ipfsURI.slice(7);\n } else if (ipfsURI.startsWith(\"Qm\") || ipfsURI.startsWith(\"bafy\")) {\n cid = ipfsURI;\n } else {\n throw new Error(`Invalid IPFS URI: ${ipfsURI}`);\n }\n\n const url = `${gateway}/ipfs/${cid}`;\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch metadata from ${url} (${response.status})`);\n }\n\n return (await response.json()) as SyndicateMetadata;\n}\n"],"mappings":";AAmCA,IAAM,qBACJ;AACF,IAAM,yBAAyB;AAE/B,SAAS,kBAA0B;AACjC,SAAO,QAAQ,IAAI,kBAAkB;AACvC;AAEA,SAAS,mBAA2B;AAClC,SAAO,QAAQ,IAAI,kBAAkB;AACvC;AAOA,eAAsB,QAAQ,SAAkC,MAA+B;AAC7F,QAAM,SAAS,gBAAgB;AAE/B,QAAM,WAAW,MAAM,MAAM,kDAAkD;AAAA,IAC7E,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe,UAAU,MAAM;AAAA,IACjC;AAAA,IACA,MAAM,KAAK,UAAU;AAAA,MACnB,eAAe;AAAA,MACf,gBAAgB,EAAE,KAAK;AAAA,IACzB,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,IAAI,MAAM,yBAAyB,SAAS,MAAM,MAAM,IAAI,EAAE;AAAA,EACtE;AAEA,QAAM,SAAU,MAAM,SAAS,KAAK;AACpC,SAAO,UAAU,OAAO,QAAQ;AAClC;AAMA,eAAsB,eAAe,UAA8C;AACjF,QAAM,SAAS,gBAAgB;AAE/B,QAAM,WAAW,MAAM,MAAM,kDAAkD;AAAA,IAC7E,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe,UAAU,MAAM;AAAA,IACjC;AAAA,IACA,MAAM,KAAK,UAAU;AAAA,MACnB,eAAe;AAAA,MACf,gBAAgB;AAAA,QACd,MAAM,sBAAsB,SAAS,KAAK,YAAY,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAAA,MAC9E;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,IAAI,MAAM,yBAAyB,SAAS,MAAM,MAAM,IAAI,EAAE;AAAA,EACtE;AAEA,QAAM,SAAU,MAAM,SAAS,KAAK;AACpC,SAAO,UAAU,OAAO,QAAQ;AAClC;AAMA,eAAsB,cAAc,SAA6C;AAC/E,QAAM,UAAU,iBAAiB;AACjC,MAAI;AAEJ,MAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,UAAM,QAAQ,MAAM,CAAC;AAAA,EACvB,WAAW,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,MAAM,GAAG;AACjE,UAAM;AAAA,EACR,OAAO;AACL,UAAM,IAAI,MAAM,qBAAqB,OAAO,EAAE;AAAA,EAChD;AAEA,QAAM,MAAM,GAAG,OAAO,SAAS,GAAG;AAClC,QAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,iCAAiC,GAAG,KAAK,SAAS,MAAM,GAAG;AAAA,EAC7E;AAEA,SAAQ,MAAM,SAAS,KAAK;AAC9B;","names":[]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
SHERWOOD,
|
|
6
6
|
SYNDICATE_FACTORY_ABI,
|
|
7
7
|
SYNDICATE_VAULT_ABI
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-X34TJQ4P.js";
|
|
9
9
|
import {
|
|
10
10
|
getAccount,
|
|
11
11
|
getPublicClient,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-IIDZ2TK5.js";
|
|
20
20
|
|
|
21
21
|
// src/lib/vault.ts
|
|
22
|
-
import { formatUnits
|
|
22
|
+
import { formatUnits } from "viem";
|
|
23
23
|
var _vaultOverride = null;
|
|
24
24
|
function setVaultAddress(addr) {
|
|
25
25
|
_vaultOverride = addr;
|
|
@@ -74,18 +74,6 @@ async function deposit(amount) {
|
|
|
74
74
|
args: [amount, account.address]
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
async function ragequit() {
|
|
78
|
-
const wallet = getWalletClient();
|
|
79
|
-
const account = getAccount();
|
|
80
|
-
return wallet.writeContract({
|
|
81
|
-
account: getAccount(),
|
|
82
|
-
chain: getChain(),
|
|
83
|
-
address: getVaultAddress(),
|
|
84
|
-
abi: SYNDICATE_VAULT_ABI,
|
|
85
|
-
functionName: "ragequit",
|
|
86
|
-
args: [account.address]
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
77
|
async function executeBatch(calls) {
|
|
90
78
|
const wallet = getWalletClient();
|
|
91
79
|
return wallet.writeContract({
|
|
@@ -103,37 +91,6 @@ async function executeBatch(calls) {
|
|
|
103
91
|
]
|
|
104
92
|
});
|
|
105
93
|
}
|
|
106
|
-
async function simulateBatch(calls) {
|
|
107
|
-
const client = getPublicClient();
|
|
108
|
-
const vaultAddress = getVaultAddress();
|
|
109
|
-
const calldata = encodeFunctionData({
|
|
110
|
-
abi: SYNDICATE_VAULT_ABI,
|
|
111
|
-
functionName: "simulateBatch",
|
|
112
|
-
args: [
|
|
113
|
-
calls.map((c) => ({
|
|
114
|
-
target: c.target,
|
|
115
|
-
data: c.data,
|
|
116
|
-
value: c.value
|
|
117
|
-
}))
|
|
118
|
-
]
|
|
119
|
-
});
|
|
120
|
-
const { data } = await client.call({
|
|
121
|
-
to: vaultAddress,
|
|
122
|
-
data: calldata
|
|
123
|
-
});
|
|
124
|
-
if (!data) {
|
|
125
|
-
throw new Error("simulateBatch returned no data");
|
|
126
|
-
}
|
|
127
|
-
const decoded = decodeFunctionResult({
|
|
128
|
-
abi: SYNDICATE_VAULT_ABI,
|
|
129
|
-
functionName: "simulateBatch",
|
|
130
|
-
data
|
|
131
|
-
});
|
|
132
|
-
return decoded.map((r) => ({
|
|
133
|
-
success: r.success,
|
|
134
|
-
returnData: r.returnData
|
|
135
|
-
}));
|
|
136
|
-
}
|
|
137
94
|
async function approveDepositor(depositor) {
|
|
138
95
|
const wallet = getWalletClient();
|
|
139
96
|
return wallet.writeContract({
|
|
@@ -249,7 +206,7 @@ async function getVaultInfo() {
|
|
|
249
206
|
}
|
|
250
207
|
|
|
251
208
|
// src/lib/ens.ts
|
|
252
|
-
import { encodeFunctionData
|
|
209
|
+
import { encodeFunctionData } from "viem";
|
|
253
210
|
import { namehash } from "viem/ens";
|
|
254
211
|
var ENS_DOMAIN = "sherwoodagent.eth";
|
|
255
212
|
function getFactoryAddress() {
|
|
@@ -312,7 +269,7 @@ async function setTextRecord(subdomain, key, value, vaultAddress) {
|
|
|
312
269
|
const l2Registry = ENS().L2_REGISTRY;
|
|
313
270
|
const node = getSubdomainNode(subdomain);
|
|
314
271
|
setVaultAddress(vaultAddress);
|
|
315
|
-
const setTextData =
|
|
272
|
+
const setTextData = encodeFunctionData({
|
|
316
273
|
abi: L2_REGISTRY_ABI,
|
|
317
274
|
functionName: "setText",
|
|
318
275
|
args: [node, key, value]
|
|
@@ -337,9 +294,7 @@ export {
|
|
|
337
294
|
getVaultAddress,
|
|
338
295
|
getAssetDecimals,
|
|
339
296
|
deposit,
|
|
340
|
-
ragequit,
|
|
341
297
|
executeBatch,
|
|
342
|
-
simulateBatch,
|
|
343
298
|
approveDepositor,
|
|
344
299
|
removeDepositor,
|
|
345
300
|
isAgent,
|
|
@@ -351,4 +306,4 @@ export {
|
|
|
351
306
|
setTextRecord,
|
|
352
307
|
getTextRecord
|
|
353
308
|
};
|
|
354
|
-
//# sourceMappingURL=chunk-
|
|
309
|
+
//# sourceMappingURL=chunk-SQID2KF4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/vault.ts","../src/lib/ens.ts"],"sourcesContent":["/**\n * SyndicateVault contract wrapper.\n *\n * The vault is the onchain identity — it holds all positions via delegatecall\n * to a shared BatchExecutorLib. No separate executor contract needed.\n */\n\nimport type { Address, Hex } from \"viem\";\nimport { formatUnits } from \"viem\";\nimport { getChain } from \"./network.js\";\nimport { getPublicClient, getWalletClient, getAccount } from \"./client.js\";\nimport { SYNDICATE_VAULT_ABI, ERC20_ABI } from \"./abis.js\";\nimport type { BatchCall } from \"./batch.js\";\nimport { getChainContracts } from \"./config.js\";\n\n// Per-command override (set by --vault flag in index.ts)\nlet _vaultOverride: Address | null = null;\n\nexport function setVaultAddress(addr: Address): void {\n _vaultOverride = addr;\n}\n\nexport function getVaultAddress(): Address {\n // 1. Per-command override (--vault flag)\n if (_vaultOverride) return _vaultOverride;\n\n // 2. Config (~/.sherwood/config.json) — default vault\n const chainId = getChain().id;\n const fromConfig = getChainContracts(chainId).vault;\n if (fromConfig) return fromConfig as Address;\n\n throw new Error(\n \"Vault address not found. Pass --vault <addr> or run 'sherwood config set --vault <addr>'.\",\n );\n}\n\n// ── Asset Helpers ──\n\n/**\n * Read the vault's underlying ERC-20 asset address.\n */\nexport async function getAssetAddress(): Promise<Address> {\n const client = getPublicClient();\n return client.readContract({\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"asset\",\n }) as Promise<Address>;\n}\n\n/**\n * Read decimals from the vault's underlying asset.\n * Works with any ERC-20 (USDC=6, WETH=18, WBTC=8, etc.).\n */\nexport async function getAssetDecimals(): Promise<number> {\n const client = getPublicClient();\n const asset = await getAssetAddress();\n return client.readContract({\n address: asset,\n abi: ERC20_ABI,\n functionName: \"decimals\",\n }) as Promise<number>;\n}\n\n// ── LP Functions ──\n\n/**\n * Deposit into the vault. Handles approval + deposit for the vault's asset.\n */\nexport async function deposit(amount: bigint): Promise<Hex> {\n const wallet = getWalletClient();\n const client = getPublicClient();\n const vaultAddress = getVaultAddress();\n const account = getAccount();\n\n // Approve vault to pull the underlying asset\n const asset = await getAssetAddress();\n const approveHash = await wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: asset,\n abi: ERC20_ABI,\n functionName: \"approve\",\n args: [vaultAddress, amount],\n });\n await client.waitForTransactionReceipt({ hash: approveHash });\n\n // Deposit\n return wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"deposit\",\n args: [amount, account.address],\n });\n}\n\n// ── Batch Execution ──\n\n/**\n * Execute a batch of protocol calls through the vault (owner only).\n * The vault delegatecalls to the executor lib.\n * All calls execute as the vault — positions live on the vault.\n */\nexport async function executeBatch(calls: BatchCall[]): Promise<Hex> {\n const wallet = getWalletClient();\n\n return wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"executeBatch\",\n args: [\n calls.map((c) => ({\n target: c.target,\n data: c.data,\n value: c.value,\n })),\n ],\n });\n}\n\n// ── Depositor Management ──\n\n/**\n * Approve a depositor address (owner only).\n */\nexport async function approveDepositor(depositor: Address): Promise<Hex> {\n const wallet = getWalletClient();\n return wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"approveDepositor\",\n args: [depositor],\n });\n}\n\n/**\n * Remove a depositor from the whitelist (owner only).\n */\nexport async function removeDepositor(depositor: Address): Promise<Hex> {\n const wallet = getWalletClient();\n return wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"removeDepositor\",\n args: [depositor],\n });\n}\n\n/**\n * Approve multiple depositors in a batch (owner only).\n */\nexport async function approveDepositors(depositors: Address[]): Promise<Hex> {\n const wallet = getWalletClient();\n return wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"approveDepositors\",\n args: [depositors],\n });\n}\n\n/**\n * Check if an address is a registered agent on the vault.\n */\nexport async function isAgent(agentAddress: Address): Promise<boolean> {\n const client = getPublicClient();\n return client.readContract({\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"isAgent\",\n args: [agentAddress],\n }) as Promise<boolean>;\n}\n\n/**\n * Check if an address is an approved depositor.\n */\nexport async function isApprovedDepositor(depositor: Address): Promise<boolean> {\n const client = getPublicClient();\n return client.readContract({\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"isApprovedDepositor\",\n args: [depositor],\n }) as Promise<boolean>;\n}\n\n/**\n * Get LP share balance and asset value.\n */\nexport async function getBalance(address?: Address): Promise<{\n shares: bigint;\n assetsValue: string;\n percentOfVault: string;\n}> {\n const client = getPublicClient();\n const vaultAddress = getVaultAddress();\n const account = address || getAccount().address;\n\n const [shares, totalSupply] = await Promise.all([\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"balanceOf\",\n args: [account],\n }) as Promise<bigint>,\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"totalSupply\",\n }) as Promise<bigint>,\n ]);\n\n let assetsValue = 0n;\n if (shares > 0n) {\n assetsValue = (await client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"convertToAssets\",\n args: [shares],\n })) as bigint;\n }\n\n const percent =\n totalSupply > 0n ? ((Number(shares) / Number(totalSupply)) * 100).toFixed(2) : \"0.00\";\n\n const decimals = await getAssetDecimals();\n\n return {\n shares,\n assetsValue: formatUnits(assetsValue, decimals),\n percentOfVault: `${percent}%`,\n };\n}\n\n// ── Agent Management ──\n\n/**\n * Register a new agent (owner only). Requires ERC-8004 agent identity.\n */\nexport async function registerAgent(\n agentId: bigint,\n agentAddress: Address,\n): Promise<Hex> {\n const wallet = getWalletClient();\n const client = getPublicClient();\n\n const hash = await wallet.writeContract({\n account: getAccount(),\n chain: getChain(),\n address: getVaultAddress(),\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"registerAgent\",\n args: [agentId, agentAddress],\n });\n\n await client.waitForTransactionReceipt({ hash });\n return hash;\n}\n\n// ── Views ──\n\nexport interface VaultInfo {\n address: Address;\n totalAssets: string;\n agentCount: bigint;\n redemptionsLocked: boolean;\n managementFeeBps: bigint;\n}\n\n/**\n * Get vault overview info.\n */\nexport async function getVaultInfo(): Promise<VaultInfo> {\n const client = getPublicClient();\n const vaultAddress = getVaultAddress();\n\n const [totalAssets, agentCount, redemptionsLocked, managementFeeBps, decimals] =\n await Promise.all([\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"totalAssets\",\n }) as Promise<bigint>,\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"getAgentCount\",\n }) as Promise<bigint>,\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"redemptionsLocked\",\n }) as Promise<boolean>,\n client.readContract({\n address: vaultAddress,\n abi: SYNDICATE_VAULT_ABI,\n functionName: \"managementFeeBps\",\n }) as Promise<bigint>,\n getAssetDecimals(),\n ]);\n\n return {\n address: vaultAddress,\n totalAssets: formatUnits(totalAssets, decimals),\n agentCount,\n redemptionsLocked,\n managementFeeBps,\n };\n}\n","/**\n * ENS resolution + text records via Durin L2Registry on Base.\n *\n * Two responsibilities:\n * 1. Resolve syndicate subdomain → on-chain syndicate data (via factory)\n * 2. Read/write ENS text records (via L2Registry, routed through vault's executeBatch)\n *\n * The vault owns the ENS subdomain node (registered in the factory via\n * `ensRegistrar.register(subdomain, vault)`). Only the vault can write text\n * records. We route writes through vault.executeBatch → L2Registry.setText,\n * which executes as the vault via delegatecall to the shared executor lib.\n */\n\nimport { encodeFunctionData } from \"viem\";\nimport type { Address, Hex } from \"viem\";\nimport { namehash } from \"viem/ens\";\nimport { getPublicClient, getWalletClient, getAccount } from \"./client.js\";\nimport { getChain, getNetwork } from \"./network.js\";\nimport { SYNDICATE_FACTORY_ABI, L2_REGISTRY_ABI } from \"./abis.js\";\nimport { ENS, SHERWOOD } from \"./addresses.js\";\nimport * as vaultLib from \"./vault.js\";\n\n/**\n * Wait for a transaction to be mined before proceeding.\n */\nasync function waitForTx(hash: Hex): Promise<void> {\n const client = getPublicClient();\n await client.waitForTransactionReceipt({ hash });\n}\n\nconst ENS_DOMAIN = \"sherwoodagent.eth\";\n\nfunction getFactoryAddress(): Address {\n return SHERWOOD().FACTORY;\n}\n\n// ── Syndicate Resolution (via factory) ──\n\nexport interface SyndicateResolution {\n id: bigint;\n vault: Address;\n creator: Address;\n subdomain: string;\n}\n\n/**\n * Resolve a syndicate subdomain to its on-chain data.\n * Uses factory.subdomainToSyndicate() → factory.syndicates().\n */\nexport async function resolveSyndicate(subdomain: string): Promise<SyndicateResolution> {\n const client = getPublicClient();\n const factory = getFactoryAddress();\n\n // Get syndicate ID from subdomain\n const syndicateId = (await client.readContract({\n address: factory,\n abi: SYNDICATE_FACTORY_ABI,\n functionName: \"subdomainToSyndicate\",\n args: [subdomain],\n })) as bigint;\n\n if (syndicateId === 0n) {\n throw new Error(`Syndicate \"${subdomain}\" not found`);\n }\n\n // Get full syndicate record\n const result = (await client.readContract({\n address: factory,\n abi: SYNDICATE_FACTORY_ABI,\n functionName: \"syndicates\",\n args: [syndicateId],\n })) as [bigint, Address, Address, string, bigint, boolean, string];\n\n return {\n id: result[0],\n vault: result[1],\n creator: result[2],\n subdomain: result[6],\n };\n}\n\n/**\n * Reverse lookup: vault address → syndicate info.\n * Uses factory.vaultToSyndicate() → factory.syndicates().\n */\nexport async function resolveVaultSyndicate(\n vaultAddress: Address,\n): Promise<SyndicateResolution> {\n const client = getPublicClient();\n const factory = getFactoryAddress();\n\n const syndicateId = (await client.readContract({\n address: factory,\n abi: SYNDICATE_FACTORY_ABI,\n functionName: \"vaultToSyndicate\",\n args: [vaultAddress],\n })) as bigint;\n\n if (syndicateId === 0n) {\n throw new Error(`No syndicate found for vault ${vaultAddress}`);\n }\n\n const result = (await client.readContract({\n address: factory,\n abi: SYNDICATE_FACTORY_ABI,\n functionName: \"syndicates\",\n args: [syndicateId],\n })) as [bigint, Address, Address, string, bigint, boolean, string];\n\n return {\n id: result[0],\n vault: result[1],\n creator: result[2],\n subdomain: result[6],\n };\n}\n\n// ── ENS Text Records (via L2Registry) ──\n\n/**\n * Compute the ENS node hash for a subdomain under sherwoodagent.eth.\n */\nfunction getSubdomainNode(subdomain: string): Hex {\n return namehash(`${subdomain}.${ENS_DOMAIN}`);\n}\n\n/**\n * Write a text record to the L2Registry via the vault's executeBatch.\n *\n * The vault owns the ENS node, so only the vault can call setText.\n * We route the call through vault.executeBatch (delegatecall → executor lib → L2Registry),\n * which means L2Registry sees msg.sender = vault address.\n *\n * Requires the caller to be a registered agent on the vault (creator is auto-registered).\n */\nexport async function setTextRecord(\n subdomain: string,\n key: string,\n value: string,\n vaultAddress: Address,\n): Promise<Hex> {\n const l2Registry = ENS().L2_REGISTRY;\n const node = getSubdomainNode(subdomain);\n\n vaultLib.setVaultAddress(vaultAddress);\n\n // Encode the L2Registry.setText call\n const setTextData = encodeFunctionData({\n abi: L2_REGISTRY_ABI,\n functionName: \"setText\",\n args: [node, key, value],\n });\n\n // Route through vault.executeBatch (owner only)\n return vaultLib.executeBatch(\n [{ target: l2Registry, data: setTextData, value: 0n }],\n );\n}\n\n/**\n * Read a text record from the L2Registry.\n * Used to look up xmtpGroupId when not cached locally.\n */\nexport async function getTextRecord(\n subdomain: string,\n key: string,\n): Promise<string> {\n const client = getPublicClient();\n const node = getSubdomainNode(subdomain);\n\n return client.readContract({\n address: ENS().L2_REGISTRY,\n abi: L2_REGISTRY_ABI,\n functionName: \"text\",\n args: [node, key],\n }) as Promise<string>;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
EAS_ABI,
|
|
3
3
|
EAS_CONTRACTS,
|
|
4
4
|
EAS_SCHEMAS
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-X34TJQ4P.js";
|
|
6
6
|
import {
|
|
7
7
|
getAccount,
|
|
8
8
|
getPublicClient,
|
|
@@ -286,4 +286,4 @@ export {
|
|
|
286
286
|
queryApprovals,
|
|
287
287
|
queryJoinRequests
|
|
288
288
|
};
|
|
289
|
-
//# sourceMappingURL=chunk-
|
|
289
|
+
//# sourceMappingURL=chunk-TTGRYJYY.js.map
|
|
@@ -108,20 +108,16 @@ var ROBINHOOD_TESTNET_AGENT_REGISTRY = {
|
|
|
108
108
|
var BASE_SHERWOOD = {
|
|
109
109
|
FACTORY: ZERO,
|
|
110
110
|
// TODO: set after mainnet deploy
|
|
111
|
-
STRATEGY_REGISTRY: ZERO,
|
|
112
|
-
// TODO: set after mainnet deploy
|
|
113
111
|
GOVERNOR: ZERO
|
|
114
112
|
// TODO: set after mainnet deploy
|
|
115
113
|
};
|
|
116
114
|
var BASE_SEPOLIA_SHERWOOD = {
|
|
117
|
-
FACTORY: "
|
|
118
|
-
|
|
119
|
-
GOVERNOR: "0xB478cdb99260F46191C9e5Da405F7E70eEA23dE4"
|
|
115
|
+
FACTORY: "0x2efD194ADb3Db40E0e6faAe06c4e602c7a3D9199",
|
|
116
|
+
GOVERNOR: "0x6fc67a9aD15eD3A9DE25c29CCe10D662079129E2"
|
|
120
117
|
};
|
|
121
118
|
var ROBINHOOD_TESTNET_SHERWOOD = {
|
|
122
|
-
FACTORY: "
|
|
123
|
-
|
|
124
|
-
GOVERNOR: "0x866996c808E6244216a3d0df15464FCF5d495394"
|
|
119
|
+
FACTORY: "0x72981ce06d9c183953F6a8Cc587a8C28C785670e",
|
|
120
|
+
GOVERNOR: "0x7E1F71A72a88Ce8418cf82CACDE9ce5Bbbcf5772"
|
|
125
121
|
};
|
|
126
122
|
var BASE_VENICE = {
|
|
127
123
|
VVV: "0xacfe6019ed1a7dc6f7b508c02d1b04ec88cc21bf",
|
|
@@ -274,14 +270,6 @@ var SYNDICATE_VAULT_ABI = [
|
|
|
274
270
|
inputs: [{ name: "account", type: "address" }],
|
|
275
271
|
outputs: [{ name: "", type: "uint256" }]
|
|
276
272
|
},
|
|
277
|
-
// LP
|
|
278
|
-
{
|
|
279
|
-
name: "ragequit",
|
|
280
|
-
type: "function",
|
|
281
|
-
stateMutability: "nonpayable",
|
|
282
|
-
inputs: [{ name: "receiver", type: "address" }],
|
|
283
|
-
outputs: [{ name: "assets", type: "uint256" }]
|
|
284
|
-
},
|
|
285
273
|
// Batch execution (owner-only, via delegatecall to shared executor lib)
|
|
286
274
|
{
|
|
287
275
|
name: "executeBatch",
|
|
@@ -300,32 +288,6 @@ var SYNDICATE_VAULT_ABI = [
|
|
|
300
288
|
],
|
|
301
289
|
outputs: []
|
|
302
290
|
},
|
|
303
|
-
{
|
|
304
|
-
name: "simulateBatch",
|
|
305
|
-
type: "function",
|
|
306
|
-
stateMutability: "nonpayable",
|
|
307
|
-
inputs: [
|
|
308
|
-
{
|
|
309
|
-
name: "calls",
|
|
310
|
-
type: "tuple[]",
|
|
311
|
-
components: [
|
|
312
|
-
{ name: "target", type: "address" },
|
|
313
|
-
{ name: "data", type: "bytes" },
|
|
314
|
-
{ name: "value", type: "uint256" }
|
|
315
|
-
]
|
|
316
|
-
}
|
|
317
|
-
],
|
|
318
|
-
outputs: [
|
|
319
|
-
{
|
|
320
|
-
name: "results",
|
|
321
|
-
type: "tuple[]",
|
|
322
|
-
components: [
|
|
323
|
-
{ name: "success", type: "bool" },
|
|
324
|
-
{ name: "returnData", type: "bytes" }
|
|
325
|
-
]
|
|
326
|
-
}
|
|
327
|
-
]
|
|
328
|
-
},
|
|
329
291
|
// Agent management
|
|
330
292
|
{
|
|
331
293
|
name: "registerAgent",
|
|
@@ -490,15 +452,6 @@ var SYNDICATE_VAULT_ABI = [
|
|
|
490
452
|
type: "event",
|
|
491
453
|
inputs: [{ name: "agentAddress", type: "address", indexed: true }]
|
|
492
454
|
},
|
|
493
|
-
{
|
|
494
|
-
name: "Ragequit",
|
|
495
|
-
type: "event",
|
|
496
|
-
inputs: [
|
|
497
|
-
{ name: "lp", type: "address", indexed: true },
|
|
498
|
-
{ name: "shares", type: "uint256", indexed: false },
|
|
499
|
-
{ name: "assets", type: "uint256", indexed: false }
|
|
500
|
-
]
|
|
501
|
-
},
|
|
502
455
|
{
|
|
503
456
|
name: "DepositorApproved",
|
|
504
457
|
type: "event",
|
|
@@ -509,16 +462,6 @@ var SYNDICATE_VAULT_ABI = [
|
|
|
509
462
|
type: "event",
|
|
510
463
|
inputs: [{ name: "depositor", type: "address", indexed: true }]
|
|
511
464
|
},
|
|
512
|
-
{
|
|
513
|
-
name: "RedemptionsLockedEvent",
|
|
514
|
-
type: "event",
|
|
515
|
-
inputs: []
|
|
516
|
-
},
|
|
517
|
-
{
|
|
518
|
-
name: "RedemptionsUnlockedEvent",
|
|
519
|
-
type: "event",
|
|
520
|
-
inputs: []
|
|
521
|
-
},
|
|
522
465
|
// Governor integration
|
|
523
466
|
{
|
|
524
467
|
name: "governor",
|
|
@@ -540,13 +483,6 @@ var SYNDICATE_VAULT_ABI = [
|
|
|
540
483
|
stateMutability: "view",
|
|
541
484
|
inputs: [],
|
|
542
485
|
outputs: [{ name: "", type: "uint256" }]
|
|
543
|
-
},
|
|
544
|
-
{
|
|
545
|
-
name: "setGovernor",
|
|
546
|
-
type: "function",
|
|
547
|
-
stateMutability: "nonpayable",
|
|
548
|
-
inputs: [{ name: "governor_", type: "address" }],
|
|
549
|
-
outputs: []
|
|
550
486
|
}
|
|
551
487
|
];
|
|
552
488
|
var UNISWAP_QUOTER_V2_ABI = [
|
|
@@ -684,7 +620,7 @@ var SYNDICATE_FACTORY_ABI = [
|
|
|
684
620
|
]
|
|
685
621
|
},
|
|
686
622
|
{
|
|
687
|
-
name: "
|
|
623
|
+
name: "getAllActiveSyndicates",
|
|
688
624
|
type: "function",
|
|
689
625
|
stateMutability: "view",
|
|
690
626
|
inputs: [],
|
|
@@ -1026,7 +962,16 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1026
962
|
{ name: "performanceFeeBps", type: "uint256" },
|
|
1027
963
|
{ name: "strategyDuration", type: "uint256" },
|
|
1028
964
|
{
|
|
1029
|
-
name: "
|
|
965
|
+
name: "executeCalls",
|
|
966
|
+
type: "tuple[]",
|
|
967
|
+
components: [
|
|
968
|
+
{ name: "target", type: "address" },
|
|
969
|
+
{ name: "data", type: "bytes" },
|
|
970
|
+
{ name: "value", type: "uint256" }
|
|
971
|
+
]
|
|
972
|
+
},
|
|
973
|
+
{
|
|
974
|
+
name: "settlementCalls",
|
|
1030
975
|
type: "tuple[]",
|
|
1031
976
|
components: [
|
|
1032
977
|
{ name: "target", type: "address" },
|
|
@@ -1034,7 +979,6 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1034
979
|
{ name: "value", type: "uint256" }
|
|
1035
980
|
]
|
|
1036
981
|
},
|
|
1037
|
-
{ name: "splitIndex", type: "uint256" },
|
|
1038
982
|
{
|
|
1039
983
|
name: "coProposers",
|
|
1040
984
|
type: "tuple[]",
|
|
@@ -1070,24 +1014,6 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1070
1014
|
inputs: [{ name: "proposalId", type: "uint256" }],
|
|
1071
1015
|
outputs: []
|
|
1072
1016
|
},
|
|
1073
|
-
{
|
|
1074
|
-
name: "settleByAgent",
|
|
1075
|
-
type: "function",
|
|
1076
|
-
stateMutability: "nonpayable",
|
|
1077
|
-
inputs: [
|
|
1078
|
-
{ name: "proposalId", type: "uint256" },
|
|
1079
|
-
{
|
|
1080
|
-
name: "calls",
|
|
1081
|
-
type: "tuple[]",
|
|
1082
|
-
components: [
|
|
1083
|
-
{ name: "target", type: "address" },
|
|
1084
|
-
{ name: "data", type: "bytes" },
|
|
1085
|
-
{ name: "value", type: "uint256" }
|
|
1086
|
-
]
|
|
1087
|
-
}
|
|
1088
|
-
],
|
|
1089
|
-
outputs: []
|
|
1090
|
-
},
|
|
1091
1017
|
{
|
|
1092
1018
|
name: "emergencySettle",
|
|
1093
1019
|
type: "function",
|
|
@@ -1136,7 +1062,6 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1136
1062
|
{ name: "vault", type: "address" },
|
|
1137
1063
|
{ name: "metadataURI", type: "string" },
|
|
1138
1064
|
{ name: "performanceFeeBps", type: "uint256" },
|
|
1139
|
-
{ name: "splitIndex", type: "uint256" },
|
|
1140
1065
|
{ name: "strategyDuration", type: "uint256" },
|
|
1141
1066
|
{ name: "votesFor", type: "uint256" },
|
|
1142
1067
|
{ name: "votesAgainst", type: "uint256" },
|
|
@@ -1213,7 +1138,7 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1213
1138
|
components: [
|
|
1214
1139
|
{ name: "votingPeriod", type: "uint256" },
|
|
1215
1140
|
{ name: "executionWindow", type: "uint256" },
|
|
1216
|
-
{ name: "
|
|
1141
|
+
{ name: "vetoThresholdBps", type: "uint256" },
|
|
1217
1142
|
{ name: "maxPerformanceFeeBps", type: "uint256" },
|
|
1218
1143
|
{ name: "cooldownPeriod", type: "uint256" },
|
|
1219
1144
|
{ name: "collaborationWindow", type: "uint256" },
|
|
@@ -1284,8 +1209,8 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1284
1209
|
{ name: "vault", type: "address", indexed: true },
|
|
1285
1210
|
{ name: "performanceFeeBps", type: "uint256", indexed: false },
|
|
1286
1211
|
{ name: "strategyDuration", type: "uint256", indexed: false },
|
|
1287
|
-
{ name: "
|
|
1288
|
-
{ name: "
|
|
1212
|
+
{ name: "executeCallCount", type: "uint256", indexed: false },
|
|
1213
|
+
{ name: "settlementCallCount", type: "uint256", indexed: false },
|
|
1289
1214
|
{ name: "metadataURI", type: "string", indexed: false }
|
|
1290
1215
|
]
|
|
1291
1216
|
},
|
|
@@ -1343,10 +1268,10 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1343
1268
|
outputs: []
|
|
1344
1269
|
},
|
|
1345
1270
|
{
|
|
1346
|
-
name: "
|
|
1271
|
+
name: "setVetoThresholdBps",
|
|
1347
1272
|
type: "function",
|
|
1348
1273
|
stateMutability: "nonpayable",
|
|
1349
|
-
inputs: [{ name: "
|
|
1274
|
+
inputs: [{ name: "newVetoThresholdBps", type: "uint256" }],
|
|
1350
1275
|
outputs: []
|
|
1351
1276
|
},
|
|
1352
1277
|
{
|
|
@@ -1369,6 +1294,54 @@ var SYNDICATE_GOVERNOR_ABI = [
|
|
|
1369
1294
|
stateMutability: "nonpayable",
|
|
1370
1295
|
inputs: [{ name: "newCooldownPeriod", type: "uint256" }],
|
|
1371
1296
|
outputs: []
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
name: "vetoProposal",
|
|
1300
|
+
type: "function",
|
|
1301
|
+
stateMutability: "nonpayable",
|
|
1302
|
+
inputs: [{ name: "proposalId", type: "uint256" }],
|
|
1303
|
+
outputs: []
|
|
1304
|
+
},
|
|
1305
|
+
{
|
|
1306
|
+
name: "setProtocolFeeBps",
|
|
1307
|
+
type: "function",
|
|
1308
|
+
stateMutability: "nonpayable",
|
|
1309
|
+
inputs: [{ name: "newProtocolFeeBps", type: "uint256" }],
|
|
1310
|
+
outputs: []
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
name: "getExecuteCalls",
|
|
1314
|
+
type: "function",
|
|
1315
|
+
stateMutability: "view",
|
|
1316
|
+
inputs: [{ name: "proposalId", type: "uint256" }],
|
|
1317
|
+
outputs: [
|
|
1318
|
+
{
|
|
1319
|
+
name: "",
|
|
1320
|
+
type: "tuple[]",
|
|
1321
|
+
components: [
|
|
1322
|
+
{ name: "target", type: "address" },
|
|
1323
|
+
{ name: "data", type: "bytes" },
|
|
1324
|
+
{ name: "value", type: "uint256" }
|
|
1325
|
+
]
|
|
1326
|
+
}
|
|
1327
|
+
]
|
|
1328
|
+
},
|
|
1329
|
+
{
|
|
1330
|
+
name: "getSettlementCalls",
|
|
1331
|
+
type: "function",
|
|
1332
|
+
stateMutability: "view",
|
|
1333
|
+
inputs: [{ name: "proposalId", type: "uint256" }],
|
|
1334
|
+
outputs: [
|
|
1335
|
+
{
|
|
1336
|
+
name: "",
|
|
1337
|
+
type: "tuple[]",
|
|
1338
|
+
components: [
|
|
1339
|
+
{ name: "target", type: "address" },
|
|
1340
|
+
{ name: "data", type: "bytes" },
|
|
1341
|
+
{ name: "value", type: "uint256" }
|
|
1342
|
+
]
|
|
1343
|
+
}
|
|
1344
|
+
]
|
|
1372
1345
|
}
|
|
1373
1346
|
];
|
|
1374
1347
|
|
|
@@ -1392,4 +1365,4 @@ export {
|
|
|
1392
1365
|
EAS_ABI,
|
|
1393
1366
|
SYNDICATE_GOVERNOR_ABI
|
|
1394
1367
|
};
|
|
1395
|
-
//# sourceMappingURL=chunk-
|
|
1368
|
+
//# sourceMappingURL=chunk-X34TJQ4P.js.map
|