diff --git a/SmartContracts/abi/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json b/SmartContracts/abi/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json new file mode 100644 index 00000000..9fe87222 --- /dev/null +++ b/SmartContracts/abi/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json @@ -0,0 +1,113 @@ +[ + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "description", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint80", + "name": "_roundId", + "type": "uint80" + } + ], + "name": "getRoundData", + "outputs": [ + { + "internalType": "uint80", + "name": "roundId", + "type": "uint80" + }, + { + "internalType": "int256", + "name": "answer", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "startedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updatedAt", + "type": "uint256" + }, + { + "internalType": "uint80", + "name": "answeredInRound", + "type": "uint80" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "latestRoundData", + "outputs": [ + { + "internalType": "uint80", + "name": "roundId", + "type": "uint80" + }, + { + "internalType": "int256", + "name": "answer", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "startedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updatedAt", + "type": "uint256" + }, + { + "internalType": "uint80", + "name": "answeredInRound", + "type": "uint80" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/SmartContracts/abi/contracts/PriceFeed.sol/DataConsumerV3.json b/SmartContracts/abi/contracts/PriceFeed.sol/DataConsumerV3.json new file mode 100644 index 00000000..d888b571 --- /dev/null +++ b/SmartContracts/abi/contracts/PriceFeed.sol/DataConsumerV3.json @@ -0,0 +1,41 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "aggregator", + "type": "address" + } + ], + "name": "getLatestDataFrom", + "outputs": [ + { + "internalType": "uint80", + "name": "roundId", + "type": "uint80" + }, + { + "internalType": "int256", + "name": "answer", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "startedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updatedAt", + "type": "uint256" + }, + { + "internalType": "uint80", + "name": "answeredInRound", + "type": "uint80" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/SmartContracts/contracts/PriceFeed.sol b/SmartContracts/contracts/PriceFeed.sol new file mode 100644 index 00000000..7c736b59 --- /dev/null +++ b/SmartContracts/contracts/PriceFeed.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.7; + +import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; + +contract DataConsumerV3 { + /** + * Returns the latest answer from the specified aggregator. + */ + function getLatestDataFrom( + address aggregator + ) + public + view + returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) + { + AggregatorV3Interface dataFeed = AggregatorV3Interface(aggregator); + return dataFeed.latestRoundData(); + } +} diff --git a/SmartContracts/package-lock.json b/SmartContracts/package-lock.json index dfe220fd..f20943fb 100644 --- a/SmartContracts/package-lock.json +++ b/SmartContracts/package-lock.json @@ -8,6 +8,7 @@ "name": "chainbrary-smart-contacts", "version": "0.0.0", "dependencies": { + "@chainlink/contracts": "^0.6.1", "@graphprotocol/graph-cli": "^0.51.2", "@openzeppelin/contracts": "^4.9.2" }, @@ -58,6 +59,83 @@ "node": ">=6.9.0" } }, + "node_modules/@chainlink/contracts": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.6.1.tgz", + "integrity": "sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ==", + "dependencies": { + "@eth-optimism/contracts": "^0.5.21", + "@openzeppelin/contracts": "~4.3.3", + "@openzeppelin/contracts-upgradeable": "^4.7.3", + "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" + } + }, + "node_modules/@chainlink/contracts/node_modules/@eth-optimism/contracts": { + "version": "0.5.40", + "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", + "integrity": "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==", + "dependencies": { + "@eth-optimism/core-utils": "0.12.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0" + }, + "peerDependencies": { + "ethers": "^5" + } + }, + "node_modules/@chainlink/contracts/node_modules/@openzeppelin/contracts": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", + "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" + }, + "node_modules/@chainlink/contracts/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "peer": true, + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, "node_modules/@chainsafe/as-sha256": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", @@ -95,11 +173,33 @@ "node": ">=12" } }, + "node_modules/@eth-optimism/core-utils": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", + "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/providers": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bufio": "^1.0.7", + "chai": "^4.3.4" + } + }, "node_modules/@ethersproject/abi": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, "funding": [ { "type": "individual", @@ -212,7 +312,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, "funding": [ { "type": "individual", @@ -288,7 +387,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, "funding": [ { "type": "individual", @@ -342,7 +440,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "funding": [ { "type": "individual", @@ -372,7 +469,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, "funding": [ { "type": "individual", @@ -455,7 +551,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "funding": [ { "type": "individual", @@ -493,7 +588,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, "funding": [ { "type": "individual", @@ -531,7 +625,6 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, "engines": { "node": ">=8.3.0" }, @@ -552,7 +645,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, "funding": [ { "type": "individual", @@ -591,7 +683,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, "funding": [ { "type": "individual", @@ -635,7 +726,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "funding": [ { "type": "individual", @@ -705,7 +795,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "funding": [ { "type": "individual", @@ -726,7 +815,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "funding": [ { "type": "individual", @@ -781,7 +869,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "funding": [ { "type": "individual", @@ -2294,6 +2381,17 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.2.tgz", "integrity": "sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg==" }, + "node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.2.tgz", + "integrity": "sha512-siviV3PZV/fHfPaoIC51rf1Jb6iElkYWnNYZ0leO23/ukXuvOyoC/ahy8jqiV7g+++9Nuo3n/rk5ajSN/+d/Sg==" + }, + "node_modules/@openzeppelin/contracts-v0.7": { + "name": "@openzeppelin/contracts", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", + "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==" + }, "node_modules/@peculiar/asn1-schema": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", @@ -2918,8 +3016,7 @@ "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/agent-base": { "version": "6.0.2", @@ -3177,8 +3274,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "peer": true, "engines": { "node": "*" } @@ -3288,8 +3383,7 @@ "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/bigint-crypto-utils": { "version": "3.3.0", @@ -3492,6 +3586,14 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, + "node_modules/bufio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.0.tgz", + "integrity": "sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -3604,8 +3706,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", @@ -3659,8 +3759,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "peer": true, "engines": { "node": "*" } @@ -4156,8 +4254,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "peer": true, "dependencies": { "type-detect": "^4.0.0" }, @@ -5879,8 +5975,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "peer": true, "engines": { "node": "*" } @@ -7860,8 +7954,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "peer": true, "dependencies": { "get-func-name": "^2.0.0" } @@ -8924,8 +9016,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "peer": true, "engines": { "node": "*" } @@ -11354,8 +11444,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true, "engines": { "node": ">=4" } @@ -12169,6 +12257,72 @@ "js-tokens": "^4.0.0" } }, + "@chainlink/contracts": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.6.1.tgz", + "integrity": "sha512-EuwijGexttw0UjfrW+HygwhQIrGAbqpf1ue28R55HhWMHBzphEH0PhWm8DQmFfj5OZNy8Io66N4L0nStkZ3QKQ==", + "requires": { + "@eth-optimism/contracts": "^0.5.21", + "@openzeppelin/contracts": "~4.3.3", + "@openzeppelin/contracts-upgradeable": "^4.7.3", + "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" + }, + "dependencies": { + "@eth-optimism/contracts": { + "version": "0.5.40", + "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", + "integrity": "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==", + "requires": { + "@eth-optimism/core-utils": "0.12.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0" + } + }, + "@openzeppelin/contracts": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", + "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" + }, + "ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "peer": true, + "requires": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + } + } + }, "@chainsafe/as-sha256": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", @@ -12203,11 +12357,33 @@ "@jridgewell/trace-mapping": "0.3.9" } }, + "@eth-optimism/core-utils": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", + "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/providers": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bufio": "^1.0.7", + "chai": "^4.3.4" + } + }, "@ethersproject/abi": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, "requires": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -12270,7 +12446,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -12306,7 +12481,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, "requires": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -12340,7 +12514,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -12360,7 +12533,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, "requires": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -12403,7 +12575,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -12421,7 +12592,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -12449,7 +12619,6 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, "requires": {} } } @@ -12458,7 +12627,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -12477,7 +12645,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -12501,7 +12668,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -12541,7 +12707,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, "requires": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -12552,7 +12717,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, "requires": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -12587,7 +12751,6 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -13755,6 +13918,16 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.2.tgz", "integrity": "sha512-mO+y6JaqXjWeMh9glYVzVu8HYPGknAAnWyxTRhGeckOruyXQMNnlcW6w/Dx9ftLeIQk6N+ZJFuVmTwF7lEIFrg==" }, + "@openzeppelin/contracts-upgradeable": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.2.tgz", + "integrity": "sha512-siviV3PZV/fHfPaoIC51rf1Jb6iElkYWnNYZ0leO23/ukXuvOyoC/ahy8jqiV7g+++9Nuo3n/rk5ajSN/+d/Sg==" + }, + "@openzeppelin/contracts-v0.7": { + "version": "npm:@openzeppelin/contracts@3.4.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", + "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==" + }, "@peculiar/asn1-schema": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz", @@ -14306,8 +14479,7 @@ "aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "agent-base": { "version": "6.0.2", @@ -14506,9 +14678,7 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "peer": true + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, "astral-regex": { "version": "2.0.0", @@ -14588,8 +14758,7 @@ "bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "bigint-crypto-utils": { "version": "3.3.0", @@ -14759,6 +14928,11 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, + "bufio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.0.tgz", + "integrity": "sha512-UlFk8z/PwdhYQTXSQQagwGAdtRI83gib2n4uy4rQnenxUM2yQi8lBDzF230BNk+3wAoZDxYRoBwVVUPgHa9MCA==" + }, "busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -14838,8 +15012,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "peer": true, "requires": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", @@ -14880,9 +15052,7 @@ "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "peer": true + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" }, "chokidar": { "version": "3.5.3", @@ -15268,8 +15438,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "peer": true, "requires": { "type-detect": "^4.0.0" } @@ -16653,9 +16821,7 @@ "get-func-name": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "peer": true + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" }, "get-intrinsic": { "version": "1.2.0", @@ -18150,8 +18316,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "peer": true, "requires": { "get-func-name": "^2.0.0" } @@ -18950,9 +19114,7 @@ "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "peer": true + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, "pbkdf2": { "version": "3.1.2", @@ -20838,9 +21000,7 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "peer": true + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, "type-fest": { "version": "0.21.3", diff --git a/SmartContracts/package.json b/SmartContracts/package.json index 304663ff..f174b0f5 100644 --- a/SmartContracts/package.json +++ b/SmartContracts/package.json @@ -17,6 +17,7 @@ "prettier-plugin-solidity": "^1.1.3" }, "dependencies": { + "@chainlink/contracts": "^0.6.1", "@graphprotocol/graph-cli": "^0.51.2", "@openzeppelin/contracts": "^4.9.2" } diff --git a/UI/package-lock.json b/UI/package-lock.json index e26b8644..7f54a941 100644 --- a/UI/package-lock.json +++ b/UI/package-lock.json @@ -18,8 +18,8 @@ "@angular/platform-browser": "^15.2.4", "@angular/platform-browser-dynamic": "^15.2.4", "@angular/router": "^15.2.4", - "@apollo/client": "^3.7.17", - "@chainbrary/web3-login": "^0.0.15", + "@apollo/client": "^3.7.16", + "@chainbrary/web3-login": "^0.0.16", "@eslint-community/regexpp": "^4.5.1", "@ngrx/effects": "^15.4.0", "@ngrx/entity": "^15.4.0", @@ -3107,9 +3107,9 @@ } }, "node_modules/@chainbrary/web3-login": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/@chainbrary/web3-login/-/web3-login-0.0.15.tgz", - "integrity": "sha512-bLLCMXe42pFUVwjlLZ5P+JvBLc3ioXYERn6dIeUfxuO9FttpGH8N9SHX7+tFNLkHgwHbhTM3S33amXjjil2JLQ==", + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@chainbrary/web3-login/-/web3-login-0.0.16.tgz", + "integrity": "sha512-001RW68ncwmFZOR+0YKJGFjJeFmTWoumDsBQuU0zutfrm0e6EgpErq2vO5zeDOTqGhk5NN9sFo8Nr3Zs2kf3ZA==", "dependencies": { "tslib": "^2.3.0" }, @@ -20401,9 +20401,9 @@ } }, "@chainbrary/web3-login": { - "version": "0.0.15", - "resolved": "https://registry.npmjs.org/@chainbrary/web3-login/-/web3-login-0.0.15.tgz", - "integrity": "sha512-bLLCMXe42pFUVwjlLZ5P+JvBLc3ioXYERn6dIeUfxuO9FttpGH8N9SHX7+tFNLkHgwHbhTM3S33amXjjil2JLQ==", + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@chainbrary/web3-login/-/web3-login-0.0.16.tgz", + "integrity": "sha512-001RW68ncwmFZOR+0YKJGFjJeFmTWoumDsBQuU0zutfrm0e6EgpErq2vO5zeDOTqGhk5NN9sFo8Nr3Zs2kf3ZA==", "requires": { "tslib": "^2.3.0" } diff --git a/UI/package.json b/UI/package.json index 5069868c..20046221 100644 --- a/UI/package.json +++ b/UI/package.json @@ -25,7 +25,7 @@ "@angular/platform-browser-dynamic": "^15.2.4", "@angular/router": "^15.2.4", "@apollo/client": "^3.7.17", - "@chainbrary/web3-login": "^0.0.15", + "@chainbrary/web3-login": "^0.0.16", "@eslint-community/regexpp": "^4.5.1", "@ngrx/effects": "^15.4.0", "@ngrx/entity": "^15.4.0", diff --git a/UI/projects/web3-login/package.json b/UI/projects/web3-login/package.json index e25983de..2a0f6c2a 100644 --- a/UI/projects/web3-login/package.json +++ b/UI/projects/web3-login/package.json @@ -1,6 +1,6 @@ { "name": "@chainbrary/web3-login", - "version": "0.0.15", + "version": "0.0.16", "peerDependencies": { "@angular/common": "^15.1.0", "@angular/core": "^15.1.0", diff --git a/UI/projects/web3-login/src/lib/interfaces/modalState.interface.ts b/UI/projects/web3-login/src/lib/interfaces/modalState.interface.ts index 623a9b2a..18d3fa43 100644 --- a/UI/projects/web3-login/src/lib/interfaces/modalState.interface.ts +++ b/UI/projects/web3-login/src/lib/interfaces/modalState.interface.ts @@ -8,8 +8,8 @@ export interface IModalState { } export interface INetworkDetail { - chainId: string; - chainCode: string; + chainId: NetworkChainId; + chainCode: NetworkChainCode; name: string; shortName: string; nativeCurrency: { @@ -25,3 +25,33 @@ export enum ModalStateType { CANCEL = 'cancel', LOADING = 'loading' } + +export enum NetworkChainId { + ETHEREUM = '1', + BNB = '56', + SEPOLIA = '11155111', + ARBITRUM = '42161', + POLYGON = '137', + OPTIMISM = '10', + AVALANCHE = '43114', + MOONBEAM = '1284', + KAVA = '222', + FANTOM = '250', + CELO = '42220', + UNKNOWN = '0' +} + +export enum NetworkChainCode { + ETHEREUM = '0x1', + BNB = '0x38', + SEPOLIA = '0xaa36a7', + ARBITRUM = '0xa4b1', + POLYGON = '0x89', + OPTIMISM = '0xa', + AVALANCHE = '0xa86a', + MOONBEAM = '0x504', + KAVA = '0x8ae', + FANTOM = '0xfa', + CELO = '0xa4ec', + UNKNOWN = '0' +} diff --git a/UI/projects/web3-login/src/lib/services/network/network.service.ts b/UI/projects/web3-login/src/lib/services/network/network.service.ts index b0521d75..eaba9971 100644 --- a/UI/projects/web3-login/src/lib/services/network/network.service.ts +++ b/UI/projects/web3-login/src/lib/services/network/network.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { EMPTY, Observable, defer, of } from 'rxjs'; import Web3 from 'web3'; -import { INetworkDetail } from '../../interfaces'; +import { INetworkDetail, NetworkChainCode, NetworkChainId } from '../../interfaces'; // eslint-disable-next-line @typescript-eslint/no-explicit-any declare let window: any; @@ -36,8 +36,8 @@ export class NetworkServiceWeb3Login { } } return { - chainId: '0', - chainCode: 'unknown', + chainId: NetworkChainId.UNKNOWN, + chainCode: NetworkChainCode.UNKNOWN, name: 'Unknown', shortName: 'unknown', nativeCurrency: { @@ -57,8 +57,8 @@ export class NetworkServiceWeb3Login { return networkDetail; } return { - chainId: '0', - chainCode: 'unknown', + chainId: NetworkChainId.UNKNOWN, + chainCode: NetworkChainCode.UNKNOWN, name: 'Unknown', shortName: 'unknown', nativeCurrency: { @@ -72,8 +72,8 @@ export class NetworkServiceWeb3Login { getNetworkDetailList(): INetworkDetail[] { return [ { - chainId: '1', - chainCode: '0x1', + chainId: NetworkChainId.ETHEREUM, + chainCode: NetworkChainCode.ETHEREUM, name: 'Ethereum Mainnet', shortName: 'Ethereum', nativeCurrency: { @@ -83,8 +83,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '56', - chainCode: '0x38', + chainId: NetworkChainId.BNB, + chainCode: NetworkChainCode.BNB, name: 'Binance Smart Chain Mainnet', shortName: 'BNB Chain', nativeCurrency: { @@ -94,8 +94,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '11155111', - chainCode: '0xaa36a7', + chainId: NetworkChainId.SEPOLIA, + chainCode: NetworkChainCode.SEPOLIA, name: 'Sepolia', shortName: 'Sepolia', nativeCurrency: { @@ -105,8 +105,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '42161', - chainCode: '0xa4b1', + chainId: NetworkChainId.ARBITRUM, + chainCode: NetworkChainCode.ARBITRUM, name: 'Arbitrum One', shortName: 'Arbitrum', nativeCurrency: { @@ -116,8 +116,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '137', - chainCode: '0x89', + chainId: NetworkChainId.POLYGON, + chainCode: NetworkChainCode.POLYGON, name: 'Polygon', shortName: 'Polygon', nativeCurrency: { @@ -127,8 +127,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '10', - chainCode: '0xa', + chainId: NetworkChainId.OPTIMISM, + chainCode: NetworkChainCode.OPTIMISM, name: 'Optimism', shortName: 'Optimism', nativeCurrency: { @@ -138,8 +138,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '43114', - chainCode: '0xa86a', + chainId: NetworkChainId.AVALANCHE, + chainCode: NetworkChainCode.AVALANCHE, name: 'Avalanche', shortName: 'Avalanche', nativeCurrency: { @@ -149,8 +149,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '1284', - chainCode: '0x504', + chainId: NetworkChainId.MOONBEAM, + chainCode: NetworkChainCode.MOONBEAM, name: 'Moonbeam', shortName: 'Moonbeam', nativeCurrency: { @@ -160,8 +160,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '222', - chainCode: '0x8ae', + chainId: NetworkChainId.KAVA, + chainCode: NetworkChainCode.KAVA, name: 'KAVA', shortName: 'KAVA', nativeCurrency: { @@ -171,8 +171,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '250', - chainCode: '0xfa', + chainId: NetworkChainId.FANTOM, + chainCode: NetworkChainCode.FANTOM, name: 'Fantom', shortName: 'Fantom', nativeCurrency: { @@ -182,8 +182,8 @@ export class NetworkServiceWeb3Login { } }, { - chainId: '42220', - chainCode: '0xa4ec', + chainId: NetworkChainId.CELO, + chainCode: NetworkChainCode.CELO, name: 'Celo', shortName: 'Celo', nativeCurrency: { @@ -195,13 +195,13 @@ export class NetworkServiceWeb3Login { ]; } - getNetworkName(chainId: string): string { + getNetworkName(chainId: NetworkChainId): string { switch (chainId) { - case '1': + case NetworkChainId.ETHEREUM: return 'Mainnet'; - case '56': + case NetworkChainId.BNB: return 'Binance Smart Chain'; - case '11155111': + case NetworkChainId.SEPOLIA: return 'Sepolia'; default: return 'Unknown'; diff --git a/UI/projects/web3-login/src/lib/services/web3-login/web3-login.service.ts b/UI/projects/web3-login/src/lib/services/web3-login/web3-login.service.ts index 3c969a15..594ebc4f 100644 --- a/UI/projects/web3-login/src/lib/services/web3-login/web3-login.service.ts +++ b/UI/projects/web3-login/src/lib/services/web3-login/web3-login.service.ts @@ -1,7 +1,7 @@ import { EventEmitter, Injectable } from '@angular/core'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; import { Web3LoginComponent } from '../../containers/web3-login/web3-login.component'; -import { IModalState, INetworkDetail } from '../../interfaces'; +import { IModalState, INetworkDetail, NetworkChainId } from '../../interfaces'; import { NetworkServiceWeb3Login } from '../network/network.service'; import { Observable } from 'rxjs'; @@ -38,7 +38,7 @@ export class Web3LoginService { return this.dialog.closeAll(); } - getNetworkName(chainId: string): string { + getNetworkName(chainId: NetworkChainId): string { return this.networkServiceWeb3Login.getNetworkName(chainId); } diff --git a/UI/src/app/app.component.ts b/UI/src/app/app.component.ts index ed29a65e..50c0b9d4 100644 --- a/UI/src/app/app.component.ts +++ b/UI/src/app/app.component.ts @@ -1,5 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { AnalyticsService } from './shared/services/analytics/analytics.service'; + declare global { interface Window { // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.html b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.html index f019f3d4..636c234f 100644 --- a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.html +++ b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.html @@ -27,7 +27,14 @@
{{ paymentRequest.payment.data.description }}
diff --git a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.scss b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.scss index 90446648..7fc1311e 100644 --- a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.scss +++ b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.scss @@ -1,3 +1,8 @@ .card-header-custom { top: -3rem; } + +.conversionValue { + font-size: 0.8rem; + font-weight: 600; +} diff --git a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.ts b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.ts index e4bbc95b..11c99d8e 100644 --- a/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.ts +++ b/UI/src/app/page/use-cases-page/payment-request/components/payment-request-card/payment-request-card.component.ts @@ -1,8 +1,9 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { INetworkDetail } from '@chainbrary/web3-login'; +import { INetworkDetail, NetworkChainId } from '@chainbrary/web3-login'; import { take } from 'rxjs'; import { AuthStatusCode } from './../../../../../shared/enum'; +import { PriceFeedService } from './../../../../../shared/services/price-feed/price-feed.service'; import { WalletService } from './../../../../../shared/services/wallet/wallet.service'; import { IPaymentRequestState } from './../../../../../store/payment-request-store/state/interfaces'; @@ -11,18 +12,36 @@ import { IPaymentRequestState } from './../../../../../store/payment-request-sto templateUrl: './payment-request-card.component.html', styleUrls: ['./payment-request-card.component.scss'] }) -export class PaymentRequestCardComponent { +export class PaymentRequestCardComponent implements OnInit { AuthStatusCodeTypes = AuthStatusCode; @Input() paymentRequest: IPaymentRequestState; @Input() authStatus: AuthStatusCode; @Input() publicAddress: string | null; @Input() currentNetwork: INetworkDetail | null; @Input() paymentNetwork: INetworkDetail | null; - @Output() openLoginModal = new EventEmitter