@steerprotocol/curator-tools 1.7.0 → 1.9.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/README.md CHANGED
@@ -61,7 +61,7 @@ Canonical overrides are stored on **Arbitrum One**, and the payload’s `chainId
61
61
  - **Resolver (Arbitrum One)**: `0x6628d1Bf82F34de132d0e1c60DEB574C1352d5A7`
62
62
  - **Schema revocable**: `true`
63
63
  - **Schema UID**: `0xf1a6a394d1f3dd832a15e5b750963d929812e2b74d2dcea68ddf9f75691f16bf`
64
- - **Deprecated schema (no resolver)**: `0x62b656756a16bd3d2ef501cd9493c603fd90b050d6e9cfffc8e450639ce30a27` (registered with resolver `address(0)`, so it enforces no on-chain curator checks)
64
+ - **Deprecated testing-only schema (no resolver guards)**: `0x62b656756a16bd3d2ef501cd9493c603fd90b050d6e9cfffc8e450639ce30a27` (registered with resolver `address(0)`)
65
65
 
66
66
  ## User Flows
67
67
 
@@ -115,6 +115,20 @@ bytes memory data = abi.encode(vault, targetChainId, strategyTokenId, manifestCi
115
115
  const data = StrategyStore.encodeOverrideAttestationData(vault, targetChainId, 1n, manifestCid);
116
116
  ```
117
117
 
118
+ **Full EAS request defaults (TypeScript)**
119
+ ```ts
120
+ const request = StrategyStore.buildOverrideAttestationRequest(
121
+ schemaUID,
122
+ vault,
123
+ targetChainId,
124
+ 1n,
125
+ manifestCid
126
+ );
127
+ // request.data.recipient = computeVaultIdentifier(vault, targetChainId)
128
+ // request.data.revocable = false
129
+ // request.data.expirationTime = 0n
130
+ ```
131
+
118
132
  ### Managing Curators via CLI
119
133
  Authorize/revoke a curator for a specific vault.
120
134
 
@@ -172,15 +186,15 @@ import { ethers } from 'ethers';
172
186
 
173
187
  const provider = new ethers.JsonRpcProvider(RPC_URL);
174
188
 
175
- // Automatic resolution for supported networks (e.g., Arbitrum: 42161)
176
- const store = new StrategyStore({ chainId: 42161 }, provider);
189
+ // Automatic resolution defaults to Base mainnet (8453)
190
+ const store = new StrategyStore({}, provider);
177
191
 
178
192
  // OR explicit addresses
179
193
  const store2 = new StrategyStore(
180
194
  {
181
195
  resolverAddress: '0x...',
182
196
  registryAddress: '0x...', // Optional: Enables strict vault validation
183
- chainId: 42161, // Required for curator checks/updates
197
+ chainId: 8453, // Optional; defaults to Base when omitted
184
198
  },
185
199
  provider
186
200
  );
@@ -190,6 +204,25 @@ const authorized = await store2.isCurator(vaultAddress, curatorAddress);
190
204
 
191
205
  // Generate tx data for an admin dashboard
192
206
  const tx = await store2.registerCuratorTx(vaultAddress, curatorAddress, true);
207
+
208
+ // Curator flow: check auth, build request, and submit EAS attestation
209
+ const submit = await store2.submitOverrideAttestation(
210
+ vaultAddress,
211
+ targetChainId,
212
+ 1n,
213
+ manifestCid
214
+ );
215
+ console.log(submit.txHash, submit.uid);
216
+
217
+ // Read full decoded history for a vault+targetChain
218
+ const history = await store2.getOverrideAttestationHistory(vaultAddress, targetChainId, {
219
+ graphqlEndpoint: 'https://base.easscan.org/graphql',
220
+ });
221
+
222
+ // Read latest active attestation (not revoked, not expired)
223
+ const latest = await store2.getLatestOverrideAttestation(vaultAddress, targetChainId, {
224
+ graphqlEndpoint: 'https://base.easscan.org/graphql',
225
+ });
193
226
  ```
194
227
 
195
228
  ### Contract Verification on Arbiscan (optional)
@@ -0,0 +1,26 @@
1
+ {
2
+ "chainId": 42161,
3
+ "chainName": "Arbitrum One",
4
+ "rpcUrl": "https://arb1.arbitrum.io/rpc",
5
+ "explorerUrl": "https://arbiscan.io",
6
+ "easAddress": "0xbD75f629A22Dc1ceD33dDA0b68c546A1c035c458",
7
+ "schemaRegistry": "0xA310da9c5B885E7fb3fbA9D66E9Ba6Df512b78eB",
8
+ "deployments": {
9
+ "SteerAuthorityResolver": {
10
+ "address": "0xd36e3f33c6f1814f6923835ae7dc508feda14b62",
11
+ "deployer": "0x62f9c107cd3af8d0a0bc6328b5d800d50ebbcb79",
12
+ "deployedAt": "2025-12-30T20:18:26.000Z",
13
+ "blockNumber": "0x18cea0c6",
14
+ "transaction": "0x20a375cd6c5b7a807e2fa89b1e8514e2618267148718e2a82af75c2a7cb1fc7d",
15
+ "gasUsed": "0x1ac9d1",
16
+ "version": "1.0.0",
17
+ "type": "direct",
18
+ "abi": "abis/SteerAuthorityResolver.json",
19
+ "metadata": {}
20
+ }
21
+ },
22
+ "metadata": {
23
+ "lastUpdated": "2025-12-30T20:18:26.000Z",
24
+ "totalDeployments": 1
25
+ }
26
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "chainId": 8453,
3
+ "chainName": "Base Mainnet",
4
+ "rpcUrl": "https://mainnet.base.org",
5
+ "explorerUrl": "https://basescan.org",
6
+ "easAddress": "0x4200000000000000000000000000000000000021",
7
+ "schemaRegistry": "0x4200000000000000000000000000000000000020",
8
+ "deployments": {
9
+ "SteerAuthorityResolver": {
10
+ "address": "0xdf351177442462498f76fd9230bff050e4b8588d",
11
+ "deployer": "0xe445be10273c1520d6f112cff1dd96f38be9ec49",
12
+ "deployedAt": "2026-01-07T11:51:37.000Z",
13
+ "blockNumber": "0x269f5f3",
14
+ "transaction": "0xc1547acfc6f373c64f68d1bf572d056587f5b19b5e04cadd83d06f777c445f2b",
15
+ "gasUsed": "0x214ed7",
16
+ "version": "1.0.0",
17
+ "type": "direct",
18
+ "abi": "abis/SteerAuthorityResolver.json",
19
+ "metadata": {}
20
+ }
21
+ },
22
+ "schema": {
23
+ "uid": "0x5e3df110d540031725b71b8cc7163c315aa790ea521678d041f01e18cf590b3b",
24
+ "schemaString": "address vault,uint256 chainId,uint256 strategyTokenId,string manifestCid",
25
+ "resolver": "0xdf351177442462498f76fd9230bff050e4b8588d",
26
+ "revocable": true,
27
+ "registeredAt": "2026-01-07T12:13:05.000Z",
28
+ "blockNumber": "0x269f93f",
29
+ "transaction": "0xe047c37ba6f152eb52f80bee3214f37cf6baddaf6e504ec6cf180bc4990bd0c7",
30
+ "gasUsed": "0x28304"
31
+ },
32
+ "metadata": {
33
+ "lastUpdated": "2026-01-07T11:51:37.000Z",
34
+ "totalDeployments": 1
35
+ }
36
+ }