@verify-network/contracts 0.0.0-stage → 0.1.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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -2
  3. package/contracts/IDirectVrfReceiver.sol +17 -0
  4. package/contracts/IVerifyNetworkRouter.sol +40 -0
  5. package/contracts/IVrfReceiver.sol +14 -0
  6. package/dist/abi/Balances.d.ts +32 -0
  7. package/dist/abi/Balances.js +36 -0
  8. package/dist/abi/BalancesFacet.d.ts +110 -0
  9. package/dist/abi/BalancesFacet.js +130 -0
  10. package/dist/abi/Config.d.ts +12 -0
  11. package/dist/abi/Config.js +12 -0
  12. package/dist/abi/ConfigFacet.d.ts +360 -0
  13. package/dist/abi/ConfigFacet.js +412 -0
  14. package/dist/abi/ECVRFVerifier.d.ts +34 -0
  15. package/dist/abi/ECVRFVerifier.js +38 -0
  16. package/dist/abi/IDirectVrfReceiver.d.ts +26 -0
  17. package/dist/abi/IDirectVrfReceiver.js +31 -0
  18. package/dist/abi/IECVRFVerifier.d.ts +30 -0
  19. package/dist/abi/IECVRFVerifier.js +34 -0
  20. package/dist/abi/IEnclaveAttestationVerifier.d.ts +26 -0
  21. package/dist/abi/IEnclaveAttestationVerifier.js +30 -0
  22. package/dist/abi/INitroEnclaveVerifier.d.ts +806 -0
  23. package/dist/abi/INitroEnclaveVerifier.js +941 -0
  24. package/dist/abi/INitroProofVerifier.d.ts +81 -0
  25. package/dist/abi/INitroProofVerifier.js +95 -0
  26. package/dist/abi/ISP1Verifier.d.ts +22 -0
  27. package/dist/abi/ISP1Verifier.js +26 -0
  28. package/dist/abi/ISP1VerifierWithHash.d.ts +32 -0
  29. package/dist/abi/ISP1VerifierWithHash.js +36 -0
  30. package/dist/abi/IVerifyNetworkRouter.d.ts +74 -0
  31. package/dist/abi/IVerifyNetworkRouter.js +80 -0
  32. package/dist/abi/IVrfReceiver.d.ts +22 -0
  33. package/dist/abi/IVrfReceiver.js +26 -0
  34. package/dist/abi/NitroAttestationVerifier.d.ts +252 -0
  35. package/dist/abi/NitroAttestationVerifier.js +286 -0
  36. package/dist/abi/NitroEnclaveVerifier.d.ts +985 -0
  37. package/dist/abi/NitroEnclaveVerifier.js +1146 -0
  38. package/dist/abi/Nodes.d.ts +60 -0
  39. package/dist/abi/Nodes.js +74 -0
  40. package/dist/abi/NodesFacet.d.ts +449 -0
  41. package/dist/abi/NodesFacet.js +513 -0
  42. package/dist/abi/Ownable.d.ts +117 -0
  43. package/dist/abi/Ownable.js +132 -0
  44. package/dist/abi/Requests.d.ts +16 -0
  45. package/dist/abi/Requests.js +16 -0
  46. package/dist/abi/Router.d.ts +343 -0
  47. package/dist/abi/Router.js +405 -0
  48. package/dist/abi/RouterInit.d.ts +40 -0
  49. package/dist/abi/RouterInit.js +45 -0
  50. package/dist/abi/SP1Verifier.d.ts +140 -0
  51. package/dist/abi/SP1Verifier.js +159 -0
  52. package/dist/abi/TrustedNodeEnclaveKeyVerifier.d.ts +130 -0
  53. package/dist/abi/TrustedNodeEnclaveKeyVerifier.js +146 -0
  54. package/dist/abi/VRF.d.ts +74 -0
  55. package/dist/abi/VRF.js +82 -0
  56. package/dist/abi/Verifier.d.ts +54 -0
  57. package/dist/abi/Verifier.js +60 -0
  58. package/dist/abi/VrfFacet.d.ts +906 -0
  59. package/dist/abi/VrfFacet.js +1090 -0
  60. package/dist/artifacts.d.ts +2385 -0
  61. package/dist/artifacts.js +78 -0
  62. package/dist/diamond.d.ts +51 -0
  63. package/dist/diamond.js +60 -0
  64. package/package.json +50 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Verify Network
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,115 @@
1
- # Temporary Holding Version
1
+ # @verify-network/contracts
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ What a consumer of the Verify Network router builds against. It holds the Solidity interfaces a consumer imports, the viem-ready ABIs of the router's facets, and the creation bytecode and diamond cut helpers for deploying the router yourself.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ npm install @verify-network/contracts viem
9
+ ```
10
+
11
+ `viem` (`^2.56.3`) is a peer dependency. Node 22 or later.
12
+
13
+ ## Solidity interfaces
14
+
15
+ | Import | Contents |
16
+ | -------------------------------------------------------------- | ------------------------------------------------------------------- |
17
+ | `@verify-network/contracts/contracts/IVerifyNetworkRouter.sol` | The router functions a consumer calls: the requests and the balance |
18
+ | `@verify-network/contracts/contracts/IVrfReceiver.sol` | The callback a consumer implements to receive randomness |
19
+ | `@verify-network/contracts/contracts/IDirectVrfReceiver.sol` | The callback a consumer implements to receive direct requests |
20
+
21
+ Hardhat 3 resolves these paths from `node_modules` as they are. Foundry needs one remapping:
22
+
23
+ ```
24
+ @verify-network/contracts/=node_modules/@verify-network/contracts/
25
+ ```
26
+
27
+ A minimal consumer:
28
+
29
+ ```solidity
30
+ // SPDX-License-Identifier: MIT
31
+ pragma solidity ^0.8.30;
32
+
33
+ import {IVerifyNetworkRouter} from "@verify-network/contracts/contracts/IVerifyNetworkRouter.sol";
34
+ import {IVrfReceiver} from "@verify-network/contracts/contracts/IVrfReceiver.sol";
35
+
36
+ contract Lottery is IVrfReceiver {
37
+ IVerifyNetworkRouter public immutable router;
38
+ address public immutable owner;
39
+
40
+ error OnlyRouter(address caller);
41
+
42
+ constructor(IVerifyNetworkRouter router_) {
43
+ router = router_;
44
+ owner = msg.sender;
45
+ }
46
+
47
+ /// Requests from this contract's balance on the router. The round travels as callback data.
48
+ function draw(uint256 round) external returns (bytes32 requestId) {
49
+ requestId = router.requestRandomness(abi.encode(round), 200_000);
50
+ }
51
+
52
+ /// The router calls this with exactly the callback gas limit of the request.
53
+ function onRandomnessFulfilled(bytes32, bytes32 randomness, bytes calldata callbackData) external {
54
+ if (msg.sender != address(router)) revert OnlyRouter(msg.sender);
55
+ uint256 round = abi.decode(callbackData, (uint256));
56
+ // settle `round` with `randomness`
57
+ }
58
+
59
+ /// Refunds of stale requests land on this contract's balance on the router.
60
+ function withdrawBalance(address recipient, uint256 amount) external {
61
+ require(msg.sender == owner);
62
+ router.withdraw(recipient, amount);
63
+ }
64
+ }
65
+ ```
66
+
67
+ Fund it once with `router.deposit(address(lottery))`. It pays for each request from that balance. Two rules apply to every consumer:
68
+
69
+ - Only the router may call the callback. Nothing else authenticates the randomness.
70
+ - Give the consumer a way to withdraw. A stale request's refund goes to the consumer's balance on the router, even when the request was paid with `msg.value`.
71
+
72
+ The router stores only the request id. Your callback data is hashed into it and returned to your callback verbatim, so a consumer may keep its whole pending state there, up to 16 KiB.
73
+
74
+ ## ABIs
75
+
76
+ Each ABI is the default export of `@verify-network/contracts/abi/<Contract>`, typed `as const` for viem:
77
+
78
+ | ABI | Use |
79
+ | ---------------------- | -------------------------------------------------------------------------- |
80
+ | `VrfFacet` | Requests, fulfillments, stale reports, challenges, and the router's events |
81
+ | `BalancesFacet` | `deposit`, `withdraw`, `balanceOf` |
82
+ | `ConfigFacet` | `pricing()`, the stake, and the admin's settings |
83
+ | `NodesFacet` | The active set, node keys (`publicKeyOf`), and endpoints (`endpointOf`) |
84
+ | `IVerifyNetworkRouter` | The consumer's subset of the router |
85
+ | `IVrfReceiver` | The on-chain request callback |
86
+ | `IDirectVrfReceiver` | The direct request callback |
87
+
88
+ The router is an EIP-2535 diamond, so every facet lives at the router's address.
89
+
90
+ ```ts
91
+ import BalancesFacet from "@verify-network/contracts/abi/BalancesFacet";
92
+ import { createPublicClient, http } from "viem";
93
+ import { base } from "viem/chains";
94
+
95
+ const publicClient = createPublicClient({ chain: base, transport: http() });
96
+ const balance = await publicClient.readContract({
97
+ address: "0x…", // the router
98
+ abi: BalancesFacet,
99
+ functionName: "balanceOf",
100
+ args: ["0x…"], // the consumer
101
+ });
102
+ console.log(balance);
103
+ ```
104
+
105
+ ## Deploy the router yourself
106
+
107
+ `@verify-network/contracts/artifacts` holds the ABI and creation bytecode of every contract a router deployment needs: `Router`, `RouterInit`, `ECVRFVerifier`, `TrustedNodeEnclaveKeyVerifier`, and the facets in `FACETS`. Each one is in the shape viem's `deployContract` takes.
108
+
109
+ `@verify-network/contracts/diamond` holds the EIP-2535 helpers. `DIAMOND_ACTIONS` and `facetSelectors` build the first `diamondCut`. `planFacetCut` and `facetCuts` plan an in-place upgrade of one facet from the diamond loupe. They refuse a selector that another facet already serves.
110
+
111
+ To test a consumer against a local router, use `@verify-network/local`. It deploys these artifacts and runs a node that fulfills requests.
112
+
113
+ ## License
114
+
115
+ MIT
@@ -0,0 +1,17 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ /// @notice What a consumer implements to receive a direct request's randomness (ADR 0026). A
5
+ /// different selector from `IVrfReceiver.onRandomnessFulfilled`, so a consumer that never opted
6
+ /// in cannot mistake a direct fulfillment for a request it made itself. `signer` is who signed
7
+ /// the authorization and paid for it; what that signer may do here is the consumer's to decide.
8
+ /// `callbackData` is what the signer committed to in the authorization, authenticated by the
9
+ /// request id, so a bet the randomness resolves belongs in it, never after.
10
+ interface IDirectVrfReceiver {
11
+ function onDirectRandomness(
12
+ bytes32 requestId,
13
+ address signer,
14
+ bytes32 randomness,
15
+ bytes calldata callbackData
16
+ ) external;
17
+ }
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ /// @notice The part of the router a consumer calls: the request overloads of `VrfFacet` and the
5
+ /// balance functions of `BalancesFacet`. The router is one address for every facet (an EIP-2535
6
+ /// diamond), so this is the router's address on the target chain.
7
+ ///
8
+ /// The router stores only the id of an open request: `callbackData` is hashed into the request
9
+ /// id, echoed back by the fulfiller, and checked by the router before it reaches
10
+ /// `IVrfReceiver.onRandomnessFulfilled`, so a consumer may keep its whole pending state in it. At
11
+ /// most 16 KiB (`CallbackDataTooLong` above).
12
+ ///
13
+ /// The fee is reserved when the request is made, from the callback gas limit, the callback data's
14
+ /// length, the gas price, and the router's premium (`ConfigFacet.pricing()`). It is taken from
15
+ /// `msg.value` when one is sent, the excess credited to the caller's balance, and from the
16
+ /// caller's balance on the router otherwise. The fulfillment charges the gas it took, at the gas
17
+ /// price the request locked, and the rest of the reservation goes back to the caller's balance.
18
+ interface IVerifyNetworkRouter {
19
+ /// @notice Requests randomness with the router's default callback gas limit.
20
+ /// @return requestId The id the callback and `RandomnessFulfilled` carry.
21
+ function requestRandomness(
22
+ bytes calldata callbackData
23
+ ) external payable returns (bytes32 requestId);
24
+
25
+ /// @notice Requests randomness with a chosen callback gas limit, at most the router's max.
26
+ /// @return requestId The id the callback and `RandomnessFulfilled` carry.
27
+ function requestRandomness(
28
+ bytes calldata callbackData,
29
+ uint32 callbackGasLimit
30
+ ) external payable returns (bytes32 requestId);
31
+
32
+ /// @notice Credits `msg.value` to `account`'s balance on the router. Anyone may fund anyone.
33
+ function deposit(address account) external payable;
34
+
35
+ /// @notice Pays `amount` of the caller's own balance to `recipient`.
36
+ function withdraw(address recipient, uint256 amount) external;
37
+
38
+ /// @notice What `account` holds on the router to pay for its requests.
39
+ function balanceOf(address account) external view returns (uint256);
40
+ }
@@ -0,0 +1,14 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity >=0.6.0;
3
+
4
+ /// @notice What a consumer implements to receive randomness. `callbackData` is exactly what the
5
+ /// consumer passed to `requestRandomness`; the router authenticated it through the request id, so
6
+ /// the consumer may treat it as its own state. The selector is the baseline's, so existing
7
+ /// consumers keep working.
8
+ interface IVrfReceiver {
9
+ function onRandomnessFulfilled(
10
+ bytes32 requestId,
11
+ bytes32 randomness,
12
+ bytes calldata callbackData
13
+ ) external;
14
+ }
@@ -0,0 +1,32 @@
1
+ //#region abi/Balances.d.ts
2
+ declare const _default: readonly [{
3
+ readonly inputs: readonly [{
4
+ readonly internalType: "address";
5
+ readonly name: "account";
6
+ readonly type: "address";
7
+ }, {
8
+ readonly internalType: "uint256";
9
+ readonly name: "balance";
10
+ readonly type: "uint256";
11
+ }, {
12
+ readonly internalType: "uint256";
13
+ readonly name: "needed";
14
+ readonly type: "uint256";
15
+ }];
16
+ readonly name: "InsufficientBalance";
17
+ readonly type: "error";
18
+ }, {
19
+ readonly inputs: readonly [{
20
+ readonly internalType: "address";
21
+ readonly name: "recipient";
22
+ readonly type: "address";
23
+ }, {
24
+ readonly internalType: "uint256";
25
+ readonly name: "amount";
26
+ readonly type: "uint256";
27
+ }];
28
+ readonly name: "TransferFailed";
29
+ readonly type: "error";
30
+ }];
31
+ //#endregion
32
+ export { _default as default };
@@ -0,0 +1,36 @@
1
+ //#region abi/Balances.ts
2
+ var Balances_default = [{
3
+ "inputs": [
4
+ {
5
+ "internalType": "address",
6
+ "name": "account",
7
+ "type": "address"
8
+ },
9
+ {
10
+ "internalType": "uint256",
11
+ "name": "balance",
12
+ "type": "uint256"
13
+ },
14
+ {
15
+ "internalType": "uint256",
16
+ "name": "needed",
17
+ "type": "uint256"
18
+ }
19
+ ],
20
+ "name": "InsufficientBalance",
21
+ "type": "error"
22
+ }, {
23
+ "inputs": [{
24
+ "internalType": "address",
25
+ "name": "recipient",
26
+ "type": "address"
27
+ }, {
28
+ "internalType": "uint256",
29
+ "name": "amount",
30
+ "type": "uint256"
31
+ }],
32
+ "name": "TransferFailed",
33
+ "type": "error"
34
+ }];
35
+ //#endregion
36
+ export { Balances_default as default };
@@ -0,0 +1,110 @@
1
+ //#region abi/BalancesFacet.d.ts
2
+ declare const _default: readonly [{
3
+ readonly inputs: readonly [{
4
+ readonly internalType: "address";
5
+ readonly name: "account";
6
+ readonly type: "address";
7
+ }, {
8
+ readonly internalType: "uint256";
9
+ readonly name: "balance";
10
+ readonly type: "uint256";
11
+ }, {
12
+ readonly internalType: "uint256";
13
+ readonly name: "needed";
14
+ readonly type: "uint256";
15
+ }];
16
+ readonly name: "InsufficientBalance";
17
+ readonly type: "error";
18
+ }, {
19
+ readonly inputs: readonly [{
20
+ readonly internalType: "address";
21
+ readonly name: "recipient";
22
+ readonly type: "address";
23
+ }, {
24
+ readonly internalType: "uint256";
25
+ readonly name: "amount";
26
+ readonly type: "uint256";
27
+ }];
28
+ readonly name: "TransferFailed";
29
+ readonly type: "error";
30
+ }, {
31
+ readonly anonymous: false;
32
+ readonly inputs: readonly [{
33
+ readonly indexed: true;
34
+ readonly internalType: "address";
35
+ readonly name: "account";
36
+ readonly type: "address";
37
+ }, {
38
+ readonly indexed: true;
39
+ readonly internalType: "address";
40
+ readonly name: "from";
41
+ readonly type: "address";
42
+ }, {
43
+ readonly indexed: false;
44
+ readonly internalType: "uint256";
45
+ readonly name: "amount";
46
+ readonly type: "uint256";
47
+ }];
48
+ readonly name: "Deposited";
49
+ readonly type: "event";
50
+ }, {
51
+ readonly anonymous: false;
52
+ readonly inputs: readonly [{
53
+ readonly indexed: true;
54
+ readonly internalType: "address";
55
+ readonly name: "account";
56
+ readonly type: "address";
57
+ }, {
58
+ readonly indexed: true;
59
+ readonly internalType: "address";
60
+ readonly name: "recipient";
61
+ readonly type: "address";
62
+ }, {
63
+ readonly indexed: false;
64
+ readonly internalType: "uint256";
65
+ readonly name: "amount";
66
+ readonly type: "uint256";
67
+ }];
68
+ readonly name: "Withdrawn";
69
+ readonly type: "event";
70
+ }, {
71
+ readonly inputs: readonly [{
72
+ readonly internalType: "address";
73
+ readonly name: "account";
74
+ readonly type: "address";
75
+ }];
76
+ readonly name: "balanceOf";
77
+ readonly outputs: readonly [{
78
+ readonly internalType: "uint256";
79
+ readonly name: "";
80
+ readonly type: "uint256";
81
+ }];
82
+ readonly stateMutability: "view";
83
+ readonly type: "function";
84
+ }, {
85
+ readonly inputs: readonly [{
86
+ readonly internalType: "address";
87
+ readonly name: "account";
88
+ readonly type: "address";
89
+ }];
90
+ readonly name: "deposit";
91
+ readonly outputs: readonly [];
92
+ readonly stateMutability: "payable";
93
+ readonly type: "function";
94
+ }, {
95
+ readonly inputs: readonly [{
96
+ readonly internalType: "address";
97
+ readonly name: "recipient";
98
+ readonly type: "address";
99
+ }, {
100
+ readonly internalType: "uint256";
101
+ readonly name: "amount";
102
+ readonly type: "uint256";
103
+ }];
104
+ readonly name: "withdraw";
105
+ readonly outputs: readonly [];
106
+ readonly stateMutability: "nonpayable";
107
+ readonly type: "function";
108
+ }];
109
+ //#endregion
110
+ export { _default as default };
@@ -0,0 +1,130 @@
1
+ //#region abi/BalancesFacet.ts
2
+ var BalancesFacet_default = [
3
+ {
4
+ "inputs": [
5
+ {
6
+ "internalType": "address",
7
+ "name": "account",
8
+ "type": "address"
9
+ },
10
+ {
11
+ "internalType": "uint256",
12
+ "name": "balance",
13
+ "type": "uint256"
14
+ },
15
+ {
16
+ "internalType": "uint256",
17
+ "name": "needed",
18
+ "type": "uint256"
19
+ }
20
+ ],
21
+ "name": "InsufficientBalance",
22
+ "type": "error"
23
+ },
24
+ {
25
+ "inputs": [{
26
+ "internalType": "address",
27
+ "name": "recipient",
28
+ "type": "address"
29
+ }, {
30
+ "internalType": "uint256",
31
+ "name": "amount",
32
+ "type": "uint256"
33
+ }],
34
+ "name": "TransferFailed",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "anonymous": false,
39
+ "inputs": [
40
+ {
41
+ "indexed": true,
42
+ "internalType": "address",
43
+ "name": "account",
44
+ "type": "address"
45
+ },
46
+ {
47
+ "indexed": true,
48
+ "internalType": "address",
49
+ "name": "from",
50
+ "type": "address"
51
+ },
52
+ {
53
+ "indexed": false,
54
+ "internalType": "uint256",
55
+ "name": "amount",
56
+ "type": "uint256"
57
+ }
58
+ ],
59
+ "name": "Deposited",
60
+ "type": "event"
61
+ },
62
+ {
63
+ "anonymous": false,
64
+ "inputs": [
65
+ {
66
+ "indexed": true,
67
+ "internalType": "address",
68
+ "name": "account",
69
+ "type": "address"
70
+ },
71
+ {
72
+ "indexed": true,
73
+ "internalType": "address",
74
+ "name": "recipient",
75
+ "type": "address"
76
+ },
77
+ {
78
+ "indexed": false,
79
+ "internalType": "uint256",
80
+ "name": "amount",
81
+ "type": "uint256"
82
+ }
83
+ ],
84
+ "name": "Withdrawn",
85
+ "type": "event"
86
+ },
87
+ {
88
+ "inputs": [{
89
+ "internalType": "address",
90
+ "name": "account",
91
+ "type": "address"
92
+ }],
93
+ "name": "balanceOf",
94
+ "outputs": [{
95
+ "internalType": "uint256",
96
+ "name": "",
97
+ "type": "uint256"
98
+ }],
99
+ "stateMutability": "view",
100
+ "type": "function"
101
+ },
102
+ {
103
+ "inputs": [{
104
+ "internalType": "address",
105
+ "name": "account",
106
+ "type": "address"
107
+ }],
108
+ "name": "deposit",
109
+ "outputs": [],
110
+ "stateMutability": "payable",
111
+ "type": "function"
112
+ },
113
+ {
114
+ "inputs": [{
115
+ "internalType": "address",
116
+ "name": "recipient",
117
+ "type": "address"
118
+ }, {
119
+ "internalType": "uint256",
120
+ "name": "amount",
121
+ "type": "uint256"
122
+ }],
123
+ "name": "withdraw",
124
+ "outputs": [],
125
+ "stateMutability": "nonpayable",
126
+ "type": "function"
127
+ }
128
+ ];
129
+ //#endregion
130
+ export { BalancesFacet_default as default };
@@ -0,0 +1,12 @@
1
+ //#region abi/Config.d.ts
2
+ declare const _default: readonly [{
3
+ readonly inputs: readonly [{
4
+ readonly internalType: "address";
5
+ readonly name: "verifier";
6
+ readonly type: "address";
7
+ }];
8
+ readonly name: "VerifierWithoutCode";
9
+ readonly type: "error";
10
+ }];
11
+ //#endregion
12
+ export { _default as default };
@@ -0,0 +1,12 @@
1
+ //#region abi/Config.ts
2
+ var Config_default = [{
3
+ "inputs": [{
4
+ "internalType": "address",
5
+ "name": "verifier",
6
+ "type": "address"
7
+ }],
8
+ "name": "VerifierWithoutCode",
9
+ "type": "error"
10
+ }];
11
+ //#endregion
12
+ export { Config_default as default };