@sherwoodagent/cli 0.41.5 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{addresses-RQ7DTIBS.js → addresses-DCQMJJFI.js} +3 -3
- package/dist/{agent-SXEV65ME.js → agent-5YEJ6W6W.js} +5 -5
- package/dist/{chat-D5OF4OTL.js → chat-UWJ6JBFE.js} +7 -7
- package/dist/{chunk-YRCJ3NUX.js → chunk-4OAZ7TP5.js} +4 -4
- package/dist/{chunk-4QNPS5LI.js → chunk-5Q3VT6NQ.js} +24 -5
- package/dist/{chunk-4QNPS5LI.js.map → chunk-5Q3VT6NQ.js.map} +1 -1
- package/dist/{chunk-XZHIZVJ3.js → chunk-6U3A6ZJ2.js} +4 -4
- package/dist/{chunk-2YOXRATG.js → chunk-FOOZC4AM.js} +11 -1
- package/dist/{chunk-2YOXRATG.js.map → chunk-FOOZC4AM.js.map} +1 -1
- package/dist/{chunk-D2UYGUV2.js → chunk-GMVDHSCF.js} +2 -2
- package/dist/{chunk-DG2K6CPY.js → chunk-JNDEZFXW.js} +110 -68
- package/dist/chunk-JNDEZFXW.js.map +1 -0
- package/dist/{chunk-M2NJPATE.js → chunk-SWKHSKDH.js} +2 -2
- package/dist/{chunk-YYB4TF6D.js → chunk-T2IA6CCW.js} +4 -4
- package/dist/{chunk-MT3VS3GZ.js → chunk-XAUMJZU2.js} +2 -2
- package/dist/{client-VSBQM2LU.js → client-DRVUILER.js} +3 -3
- package/dist/{eas-QNZKCEP7.js → eas-KBU2BAOD.js} +15 -5
- package/dist/{governor-RE6IJMUJ.js → governor-KH7RNH2E.js} +5 -5
- package/dist/index.js +161 -43
- package/dist/index.js.map +1 -1
- package/dist/{network-R5NFPIAF.js → network-3HB46JMQ.js} +6 -4
- package/dist/{price-GY3JQ2OK.js → price-TTQWI672.js} +4 -4
- package/dist/{research-SVWNPHIN.js → research-J3HYU3N6.js} +7 -7
- package/dist/{research-PB22GPXC.js → research-NR4VC5LN.js} +4 -4
- package/dist/{session-3Z6I2IM3.js → session-NUPHC6ZN.js} +8 -8
- package/dist/{trade-E5HSZE44.js → trade-VGECC4QZ.js} +13 -13
- package/dist/{xmtp-VPGQE4IP.js → xmtp-JO7W6RFK.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-DG2K6CPY.js.map +0 -1
- /package/dist/{addresses-RQ7DTIBS.js.map → addresses-DCQMJJFI.js.map} +0 -0
- /package/dist/{agent-SXEV65ME.js.map → agent-5YEJ6W6W.js.map} +0 -0
- /package/dist/{chat-D5OF4OTL.js.map → chat-UWJ6JBFE.js.map} +0 -0
- /package/dist/{chunk-YRCJ3NUX.js.map → chunk-4OAZ7TP5.js.map} +0 -0
- /package/dist/{chunk-XZHIZVJ3.js.map → chunk-6U3A6ZJ2.js.map} +0 -0
- /package/dist/{chunk-D2UYGUV2.js.map → chunk-GMVDHSCF.js.map} +0 -0
- /package/dist/{chunk-M2NJPATE.js.map → chunk-SWKHSKDH.js.map} +0 -0
- /package/dist/{chunk-YYB4TF6D.js.map → chunk-T2IA6CCW.js.map} +0 -0
- /package/dist/{chunk-MT3VS3GZ.js.map → chunk-XAUMJZU2.js.map} +0 -0
- /package/dist/{client-VSBQM2LU.js.map → client-DRVUILER.js.map} +0 -0
- /package/dist/{eas-QNZKCEP7.js.map → eas-KBU2BAOD.js.map} +0 -0
- /package/dist/{governor-RE6IJMUJ.js.map → governor-KH7RNH2E.js.map} +0 -0
- /package/dist/{network-R5NFPIAF.js.map → network-3HB46JMQ.js.map} +0 -0
- /package/dist/{price-GY3JQ2OK.js.map → price-TTQWI672.js.map} +0 -0
- /package/dist/{research-SVWNPHIN.js.map → research-J3HYU3N6.js.map} +0 -0
- /package/dist/{research-PB22GPXC.js.map → research-NR4VC5LN.js.map} +0 -0
- /package/dist/{session-3Z6I2IM3.js.map → session-NUPHC6ZN.js.map} +0 -0
- /package/dist/{trade-E5HSZE44.js.map → trade-VGECC4QZ.js.map} +0 -0
- /package/dist/{xmtp-VPGQE4IP.js.map → xmtp-JO7W6RFK.js.map} +0 -0
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EAS_CONTRACTS,
|
|
3
3
|
EAS_SCHEMAS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-XAUMJZU2.js";
|
|
5
5
|
import {
|
|
6
6
|
getAccount,
|
|
7
7
|
getPublicClient,
|
|
8
8
|
waitForReceipt,
|
|
9
9
|
writeContractWithRetry
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SWKHSKDH.js";
|
|
11
11
|
import {
|
|
12
|
+
CHAIN_REGISTRY,
|
|
12
13
|
getChain,
|
|
13
14
|
getChainConfig,
|
|
14
|
-
getNetwork
|
|
15
|
-
|
|
15
|
+
getNetwork,
|
|
16
|
+
isTestnet,
|
|
17
|
+
withNetwork
|
|
18
|
+
} from "./chunk-FOOZC4AM.js";
|
|
16
19
|
import {
|
|
17
20
|
EAS_ABI
|
|
18
21
|
} from "./chunk-D77JGXIV.js";
|
|
@@ -30,11 +33,15 @@ var TRADE_EXECUTED_PARAMS = parseAbiParameters("address, address, uint256, strin
|
|
|
30
33
|
function assertSchemasRegistered() {
|
|
31
34
|
const schemas = EAS_SCHEMAS();
|
|
32
35
|
if (schemas.SYNDICATE_JOIN_REQUEST === ZERO_BYTES32 || schemas.AGENT_APPROVED === ZERO_BYTES32) {
|
|
36
|
+
const flag = isTestnet() ? " --testnet" : "";
|
|
33
37
|
throw new Error(
|
|
34
|
-
|
|
38
|
+
`EAS schemas not registered on ${getNetwork()}. Run: cd cli && npx tsx scripts/register-eas-schemas.ts${flag}`
|
|
35
39
|
);
|
|
36
40
|
}
|
|
37
41
|
}
|
|
42
|
+
function getEasNetwork() {
|
|
43
|
+
return isTestnet() ? "base-sepolia" : "base";
|
|
44
|
+
}
|
|
38
45
|
function getEasGraphqlUrl() {
|
|
39
46
|
const url = getChainConfig().easGraphqlUrl;
|
|
40
47
|
if (!url) {
|
|
@@ -45,12 +52,16 @@ function getEasGraphqlUrl() {
|
|
|
45
52
|
return url;
|
|
46
53
|
}
|
|
47
54
|
function getEasScanUrl(uid) {
|
|
48
|
-
const host =
|
|
55
|
+
const host = CHAIN_REGISTRY[getEasNetwork()].easScanHost;
|
|
49
56
|
if (!host) {
|
|
50
|
-
throw new Error(`EAS scan is not
|
|
57
|
+
throw new Error(`EAS scan host is not configured on ${getEasNetwork()}.`);
|
|
51
58
|
}
|
|
52
59
|
return `https://${host}/attestation/view/${uid}`;
|
|
53
60
|
}
|
|
61
|
+
function getEasExplorerUrl(txHash) {
|
|
62
|
+
const host = CHAIN_REGISTRY[getEasNetwork()].explorerHost;
|
|
63
|
+
return `https://${host}/tx/${txHash}`;
|
|
64
|
+
}
|
|
54
65
|
function extractAttestationUid(receipt) {
|
|
55
66
|
for (const log of receipt.logs) {
|
|
56
67
|
if (log.topics[0] !== ATTESTED_TOPIC) continue;
|
|
@@ -60,7 +71,8 @@ function extractAttestationUid(receipt) {
|
|
|
60
71
|
}
|
|
61
72
|
throw new Error("Could not extract attestation UID from transaction receipt");
|
|
62
73
|
}
|
|
63
|
-
var
|
|
74
|
+
var CHAIN_PREFIX_RE = /^\[chain:([a-z0-9-]+)\]\s*/;
|
|
75
|
+
var REF_PREFIX_RE = /^(?:\[chain:[a-z0-9-]+\]\s*)?\[ref:(\d+)\]\s*/;
|
|
64
76
|
function formatMessageWithRef(message, referrerAgentId) {
|
|
65
77
|
if (referrerAgentId == null) return message;
|
|
66
78
|
return `[ref:${referrerAgentId}] ${message}`;
|
|
@@ -69,72 +81,85 @@ function parseReferrer(message) {
|
|
|
69
81
|
const match = message.match(REF_PREFIX_RE);
|
|
70
82
|
return match ? parseInt(match[1], 10) : null;
|
|
71
83
|
}
|
|
84
|
+
function formatMessageWithChain(message, sourceNetwork, easNetwork) {
|
|
85
|
+
if (sourceNetwork === easNetwork) return message;
|
|
86
|
+
return `[chain:${sourceNetwork}] ${message}`;
|
|
87
|
+
}
|
|
88
|
+
function parseChain(message) {
|
|
89
|
+
const match = message.match(CHAIN_PREFIX_RE);
|
|
90
|
+
return match ? match[1] : null;
|
|
91
|
+
}
|
|
72
92
|
function stripReferrerPrefix(message) {
|
|
73
|
-
return message.replace(REF_PREFIX_RE, "");
|
|
93
|
+
return message.replace(REF_PREFIX_RE, "").replace(CHAIN_PREFIX_RE, "");
|
|
74
94
|
}
|
|
75
95
|
async function createJoinRequest(syndicateId, agentId, vault, creatorAddress, message, referrerAgentId) {
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
const sourceNetwork = getNetwork();
|
|
97
|
+
const easNetwork = getEasNetwork();
|
|
98
|
+
const messageWithRef = formatMessageWithRef(message, referrerAgentId);
|
|
99
|
+
const encodedMessage = formatMessageWithChain(messageWithRef, sourceNetwork, easNetwork);
|
|
100
|
+
return withNetwork(easNetwork, async () => {
|
|
101
|
+
assertSchemasRegistered();
|
|
102
|
+
const data = encodeAbiParameters(JOIN_REQUEST_PARAMS, [
|
|
103
|
+
syndicateId,
|
|
104
|
+
agentId,
|
|
105
|
+
vault,
|
|
106
|
+
encodedMessage
|
|
107
|
+
]);
|
|
108
|
+
const hash = await writeContractWithRetry({
|
|
109
|
+
account: getAccount(),
|
|
110
|
+
chain: getChain(),
|
|
111
|
+
address: EAS_CONTRACTS().EAS,
|
|
112
|
+
abi: EAS_ABI,
|
|
113
|
+
functionName: "attest",
|
|
114
|
+
args: [{
|
|
115
|
+
schema: EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST,
|
|
116
|
+
data: {
|
|
117
|
+
recipient: creatorAddress,
|
|
118
|
+
expirationTime: 0n,
|
|
119
|
+
revocable: true,
|
|
120
|
+
refUID: ZERO_BYTES32,
|
|
121
|
+
data,
|
|
122
|
+
value: 0n
|
|
123
|
+
}
|
|
124
|
+
}],
|
|
125
|
+
value: 0n
|
|
126
|
+
});
|
|
127
|
+
const receipt = await waitForReceipt(hash);
|
|
128
|
+
const uid = extractAttestationUid(receipt);
|
|
129
|
+
return { uid, hash };
|
|
103
130
|
});
|
|
104
|
-
const receipt = await waitForReceipt(hash);
|
|
105
|
-
const uid = extractAttestationUid(receipt);
|
|
106
|
-
return { uid, hash };
|
|
107
131
|
}
|
|
108
132
|
async function createApproval(syndicateId, agentId, vault, agentAddress) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
return withNetwork(getEasNetwork(), async () => {
|
|
134
|
+
assertSchemasRegistered();
|
|
135
|
+
const data = encodeAbiParameters(AGENT_APPROVED_PARAMS, [
|
|
136
|
+
syndicateId,
|
|
137
|
+
agentId,
|
|
138
|
+
vault
|
|
139
|
+
]);
|
|
140
|
+
const hash = await writeContractWithRetry({
|
|
141
|
+
account: getAccount(),
|
|
142
|
+
chain: getChain(),
|
|
143
|
+
address: EAS_CONTRACTS().EAS,
|
|
144
|
+
abi: EAS_ABI,
|
|
145
|
+
functionName: "attest",
|
|
146
|
+
args: [{
|
|
147
|
+
schema: EAS_SCHEMAS().AGENT_APPROVED,
|
|
148
|
+
data: {
|
|
149
|
+
recipient: agentAddress,
|
|
150
|
+
expirationTime: 0n,
|
|
151
|
+
revocable: true,
|
|
152
|
+
refUID: ZERO_BYTES32,
|
|
153
|
+
data,
|
|
154
|
+
value: 0n
|
|
155
|
+
}
|
|
156
|
+
}],
|
|
157
|
+
value: 0n
|
|
158
|
+
});
|
|
159
|
+
const receipt = await waitForReceipt(hash);
|
|
160
|
+
const uid = extractAttestationUid(receipt);
|
|
161
|
+
return { uid, hash };
|
|
134
162
|
});
|
|
135
|
-
const receipt = await waitForReceipt(hash);
|
|
136
|
-
const uid = extractAttestationUid(receipt);
|
|
137
|
-
return { uid, hash };
|
|
138
163
|
}
|
|
139
164
|
async function revokeAttestation(schemaUid, attestationUid) {
|
|
140
165
|
return writeContractWithRetry({
|
|
@@ -153,6 +178,12 @@ async function revokeAttestation(schemaUid, attestationUid) {
|
|
|
153
178
|
value: 0n
|
|
154
179
|
});
|
|
155
180
|
}
|
|
181
|
+
async function revokeJoinRequest(attestationUid) {
|
|
182
|
+
return withNetwork(
|
|
183
|
+
getEasNetwork(),
|
|
184
|
+
() => revokeAttestation(EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST, attestationUid)
|
|
185
|
+
);
|
|
186
|
+
}
|
|
156
187
|
async function createResearchAttestation(provider, queryType, prompt, costUsdc, resultUri, recipient) {
|
|
157
188
|
const schemas = EAS_SCHEMAS();
|
|
158
189
|
if (schemas.X402_RESEARCH === ZERO_BYTES32) {
|
|
@@ -295,6 +326,9 @@ function skipAttestation(name) {
|
|
|
295
326
|
return { uid: ZERO_BYTES32, hash: ZERO_BYTES32 };
|
|
296
327
|
}
|
|
297
328
|
async function queryApprovals(attester) {
|
|
329
|
+
return withNetwork(getEasNetwork(), () => queryApprovalsImpl(attester));
|
|
330
|
+
}
|
|
331
|
+
async function queryApprovalsImpl(attester) {
|
|
298
332
|
assertSchemasRegistered();
|
|
299
333
|
const schemaUid = EAS_SCHEMAS().AGENT_APPROVED;
|
|
300
334
|
const url = getEasGraphqlUrl();
|
|
@@ -345,6 +379,9 @@ async function queryApprovals(attester) {
|
|
|
345
379
|
});
|
|
346
380
|
}
|
|
347
381
|
async function queryJoinRequests(recipient) {
|
|
382
|
+
return withNetwork(getEasNetwork(), () => queryJoinRequestsImpl(recipient));
|
|
383
|
+
}
|
|
384
|
+
async function queryJoinRequestsImpl(recipient) {
|
|
348
385
|
assertSchemasRegistered();
|
|
349
386
|
const schemaUid = EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST;
|
|
350
387
|
const url = getEasGraphqlUrl();
|
|
@@ -397,13 +434,18 @@ async function queryJoinRequests(recipient) {
|
|
|
397
434
|
}
|
|
398
435
|
|
|
399
436
|
export {
|
|
437
|
+
getEasNetwork,
|
|
400
438
|
getEasScanUrl,
|
|
439
|
+
getEasExplorerUrl,
|
|
401
440
|
formatMessageWithRef,
|
|
402
441
|
parseReferrer,
|
|
442
|
+
formatMessageWithChain,
|
|
443
|
+
parseChain,
|
|
403
444
|
stripReferrerPrefix,
|
|
404
445
|
createJoinRequest,
|
|
405
446
|
createApproval,
|
|
406
447
|
revokeAttestation,
|
|
448
|
+
revokeJoinRequest,
|
|
407
449
|
createResearchAttestation,
|
|
408
450
|
createVeniceProvisionAttestation,
|
|
409
451
|
createVeniceInferenceAttestation,
|
|
@@ -411,4 +453,4 @@ export {
|
|
|
411
453
|
queryApprovals,
|
|
412
454
|
queryJoinRequests
|
|
413
455
|
};
|
|
414
|
-
//# sourceMappingURL=chunk-
|
|
456
|
+
//# sourceMappingURL=chunk-JNDEZFXW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/eas.ts"],"sourcesContent":["/**\n * EAS (Ethereum Attestation Service) wrapper for syndicate join requests and approvals.\n *\n * Uses viem for on-chain writes and the EAS GraphQL API for queries.\n * No ethers dependency — attestation data is encoded with viem's encodeAbiParameters.\n */\n\nimport type { Address, Hex } from \"viem\";\nimport { encodeAbiParameters, parseAbiParameters, decodeAbiParameters } from \"viem\";\nimport { getPublicClient, getAccount, writeContractWithRetry, waitForReceipt } from \"./client.js\";\nimport { getChain, getNetwork, getChainConfig, withNetwork, isTestnet, CHAIN_REGISTRY, type Network } from \"./network.js\";\nimport { EAS_CONTRACTS, EAS_SCHEMAS } from \"./addresses.js\";\nimport { EAS_ABI } from \"./abis.js\";\n\n// ── Schema definitions ──\n\nconst ZERO_BYTES32 = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as Hex;\n\n// keccak256(\"Attested(address,address,bytes32,bytes32)\")\nconst ATTESTED_TOPIC = \"0x8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b35\" as Hex;\n\nconst JOIN_REQUEST_PARAMS = parseAbiParameters(\"uint256, uint256, address, string\");\nconst AGENT_APPROVED_PARAMS = parseAbiParameters(\"uint256, uint256, address\");\nconst X402_RESEARCH_PARAMS = parseAbiParameters(\"string, string, string, string, string\");\nconst VENICE_PROVISION_PARAMS = parseAbiParameters(\"address, string\");\nconst VENICE_INFERENCE_PARAMS = parseAbiParameters(\"string, uint256, uint256, string\");\nconst TRADE_EXECUTED_PARAMS = parseAbiParameters(\"address, address, uint256, string, string, string\");\n\nfunction assertSchemasRegistered() {\n const schemas = EAS_SCHEMAS();\n if (schemas.SYNDICATE_JOIN_REQUEST === ZERO_BYTES32 || schemas.AGENT_APPROVED === ZERO_BYTES32) {\n const flag = isTestnet() ? \" --testnet\" : \"\";\n throw new Error(\n `EAS schemas not registered on ${getNetwork()}. Run: cd cli && npx tsx scripts/register-eas-schemas.ts${flag}`,\n );\n }\n}\n\n/**\n * The chain where syndicate-coordination attestations live. Base for mainnet\n * flows, Base-Sepolia for testnet flows, regardless of which chain the\n * syndicate itself runs on. EAS isn't deployed on HyperEVM / Robinhood, but\n * we still want creators to see join requests and approvals — pinning all\n * coordination attestations to Base solves that without a per-chain EAS\n * deployment. Vault addresses inside the attestation payload remain unique\n * across chains (post-CREATE3 too), so cross-chain syndicates don't collide\n * in the EAS index.\n */\nexport function getEasNetwork(): Network {\n return isTestnet() ? \"base-sepolia\" : \"base\";\n}\n\n// ── GraphQL ──\n\nfunction getEasGraphqlUrl(): string {\n const url = getChainConfig().easGraphqlUrl;\n if (!url) {\n throw new Error(\n `EAS is not available on ${getNetwork()}. Attestation operations require a chain with EAS (e.g. base, base-sepolia).`,\n );\n }\n return url;\n}\n\nexport function getEasScanUrl(uid: Hex): string {\n // Always use the EAS chain's scan host — attestations live on Base, even\n // for HyperEVM syndicates. Read the registry directly rather than mutating\n // the singleton, since this is a pure URL build.\n const host = CHAIN_REGISTRY[getEasNetwork()].easScanHost;\n if (!host) {\n throw new Error(`EAS scan host is not configured on ${getEasNetwork()}.`);\n }\n return `https://${host}/attestation/view/${uid}`;\n}\n\n/**\n * The block-explorer URL for a tx that ran on the EAS chain. Use this for\n * attestation create/revoke txs so the link points to base(-sepolia) scan\n * even when the active --chain is HyperEVM / Robinhood.\n */\nexport function getEasExplorerUrl(txHash: string): string {\n const host = CHAIN_REGISTRY[getEasNetwork()].explorerHost;\n return `https://${host}/tx/${txHash}`;\n}\n\n// ── Attestation Creation ──\n\n/**\n * Extract the attestation UID from a transaction receipt.\n * The EAS contract emits: event Attested(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID)\n * uid is a non-indexed parameter in the event data.\n */\nfunction extractAttestationUid(receipt: { logs: readonly { topics: readonly Hex[]; data: Hex }[] }): Hex {\n for (const log of receipt.logs) {\n // Match the Attested event signature to avoid false positives from other events\n if (log.topics[0] !== ATTESTED_TOPIC) continue;\n // Attested event has 4 topics (sig + 3 indexed) and data contains the uid (bytes32)\n if (log.topics.length === 4 && log.data.length >= 66) {\n return (\"0x\" + log.data.slice(2, 66)) as Hex;\n }\n }\n throw new Error(\"Could not extract attestation UID from transaction receipt\");\n}\n\n// ── Message Prefix Helpers ──\n//\n// Join-request messages can carry CLI metadata as bracketed prefixes. Order\n// is `[chain:<network>] [ref:<id>] body` — chain outer because the chain\n// disambiguates the syndicate, ref inner because it's optional and per-user.\n// Both prefixes are stripped before display.\n\nconst CHAIN_PREFIX_RE = /^\\[chain:([a-z0-9-]+)\\]\\s*/;\n// Tolerate an optional leading [chain:...] prefix so parseReferrer keeps\n// working when both metadata fields are encoded.\nconst REF_PREFIX_RE = /^(?:\\[chain:[a-z0-9-]+\\]\\s*)?\\[ref:(\\d+)\\]\\s*/;\n\n/**\n * Format a message with an optional referrer prefix.\n * e.g. formatMessageWithRef(\"Hello\", 42) → \"[ref:42] Hello\"\n */\nexport function formatMessageWithRef(message: string, referrerAgentId?: number): string {\n if (referrerAgentId == null) return message;\n return `[ref:${referrerAgentId}] ${message}`;\n}\n\n/**\n * Parse a referrer agentId from a message, if present.\n * e.g. parseReferrer(\"[ref:42] Hello\") → 42\n * parseReferrer(\"[chain:hyperevm] [ref:42] Hello\") → 42\n */\nexport function parseReferrer(message: string): number | null {\n const match = message.match(REF_PREFIX_RE);\n return match ? parseInt(match[1], 10) : null;\n}\n\n/**\n * Format a message with a `[chain:<network>]` prefix when the syndicate\n * lives on a chain other than the EAS chain (Base / Base-Sepolia). Skipped\n * when source matches the EAS chain to avoid noise on the common case.\n */\nexport function formatMessageWithChain(\n message: string,\n sourceNetwork: Network,\n easNetwork: Network,\n): string {\n if (sourceNetwork === easNetwork) return message;\n return `[chain:${sourceNetwork}] ${message}`;\n}\n\n/**\n * Parse the source-chain prefix from a message, if present.\n * Returns null when no `[chain:<network>]` prefix is found, which means the\n * attestation was created from the EAS chain itself (e.g. base attestation\n * for a base syndicate).\n */\nexport function parseChain(message: string): string | null {\n const match = message.match(CHAIN_PREFIX_RE);\n return match ? match[1] : null;\n}\n\n/**\n * Strip both `[chain:...]` and `[ref:...]` prefixes from a message,\n * returning the clean human-facing body. Name kept for backward compat.\n */\nexport function stripReferrerPrefix(message: string): string {\n // REF_PREFIX_RE already swallows an optional leading chain prefix when ref\n // is present; the second replace handles a chain prefix without ref.\n return message.replace(REF_PREFIX_RE, \"\").replace(CHAIN_PREFIX_RE, \"\");\n}\n\n/**\n * Create a SYNDICATE_JOIN_REQUEST attestation.\n * Attester: the calling agent. Recipient: the syndicate creator.\n * If referrerAgentId is provided, it's embedded in the message as a [ref:N] prefix.\n */\nexport async function createJoinRequest(\n syndicateId: bigint,\n agentId: bigint,\n vault: Address,\n creatorAddress: Address,\n message: string,\n referrerAgentId?: number,\n): Promise<{ uid: Hex; hash: Hex }> {\n // Capture the syndicate's source chain BEFORE switching to the EAS chain\n // so we can encode it in the message prefix.\n const sourceNetwork = getNetwork();\n const easNetwork = getEasNetwork();\n const messageWithRef = formatMessageWithRef(message, referrerAgentId);\n const encodedMessage = formatMessageWithChain(messageWithRef, sourceNetwork, easNetwork);\n\n return withNetwork(easNetwork, async () => {\n assertSchemasRegistered();\n\n const data = encodeAbiParameters(JOIN_REQUEST_PARAMS, [\n syndicateId, agentId, vault, encodedMessage,\n ]);\n\n const hash = await writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST,\n data: {\n recipient: creatorAddress,\n expirationTime: 0n,\n revocable: true,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n });\n}\n\n/**\n * Create an AGENT_APPROVED attestation.\n * Attester: the syndicate creator. Recipient: the agent wallet.\n */\nexport async function createApproval(\n syndicateId: bigint,\n agentId: bigint,\n vault: Address,\n agentAddress: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n return withNetwork(getEasNetwork(), async () => {\n assertSchemasRegistered();\n\n const data = encodeAbiParameters(AGENT_APPROVED_PARAMS, [\n syndicateId, agentId, vault,\n ]);\n\n const hash = await writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: EAS_SCHEMAS().AGENT_APPROVED,\n data: {\n recipient: agentAddress,\n expirationTime: 0n,\n revocable: true,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n });\n}\n\n/**\n * Revoke an attestation. Only the original attester can revoke. Uses the\n * active chain's EAS — call sites that revoke syndicate-coordination\n * attestations (join requests, approvals) should go through\n * `revokeJoinRequest` / `revokeApproval` so the revoke lands on the same\n * chain as the original attestation (Base / Base-Sepolia).\n */\nexport async function revokeAttestation(\n schemaUid: Hex,\n attestationUid: Hex,\n): Promise<Hex> {\n return writeContractWithRetry({\n account: getAccount(),\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"revoke\",\n args: [{\n schema: schemaUid,\n data: {\n uid: attestationUid,\n value: 0n,\n },\n }],\n value: 0n,\n });\n}\n\n/** Revoke a SYNDICATE_JOIN_REQUEST on the EAS chain (Base / Base-Sepolia). */\nexport async function revokeJoinRequest(attestationUid: Hex): Promise<Hex> {\n return withNetwork(getEasNetwork(), () =>\n revokeAttestation(EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST, attestationUid),\n );\n}\n\n/**\n * Create an X402_RESEARCH attestation — records a research query on-chain.\n * Attester: the agent. Recipient: vault address (links to syndicate) or agent itself.\n * Schema: \"string provider, string queryType, string prompt, string costUsdc, string resultUri\"\n */\nexport async function createResearchAttestation(\n provider: string,\n queryType: string,\n prompt: string,\n costUsdc: string,\n resultUri: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.X402_RESEARCH === ZERO_BYTES32) {\n throw new Error(\n \"X402_RESEARCH schema not registered. Run: npx tsx scripts/register-eas-schemas.ts --testnet\",\n );\n }\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(X402_RESEARCH_PARAMS, [\n provider, queryType, prompt, costUsdc, resultUri,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.X402_RESEARCH,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n\n return { uid, hash };\n}\n\n/**\n * Create a VENICE_PROVISION attestation — records that an agent provisioned a Venice API key.\n * Schema: \"address agent, string status\"\n */\nexport async function createVeniceProvisionAttestation(\n agent: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.VENICE_PROVISION === ZERO_BYTES32) return skipAttestation(\"VENICE_PROVISION\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(VENICE_PROVISION_PARAMS, [agent, \"provisioned\"]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.VENICE_PROVISION,\n data: {\n recipient: agent,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/**\n * Create a VENICE_INFERENCE attestation — records an inference call.\n * Attester: the agent. Recipient: vault address (links to syndicate) or agent itself.\n * Schema: \"string model, uint256 promptTokens, uint256 completionTokens, string promptHash\"\n */\nexport async function createVeniceInferenceAttestation(\n model: string,\n promptTokens: number,\n completionTokens: number,\n promptHash: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.VENICE_INFERENCE === ZERO_BYTES32) return skipAttestation(\"VENICE_INFERENCE\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(VENICE_INFERENCE_PARAMS, [\n model,\n BigInt(promptTokens),\n BigInt(completionTokens),\n promptHash,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.VENICE_INFERENCE,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/**\n * Create a TRADE_EXECUTED attestation — records a swap on-chain.\n * Attester: the agent. Recipient: vault address (links to syndicate) or agent itself.\n * Schema: \"address tokenIn, address tokenOut, uint256 amountIn, string amountOut, string txHash, string routing\"\n */\nexport async function createTradeAttestation(\n tokenIn: Address,\n tokenOut: Address,\n amountIn: bigint,\n amountOut: string,\n txHash: string,\n routing: string,\n recipient?: Address,\n): Promise<{ uid: Hex; hash: Hex }> {\n const schemas = EAS_SCHEMAS();\n if (schemas.TRADE_EXECUTED === ZERO_BYTES32) return skipAttestation(\"TRADE_EXECUTED\");\n\n const client = getPublicClient();\n const account = getAccount();\n\n const data = encodeAbiParameters(TRADE_EXECUTED_PARAMS, [\n tokenIn, tokenOut, amountIn, amountOut, txHash, routing,\n ]);\n\n const hash = await writeContractWithRetry({\n account,\n chain: getChain(),\n address: EAS_CONTRACTS().EAS,\n abi: EAS_ABI,\n functionName: \"attest\",\n args: [{\n schema: schemas.TRADE_EXECUTED,\n data: {\n recipient: recipient ?? account.address,\n expirationTime: 0n,\n revocable: false,\n refUID: ZERO_BYTES32,\n data,\n value: 0n,\n },\n }],\n value: 0n,\n });\n\n const receipt = await waitForReceipt(hash);\n const uid = extractAttestationUid(receipt);\n return { uid, hash };\n}\n\n/** Skip attestation gracefully when schema isn't registered on this chain. */\nfunction skipAttestation(name: string): { uid: Hex; hash: Hex } {\n return { uid: ZERO_BYTES32, hash: ZERO_BYTES32 };\n}\n\n// ── Attestation Queries ──\n\nexport interface JoinRequestAttestation {\n uid: Hex;\n attester: Address;\n recipient: Address;\n time: number;\n decoded: {\n syndicateId: bigint;\n agentId: bigint;\n vault: Address;\n message: string;\n };\n}\n\n/**\n * Query pending (non-revoked) join requests for a given recipient (creator address).\n * Uses the EAS GraphQL API.\n */\nexport interface ApprovalAttestation {\n uid: Hex;\n attester: Address;\n recipient: Address;\n time: number;\n decoded: {\n syndicateId: bigint;\n agentId: bigint;\n vault: Address;\n };\n}\n\n/**\n * Query existing (non-revoked) AGENT_APPROVED attestations created by a given attester (creator).\n * Used to check for duplicates before creating a new approval and to filter already-approved agents from requests.\n */\nexport async function queryApprovals(\n attester: Address,\n): Promise<ApprovalAttestation[]> {\n return withNetwork(getEasNetwork(), () => queryApprovalsImpl(attester));\n}\n\nasync function queryApprovalsImpl(attester: Address): Promise<ApprovalAttestation[]> {\n assertSchemasRegistered();\n const schemaUid = EAS_SCHEMAS().AGENT_APPROVED;\n const url = getEasGraphqlUrl();\n\n const query = `\n query Approvals($schemaId: String!, $attester: String!) {\n attestations(\n where: {\n schemaId: { equals: $schemaId }\n attester: { equals: $attester }\n revoked: { equals: false }\n }\n orderBy: [{ time: desc }]\n ) {\n id\n attester\n recipient\n time\n data\n }\n }\n `;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query,\n variables: { schemaId: schemaUid, attester },\n }),\n });\n\n if (!response.ok) {\n throw new Error(`EAS GraphQL query failed: ${response.statusText}`);\n }\n\n const json = await response.json() as {\n data?: {\n attestations: Array<{\n id: string;\n attester: string;\n recipient: string;\n time: number;\n data: string;\n }>;\n };\n };\n\n if (!json.data?.attestations) return [];\n\n return json.data.attestations.map((a) => {\n const decoded = decodeAbiParameters(AGENT_APPROVED_PARAMS, a.data as Hex);\n return {\n uid: a.id as Hex,\n attester: a.attester as Address,\n recipient: a.recipient as Address,\n time: a.time,\n decoded: {\n syndicateId: decoded[0],\n agentId: decoded[1],\n vault: decoded[2],\n },\n };\n });\n}\n\nexport async function queryJoinRequests(\n recipient: Address,\n): Promise<JoinRequestAttestation[]> {\n return withNetwork(getEasNetwork(), () => queryJoinRequestsImpl(recipient));\n}\n\nasync function queryJoinRequestsImpl(recipient: Address): Promise<JoinRequestAttestation[]> {\n assertSchemasRegistered();\n const schemaUid = EAS_SCHEMAS().SYNDICATE_JOIN_REQUEST;\n const url = getEasGraphqlUrl();\n\n const query = `\n query JoinRequests($schemaId: String!, $recipient: String!) {\n attestations(\n where: {\n schemaId: { equals: $schemaId }\n recipient: { equals: $recipient }\n revoked: { equals: false }\n }\n orderBy: [{ time: desc }]\n ) {\n id\n attester\n recipient\n time\n data\n }\n }\n `;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query,\n variables: { schemaId: schemaUid, recipient },\n }),\n });\n\n if (!response.ok) {\n throw new Error(`EAS GraphQL query failed: ${response.statusText}`);\n }\n\n const json = await response.json() as {\n data?: {\n attestations: Array<{\n id: string;\n attester: string;\n recipient: string;\n time: number;\n data: string;\n }>;\n };\n };\n\n if (!json.data?.attestations) return [];\n\n return json.data.attestations.map((a) => {\n const decoded = decodeAbiParameters(JOIN_REQUEST_PARAMS, a.data as Hex);\n return {\n uid: a.id as Hex,\n attester: a.attester as Address,\n recipient: a.recipient as Address,\n time: a.time,\n decoded: {\n syndicateId: decoded[0],\n agentId: decoded[1],\n vault: decoded[2],\n message: decoded[3],\n },\n };\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAQA,SAAS,qBAAqB,oBAAoB,2BAA2B;AAQ7E,IAAM,eAAe;AAGrB,IAAM,iBAAiB;AAEvB,IAAM,sBAAsB,mBAAmB,mCAAmC;AAClF,IAAM,wBAAwB,mBAAmB,2BAA2B;AAC5E,IAAM,uBAAuB,mBAAmB,wCAAwC;AACxF,IAAM,0BAA0B,mBAAmB,iBAAiB;AACpE,IAAM,0BAA0B,mBAAmB,kCAAkC;AACrF,IAAM,wBAAwB,mBAAmB,mDAAmD;AAEpG,SAAS,0BAA0B;AACjC,QAAM,UAAU,YAAY;AAC5B,MAAI,QAAQ,2BAA2B,gBAAgB,QAAQ,mBAAmB,cAAc;AAC9F,UAAM,OAAO,UAAU,IAAI,eAAe;AAC1C,UAAM,IAAI;AAAA,MACR,iCAAiC,WAAW,CAAC,2DAA2D,IAAI;AAAA,IAC9G;AAAA,EACF;AACF;AAYO,SAAS,gBAAyB;AACvC,SAAO,UAAU,IAAI,iBAAiB;AACxC;AAIA,SAAS,mBAA2B;AAClC,QAAM,MAAM,eAAe,EAAE;AAC7B,MAAI,CAAC,KAAK;AACR,UAAM,IAAI;AAAA,MACR,2BAA2B,WAAW,CAAC;AAAA,IACzC;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,cAAc,KAAkB;AAI9C,QAAM,OAAO,eAAe,cAAc,CAAC,EAAE;AAC7C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,sCAAsC,cAAc,CAAC,GAAG;AAAA,EAC1E;AACA,SAAO,WAAW,IAAI,qBAAqB,GAAG;AAChD;AAOO,SAAS,kBAAkB,QAAwB;AACxD,QAAM,OAAO,eAAe,cAAc,CAAC,EAAE;AAC7C,SAAO,WAAW,IAAI,OAAO,MAAM;AACrC;AASA,SAAS,sBAAsB,SAA0E;AACvG,aAAW,OAAO,QAAQ,MAAM;AAE9B,QAAI,IAAI,OAAO,CAAC,MAAM,eAAgB;AAEtC,QAAI,IAAI,OAAO,WAAW,KAAK,IAAI,KAAK,UAAU,IAAI;AACpD,aAAQ,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE;AAAA,IACrC;AAAA,EACF;AACA,QAAM,IAAI,MAAM,4DAA4D;AAC9E;AASA,IAAM,kBAAkB;AAGxB,IAAM,gBAAgB;AAMf,SAAS,qBAAqB,SAAiB,iBAAkC;AACtF,MAAI,mBAAmB,KAAM,QAAO;AACpC,SAAO,QAAQ,eAAe,KAAK,OAAO;AAC5C;AAOO,SAAS,cAAc,SAAgC;AAC5D,QAAM,QAAQ,QAAQ,MAAM,aAAa;AACzC,SAAO,QAAQ,SAAS,MAAM,CAAC,GAAG,EAAE,IAAI;AAC1C;AAOO,SAAS,uBACd,SACA,eACA,YACQ;AACR,MAAI,kBAAkB,WAAY,QAAO;AACzC,SAAO,UAAU,aAAa,KAAK,OAAO;AAC5C;AAQO,SAAS,WAAW,SAAgC;AACzD,QAAM,QAAQ,QAAQ,MAAM,eAAe;AAC3C,SAAO,QAAQ,MAAM,CAAC,IAAI;AAC5B;AAMO,SAAS,oBAAoB,SAAyB;AAG3D,SAAO,QAAQ,QAAQ,eAAe,EAAE,EAAE,QAAQ,iBAAiB,EAAE;AACvE;AAOA,eAAsB,kBACpB,aACA,SACA,OACA,gBACA,SACA,iBACkC;AAGlC,QAAM,gBAAgB,WAAW;AACjC,QAAM,aAAa,cAAc;AACjC,QAAM,iBAAiB,qBAAqB,SAAS,eAAe;AACpE,QAAM,iBAAiB,uBAAuB,gBAAgB,eAAe,UAAU;AAEvF,SAAO,YAAY,YAAY,YAAY;AACzC,4BAAwB;AAExB,UAAM,OAAO,oBAAoB,qBAAqB;AAAA,MACpD;AAAA,MAAa;AAAA,MAAS;AAAA,MAAO;AAAA,IAC/B,CAAC;AAED,UAAM,OAAO,MAAM,uBAAuB;AAAA,MACxC,SAAS,WAAW;AAAA,MACpB,OAAO,SAAS;AAAA,MAChB,SAAS,cAAc,EAAE;AAAA,MACzB,KAAK;AAAA,MACL,cAAc;AAAA,MACd,MAAM,CAAC;AAAA,QACL,QAAQ,YAAY,EAAE;AAAA,QACtB,MAAM;AAAA,UACJ,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,QAAQ;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAU,MAAM,eAAe,IAAI;AACzC,UAAM,MAAM,sBAAsB,OAAO;AAEzC,WAAO,EAAE,KAAK,KAAK;AAAA,EACrB,CAAC;AACH;AAMA,eAAsB,eACpB,aACA,SACA,OACA,cACkC;AAClC,SAAO,YAAY,cAAc,GAAG,YAAY;AAC9C,4BAAwB;AAExB,UAAM,OAAO,oBAAoB,uBAAuB;AAAA,MACtD;AAAA,MAAa;AAAA,MAAS;AAAA,IACxB,CAAC;AAED,UAAM,OAAO,MAAM,uBAAuB;AAAA,MACxC,SAAS,WAAW;AAAA,MACpB,OAAO,SAAS;AAAA,MAChB,SAAS,cAAc,EAAE;AAAA,MACzB,KAAK;AAAA,MACL,cAAc;AAAA,MACd,MAAM,CAAC;AAAA,QACL,QAAQ,YAAY,EAAE;AAAA,QACtB,MAAM;AAAA,UACJ,WAAW;AAAA,UACX,gBAAgB;AAAA,UAChB,WAAW;AAAA,UACX,QAAQ;AAAA,UACR;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF,CAAC;AAAA,MACD,OAAO;AAAA,IACT,CAAC;AAED,UAAM,UAAU,MAAM,eAAe,IAAI;AACzC,UAAM,MAAM,sBAAsB,OAAO;AAEzC,WAAO,EAAE,KAAK,KAAK;AAAA,EACrB,CAAC;AACH;AASA,eAAsB,kBACpB,WACA,gBACc;AACd,SAAO,uBAAuB;AAAA,IAC5B,SAAS,WAAW;AAAA,IACpB,OAAO,SAAS;AAAA,IAChB,SAAS,cAAc,EAAE;AAAA,IACzB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK;AAAA,QACL,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AACH;AAGA,eAAsB,kBAAkB,gBAAmC;AACzE,SAAO;AAAA,IAAY,cAAc;AAAA,IAAG,MAClC,kBAAkB,YAAY,EAAE,wBAAwB,cAAc;AAAA,EACxE;AACF;AAOA,eAAsB,0BACpB,UACA,WACA,QACA,UACA,WACA,WACkC;AAClC,QAAM,UAAU,YAAY;AAC5B,MAAI,QAAQ,kBAAkB,cAAc;AAC1C,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,gBAAgB;AAC/B,QAAM,UAAU,WAAW;AAE3B,QAAM,OAAO,oBAAoB,sBAAsB;AAAA,IACrD;AAAA,IAAU;AAAA,IAAW;AAAA,IAAQ;AAAA,IAAU;AAAA,EACzC,CAAC;AAED,QAAM,OAAO,MAAM,uBAAuB;AAAA,IACxC;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,cAAc,EAAE;AAAA,IACzB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,QACJ,WAAW,aAAa,QAAQ;AAAA,QAChC,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AAED,QAAM,UAAU,MAAM,eAAe,IAAI;AACzC,QAAM,MAAM,sBAAsB,OAAO;AAEzC,SAAO,EAAE,KAAK,KAAK;AACrB;AAMA,eAAsB,iCACpB,OACkC;AAClC,QAAM,UAAU,YAAY;AAC5B,MAAI,QAAQ,qBAAqB,aAAc,QAAO,gBAAgB,kBAAkB;AAExF,QAAM,SAAS,gBAAgB;AAC/B,QAAM,UAAU,WAAW;AAE3B,QAAM,OAAO,oBAAoB,yBAAyB,CAAC,OAAO,aAAa,CAAC;AAEhF,QAAM,OAAO,MAAM,uBAAuB;AAAA,IACxC;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,cAAc,EAAE;AAAA,IACzB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,QACJ,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AAED,QAAM,UAAU,MAAM,eAAe,IAAI;AACzC,QAAM,MAAM,sBAAsB,OAAO;AACzC,SAAO,EAAE,KAAK,KAAK;AACrB;AAOA,eAAsB,iCACpB,OACA,cACA,kBACA,YACA,WACkC;AAClC,QAAM,UAAU,YAAY;AAC5B,MAAI,QAAQ,qBAAqB,aAAc,QAAO,gBAAgB,kBAAkB;AAExF,QAAM,SAAS,gBAAgB;AAC/B,QAAM,UAAU,WAAW;AAE3B,QAAM,OAAO,oBAAoB,yBAAyB;AAAA,IACxD;AAAA,IACA,OAAO,YAAY;AAAA,IACnB,OAAO,gBAAgB;AAAA,IACvB;AAAA,EACF,CAAC;AAED,QAAM,OAAO,MAAM,uBAAuB;AAAA,IACxC;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,cAAc,EAAE;AAAA,IACzB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,QACJ,WAAW,aAAa,QAAQ;AAAA,QAChC,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AAED,QAAM,UAAU,MAAM,eAAe,IAAI;AACzC,QAAM,MAAM,sBAAsB,OAAO;AACzC,SAAO,EAAE,KAAK,KAAK;AACrB;AAOA,eAAsB,uBACpB,SACA,UACA,UACA,WACA,QACA,SACA,WACkC;AAClC,QAAM,UAAU,YAAY;AAC5B,MAAI,QAAQ,mBAAmB,aAAc,QAAO,gBAAgB,gBAAgB;AAEpF,QAAM,SAAS,gBAAgB;AAC/B,QAAM,UAAU,WAAW;AAE3B,QAAM,OAAO,oBAAoB,uBAAuB;AAAA,IACtD;AAAA,IAAS;AAAA,IAAU;AAAA,IAAU;AAAA,IAAW;AAAA,IAAQ;AAAA,EAClD,CAAC;AAED,QAAM,OAAO,MAAM,uBAAuB;AAAA,IACxC;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,cAAc,EAAE;AAAA,IACzB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,MAAM,CAAC;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,MAAM;AAAA,QACJ,WAAW,aAAa,QAAQ;AAAA,QAChC,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,QAAQ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AAED,QAAM,UAAU,MAAM,eAAe,IAAI;AACzC,QAAM,MAAM,sBAAsB,OAAO;AACzC,SAAO,EAAE,KAAK,KAAK;AACrB;AAGA,SAAS,gBAAgB,MAAuC;AAC9D,SAAO,EAAE,KAAK,cAAc,MAAM,aAAa;AACjD;AAqCA,eAAsB,eACpB,UACgC;AAChC,SAAO,YAAY,cAAc,GAAG,MAAM,mBAAmB,QAAQ,CAAC;AACxE;AAEA,eAAe,mBAAmB,UAAmD;AACnF,0BAAwB;AACxB,QAAM,YAAY,YAAY,EAAE;AAChC,QAAM,MAAM,iBAAiB;AAE7B,QAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBd,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU;AAAA,MACnB;AAAA,MACA,WAAW,EAAE,UAAU,WAAW,SAAS;AAAA,IAC7C,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,6BAA6B,SAAS,UAAU,EAAE;AAAA,EACpE;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AAYjC,MAAI,CAAC,KAAK,MAAM,aAAc,QAAO,CAAC;AAEtC,SAAO,KAAK,KAAK,aAAa,IAAI,CAAC,MAAM;AACvC,UAAM,UAAU,oBAAoB,uBAAuB,EAAE,IAAW;AACxE,WAAO;AAAA,MACL,KAAK,EAAE;AAAA,MACP,UAAU,EAAE;AAAA,MACZ,WAAW,EAAE;AAAA,MACb,MAAM,EAAE;AAAA,MACR,SAAS;AAAA,QACP,aAAa,QAAQ,CAAC;AAAA,QACtB,SAAS,QAAQ,CAAC;AAAA,QAClB,OAAO,QAAQ,CAAC;AAAA,MAClB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,eAAsB,kBACpB,WACmC;AACnC,SAAO,YAAY,cAAc,GAAG,MAAM,sBAAsB,SAAS,CAAC;AAC5E;AAEA,eAAe,sBAAsB,WAAuD;AAC1F,0BAAwB;AACxB,QAAM,YAAY,YAAY,EAAE;AAChC,QAAM,MAAM,iBAAiB;AAE7B,QAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBd,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU;AAAA,MACnB;AAAA,MACA,WAAW,EAAE,UAAU,WAAW,UAAU;AAAA,IAC9C,CAAC;AAAA,EACH,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,6BAA6B,SAAS,UAAU,EAAE;AAAA,EACpE;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AAYjC,MAAI,CAAC,KAAK,MAAM,aAAc,QAAO,CAAC;AAEtC,SAAO,KAAK,KAAK,aAAa,IAAI,CAAC,MAAM;AACvC,UAAM,UAAU,oBAAoB,qBAAqB,EAAE,IAAW;AACtE,WAAO;AAAA,MACL,KAAK,EAAE;AAAA,MACP,UAAU,EAAE;AAAA,MACZ,WAAW,EAAE;AAAA,MACb,MAAM,EAAE;AAAA,MACR,SAAS;AAAA,QACP,aAAa,QAAQ,CAAC;AAAA,QACtB,SAAS,QAAQ,CAAC;AAAA,QAClB,OAAO,QAAQ,CAAC;AAAA,QAChB,SAAS,QAAQ,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getChain,
|
|
3
3
|
getRpcUrls
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FOOZC4AM.js";
|
|
5
5
|
import {
|
|
6
6
|
loadConfig
|
|
7
7
|
} from "./chunk-4EHI4SKM.js";
|
|
@@ -489,4 +489,4 @@ export {
|
|
|
489
489
|
writeContractWithRetry,
|
|
490
490
|
waitForReceipt
|
|
491
491
|
};
|
|
492
|
-
//# sourceMappingURL=chunk-
|
|
492
|
+
//# sourceMappingURL=chunk-SWKHSKDH.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SHERWOOD
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XAUMJZU2.js";
|
|
4
4
|
import {
|
|
5
5
|
getAccount,
|
|
6
6
|
getPublicClient,
|
|
7
7
|
waitForReceipt,
|
|
8
8
|
writeContractWithRetry
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SWKHSKDH.js";
|
|
10
10
|
import {
|
|
11
11
|
getChain
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-FOOZC4AM.js";
|
|
13
13
|
import {
|
|
14
14
|
SYNDICATE_GOVERNOR_ABI
|
|
15
15
|
} from "./chunk-D77JGXIV.js";
|
|
@@ -429,4 +429,4 @@ export {
|
|
|
429
429
|
vetoProposal,
|
|
430
430
|
setProtocolFeeBps
|
|
431
431
|
};
|
|
432
|
-
//# sourceMappingURL=chunk-
|
|
432
|
+
//# sourceMappingURL=chunk-T2IA6CCW.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getNetwork
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FOOZC4AM.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/addresses.ts
|
|
6
6
|
var ZERO = "0x0000000000000000000000000000000000000000";
|
|
@@ -467,4 +467,4 @@ export {
|
|
|
467
467
|
SYNTHRA,
|
|
468
468
|
CHAINLINK
|
|
469
469
|
};
|
|
470
|
-
//# sourceMappingURL=chunk-
|
|
470
|
+
//# sourceMappingURL=chunk-XAUMJZU2.js.map
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
unstickWallet,
|
|
11
11
|
waitForReceipt,
|
|
12
12
|
writeContractWithRetry
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-SWKHSKDH.js";
|
|
14
|
+
import "./chunk-FOOZC4AM.js";
|
|
15
15
|
import "./chunk-4EHI4SKM.js";
|
|
16
16
|
export {
|
|
17
17
|
detectStuckNonce,
|
|
@@ -26,4 +26,4 @@ export {
|
|
|
26
26
|
waitForReceipt,
|
|
27
27
|
writeContractWithRetry
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=client-
|
|
29
|
+
//# sourceMappingURL=client-DRVUILER.js.map
|
|
@@ -5,17 +5,22 @@ import {
|
|
|
5
5
|
createTradeAttestation,
|
|
6
6
|
createVeniceInferenceAttestation,
|
|
7
7
|
createVeniceProvisionAttestation,
|
|
8
|
+
formatMessageWithChain,
|
|
8
9
|
formatMessageWithRef,
|
|
10
|
+
getEasExplorerUrl,
|
|
11
|
+
getEasNetwork,
|
|
9
12
|
getEasScanUrl,
|
|
13
|
+
parseChain,
|
|
10
14
|
parseReferrer,
|
|
11
15
|
queryApprovals,
|
|
12
16
|
queryJoinRequests,
|
|
13
17
|
revokeAttestation,
|
|
18
|
+
revokeJoinRequest,
|
|
14
19
|
stripReferrerPrefix
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-JNDEZFXW.js";
|
|
21
|
+
import "./chunk-XAUMJZU2.js";
|
|
22
|
+
import "./chunk-SWKHSKDH.js";
|
|
23
|
+
import "./chunk-FOOZC4AM.js";
|
|
19
24
|
import "./chunk-4EHI4SKM.js";
|
|
20
25
|
import "./chunk-D77JGXIV.js";
|
|
21
26
|
export {
|
|
@@ -25,12 +30,17 @@ export {
|
|
|
25
30
|
createTradeAttestation,
|
|
26
31
|
createVeniceInferenceAttestation,
|
|
27
32
|
createVeniceProvisionAttestation,
|
|
33
|
+
formatMessageWithChain,
|
|
28
34
|
formatMessageWithRef,
|
|
35
|
+
getEasExplorerUrl,
|
|
36
|
+
getEasNetwork,
|
|
29
37
|
getEasScanUrl,
|
|
38
|
+
parseChain,
|
|
30
39
|
parseReferrer,
|
|
31
40
|
queryApprovals,
|
|
32
41
|
queryJoinRequests,
|
|
33
42
|
revokeAttestation,
|
|
43
|
+
revokeJoinRequest,
|
|
34
44
|
stripReferrerPrefix
|
|
35
45
|
};
|
|
36
|
-
//# sourceMappingURL=eas-
|
|
46
|
+
//# sourceMappingURL=eas-KBU2BAOD.js.map
|
|
@@ -34,10 +34,10 @@ import {
|
|
|
34
34
|
settleProposal,
|
|
35
35
|
vetoProposal,
|
|
36
36
|
vote
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-T2IA6CCW.js";
|
|
38
|
+
import "./chunk-XAUMJZU2.js";
|
|
39
|
+
import "./chunk-SWKHSKDH.js";
|
|
40
|
+
import "./chunk-FOOZC4AM.js";
|
|
41
41
|
import "./chunk-4EHI4SKM.js";
|
|
42
42
|
import "./chunk-D77JGXIV.js";
|
|
43
43
|
export {
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
vetoProposal,
|
|
78
78
|
vote
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=governor-
|
|
80
|
+
//# sourceMappingURL=governor-KH7RNH2E.js.map
|