@openzeppelin/ui-builder-adapter-evm 1.5.0 → 1.6.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/index.cjs +3392 -516
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +249 -21
- package/dist/index.d.ts +249 -21
- package/dist/index.js +3339 -461
- package/dist/index.js.map +1 -1
- package/dist/metadata.cjs +42 -0
- package/dist/metadata.cjs.map +1 -0
- package/dist/metadata.d.cts +5 -0
- package/dist/metadata.d.ts +5 -0
- package/dist/metadata.js +17 -0
- package/dist/metadata.js.map +1 -0
- package/package.json +10 -5
- package/src/__tests__/getDefaultServiceConfig.test.ts +1 -1
- package/src/adapter.ts +46 -0
- package/src/configuration/network-services.ts +30 -1
- package/src/index.ts +19 -13
- package/src/metadata.ts +16 -0
- package/src/networks/mainnet.ts +11 -0
- package/src/networks/testnet.ts +12 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/metadata.ts
|
|
21
|
+
var metadata_exports = {};
|
|
22
|
+
__export(metadata_exports, {
|
|
23
|
+
ecosystemMetadata: () => ecosystemMetadata
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(metadata_exports);
|
|
26
|
+
var import_react = require("@web3icons/react");
|
|
27
|
+
var ecosystemMetadata = {
|
|
28
|
+
id: "evm",
|
|
29
|
+
name: "Ethereum (EVM)",
|
|
30
|
+
description: "Ethereum is a decentralized, open-source blockchain with smart contract functionality. It supports the Ethereum Virtual Machine (EVM) and uses the native cryptocurrency Ether (ETH).",
|
|
31
|
+
explorerGuidance: "Etherscan verified contracts",
|
|
32
|
+
addressExample: "0x...",
|
|
33
|
+
iconComponent: import_react.NetworkEthereum,
|
|
34
|
+
bgColorClass: "bg-blue-100",
|
|
35
|
+
textColorClass: "text-blue-900",
|
|
36
|
+
defaultFeatureConfig: { enabled: true, showInUI: true }
|
|
37
|
+
};
|
|
38
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
39
|
+
0 && (module.exports = {
|
|
40
|
+
ecosystemMetadata
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/metadata.ts"],"sourcesContent":["import { NetworkEthereum } from '@web3icons/react';\n\nimport type { EcosystemMetadata } from '@openzeppelin/ui-types';\n\nexport const ecosystemMetadata: EcosystemMetadata = {\n id: 'evm',\n name: 'Ethereum (EVM)',\n description:\n 'Ethereum is a decentralized, open-source blockchain with smart contract functionality. It supports the Ethereum Virtual Machine (EVM) and uses the native cryptocurrency Ether (ETH).',\n explorerGuidance: 'Etherscan verified contracts',\n addressExample: '0x...',\n iconComponent: NetworkEthereum,\n bgColorClass: 'bg-blue-100',\n textColorClass: 'text-blue-900',\n defaultFeatureConfig: { enabled: true, showInUI: true },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAIzB,IAAM,oBAAuC;AAAA,EAClD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aACE;AAAA,EACF,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,sBAAsB,EAAE,SAAS,MAAM,UAAU,KAAK;AACxD;","names":[]}
|
package/dist/metadata.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/metadata.ts
|
|
2
|
+
import { NetworkEthereum } from "@web3icons/react";
|
|
3
|
+
var ecosystemMetadata = {
|
|
4
|
+
id: "evm",
|
|
5
|
+
name: "Ethereum (EVM)",
|
|
6
|
+
description: "Ethereum is a decentralized, open-source blockchain with smart contract functionality. It supports the Ethereum Virtual Machine (EVM) and uses the native cryptocurrency Ether (ETH).",
|
|
7
|
+
explorerGuidance: "Etherscan verified contracts",
|
|
8
|
+
addressExample: "0x...",
|
|
9
|
+
iconComponent: NetworkEthereum,
|
|
10
|
+
bgColorClass: "bg-blue-100",
|
|
11
|
+
textColorClass: "text-blue-900",
|
|
12
|
+
defaultFeatureConfig: { enabled: true, showInUI: true }
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
ecosystemMetadata
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/metadata.ts"],"sourcesContent":["import { NetworkEthereum } from '@web3icons/react';\n\nimport type { EcosystemMetadata } from '@openzeppelin/ui-types';\n\nexport const ecosystemMetadata: EcosystemMetadata = {\n id: 'evm',\n name: 'Ethereum (EVM)',\n description:\n 'Ethereum is a decentralized, open-source blockchain with smart contract functionality. It supports the Ethereum Virtual Machine (EVM) and uses the native cryptocurrency Ether (ETH).',\n explorerGuidance: 'Etherscan verified contracts',\n addressExample: '0x...',\n iconComponent: NetworkEthereum,\n bgColorClass: 'bg-blue-100',\n textColorClass: 'text-blue-900',\n defaultFeatureConfig: { enabled: true, showInUI: true },\n};\n"],"mappings":";AAAA,SAAS,uBAAuB;AAIzB,IAAM,oBAAuC;AAAA,EAClD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aACE;AAAA,EACF,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,sBAAsB,EAAE,SAAS,MAAM,UAAU,KAAK;AACxD;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openzeppelin/ui-builder-adapter-evm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "EVM Adapter for UI Builder",
|
|
6
6
|
"keywords": [
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@openzeppelin/relayer-sdk": "1.9.0",
|
|
40
|
-
"@openzeppelin/ui-components": "^1.
|
|
40
|
+
"@openzeppelin/ui-components": "^1.3.0",
|
|
41
41
|
"@openzeppelin/ui-react": "^1.1.0",
|
|
42
|
-
"@openzeppelin/ui-types": "^1.
|
|
43
|
-
"@openzeppelin/ui-utils": "^1.
|
|
42
|
+
"@openzeppelin/ui-types": "^1.10.0",
|
|
43
|
+
"@openzeppelin/ui-utils": "^1.3.0",
|
|
44
44
|
"@wagmi/connectors": "5.7.13",
|
|
45
45
|
"@wagmi/core": "^2.20.3",
|
|
46
46
|
"@web3icons/react": "^4.0.19",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"viem": "^2.33.3",
|
|
60
60
|
"vitest": "^3.2.4",
|
|
61
61
|
"wagmi": "^2.16.1",
|
|
62
|
-
"@openzeppelin/ui-builder-adapter-evm-core": "1.
|
|
62
|
+
"@openzeppelin/ui-builder-adapter-evm-core": "1.1.0"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@rainbow-me/rainbowkit": "^2.2.8",
|
|
@@ -74,6 +74,11 @@
|
|
|
74
74
|
"import": "./dist/index.js",
|
|
75
75
|
"require": "./dist/index.cjs"
|
|
76
76
|
},
|
|
77
|
+
"./metadata": {
|
|
78
|
+
"types": "./dist/metadata.d.ts",
|
|
79
|
+
"import": "./dist/metadata.js",
|
|
80
|
+
"require": "./dist/metadata.cjs"
|
|
81
|
+
},
|
|
77
82
|
"./dist/config.js": {
|
|
78
83
|
"types": "./dist/config.d.ts",
|
|
79
84
|
"import": "./dist/config.js",
|
|
@@ -178,7 +178,7 @@ describe('getEvmDefaultServiceConfig', () => {
|
|
|
178
178
|
it('should return null for unknown service IDs', () => {
|
|
179
179
|
const networkConfig = createMockNetworkConfig();
|
|
180
180
|
|
|
181
|
-
expect(getEvmDefaultServiceConfig(networkConfig, 'indexer')).toBeNull();
|
|
181
|
+
expect(getEvmDefaultServiceConfig(networkConfig, 'access-control-indexer')).toBeNull();
|
|
182
182
|
expect(getEvmDefaultServiceConfig(networkConfig, 'unknown')).toBeNull();
|
|
183
183
|
});
|
|
184
184
|
});
|
package/src/adapter.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
compareContractDefinitions as coreCompareContractDefinitions,
|
|
7
7
|
hashContractDefinition as coreHashContractDefinition,
|
|
8
8
|
validateContractDefinition as coreValidateContractDefinition,
|
|
9
|
+
createEvmAccessControlService,
|
|
9
10
|
EvmProviderKeys,
|
|
10
11
|
executeEvmTransaction,
|
|
11
12
|
formatEvmFunctionResult,
|
|
@@ -33,11 +34,13 @@ import {
|
|
|
33
34
|
validateEvmNetworkServiceConfig,
|
|
34
35
|
validateEvmRpcEndpoint,
|
|
35
36
|
waitForEvmTransactionConfirmation,
|
|
37
|
+
type EvmAccessControlService,
|
|
36
38
|
type EvmContractDefinitionProviderKey,
|
|
37
39
|
type TypedEvmNetworkConfig,
|
|
38
40
|
type WriteContractParameters,
|
|
39
41
|
} from '@openzeppelin/ui-builder-adapter-evm-core';
|
|
40
42
|
import type {
|
|
43
|
+
AccessControlService,
|
|
41
44
|
AvailableUiKit,
|
|
42
45
|
Connector,
|
|
43
46
|
ContractAdapter,
|
|
@@ -109,6 +112,13 @@ export class EvmAdapter implements ContractAdapter {
|
|
|
109
112
|
readonly networkConfig: TypedEvmNetworkConfig;
|
|
110
113
|
readonly initialAppServiceKitName: UiKitConfiguration['kitName'];
|
|
111
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Lazily initialized access control service (NFR-004).
|
|
117
|
+
* Created on the first call to `getAccessControlService()` to avoid
|
|
118
|
+
* unnecessary initialization overhead when access control is not used.
|
|
119
|
+
*/
|
|
120
|
+
private accessControlService: EvmAccessControlService | null = null;
|
|
121
|
+
|
|
112
122
|
constructor(networkConfig: TypedEvmNetworkConfig) {
|
|
113
123
|
if (!isTypedEvmNetworkConfig(networkConfig)) {
|
|
114
124
|
throw new Error('EvmAdapter requires a valid EVM network configuration.');
|
|
@@ -740,6 +750,42 @@ Get your WalletConnect projectId from <a href="https://cloud.walletconnect.com"
|
|
|
740
750
|
return coreHashContractDefinition(definition);
|
|
741
751
|
}
|
|
742
752
|
|
|
753
|
+
/**
|
|
754
|
+
* @inheritdoc
|
|
755
|
+
*
|
|
756
|
+
* Returns a lazily initialized `EvmAccessControlService` instance.
|
|
757
|
+
* The service is created on first call with an `executeTransaction` callback
|
|
758
|
+
* that wraps `signAndBroadcast`, decoupling the access control module from
|
|
759
|
+
* wallet/signing infrastructure.
|
|
760
|
+
*
|
|
761
|
+
* @returns The AccessControlService for this adapter's network
|
|
762
|
+
* @see research.md §R9 — Service Lifecycle and Transaction Execution
|
|
763
|
+
*/
|
|
764
|
+
public getAccessControlService(): AccessControlService {
|
|
765
|
+
if (!this.accessControlService) {
|
|
766
|
+
logger.info(
|
|
767
|
+
'EvmAdapter:getAccessControlService',
|
|
768
|
+
'Initializing EvmAccessControlService (lazy, first call)'
|
|
769
|
+
);
|
|
770
|
+
|
|
771
|
+
this.accessControlService = createEvmAccessControlService(
|
|
772
|
+
this.networkConfig,
|
|
773
|
+
async (txData, executionConfig, onStatusChange, runtimeApiKey) => {
|
|
774
|
+
const defaultStatusHandler = onStatusChange ?? (() => {});
|
|
775
|
+
const result = await this.signAndBroadcast(
|
|
776
|
+
txData,
|
|
777
|
+
executionConfig,
|
|
778
|
+
defaultStatusHandler,
|
|
779
|
+
runtimeApiKey
|
|
780
|
+
);
|
|
781
|
+
return { id: result.txHash };
|
|
782
|
+
}
|
|
783
|
+
);
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
return this.accessControlService;
|
|
787
|
+
}
|
|
788
|
+
|
|
743
789
|
/**
|
|
744
790
|
* @inheritdoc
|
|
745
791
|
*/
|
|
@@ -12,7 +12,7 @@ import { appConfigService, userNetworkServiceConfigService } from '@openzeppelin
|
|
|
12
12
|
* Used for proactive health checks when no user overrides are configured.
|
|
13
13
|
*
|
|
14
14
|
* @param networkConfig The network configuration
|
|
15
|
-
* @param serviceId The service identifier (e.g., 'rpc', 'explorer', 'contract-definitions')
|
|
15
|
+
* @param serviceId The service identifier (e.g., 'rpc', 'explorer', 'contract-definitions', 'access-control-indexer')
|
|
16
16
|
* @returns The default configuration values, or null if not available
|
|
17
17
|
*/
|
|
18
18
|
export function getEvmDefaultServiceConfig(
|
|
@@ -41,6 +41,14 @@ export function getEvmDefaultServiceConfig(
|
|
|
41
41
|
}
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
44
|
+
case 'access-control-indexer': {
|
|
45
|
+
// Access control indexer is optional — return default URL from network config if available
|
|
46
|
+
const typedNetworkConfig = networkConfig as TypedEvmNetworkConfig;
|
|
47
|
+
if (typedNetworkConfig.accessControlIndexerUrl) {
|
|
48
|
+
return { accessControlIndexerUrl: typedNetworkConfig.accessControlIndexerUrl };
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
44
52
|
case 'contract-definitions':
|
|
45
53
|
// No connection test for contract definitions service
|
|
46
54
|
return null;
|
|
@@ -183,6 +191,27 @@ export function getEvmNetworkServiceForms(
|
|
|
183
191
|
},
|
|
184
192
|
],
|
|
185
193
|
},
|
|
194
|
+
{
|
|
195
|
+
id: 'access-control-indexer',
|
|
196
|
+
label: 'Access Control Indexer',
|
|
197
|
+
description:
|
|
198
|
+
'Optional GraphQL indexer endpoint for historical access control data. Overrides the default indexer URL for this network.',
|
|
199
|
+
supportsConnectionTest: true,
|
|
200
|
+
requiredFeature: 'access_control_indexer',
|
|
201
|
+
fields: [
|
|
202
|
+
{
|
|
203
|
+
id: 'evm-access-control-indexer-url',
|
|
204
|
+
name: 'accessControlIndexerUrl',
|
|
205
|
+
type: 'text',
|
|
206
|
+
label: 'Access Control Indexer GraphQL Endpoint',
|
|
207
|
+
placeholder: 'https://gateway.subquery.network/query/...',
|
|
208
|
+
validation: { required: false, pattern: '^https?://.+' },
|
|
209
|
+
width: 'full',
|
|
210
|
+
helperText:
|
|
211
|
+
'Optional. Used for querying historical access control events and role discovery on non-enumerable contracts.',
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
},
|
|
186
215
|
{
|
|
187
216
|
id: 'contract-definitions',
|
|
188
217
|
label: 'Contract Definitions',
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import type { TypedEvmNetworkConfig } from '@openzeppelin/ui-builder-adapter-evm-core';
|
|
2
|
+
import type { EcosystemExport } from '@openzeppelin/ui-types';
|
|
3
|
+
|
|
4
|
+
import { EvmAdapter } from './adapter';
|
|
5
|
+
import { evmAdapterConfig } from './config';
|
|
6
|
+
import { ecosystemMetadata } from './metadata';
|
|
7
|
+
import { evmNetworks } from './networks';
|
|
8
|
+
|
|
9
|
+
export { ecosystemMetadata } from './metadata';
|
|
2
10
|
export { EvmAdapter } from './adapter';
|
|
3
11
|
|
|
4
|
-
|
|
12
|
+
export const ecosystemDefinition: EcosystemExport = {
|
|
13
|
+
...ecosystemMetadata,
|
|
14
|
+
networks: evmNetworks,
|
|
15
|
+
createAdapter: (config) => new EvmAdapter(config as TypedEvmNetworkConfig),
|
|
16
|
+
adapterConfig: evmAdapterConfig,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// RainbowKit customization types (re-exported from core via rainbowkit/index.ts)
|
|
5
20
|
export type {
|
|
6
21
|
AppInfo,
|
|
7
22
|
RainbowKitConnectButtonProps,
|
|
@@ -11,12 +26,8 @@ export type {
|
|
|
11
26
|
} from './wallet/rainbowkit';
|
|
12
27
|
export { isRainbowKitCustomizations, extractRainbowKitCustomizations } from './wallet/rainbowkit';
|
|
13
28
|
|
|
14
|
-
//
|
|
29
|
+
// Individual network exports (useful for specific references)
|
|
15
30
|
export {
|
|
16
|
-
evmNetworks,
|
|
17
|
-
evmMainnetNetworks,
|
|
18
|
-
evmTestnetNetworks,
|
|
19
|
-
// Individual networks
|
|
20
31
|
ethereumMainnet,
|
|
21
32
|
arbitrumMainnet,
|
|
22
33
|
polygonMainnet,
|
|
@@ -39,13 +50,9 @@ export {
|
|
|
39
50
|
lineaSepolia,
|
|
40
51
|
scrollSepolia,
|
|
41
52
|
zksyncSepoliaTestnet,
|
|
42
|
-
// ... other individual network exports
|
|
43
53
|
} from './networks';
|
|
44
54
|
|
|
45
|
-
//
|
|
46
|
-
export { evmAdapterConfig } from './config';
|
|
47
|
-
|
|
48
|
-
// Re-export core types for public API compatibility
|
|
55
|
+
// Core types for public API compatibility
|
|
49
56
|
export type {
|
|
50
57
|
TypedEvmNetworkConfig,
|
|
51
58
|
WriteContractParameters,
|
|
@@ -56,5 +63,4 @@ export {
|
|
|
56
63
|
abiComparisonService,
|
|
57
64
|
} from '@openzeppelin/ui-builder-adapter-evm-core';
|
|
58
65
|
|
|
59
|
-
// Export adapter-specific types
|
|
60
66
|
export type { EvmRelayerTransactionOptions } from '@openzeppelin/ui-builder-adapter-evm-core';
|
package/src/metadata.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NetworkEthereum } from '@web3icons/react';
|
|
2
|
+
|
|
3
|
+
import type { EcosystemMetadata } from '@openzeppelin/ui-types';
|
|
4
|
+
|
|
5
|
+
export const ecosystemMetadata: EcosystemMetadata = {
|
|
6
|
+
id: 'evm',
|
|
7
|
+
name: 'Ethereum (EVM)',
|
|
8
|
+
description:
|
|
9
|
+
'Ethereum is a decentralized, open-source blockchain with smart contract functionality. It supports the Ethereum Virtual Machine (EVM) and uses the native cryptocurrency Ether (ETH).',
|
|
10
|
+
explorerGuidance: 'Etherscan verified contracts',
|
|
11
|
+
addressExample: '0x...',
|
|
12
|
+
iconComponent: NetworkEthereum,
|
|
13
|
+
bgColorClass: 'bg-blue-100',
|
|
14
|
+
textColorClass: 'text-blue-900',
|
|
15
|
+
defaultFeatureConfig: { enabled: true, showInUI: true },
|
|
16
|
+
};
|
package/src/networks/mainnet.ts
CHANGED
|
@@ -47,6 +47,7 @@ export const ethereumMainnet: TypedEvmNetworkConfig = {
|
|
|
47
47
|
decimals: 18,
|
|
48
48
|
},
|
|
49
49
|
viemChain: viemMainnet,
|
|
50
|
+
accessControlIndexerUrl: 'https://openzeppelin-ethereum-mainnet.graphql.subquery.network/',
|
|
50
51
|
};
|
|
51
52
|
|
|
52
53
|
export const arbitrumMainnet: TypedEvmNetworkConfig = {
|
|
@@ -70,6 +71,7 @@ export const arbitrumMainnet: TypedEvmNetworkConfig = {
|
|
|
70
71
|
decimals: 18,
|
|
71
72
|
},
|
|
72
73
|
viemChain: viemArbitrum,
|
|
74
|
+
accessControlIndexerUrl: 'https://openzeppelin-arbitrum-mainnet.graphql.subquery.network/',
|
|
73
75
|
};
|
|
74
76
|
|
|
75
77
|
export const polygonMainnet: TypedEvmNetworkConfig = {
|
|
@@ -93,6 +95,7 @@ export const polygonMainnet: TypedEvmNetworkConfig = {
|
|
|
93
95
|
decimals: 18,
|
|
94
96
|
},
|
|
95
97
|
viemChain: viemPolygon,
|
|
98
|
+
accessControlIndexerUrl: 'https://openzeppelin-polygon-mainnet.graphql.subquery.network/',
|
|
96
99
|
};
|
|
97
100
|
|
|
98
101
|
export const polygonZkEvmMainnet: TypedEvmNetworkConfig = {
|
|
@@ -116,6 +119,7 @@ export const polygonZkEvmMainnet: TypedEvmNetworkConfig = {
|
|
|
116
119
|
decimals: 18,
|
|
117
120
|
},
|
|
118
121
|
viemChain: viemPolygonZkEvm,
|
|
122
|
+
accessControlIndexerUrl: 'https://openzeppelin-polygon-zkevm-mainnet.graphql.subquery.network/',
|
|
119
123
|
};
|
|
120
124
|
|
|
121
125
|
export const baseMainnet: TypedEvmNetworkConfig = {
|
|
@@ -139,6 +143,7 @@ export const baseMainnet: TypedEvmNetworkConfig = {
|
|
|
139
143
|
decimals: 18,
|
|
140
144
|
},
|
|
141
145
|
viemChain: viemBase,
|
|
146
|
+
accessControlIndexerUrl: 'https://openzeppelin-base-mainnet.graphql.subquery.network/',
|
|
142
147
|
};
|
|
143
148
|
|
|
144
149
|
export const bscMainnet: TypedEvmNetworkConfig = {
|
|
@@ -162,6 +167,7 @@ export const bscMainnet: TypedEvmNetworkConfig = {
|
|
|
162
167
|
decimals: 18,
|
|
163
168
|
},
|
|
164
169
|
viemChain: viemBsc,
|
|
170
|
+
accessControlIndexerUrl: 'https://openzeppelin-bsc-mainnet.graphql.subquery.network/',
|
|
165
171
|
};
|
|
166
172
|
|
|
167
173
|
export const optimismMainnet: TypedEvmNetworkConfig = {
|
|
@@ -185,6 +191,7 @@ export const optimismMainnet: TypedEvmNetworkConfig = {
|
|
|
185
191
|
decimals: 18,
|
|
186
192
|
},
|
|
187
193
|
viemChain: viemOptimism,
|
|
194
|
+
accessControlIndexerUrl: 'https://openzeppelin-optimism-mainnet.graphql.subquery.network/',
|
|
188
195
|
};
|
|
189
196
|
|
|
190
197
|
export const avalancheMainnet: TypedEvmNetworkConfig = {
|
|
@@ -208,6 +215,7 @@ export const avalancheMainnet: TypedEvmNetworkConfig = {
|
|
|
208
215
|
decimals: 18,
|
|
209
216
|
},
|
|
210
217
|
viemChain: viemAvalanche,
|
|
218
|
+
accessControlIndexerUrl: 'https://openzeppelin-avalanche-mainnet.graphql.subquery.network/',
|
|
211
219
|
};
|
|
212
220
|
|
|
213
221
|
// TODO: test and setup the api and explorer config
|
|
@@ -232,6 +240,7 @@ export const zkSyncEraMainnet: TypedEvmNetworkConfig = {
|
|
|
232
240
|
decimals: 18,
|
|
233
241
|
},
|
|
234
242
|
viemChain: viemZkSync,
|
|
243
|
+
accessControlIndexerUrl: 'https://openzeppelin-zksync-era-mainnet.graphql.subquery.network/',
|
|
235
244
|
};
|
|
236
245
|
|
|
237
246
|
export const scrollMainnet: TypedEvmNetworkConfig = {
|
|
@@ -255,6 +264,7 @@ export const scrollMainnet: TypedEvmNetworkConfig = {
|
|
|
255
264
|
decimals: 18,
|
|
256
265
|
},
|
|
257
266
|
viemChain: viemScroll,
|
|
267
|
+
accessControlIndexerUrl: 'https://openzeppelin-scroll-mainnet.graphql.subquery.network/',
|
|
258
268
|
};
|
|
259
269
|
|
|
260
270
|
export const lineaMainnet: TypedEvmNetworkConfig = {
|
|
@@ -278,6 +288,7 @@ export const lineaMainnet: TypedEvmNetworkConfig = {
|
|
|
278
288
|
decimals: 18,
|
|
279
289
|
},
|
|
280
290
|
viemChain: viemLinea,
|
|
291
|
+
accessControlIndexerUrl: 'https://openzeppelin-linea-mainnet.graphql.subquery.network/',
|
|
281
292
|
};
|
|
282
293
|
|
|
283
294
|
// TODO: Add other EVM mainnet networks with their public RPCs and viemChain objects
|
package/src/networks/testnet.ts
CHANGED
|
@@ -49,6 +49,7 @@ export const ethereumSepolia: TypedEvmNetworkConfig = {
|
|
|
49
49
|
decimals: 18,
|
|
50
50
|
},
|
|
51
51
|
viemChain: viemSepolia,
|
|
52
|
+
accessControlIndexerUrl: 'https://openzeppelin-ethereum-sepolia.graphql.subquery.network/',
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
export const arbitrumSepolia: TypedEvmNetworkConfig = {
|
|
@@ -72,6 +73,7 @@ export const arbitrumSepolia: TypedEvmNetworkConfig = {
|
|
|
72
73
|
decimals: 18,
|
|
73
74
|
},
|
|
74
75
|
viemChain: viemArbitrumSepolia,
|
|
76
|
+
accessControlIndexerUrl: 'https://openzeppelin-arbitrum-sepolia.graphql.subquery.network/',
|
|
75
77
|
};
|
|
76
78
|
|
|
77
79
|
export const polygonAmoy: TypedEvmNetworkConfig = {
|
|
@@ -95,6 +97,7 @@ export const polygonAmoy: TypedEvmNetworkConfig = {
|
|
|
95
97
|
decimals: 18,
|
|
96
98
|
},
|
|
97
99
|
viemChain: viemPolygonAmoy,
|
|
100
|
+
accessControlIndexerUrl: 'https://openzeppelin-polygon-amoy.graphql.subquery.network/',
|
|
98
101
|
};
|
|
99
102
|
|
|
100
103
|
export const polygonZkEvmCardona: TypedEvmNetworkConfig = {
|
|
@@ -118,6 +121,7 @@ export const polygonZkEvmCardona: TypedEvmNetworkConfig = {
|
|
|
118
121
|
decimals: 18,
|
|
119
122
|
},
|
|
120
123
|
viemChain: viemPolygonZkEvmCardona,
|
|
124
|
+
accessControlIndexerUrl: 'https://openzeppelin-polygon-zkevm-cardona.graphql.subquery.network/',
|
|
121
125
|
};
|
|
122
126
|
|
|
123
127
|
export const baseSepolia: TypedEvmNetworkConfig = {
|
|
@@ -141,6 +145,7 @@ export const baseSepolia: TypedEvmNetworkConfig = {
|
|
|
141
145
|
decimals: 18,
|
|
142
146
|
},
|
|
143
147
|
viemChain: viemBaseSepolia,
|
|
148
|
+
accessControlIndexerUrl: 'https://openzeppelin-base-sepolia.graphql.subquery.network/',
|
|
144
149
|
};
|
|
145
150
|
|
|
146
151
|
export const bscTestnet: TypedEvmNetworkConfig = {
|
|
@@ -164,6 +169,7 @@ export const bscTestnet: TypedEvmNetworkConfig = {
|
|
|
164
169
|
decimals: 18,
|
|
165
170
|
},
|
|
166
171
|
viemChain: viemBscTestnet,
|
|
172
|
+
accessControlIndexerUrl: 'https://openzeppelin-bsc-testnet.graphql.subquery.network/',
|
|
167
173
|
};
|
|
168
174
|
|
|
169
175
|
export const optimismSepolia: TypedEvmNetworkConfig = {
|
|
@@ -187,6 +193,7 @@ export const optimismSepolia: TypedEvmNetworkConfig = {
|
|
|
187
193
|
decimals: 18,
|
|
188
194
|
},
|
|
189
195
|
viemChain: viemOptimismSepolia,
|
|
196
|
+
accessControlIndexerUrl: 'https://openzeppelin-optimism-sepolia.graphql.subquery.network/',
|
|
190
197
|
};
|
|
191
198
|
|
|
192
199
|
export const avalancheFuji: TypedEvmNetworkConfig = {
|
|
@@ -211,6 +218,7 @@ export const avalancheFuji: TypedEvmNetworkConfig = {
|
|
|
211
218
|
decimals: 18,
|
|
212
219
|
},
|
|
213
220
|
viemChain: viemAvalancheFuji,
|
|
221
|
+
accessControlIndexerUrl: 'https://openzeppelin-avalanche-fuji.graphql.subquery.network/',
|
|
214
222
|
};
|
|
215
223
|
|
|
216
224
|
// TODO: test and setup the api and explorer config
|
|
@@ -235,6 +243,7 @@ export const zksyncSepoliaTestnet: TypedEvmNetworkConfig = {
|
|
|
235
243
|
decimals: 18,
|
|
236
244
|
},
|
|
237
245
|
viemChain: viemZkSyncSepoliaTestnet,
|
|
246
|
+
accessControlIndexerUrl: 'https://openzeppelin-zksync-era-sepolia.graphql.subquery.network/',
|
|
238
247
|
};
|
|
239
248
|
|
|
240
249
|
export const scrollSepolia: TypedEvmNetworkConfig = {
|
|
@@ -258,6 +267,7 @@ export const scrollSepolia: TypedEvmNetworkConfig = {
|
|
|
258
267
|
decimals: 18,
|
|
259
268
|
},
|
|
260
269
|
viemChain: viemScrollSepolia,
|
|
270
|
+
accessControlIndexerUrl: 'https://openzeppelin-scroll-sepolia.graphql.subquery.network/',
|
|
261
271
|
};
|
|
262
272
|
|
|
263
273
|
export const lineaSepolia: TypedEvmNetworkConfig = {
|
|
@@ -281,6 +291,7 @@ export const lineaSepolia: TypedEvmNetworkConfig = {
|
|
|
281
291
|
decimals: 18,
|
|
282
292
|
},
|
|
283
293
|
viemChain: viemLineaSepolia,
|
|
294
|
+
accessControlIndexerUrl: 'https://openzeppelin-linea-sepolia.graphql.subquery.network/',
|
|
284
295
|
};
|
|
285
296
|
|
|
286
297
|
export const monadTestnet: TypedEvmNetworkConfig = {
|
|
@@ -304,6 +315,7 @@ export const monadTestnet: TypedEvmNetworkConfig = {
|
|
|
304
315
|
decimals: 18,
|
|
305
316
|
},
|
|
306
317
|
viemChain: viemMonadTestnet,
|
|
318
|
+
accessControlIndexerUrl: 'https://openzeppelin-monad-testnet.graphql.subquery.network/',
|
|
307
319
|
};
|
|
308
320
|
|
|
309
321
|
// TODO: Add other EVM testnet networks as needed (e.g., Arbitrum Sepolia)
|