@agenticprimitives/contracts 1.0.0-alpha.6 → 1.0.0-alpha.7

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/AUDIT.md CHANGED
@@ -239,7 +239,27 @@ The `dist/deployments/` subpath (R7.3) exposes per-network contract addresses to
239
239
 
240
240
  ## 7. Known findings (cross-reference)
241
241
 
242
- See [`docs/audits/2026-05-packages-contracts-production-readiness.md`](../../docs/audits/2026-05-packages-contracts-production-readiness.md) § 3 (Per-contract findings) + § 4 (Cross-cutting).
242
+ Canonical cross-cutting status: [`docs/audits/findings.yaml`](../../docs/audits/findings.yaml) (CI-enforced).
243
+ Historical detail: [`docs/audits/archive/2026-05/2026-05-packages-contracts-production-readiness.md`](../../docs/audits/archive/2026-05/2026-05-packages-contracts-production-readiness.md) § 3–4.
244
+
245
+ **Closed (2026-06-09 independent contracts audit — SC-1..SC-5):**
246
+
247
+ - **SC-1** (critical) — agreement issuer signature now bound to contents: `AgreementRegistry.register()` recomputes the digest over `agreementCommitment, schemaHash, issuer, chainId, address(this)` (`AGREEMENT_ISSUER_TYPEHASH`).
248
+ - **SC-2** (high) — attestation subject-spoofing closed: `assertAssociation()` binds `subject, issuer, schemaId, credentialType, credentialHash, chainId, address(this)` (`ASSOCIATION_ATTESTATION_TYPEHASH`); joint path requires both party co-signatures.
249
+ - **SC-3** (medium) — `DelegationManager.verifyAuthorizationForCall()` returns `(false,"no-code-enforcer")` instead of failing open on a no-code enforcer.
250
+ - **SC-4** (medium) — `.impact` TLD root handed to `roles.namingRootOwner` (governance) at deploy, with a post-deploy assertion.
251
+ - **SC-5** (medium) — paymaster deploy `require`-rejects deployer-as-governance/owner in production mode.
252
+
253
+ **Open — contract deep audit 2026-06-10** (full detail: [`docs/audits/2026-06-10-contract-by-contract-audit.md`](../../docs/audits/2026-06-10-contract-by-contract-audit.md); status in `findings.yaml`):
254
+
255
+ | Finding | Severity | One-line |
256
+ |---|---|---|
257
+ | **CA-F1** | High | Factory counterfactual address omits mode/trustees/timelocks → pre-deploy custody hijack of the canonical identity. **Mainnet blocker.** |
258
+ | **CP-1** | High | Custody tier thresholds default to 1-of-n → one custodian key can rotate the set / upgrade impl. **Mainnet blocker.** |
259
+ | **AN-1-ONCHAIN** | High | On-chain name registry enforces no label normalization (the SDK fix is bypassable by direct callers). |
260
+ | **SUB-1 / SUB-2** | High | Subregistry name front-running (no commit-reveal) + sybil/homoglyph mass-squatting. |
261
+ | **ATT-1** | High | `assertJointAgreement` issuer signature over a bare `credentialHash` (the SC-2 bug class, issuer side). |
262
+ | **AGR-1, ATT-2, CA-1, CA-2, CP-2, DM-1/2, EN-11/13/22, PM-1/2, GOV-1, WA-1/2, AN-2, RES-1, ONT-4/7** | Medium | See the report + `findings.yaml`. |
243
263
 
244
264
  **Open at 2026-06-01:**
245
265
 
package/README.md CHANGED
@@ -1,26 +1,35 @@
1
- # `@agenticprimitives/contracts`
1
+ # @agenticprimitives/contracts
2
2
 
3
- The Solidity contracts that back the agenticprimitives stack — ERC-4337 v0.7 Smart Agent core, ERC-7710 delegation manager + 5 enforcers, ERC-7579 modular CustodyPolicy, SmartAgentPaymaster (3 modes), `.agent` / `.impact` TLD naming, ontology + profile resolvers, identity facets, and an ERC-6492-aware UniversalSignatureValidator. **All sources are present and audited under `src/`**; this is not a stub. The package publishes ABI + per-network deployments + flattened sources for downstream consumers.
3
+ **Contracts and SDK are one artifact.**
4
4
 
5
- For the security & invariant breakdown see [`AUDIT.md`](./AUDIT.md). For the architecture rationale + per-file role see [`CLAUDE.md`](./CLAUDE.md). For the current security review checklist see [`docs/audits/2026-05-packages-contracts-production-readiness.md`](../../docs/audits/2026-05-packages-contracts-production-readiness.md).
5
+ This is the on-chain enforcement layer of the agenticprimitives substrate — 42 Solidity sources, all present and audited under `src/`, none of them stubs. ERC-4337 v0.7 Smart Agent core, ERC-7710-style delegation manager with caveat enforcers, an ERC-7579 modular CustodyPolicy, a three-mode paymaster, `.agent` TLD naming with hierarchical subregistries, ontology and profile resolvers, identity facets, and an ERC-6492-aware UniversalSignatureValidator. The package publishes ABI subpaths, per-network deployment JSON, flattened sources, and the Solidity itself — so a TypeScript consumer pulls addresses and ABIs from the same artifact the auditors read.
6
6
 
7
- **Current contract roster** (28 contracts under `src/`, 635 Foundry tests):
8
- - `AgentAccount.sol` — UUPSUpgradeable + ERC-7579 + ERC-1271 + WebAuthn-supporting SA
7
+ "One artifact" is CI-enforced, not aspirational: TypeScript typehashes are locked to the Solidity constants (`pnpm check:eip712-typehash-equality`), ABIs are sync-gated, and storage layouts are snapshot-gated (`pnpm check:storage-layouts`). You cannot drift the client from the chain.
8
+
9
+ > Part of [agenticprimitives](../../README.md) — the trust substrate for the agent economy: one canonical Smart Agent identity with custody, delegation, naming, credentials, and audit evidence designed as one system.
10
+
11
+ ## What's in `src/`
12
+
13
+ - `AgentAccount.sol` — UUPSUpgradeable + ERC-7579 + ERC-1271 + WebAuthn-supporting Smart Agent; a thin modular core where custody, threshold, and session machinery are modules, not inlined features
9
14
  - `AgentAccountFactory.sol` — CREATE2 deterministic deploys; salt from auth methods + scope (NEVER from a name)
10
15
  - `SmartAgentPaymaster.sol` — verifying-paymaster + allowlist + devMode (testnet only) modes
11
- - `agency/DelegationManager.sol` + `enforcers/{AllowedMethods,AllowedTargets,Timestamp,Value,Quorum}Enforcer.sol`
16
+ - `agency/DelegationManager.sol` + `enforcers/{AllowedMethods,AllowedTargets,Timestamp,Value,Quorum,CallDataHash}Enforcer.sol` — scoped delegation with on-chain caveat enforcement
12
17
  - `custody/CustodyPolicy.sol` — 16-action ERC-7579 module, T4/T5/T6 quorum tiers + 24h default T5 timelock
13
18
  - `naming/{AgentNameRegistry,AgentNameUniversalResolver,AgentNameAttributeResolver,PermissionlessSubregistry}.sol`
14
19
  - `identity/AgentProfileResolver.sol` + `ontology/{OntologyTermRegistry,ShapeRegistry,AttributeStorage}.sol`
15
- - `relationships/{AgentRelationship,RelationshipTypeRegistry}.sol` (⚠ Privacy Fork — see AUDIT.md § 3.9)
20
+ - `relationships/{AgentRelationship,RelationshipTypeRegistry}.sol` (⚠ Privacy Fork — experimental surface; see AUDIT.md § 3.9)
16
21
  - `governance/{AgenticGovernance,GovernanceManaged}.sol` — system pause + governance base
17
- - `libraries/{WebAuthnLib,P256Verifier,SignatureSlotRecovery,MultiSendCallOnly}.sol`
22
+ - `libraries/{WebAuthnLib,P256Verifier,SignatureSlotRecovery,MultiSendCallOnly}.sol` — security-critical primitives
18
23
  - `UniversalSignatureValidator.sol` — single signature entrypoint (ERC-6492 + ERC-1271 + raw ECDSA fanout per spec 214 SB-4)
19
24
  - `ApprovedHashRegistry.sol` — v=1 pre-approved hash signature path
20
25
 
21
- Deployed addresses (Base Sepolia testnet): [`deployments-base-sepolia.json`](./deployments-base-sepolia.json) (committed, public; surfaced to TypeScript consumers via the generated `@agenticprimitives/contracts/deployments/base-sepolia` subpath).
26
+ Behind it: 774 Foundry tests including invariant suites, plus Halmos symbolic proofs, Echidna and Medusa fuzzing campaigns, and PR-blocking static analysis (Slither, Aderyn, CodeQL, Solhint).
22
27
 
23
- **Production deployment is deferred** — the testnet uses a publicly disclosed deployer EOA intentionally (keeps the demo reproducible). See [`AUDIT.md` § 4.1](./AUDIT.md#41-the-production-gate-open-audit-item-n1) for the production rotation runbook.
28
+ Deployed addresses (Base Sepolia testnet): [`deployments-base-sepolia.json`](./deployments-base-sepolia.json) — committed, public, and surfaced to TypeScript consumers via the generated `@agenticprimitives/contracts/deployments/base-sepolia` subpath.
29
+
30
+ ## How it's different
31
+
32
+ Compared to Safe, ZeroDev, or Alchemy's contract stacks, the difference is scope and coupling. Those projects ship an account (and ship it well); the rest of the trust chain — who the account is, what it may delegate, how custody recovers it — is left to integrations with other vendors' contracts. Here the account, delegation manager, caveat enforcers, custody module, naming registry, and signature validator are designed and audited as one system, sharing one identity anchor. There is no third-party multi-sig dependency: custody quorums are our own ERC-7579 module, with Safe-style signature packing ported as a pattern rather than inherited as a runtime dependency. And the consumption model is different — most contract suites hand you addresses and a block explorer link; this package hands you versioned ABIs, deployments, and flattened sources as npm subpaths, CI-locked to the TypeScript SDK that consumes them.
24
33
 
25
34
  ## Setup
26
35
 
@@ -43,7 +52,7 @@ anvil
43
52
  pnpm deploy:anvil
44
53
  ```
45
54
 
46
- Writes deployed addresses to `deployments-anvil.json`. The other demo apps (`apps/demo-web`, `apps/demo-a2a`, `apps/demo-mcp`) read this file on startup.
55
+ Writes deployed addresses to `deployments-anvil.json`. The demo apps (`apps/demo-web`, `apps/demo-a2a`, `apps/demo-mcp`) read this file on startup.
47
56
 
48
57
  ## Deploy to Base Sepolia
49
58
 
@@ -53,4 +62,19 @@ export PRIVATE_KEY=0x... # funded deployer
53
62
  pnpm deploy:base-sepolia
54
63
  ```
55
64
 
56
- Writes to `deployments-base-sepolia.json`. The CI/Vercel/Fly deploy reads this. Demo idle cost: ~$0.
65
+ Writes to `deployments-base-sepolia.json`. CI and hosted deploys read this. Demo idle cost: ~$0.
66
+
67
+ ## Audit posture
68
+
69
+ Trust infrastructure should be the most transparent code you depend on, so the audit trail is public by default:
70
+
71
+ - [`AUDIT.md`](./AUDIT.md) — the security and invariant dossier for every contract under `src/`, including the production key-rotation runbook (§ 4.1).
72
+ - [`docs/audits/findings.yaml`](../../docs/audits/findings.yaml) — the live, CI-gated findings ledger; a "closed" finding must anchor to real source or the build fails.
73
+ - [`docs/audits/2026-05-packages-contracts-production-readiness.md`](../../docs/audits/2026-05-packages-contracts-production-readiness.md) — the per-contract findings dossier.
74
+ - [`CLAUDE.md`](./CLAUDE.md) — architecture rationale and per-file roles.
75
+
76
+ ## Status
77
+
78
+ Testnet/pilot-ready. Production launch is gated on the public checklist in the root README — including third-party contract audit and governance key rotation. Track every security finding live in [`docs/audits/findings.yaml`](../../docs/audits/findings.yaml).
79
+
80
+ **Production deployment is deliberately deferred:** the testnet uses a publicly disclosed deployer EOA on purpose (it keeps the demo reproducible). The production rotation runbook is [`AUDIT.md` § 4.1](./AUDIT.md#41-the-production-gate-open-audit-item-n1).
@@ -1 +1,32 @@
1
- {"agentAccountFactory":"0x6f7Fc9B36977F55666548e0a73D9063F0D88A760","agentAccountImplementation":"0x11f1523D9883BdF382993d70C601D307ED0F1f13","agentNameRegistry":"0x6e660e41CFd0B410827fb96D21c26600AF6abF2f","agentNameResolver":"0x324F5A60c5DE45244c70a43cA3A6B1462d80fF5f","agentNameUniversalResolver":"0x40587e3591F7051ba7534177aB1F0B366034040e","agentProfileResolver":"0x748D005E8B3b366132F209F066821B2713A6e19e","agentRelationship":"0x5c3bf13822a37c84Dc617C920dB61a8217f6311d","agreementRegistry":"0x3B1DB6AC972b649E9E0960F0816F4D1EC3264c22","allowedMethodsEnforcer":"0x1500601201aA339249e2B78c42952Cf26CD12Ea7","allowedTargetsEnforcer":"0xfA1c40F9dC4ACC4d339D2eDE0003872154292CEa","approvedHashRegistry":"0xE01c1356F4B10FEfa8Ab210020B802cf3e900759","attestationRegistry":"0x16EB207C65A63E3ae256F49a4B11e785fE001139","callDataHashEnforcer":"0x7267eF129fCf341717D7f3469DDf7A0135d00b61","chainId":84532,"custodyPolicy":"0x5e3e3Bda33c799f2403a30aE35bf81deff236283","delegationManager":"0xBC5AE6213E91E076232a6c8e3942746f06A50154","deployer":"0x31ed17fb99e82E02085Ab4B3cbdaB05489098b44","entryPoint":"0x7707C2b483CcADc3E72C2d39d216aC1C337FCd9d","geoFeatureRegistry":"0x0A9f10cb72D6Fb5C89Aa5865f397957729cF71F0","ontologyTermRegistry":"0xa9635EbfDb993395df6CD03b0DEE21E5b2A66Ec1","permissionlessSubregistry":"0xF38fdcd8eC83360C2F73CEEa52ae419D37aCaB5F","permissionlessSubregistryDemoAgent":"0x1c698cBFE2733301614a245a505E20eB5597a972","quorumEnforcer":"0xeB88df4492FB8Eb254f6017eD0463d42CF6FC8e7","relationshipTypeRegistry":"0x7c5FfD0aB55C52f6aa00c04D2a30457579A3083B","shapeRegistry":"0xAe431c6F000235d30ae28f507493215815eF88E2","skillDefinitionRegistry":"0xc0A26f8bac0482E0F8e3a61762F5862Bc21a2D11","smartAgentPaymaster":"0x0e54A8Cc986C86530f0593817E8CafE01FC52983","timestampEnforcer":"0xf9AeF60b8cb4939bF5B1AF48E777dad99Ef1084f","universalSignatureValidator":"0x7A282fFf06E6DC73613A31F55345535e24CB6832","valueEnforcer":"0x4be1B537b9583E69D9baBf8af1dc5371A4a750C5"}
1
+ {
2
+ "agentAccountFactory": "0x3E68B72B45e7C9d35B210E4Ab06e5Cece85cEbE4",
3
+ "agentAccountImplementation": "0x338318ABf9C8b28E7e77ed96a91857cCE1Db1328",
4
+ "agentNameRegistry": "0x15F7ed064A230C011b0244A14fD9653f011d609B",
5
+ "agentNameResolver": "0xcC9855A23C7a4D4592E68Fe47E195C2f9D832473",
6
+ "agentNameUniversalResolver": "0x7d777d2d0bbc1806B9Cc779121C27fbaAaFDb60b",
7
+ "agentProfileResolver": "0xc448EB159B2a35F07f6E1814CC8d125244d7384B",
8
+ "agentRelationship": "0xE6B8F6C7F1c9857013dA356DF08D0384334A9607",
9
+ "agreementRegistry": "0x7f4d6A74eda1D6ce251D371566f1c6639F9B0DDa",
10
+ "allowedMethodsEnforcer": "0xf77cf06aCd8b9e2f3204fe4bE16449B3594c9633",
11
+ "allowedTargetsEnforcer": "0xe3909FdEfD8b74B7D006E045DCd678e97D469Bfd",
12
+ "approvedHashRegistry": "0x90735B5281434D1746926E2AA722Cc6DbF3EFEe6",
13
+ "attestationRegistry": "0xaE3861fd299c74D96F6FCA25f19c7ACf8b9020ed",
14
+ "callDataHashEnforcer": "0x9F12932F1b85A1F96c1Cb1c5A0645e3F0Ab478Dd",
15
+ "chainId": 84532,
16
+ "custodyPolicy": "0xDeD6542A55476745846370562d1c75D15DDf2572",
17
+ "delegationManager": "0x3a8E2cE74564f699b135db6f266ccDb563979C05",
18
+ "deployer": "0x31ed17fb99e82E02085Ab4B3cbdaB05489098b44",
19
+ "entryPoint": "0x9B33De9d9597de82Eb56b5B26C478Dc0a6955388",
20
+ "geoFeatureRegistry": "0x78FdCae0aC9B0CD9943996282b8F39D77bec5b1c",
21
+ "ontologyTermRegistry": "0xf486Ba6e9FD2d687e68a1a7A77D0FA27bb1E66c3",
22
+ "permissionlessSubregistry": "0x1B8ED8693738e1A9DD653FEE5430d49e00202Bb7",
23
+ "permissionlessSubregistryDemoAgent": "0xc76b1cdB4340398f59fD9C5d6Cb65fCdC606B33b",
24
+ "quorumEnforcer": "0x76fb494aE991d1fe1603a91384BA4c1F890442a8",
25
+ "relationshipTypeRegistry": "0x526fBF5900b18B1D06201493bcE470b416FB71C3",
26
+ "shapeRegistry": "0x03AbD67A910abB2c5026f1973A05502e0473e316",
27
+ "skillDefinitionRegistry": "0x5ae94aba46D7daA1Ca9eaE0051043Ad05bcc392B",
28
+ "smartAgentPaymaster": "0x8eF92B9D62826052D8F7e6dcaB630dC3890bF540",
29
+ "timestampEnforcer": "0x7c452434314A5bf2048f9263aeCd0cC20Fa07965",
30
+ "universalSignatureValidator": "0xe8F3e531429F44D77dC3A331C18032bfa1550D84",
31
+ "valueEnforcer": "0x7c4533e0A9fB0B1cb5aa70327b222a80d72d52db"
32
+ }
@@ -0,0 +1 @@
1
+ {"agreementRegistry":"0x9f2A085f0bd2d8Afb69490C0C98D88592093906A","attestationRegistry":"0x4a156CAaE69E894E3C5e6F3064fE028F138b6847"}
@@ -737,6 +737,19 @@
737
737
  "outputs": [],
738
738
  "stateMutability": "nonpayable"
739
739
  },
740
+ {
741
+ "type": "function",
742
+ "name": "scheduleUpgrade",
743
+ "inputs": [
744
+ {
745
+ "name": "newImplementation",
746
+ "type": "address",
747
+ "internalType": "address"
748
+ }
749
+ ],
750
+ "outputs": [],
751
+ "stateMutability": "nonpayable"
752
+ },
740
753
  {
741
754
  "type": "function",
742
755
  "name": "sessionIssuer",
@@ -1297,6 +1310,11 @@
1297
1310
  }
1298
1311
  ]
1299
1312
  },
1313
+ {
1314
+ "type": "error",
1315
+ "name": "DirectUpgradeBlocked",
1316
+ "inputs": []
1317
+ },
1300
1318
  {
1301
1319
  "type": "error",
1302
1320
  "name": "ERC1967InvalidImplementation",
@@ -1618,6 +1636,11 @@
1618
1636
  "name": "UpgradePending",
1619
1637
  "inputs": []
1620
1638
  },
1639
+ {
1640
+ "type": "error",
1641
+ "name": "UpgradeTimelockNotSet",
1642
+ "inputs": []
1643
+ },
1621
1644
  {
1622
1645
  "type": "error",
1623
1646
  "name": "UpgradeTimelockTooLong",
@@ -230,6 +230,11 @@
230
230
  }
231
231
  ]
232
232
  },
233
+ {
234
+ "name": "timelockOverrides",
235
+ "type": "uint32[7]",
236
+ "internalType": "uint32[7]"
237
+ },
233
238
  {
234
239
  "name": "salt",
235
240
  "type": "uint256",
@@ -803,6 +803,11 @@
803
803
  "name": "EmptyLabel",
804
804
  "inputs": []
805
805
  },
806
+ {
807
+ "type": "error",
808
+ "name": "InvalidLabel",
809
+ "inputs": []
810
+ },
806
811
  {
807
812
  "type": "error",
808
813
  "name": "NameExpired",
@@ -105,6 +105,19 @@
105
105
  "outputs": [],
106
106
  "stateMutability": "nonpayable"
107
107
  },
108
+ {
109
+ "type": "function",
110
+ "name": "setGuardian",
111
+ "inputs": [
112
+ {
113
+ "name": "newGuardian",
114
+ "type": "address",
115
+ "internalType": "address"
116
+ }
117
+ ],
118
+ "outputs": [],
119
+ "stateMutability": "nonpayable"
120
+ },
108
121
  {
109
122
  "type": "function",
110
123
  "name": "setSigner",
@@ -168,6 +181,25 @@
168
181
  ],
169
182
  "anonymous": false
170
183
  },
184
+ {
185
+ "type": "event",
186
+ "name": "GuardianRotated",
187
+ "inputs": [
188
+ {
189
+ "name": "oldGuardian",
190
+ "type": "address",
191
+ "indexed": true,
192
+ "internalType": "address"
193
+ },
194
+ {
195
+ "name": "newGuardian",
196
+ "type": "address",
197
+ "indexed": true,
198
+ "internalType": "address"
199
+ }
200
+ ],
201
+ "anonymous": false
202
+ },
171
203
  {
172
204
  "type": "event",
173
205
  "name": "Paused",
@@ -195,11 +195,6 @@
195
195
  "type": "address",
196
196
  "internalType": "address"
197
197
  },
198
- {
199
- "name": "attestationStructHash",
200
- "type": "bytes32",
201
- "internalType": "bytes32"
202
- },
203
198
  {
204
199
  "name": "issuerSignature",
205
200
  "type": "bytes",
@@ -1103,6 +1103,17 @@
1103
1103
  }
1104
1104
  ]
1105
1105
  },
1106
+ {
1107
+ "type": "error",
1108
+ "name": "UnconfiguredTier",
1109
+ "inputs": [
1110
+ {
1111
+ "name": "tier",
1112
+ "type": "uint8",
1113
+ "internalType": "uint8"
1114
+ }
1115
+ ]
1116
+ },
1106
1117
  {
1107
1118
  "type": "error",
1108
1119
  "name": "ZeroAddress",
@@ -212,6 +212,22 @@
212
212
  }
213
213
  ]
214
214
  },
215
+ {
216
+ "type": "error",
217
+ "name": "InvalidThreshold",
218
+ "inputs": [
219
+ {
220
+ "name": "threshold",
221
+ "type": "uint8",
222
+ "internalType": "uint8"
223
+ },
224
+ {
225
+ "name": "signerSetSize",
226
+ "type": "uint256",
227
+ "internalType": "uint256"
228
+ }
229
+ ]
230
+ },
215
231
  {
216
232
  "type": "error",
217
233
  "name": "PasskeyPubKeyMismatch",
@@ -30,6 +30,19 @@
30
30
  ],
31
31
  "stateMutability": "nonpayable"
32
32
  },
33
+ {
34
+ "type": "function",
35
+ "name": "DEPOSIT_WITHDRAWAL_TIMELOCK",
36
+ "inputs": [],
37
+ "outputs": [
38
+ {
39
+ "name": "",
40
+ "type": "uint64",
41
+ "internalType": "uint64"
42
+ }
43
+ ],
44
+ "stateMutability": "view"
45
+ },
33
46
  {
34
47
  "type": "function",
35
48
  "name": "acceptOwnership",
@@ -50,6 +63,13 @@
50
63
  "outputs": [],
51
64
  "stateMutability": "payable"
52
65
  },
66
+ {
67
+ "type": "function",
68
+ "name": "cancelDepositWithdrawal",
69
+ "inputs": [],
70
+ "outputs": [],
71
+ "stateMutability": "nonpayable"
72
+ },
53
73
  {
54
74
  "type": "function",
55
75
  "name": "deposit",
@@ -83,6 +103,13 @@
83
103
  ],
84
104
  "stateMutability": "view"
85
105
  },
106
+ {
107
+ "type": "function",
108
+ "name": "executeDepositWithdrawal",
109
+ "inputs": [],
110
+ "outputs": [],
111
+ "stateMutability": "nonpayable"
112
+ },
86
113
  {
87
114
  "type": "function",
88
115
  "name": "getDeposit",
@@ -217,6 +244,19 @@
217
244
  ],
218
245
  "stateMutability": "view"
219
246
  },
247
+ {
248
+ "type": "function",
249
+ "name": "paused",
250
+ "inputs": [],
251
+ "outputs": [
252
+ {
253
+ "name": "",
254
+ "type": "bool",
255
+ "internalType": "bool"
256
+ }
257
+ ],
258
+ "stateMutability": "view"
259
+ },
220
260
  {
221
261
  "type": "function",
222
262
  "name": "pendingOwner",
@@ -230,6 +270,29 @@
230
270
  ],
231
271
  "stateMutability": "view"
232
272
  },
273
+ {
274
+ "type": "function",
275
+ "name": "pendingWithdrawal",
276
+ "inputs": [],
277
+ "outputs": [
278
+ {
279
+ "name": "to",
280
+ "type": "address",
281
+ "internalType": "address"
282
+ },
283
+ {
284
+ "name": "amount",
285
+ "type": "uint256",
286
+ "internalType": "uint256"
287
+ },
288
+ {
289
+ "name": "eta",
290
+ "type": "uint64",
291
+ "internalType": "uint64"
292
+ }
293
+ ],
294
+ "stateMutability": "view"
295
+ },
233
296
  {
234
297
  "type": "function",
235
298
  "name": "postOp",
@@ -265,6 +328,24 @@
265
328
  "outputs": [],
266
329
  "stateMutability": "nonpayable"
267
330
  },
331
+ {
332
+ "type": "function",
333
+ "name": "scheduleDepositWithdrawal",
334
+ "inputs": [
335
+ {
336
+ "name": "to",
337
+ "type": "address",
338
+ "internalType": "address payable"
339
+ },
340
+ {
341
+ "name": "amount",
342
+ "type": "uint256",
343
+ "internalType": "uint256"
344
+ }
345
+ ],
346
+ "outputs": [],
347
+ "stateMutability": "nonpayable"
348
+ },
268
349
  {
269
350
  "type": "function",
270
351
  "name": "setAccepted",
@@ -314,6 +395,19 @@
314
395
  "outputs": [],
315
396
  "stateMutability": "nonpayable"
316
397
  },
398
+ {
399
+ "type": "function",
400
+ "name": "setPauseMirror",
401
+ "inputs": [
402
+ {
403
+ "name": "paused_",
404
+ "type": "bool",
405
+ "internalType": "bool"
406
+ }
407
+ ],
408
+ "outputs": [],
409
+ "stateMutability": "nonpayable"
410
+ },
317
411
  {
318
412
  "type": "function",
319
413
  "name": "setVerifyingSigner",
@@ -327,6 +421,13 @@
327
421
  "outputs": [],
328
422
  "stateMutability": "nonpayable"
329
423
  },
424
+ {
425
+ "type": "function",
426
+ "name": "syncPauseFromGovernance",
427
+ "inputs": [],
428
+ "outputs": [],
429
+ "stateMutability": "nonpayable"
430
+ },
330
431
  {
331
432
  "type": "function",
332
433
  "name": "transferOwnership",
@@ -472,6 +573,69 @@
472
573
  "outputs": [],
473
574
  "stateMutability": "nonpayable"
474
575
  },
576
+ {
577
+ "type": "event",
578
+ "name": "DepositWithdrawalCancelled",
579
+ "inputs": [
580
+ {
581
+ "name": "to",
582
+ "type": "address",
583
+ "indexed": true,
584
+ "internalType": "address"
585
+ },
586
+ {
587
+ "name": "amount",
588
+ "type": "uint256",
589
+ "indexed": false,
590
+ "internalType": "uint256"
591
+ }
592
+ ],
593
+ "anonymous": false
594
+ },
595
+ {
596
+ "type": "event",
597
+ "name": "DepositWithdrawalExecuted",
598
+ "inputs": [
599
+ {
600
+ "name": "to",
601
+ "type": "address",
602
+ "indexed": true,
603
+ "internalType": "address"
604
+ },
605
+ {
606
+ "name": "amount",
607
+ "type": "uint256",
608
+ "indexed": false,
609
+ "internalType": "uint256"
610
+ }
611
+ ],
612
+ "anonymous": false
613
+ },
614
+ {
615
+ "type": "event",
616
+ "name": "DepositWithdrawalScheduled",
617
+ "inputs": [
618
+ {
619
+ "name": "to",
620
+ "type": "address",
621
+ "indexed": true,
622
+ "internalType": "address"
623
+ },
624
+ {
625
+ "name": "amount",
626
+ "type": "uint256",
627
+ "indexed": false,
628
+ "internalType": "uint256"
629
+ },
630
+ {
631
+ "name": "eta",
632
+ "type": "uint64",
633
+ "indexed": false,
634
+ "internalType": "uint64"
635
+ }
636
+ ],
637
+ "anonymous": false
638
+ },
475
639
  {
476
640
  "type": "event",
477
641
  "name": "DevModeSet",
@@ -523,6 +687,25 @@
523
687
  ],
524
688
  "anonymous": false
525
689
  },
690
+ {
691
+ "type": "event",
692
+ "name": "PauseMirrorSynced",
693
+ "inputs": [
694
+ {
695
+ "name": "paused",
696
+ "type": "bool",
697
+ "indexed": false,
698
+ "internalType": "bool"
699
+ },
700
+ {
701
+ "name": "by",
702
+ "type": "address",
703
+ "indexed": true,
704
+ "internalType": "address"
705
+ }
706
+ ],
707
+ "anonymous": false
708
+ },
526
709
  {
527
710
  "type": "event",
528
711
  "name": "SenderAcceptedSet",
@@ -582,6 +765,11 @@
582
765
  "name": "MustOverride",
583
766
  "inputs": []
584
767
  },
768
+ {
769
+ "type": "error",
770
+ "name": "NoPendingWithdrawal",
771
+ "inputs": []
772
+ },
585
773
  {
586
774
  "type": "error",
587
775
  "name": "NotFromEntryPoint",
@@ -656,6 +844,27 @@
656
844
  "name": "SystemPaused",
657
845
  "inputs": []
658
846
  },
847
+ {
848
+ "type": "error",
849
+ "name": "WithdrawalAmountZero",
850
+ "inputs": []
851
+ },
852
+ {
853
+ "type": "error",
854
+ "name": "WithdrawalNotReady",
855
+ "inputs": [
856
+ {
857
+ "name": "eta",
858
+ "type": "uint64",
859
+ "internalType": "uint64"
860
+ }
861
+ ]
862
+ },
863
+ {
864
+ "type": "error",
865
+ "name": "WithdrawalToZero",
866
+ "inputs": []
867
+ },
659
868
  {
660
869
  "type": "error",
661
870
  "name": "ZeroGovernance",