diff --git a/libs/remix-ui/editor/src/lib/providers/completion/completionGlobals.ts b/libs/remix-ui/editor/src/lib/providers/completion/completionGlobals.ts index de64477848..88c2369f5a 100644 --- a/libs/remix-ui/editor/src/lib/providers/completion/completionGlobals.ts +++ b/libs/remix-ui/editor/src/lib/providers/completion/completionGlobals.ts @@ -1,5 +1,16 @@ import { IRange } from "monaco-editor"; import monaco from "../../../types/monaco"; +import path from "path"; +let OZContracts; + +// @ts-ignore +import('raw-loader!libs/remix-ui/editor/src/lib/providers/completion/contracts/OpenZeppelinContracts.txt').then( + (txt) => { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + OZContracts = txt.default.split('\n').filter(x => !x.includes('mock')) + } +) + export function getStringCompletionItems(range: IRange, monaco): monaco.languages.CompletionItem[] { return [ @@ -390,262 +401,16 @@ export function GeCompletionUnits(range: IRange, monaco): monaco.languages.Compl return completionItems; } export function GetImports(range: IRange, monaco): monaco.languages.CompletionItem[] { - let list = [ - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/ERC20.sol', - label: 'OZ ERC20', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC721/ERC721.sol', - label: 'OZ ERC721', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/access/Ownable.sol', - label: 'OZ Ownable', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/Counters.sol', - label: 'OZ Counters', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/Address.sol', - label: 'OZ Address', - range - }, - { - detail: '@openzeppelin/contracts/utils/Context.sol', - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/Context.sol', - label: 'OZ Context', - range - }, - { - detail: '@openzeppelin/contracts/utils/EnumerableSet.sol', - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/EnumerableSet.sol', - label: 'OZ EnumerableSet', - range - }, - { - detail: '@openzeppelin/contracts/utils/EnumerableMap.sol', - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/EnumerableMap.sol', - label: 'OZ EnumerableMap', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/Strings.sol', - label: 'OZ Strings', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/ReentrancyGuard.sol', - label: 'OZ ReentrancyGuard', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/Pausable.sol', - label: 'OZ Pausable', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/structs/EnumerableSet.sol', - label: 'OZ EnumerableSet', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/structs/EnumerableMap.sol', - label: 'OZ EnumerableMap', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/SafeMath.sol', - label: 'OZ SafeMath', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/SafeCast.sol', - label: 'OZ SafeCast', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/Math.sol', - label: 'OZ Math', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/SignedSafeMath.sol', - label: 'OZ SignedSafeMath', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/SafeMath.sol', - label: 'OZ SafeMath', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/utils/math/SafeCast.sol', - label: 'OZ SafeCast', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol', - label: 'OZ ERC20Burnable', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol', - label: 'OZ ERC20Pausable', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Snapshot.sol', - label: 'OZ ERC20Snapshot', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol', - label: 'OZ ERC20Permit', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Votes.sol', - label: 'OZ ERC20Votes', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC1155/ERC1155.sol', - label: 'OZ ERC1155', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/IERC20.sol', - label: 'OZ IERC20', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC721/IERC721.sol', - label: 'OZ IERC721', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155.sol', - label: 'OZ IERC1155', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/IERC20Metadata.sol', - label: 'OZ IERC20Metadata', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol', - label: 'OZ IERC721Metadata', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol', - label: 'OZ IERC1155MetadataURI', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol', - label: 'OZ IERC1155Receiver', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol', - label: 'OZ IERC721Receiver', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol', - label: 'OZ SafeERC20', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/Governor.sol', - label: 'OZ Governor', - range - }, - { - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol', - label: 'OZ GovernorCountingSimple', - range - - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorVotes.sol', - label: 'OZ GovernorVotes', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol', - label: 'OZ GovernorVotesQuorumFraction', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorTimelockCompound.sol', - label: 'OZ GovernorTimelockCompound', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol', - label: 'OZ GovernorTimelockControl', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol', - label: 'OZ GovernorCountingSimple', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorSettings.sol', - label: 'OZ GovernorSettings', - range - },{ - kind: monaco.languages.CompletionItemKind.Module, - insertText: '@openzeppelin/contracts/governance/extensions/GovernorCompatibilityBravo.sol', - label: 'OZ GovernorCompatibilityBravo', - range - } - ] - list = list.map((item) => { + let list = [] + list.filter + list = OZContracts + .map((item) => { + const filename = path.basename(item) return { - ...item, - label: `${item.label}: ${item.insertText}`, + kind: monaco.languages.CompletionItemKind.Module, + range: range, + label: `OZ ${filename}: ${item}`, + insertText: `@openzeppelin${item}`, } }) console.log(list) diff --git a/libs/remix-ui/editor/src/lib/providers/completion/contracts/OpenZeppelinContracts.txt b/libs/remix-ui/editor/src/lib/providers/completion/contracts/OpenZeppelinContracts.txt new file mode 100644 index 0000000000..cffe37a8a7 --- /dev/null +++ b/libs/remix-ui/editor/src/lib/providers/completion/contracts/OpenZeppelinContracts.txt @@ -0,0 +1,278 @@ +/contracts/access/AccessControl.sol +/contracts/access/AccessControlCrossChain.sol +/contracts/access/AccessControlEnumerable.sol +/contracts/access/IAccessControl.sol +/contracts/access/IAccessControlEnumerable.sol +/contracts/access/Ownable.sol +/contracts/access/Ownable2Step.sol +/contracts/crosschain/amb/CrossChainEnabledAMB.sol +/contracts/crosschain/amb/LibAMB.sol +/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol +/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol +/contracts/crosschain/arbitrum/LibArbitrumL1.sol +/contracts/crosschain/arbitrum/LibArbitrumL2.sol +/contracts/crosschain/CrossChainEnabled.sol +/contracts/crosschain/errors.sol +/contracts/crosschain/optimism/CrossChainEnabledOptimism.sol +/contracts/crosschain/optimism/LibOptimism.sol +/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol +/contracts/finance/PaymentSplitter.sol +/contracts/finance/VestingWallet.sol +/contracts/governance/compatibility/GovernorCompatibilityBravo.sol +/contracts/governance/compatibility/IGovernorCompatibilityBravo.sol +/contracts/governance/extensions/GovernorCountingSimple.sol +/contracts/governance/extensions/GovernorPreventLateQuorum.sol +/contracts/governance/extensions/GovernorProposalThreshold.sol +/contracts/governance/extensions/GovernorSettings.sol +/contracts/governance/extensions/GovernorTimelockCompound.sol +/contracts/governance/extensions/GovernorTimelockControl.sol +/contracts/governance/extensions/GovernorVotes.sol +/contracts/governance/extensions/GovernorVotesComp.sol +/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +/contracts/governance/extensions/IGovernorTimelock.sol +/contracts/governance/Governor.sol +/contracts/governance/IGovernor.sol +/contracts/governance/TimelockController.sol +/contracts/governance/utils/IVotes.sol +/contracts/governance/utils/Votes.sol +/contracts/interfaces/draft-IERC1822.sol +/contracts/interfaces/draft-IERC2612.sol +/contracts/interfaces/IERC1155.sol +/contracts/interfaces/IERC1155MetadataURI.sol +/contracts/interfaces/IERC1155Receiver.sol +/contracts/interfaces/IERC1271.sol +/contracts/interfaces/IERC1363.sol +/contracts/interfaces/IERC1363Receiver.sol +/contracts/interfaces/IERC1363Spender.sol +/contracts/interfaces/IERC165.sol +/contracts/interfaces/IERC1820Implementer.sol +/contracts/interfaces/IERC1820Registry.sol +/contracts/interfaces/IERC20.sol +/contracts/interfaces/IERC20Metadata.sol +/contracts/interfaces/IERC2309.sol +/contracts/interfaces/IERC2981.sol +/contracts/interfaces/IERC3156.sol +/contracts/interfaces/IERC3156FlashBorrower.sol +/contracts/interfaces/IERC3156FlashLender.sol +/contracts/interfaces/IERC4626.sol +/contracts/interfaces/IERC721.sol +/contracts/interfaces/IERC721Enumerable.sol +/contracts/interfaces/IERC721Metadata.sol +/contracts/interfaces/IERC721Receiver.sol +/contracts/interfaces/IERC777.sol +/contracts/interfaces/IERC777Recipient.sol +/contracts/interfaces/IERC777Sender.sol +/contracts/metatx/ERC2771Context.sol +/contracts/metatx/MinimalForwarder.sol +/contracts/mocks/AccessControlCrossChainMock.sol +/contracts/mocks/AccessControlEnumerableMock.sol +/contracts/mocks/AccessControlMock.sol +/contracts/mocks/AddressImpl.sol +/contracts/mocks/ArraysMock.sol +/contracts/mocks/BadBeacon.sol +/contracts/mocks/Base64Mock.sol +/contracts/mocks/BitmapMock.sol +/contracts/mocks/CallReceiverMock.sol +/contracts/mocks/CheckpointsMock.sol +/contracts/mocks/ClashingImplementation.sol +/contracts/mocks/ClonesMock.sol +/contracts/mocks/compound/CompTimelock.sol +/contracts/mocks/ConditionalEscrowMock.sol +/contracts/mocks/ContextMock.sol +/contracts/mocks/CountersImpl.sol +/contracts/mocks/Create2Impl.sol +/contracts/mocks/crosschain/bridges.sol +/contracts/mocks/crosschain/receivers.sol +/contracts/mocks/DoubleEndedQueueMock.sol +/contracts/mocks/DummyImplementation.sol +/contracts/mocks/ECDSAMock.sol +/contracts/mocks/EIP712External.sol +/contracts/mocks/EnumerableMapMock.sol +/contracts/mocks/EnumerableSetMock.sol +/contracts/mocks/ERC1155BurnableMock.sol +/contracts/mocks/ERC1155Mock.sol +/contracts/mocks/ERC1155PausableMock.sol +/contracts/mocks/ERC1155ReceiverMock.sol +/contracts/mocks/ERC1155SupplyMock.sol +/contracts/mocks/ERC1155URIStorageMock.sol +/contracts/mocks/ERC1271WalletMock.sol +/contracts/mocks/ERC165/ERC165InterfacesSupported.sol +/contracts/mocks/ERC165/ERC165MaliciousData.sol +/contracts/mocks/ERC165/ERC165MissingData.sol +/contracts/mocks/ERC165/ERC165NotSupported.sol +/contracts/mocks/ERC165/ERC165ReturnBomb.sol +/contracts/mocks/ERC165CheckerMock.sol +/contracts/mocks/ERC165Mock.sol +/contracts/mocks/ERC165StorageMock.sol +/contracts/mocks/ERC1820ImplementerMock.sol +/contracts/mocks/ERC20BurnableMock.sol +/contracts/mocks/ERC20CappedMock.sol +/contracts/mocks/ERC20DecimalsMock.sol +/contracts/mocks/ERC20FlashMintMock.sol +/contracts/mocks/ERC20Mock.sol +/contracts/mocks/ERC20PausableMock.sol +/contracts/mocks/ERC20PermitMock.sol +/contracts/mocks/ERC20SnapshotMock.sol +/contracts/mocks/ERC20VotesCompMock.sol +/contracts/mocks/ERC20VotesMock.sol +/contracts/mocks/ERC20WrapperMock.sol +/contracts/mocks/ERC2771ContextMock.sol +/contracts/mocks/ERC3156FlashBorrowerMock.sol +/contracts/mocks/ERC4626Mock.sol +/contracts/mocks/ERC721BurnableMock.sol +/contracts/mocks/ERC721ConsecutiveMock.sol +/contracts/mocks/ERC721EnumerableMock.sol +/contracts/mocks/ERC721Mock.sol +/contracts/mocks/ERC721PausableMock.sol +/contracts/mocks/ERC721ReceiverMock.sol +/contracts/mocks/ERC721RoyaltyMock.sol +/contracts/mocks/ERC721URIStorageMock.sol +/contracts/mocks/ERC721VotesMock.sol +/contracts/mocks/ERC777Mock.sol +/contracts/mocks/ERC777SenderRecipientMock.sol +/contracts/mocks/EtherReceiverMock.sol +/contracts/mocks/GovernorCompatibilityBravoMock.sol +/contracts/mocks/GovernorCompMock.sol +/contracts/mocks/GovernorMock.sol +/contracts/mocks/GovernorPreventLateQuorumMock.sol +/contracts/mocks/GovernorTimelockCompoundMock.sol +/contracts/mocks/GovernorTimelockControlMock.sol +/contracts/mocks/GovernorVoteMock.sol +/contracts/mocks/GovernorWithParamsMock.sol +/contracts/mocks/InitializableMock.sol +/contracts/mocks/MathMock.sol +/contracts/mocks/MerkleProofWrapper.sol +/contracts/mocks/MulticallTest.sol +/contracts/mocks/MulticallTokenMock.sol +/contracts/mocks/MultipleInheritanceInitializableMocks.sol +/contracts/mocks/Ownable2StepMock.sol +/contracts/mocks/OwnableMock.sol +/contracts/mocks/PausableMock.sol +/contracts/mocks/PullPaymentMock.sol +/contracts/mocks/ReentrancyAttack.sol +/contracts/mocks/ReentrancyMock.sol +/contracts/mocks/RegressionImplementation.sol +/contracts/mocks/SafeCastMock.sol +/contracts/mocks/SafeERC20Helper.sol +/contracts/mocks/SafeMathMock.sol +/contracts/mocks/SignatureCheckerMock.sol +/contracts/mocks/SignedMathMock.sol +/contracts/mocks/SignedSafeMathMock.sol +/contracts/mocks/SingleInheritanceInitializableMocks.sol +/contracts/mocks/StorageSlotMock.sol +/contracts/mocks/StringsMock.sol +/contracts/mocks/TimersBlockNumberImpl.sol +/contracts/mocks/TimersTimestampImpl.sol +/contracts/mocks/UUPS/UUPSLegacy.sol +/contracts/mocks/UUPS/UUPSUpgradeableMock.sol +/contracts/mocks/VotesMock.sol +/contracts/mocks/wizard/MyGovernor1.sol +/contracts/mocks/wizard/MyGovernor2.sol +/contracts/mocks/wizard/MyGovernor3.sol +/contracts/proxy/beacon/BeaconProxy.sol +/contracts/proxy/beacon/IBeacon.sol +/contracts/proxy/beacon/UpgradeableBeacon.sol +/contracts/proxy/Clones.sol +/contracts/proxy/ERC1967/ERC1967Proxy.sol +/contracts/proxy/ERC1967/ERC1967Upgrade.sol +/contracts/proxy/Proxy.sol +/contracts/proxy/transparent/ProxyAdmin.sol +/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +/contracts/proxy/utils/Initializable.sol +/contracts/proxy/utils/UUPSUpgradeable.sol +/contracts/security/Pausable.sol +/contracts/security/PullPayment.sol +/contracts/security/ReentrancyGuard.sol +/contracts/token/common/ERC2981.sol +/contracts/token/ERC1155/ERC1155.sol +/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +/contracts/token/ERC1155/extensions/ERC1155Supply.sol +/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +/contracts/token/ERC1155/IERC1155.sol +/contracts/token/ERC1155/IERC1155Receiver.sol +/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol +/contracts/token/ERC1155/utils/ERC1155Holder.sol +/contracts/token/ERC1155/utils/ERC1155Receiver.sol +/contracts/token/ERC20/ERC20.sol +/contracts/token/ERC20/extensions/draft-ERC20Permit.sol +/contracts/token/ERC20/extensions/draft-IERC20Permit.sol +/contracts/token/ERC20/extensions/ERC20Burnable.sol +/contracts/token/ERC20/extensions/ERC20Capped.sol +/contracts/token/ERC20/extensions/ERC20FlashMint.sol +/contracts/token/ERC20/extensions/ERC20Pausable.sol +/contracts/token/ERC20/extensions/ERC20Snapshot.sol +/contracts/token/ERC20/extensions/ERC20Votes.sol +/contracts/token/ERC20/extensions/ERC20VotesComp.sol +/contracts/token/ERC20/extensions/ERC20Wrapper.sol +/contracts/token/ERC20/extensions/ERC4626.sol +/contracts/token/ERC20/extensions/IERC20Metadata.sol +/contracts/token/ERC20/IERC20.sol +/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol +/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol +/contracts/token/ERC20/utils/SafeERC20.sol +/contracts/token/ERC20/utils/TokenTimelock.sol +/contracts/token/ERC721/ERC721.sol +/contracts/token/ERC721/extensions/draft-ERC721Votes.sol +/contracts/token/ERC721/extensions/ERC721Burnable.sol +/contracts/token/ERC721/extensions/ERC721Consecutive.sol +/contracts/token/ERC721/extensions/ERC721Enumerable.sol +/contracts/token/ERC721/extensions/ERC721Pausable.sol +/contracts/token/ERC721/extensions/ERC721Royalty.sol +/contracts/token/ERC721/extensions/ERC721URIStorage.sol +/contracts/token/ERC721/extensions/IERC721Enumerable.sol +/contracts/token/ERC721/extensions/IERC721Metadata.sol +/contracts/token/ERC721/IERC721.sol +/contracts/token/ERC721/IERC721Receiver.sol +/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol +/contracts/token/ERC721/utils/ERC721Holder.sol +/contracts/token/ERC777/ERC777.sol +/contracts/token/ERC777/IERC777.sol +/contracts/token/ERC777/IERC777Recipient.sol +/contracts/token/ERC777/IERC777Sender.sol +/contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol +/contracts/utils/Address.sol +/contracts/utils/Arrays.sol +/contracts/utils/Base64.sol +/contracts/utils/Checkpoints.sol +/contracts/utils/Context.sol +/contracts/utils/Counters.sol +/contracts/utils/Create2.sol +/contracts/utils/cryptography/draft-EIP712.sol +/contracts/utils/cryptography/ECDSA.sol +/contracts/utils/cryptography/EIP712.sol +/contracts/utils/cryptography/MerkleProof.sol +/contracts/utils/cryptography/SignatureChecker.sol +/contracts/utils/escrow/ConditionalEscrow.sol +/contracts/utils/escrow/Escrow.sol +/contracts/utils/escrow/RefundEscrow.sol +/contracts/utils/introspection/ERC165.sol +/contracts/utils/introspection/ERC165Checker.sol +/contracts/utils/introspection/ERC165Storage.sol +/contracts/utils/introspection/ERC1820Implementer.sol +/contracts/utils/introspection/IERC165.sol +/contracts/utils/introspection/IERC1820Implementer.sol +/contracts/utils/introspection/IERC1820Registry.sol +/contracts/utils/math/Math.sol +/contracts/utils/math/SafeCast.sol +/contracts/utils/math/SafeMath.sol +/contracts/utils/math/SignedMath.sol +/contracts/utils/math/SignedSafeMath.sol +/contracts/utils/Multicall.sol +/contracts/utils/StorageSlot.sol +/contracts/utils/Strings.sol +/contracts/utils/structs/BitMaps.sol +/contracts/utils/structs/DoubleEndedQueue.sol +/contracts/utils/structs/EnumerableMap.sol +/contracts/utils/structs/EnumerableSet.sol +/contracts/utils/Timers.sol +/contracts/vendor/amb/IAMB.sol +/contracts/vendor/arbitrum/IArbSys.sol +/contracts/vendor/arbitrum/IBridge.sol +/contracts/vendor/arbitrum/IInbox.sol +/contracts/vendor/arbitrum/IMessageProvider.sol +/contracts/vendor/arbitrum/IOutbox.sol +/contracts/vendor/compound/ICompoundTimelock.sol +/contracts/vendor/optimism/ICrossDomainMessenger.sol +/contracts/vendor/polygon/IFxMessageProcessor.sol \ No newline at end of file