diff --git a/package-lock.json b/package-lock.json index 07d46bbf7..d3f8d1c4f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,6 @@ "hasInstallScript": true, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", - "@gnosis.pm/safe-core-sdk": "^0.3.1", - "@gnosis.pm/safe-core-sdk-types": "^0.1.1", - "@gnosis.pm/safe-service-client": "^0.1.1", "@radicle/gray-matter": "4.1.0", "@stardazed/streams": "^3.1.0", "@types/marked": "^4.0.7", @@ -879,29 +876,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@gnosis.pm/safe-core-sdk": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-core-sdk/-/safe-core-sdk-0.3.1.tgz", - "integrity": "sha512-L0na+KSAnicO4B9MtzPu90kwThZ2PHd11CHSRzhJ7l4oIOGB4a/KyPohcOzXTO9Vz3yDIELPlbcW5IEasUk6ag==", - "dependencies": { - "@gnosis.pm/safe-core-sdk-types": "^0.1.1", - "ethereumjs-util": "^7.0.10" - } - }, - "node_modules/@gnosis.pm/safe-core-sdk-types": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-core-sdk-types/-/safe-core-sdk-types-0.1.1.tgz", - "integrity": "sha512-PghXGDaI5Foq37nZGmI90U2OKMeGtxh5KqkDqou9aFHwGVa/nf9HRQPxG9/XUzcyfe9OlKttDlJnR3XnC3dSDw==" - }, - "node_modules/@gnosis.pm/safe-service-client": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-service-client/-/safe-service-client-0.1.1.tgz", - "integrity": "sha512-7oQxcs1xTYdS+ZxqFPe44zlu7uzF654QNxI8XSMMnQ11sai7jgoMlom0ucRcWLp1cKATYMNA9+yUgPYYmTRgqA==", - "dependencies": { - "@gnosis.pm/safe-core-sdk-types": "^0.1.0", - "axios": "^0.21.1" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.10.7", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", @@ -1124,14 +1098,6 @@ "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", "dev": true }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -1211,6 +1177,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -1238,6 +1205,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -1859,14 +1827,6 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1876,6 +1836,7 @@ "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -1926,7 +1887,8 @@ "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "node_modules/blob-util": { "version": "2.0.2", @@ -1975,6 +1937,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -1988,6 +1951,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, "dependencies": { "base-x": "^3.0.2" } @@ -1996,6 +1960,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -2042,7 +2007,8 @@ "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "node_modules/cachedir": { "version": "2.3.0", @@ -2201,6 +2167,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -2372,6 +2339,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -2384,6 +2352,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -3405,6 +3374,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -3463,21 +3433,6 @@ "rlp": "^2.2.3" } }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/ethers": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.1.tgz", @@ -3557,6 +3512,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -3790,25 +3746,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -4158,6 +4095,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -5068,6 +5006,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -5525,6 +5464,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -5868,6 +5808,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -5877,6 +5818,7 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, "dependencies": { "bn.js": "^5.2.0" }, @@ -6012,6 +5954,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, "hasInstallScript": true, "dependencies": { "elliptic": "^6.5.4", @@ -6064,12 +6007,14 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7630,29 +7575,6 @@ "@ethersproject/strings": "^5.7.0" } }, - "@gnosis.pm/safe-core-sdk": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-core-sdk/-/safe-core-sdk-0.3.1.tgz", - "integrity": "sha512-L0na+KSAnicO4B9MtzPu90kwThZ2PHd11CHSRzhJ7l4oIOGB4a/KyPohcOzXTO9Vz3yDIELPlbcW5IEasUk6ag==", - "requires": { - "@gnosis.pm/safe-core-sdk-types": "^0.1.1", - "ethereumjs-util": "^7.0.10" - } - }, - "@gnosis.pm/safe-core-sdk-types": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-core-sdk-types/-/safe-core-sdk-types-0.1.1.tgz", - "integrity": "sha512-PghXGDaI5Foq37nZGmI90U2OKMeGtxh5KqkDqou9aFHwGVa/nf9HRQPxG9/XUzcyfe9OlKttDlJnR3XnC3dSDw==" - }, - "@gnosis.pm/safe-service-client": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@gnosis.pm/safe-service-client/-/safe-service-client-0.1.1.tgz", - "integrity": "sha512-7oQxcs1xTYdS+ZxqFPe44zlu7uzF654QNxI8XSMMnQ11sai7jgoMlom0ucRcWLp1cKATYMNA9+yUgPYYmTRgqA==", - "requires": { - "@gnosis.pm/safe-core-sdk-types": "^0.1.0", - "axios": "^0.21.1" - } - }, "@humanwhocodes/config-array": { "version": "0.10.7", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", @@ -7827,14 +7749,6 @@ "integrity": "sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==", "dev": true }, - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "requires": { - "@types/node": "*" - } - }, "@types/chai": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.3.tgz", @@ -7914,6 +7828,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, "requires": { "@types/node": "*" } @@ -7941,6 +7856,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, "requires": { "@types/node": "*" } @@ -8395,14 +8311,6 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "requires": { - "follow-redirects": "^1.14.0" - } - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -8412,6 +8320,7 @@ "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -8447,7 +8356,8 @@ "blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "blob-util": { "version": "2.0.2", @@ -8493,6 +8403,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -8506,6 +8417,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, "requires": { "base-x": "^3.0.2" } @@ -8514,6 +8426,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, "requires": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -8543,7 +8456,8 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "cachedir": { "version": "2.3.0", @@ -8662,6 +8576,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8800,6 +8715,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8812,6 +8728,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -9509,6 +9426,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -9569,18 +9487,6 @@ } } }, - "ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "requires": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - } - }, "ethers": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.1.tgz", @@ -9643,6 +9549,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -9827,11 +9734,6 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -10084,6 +9986,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -10733,6 +10636,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -11071,6 +10975,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -11308,6 +11213,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -11317,6 +11223,7 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, "requires": { "bn.js": "^5.2.0" } @@ -11408,6 +11315,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, "requires": { "elliptic": "^6.5.4", "node-addon-api": "^2.0.0", @@ -11446,12 +11354,14 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" diff --git a/package.json b/package.json index f87db77dc..cd12668ae 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,6 @@ }, "dependencies": { "@ethersproject/abstract-provider": "^5.4.0", - "@gnosis.pm/safe-core-sdk": "^0.3.1", - "@gnosis.pm/safe-core-sdk-types": "^0.1.1", - "@gnosis.pm/safe-service-client": "^0.1.1", "@radicle/gray-matter": "4.1.0", "@stardazed/streams": "^3.1.0", "@types/marked": "^4.0.7", diff --git a/src/Profile.svelte b/src/Profile.svelte index afa7aa89b..4fe2c259e 100644 --- a/src/Profile.svelte +++ b/src/Profile.svelte @@ -8,14 +8,10 @@ import Icon from "@app/Icon.svelte"; import SetName from "@app/ens/SetName.svelte"; import SeedAddress from "@app/SeedAddress.svelte"; - import TransferOwnership from "@app/components/TransferOwnership.svelte"; - import Link from "@app/Link.svelte"; - import { getBalance, Profile, ProfileType } from "@app/profile"; + import { Profile, ProfileType } from "@app/profile"; import Loading from "@app/Loading.svelte"; import * as utils from "@app/utils"; import { session } from "@app/session"; - import { Org } from "@app/base/orgs/Org"; - import Message from "@app/Message.svelte"; import ErrorModal from "@app/ErrorModal.svelte"; import { User } from "@app/base/users/User"; import Projects from "@app/base/seeds/View/Projects.svelte"; @@ -36,11 +32,6 @@ setNameForm = SetName; }; - let transferOwnerForm: typeof SvelteComponent | null = null; - const transferOwnership = () => { - transferOwnerForm = TransferOwnership; - }; - const getProjectsAndStats = async ( seed: Seed, id?: string, @@ -53,51 +44,9 @@ return { stats, projects }; }; - $: account = $session && $session.address; - $: isOwner = (org: Org): boolean => - $session ? utils.isAddressEqual(org.owner, $session.address) : false; - $: getOrgTreasury = async ( - org: Org, - ): Promise | undefined> => { - const addressType = await utils.identifyAddress(org.owner, config); - // We query the org treasury only for Gnosis Safes, to maintain some privacy for EOA org owners. - if (addressType === utils.AddressType.Safe) { - try { - const tokens = await utils.getTokens(org.owner, config); - const balance = await getBalance(org.owner, config); - - if (!balance.isZero()) { - // To maintain the format we hardcode the ETH specs. - return [ - { - balance, - decimals: 18, - logo: "", - name: "Ethereum", - symbol: "ETH", - }, - ...tokens, - ]; - } else { - return tokens; - } - } catch (e) { - console.error(e); - } - } - }; $: isUserAuthorized = (address: string): boolean | null => { return $session && utils.isAddressEqual(address, $session.address); }; - $: isOrgAuthorized = async (org: Org): Promise => { - if ($session) { - if (isOwner(org)) { - return true; - } - return await org.isMember($session.address, config); - } - return false; - }; @@ -284,32 +207,7 @@
-
- {#await account && profile.org.isMember(account, config) then isMember} - {#if isOwner(profile.org) || isMember} - - {/if} - {/await} -
- - {#await getOrgTreasury(profile.org) then tokens} - {#if tokens && tokens.length > 0} -
Treasury
-
- {#each tokens as token} - {` ${utils.formatBalance(token.balance, token.decimals)} ${ - token.symbol - } `} - {/each} -
-
- {/if} - {/await} +
{/if}
Profile
@@ -324,30 +222,7 @@ Not set {/if}
-
- {#await isOrgAuthorized(profile.org)} - - {:then authorized} - {#if authorized} - - {/if} - {/await} -
{/if} - - {#await profile.org.getSafe(config) then safe} - {#if safe} -
Quorum
-
- {safe.threshold} - of - {safe.owners.length} -
-
- {/if} - {/await} {:else}
@@ -360,7 +235,7 @@ {/if}
- {#if isUserAuthorized(profile.address)} + {#if isUserAuthorized(profile.address) && !profile.org} @@ -369,89 +244,6 @@ {/if}
- {#if profile.org} - {#await profile.org.getMembers(config)} - - {:then members} - {#if members.length > 0} - - {#await Profile.getMulti(members, config)} -
- -
- {:then members} -
- {#each members as profile} -
-
- - - -
-
-
-
-
- {/each} -
- {/await} - {/if} - {:catch err} - - Error: - failed to load org members: {err.message}. - - {/await} - {:else} - {#await Org.getOrgsByMember(profile.address, config)} - - {:then orgs} - {#if orgs.length > 0} -
- {#each orgs as org} -
- - {#await Profile.get(org.address, ProfileType.Minimal, config)} - - {:then profile} -
- - - -
-
-
-
- {/await} -
- {/each} -
- {/if} - {:catch err} - - Error: - failed to load orgs: {err.message}. - - {/await} - {/if} {#if profile.seed?.valid} (setNameForm = null)} /> - (transferOwnerForm = null)} /> {:catch err} {#if err instanceof NotFoundError} { - assert(config.signer); - - const org = new ethers.Contract( - this.address, - config.abi.org, - config.signer, - ); - return org.setName(name, config.provider.network.ensAddress, { - gasLimit: 200_000, - }); - } - - async setNameMultisig(name: string, config: Config): Promise { - assert(config.signer); - assert(config.safe.client); - - const safeAddress = ethers.utils.getAddress(this.owner); - const orgAddress = ethers.utils.getAddress(this.address); - const org = new ethers.Contract( - this.address, - config.abi.org, - config.signer, - ); - const unsignedTx = await org.populateTransaction.setName( - name, - config.provider.network.ensAddress, - ); - - const txData = unsignedTx.data; - if (!txData) { - throw new Error( - "Org::setNameMultisig: Could not generate transaction for `setName` call", - ); - } - - const safeTx = { - to: orgAddress, - value: ethers.constants.Zero.toString(), - data: txData, - operation: OperationType.Call, - }; - await utils.proposeSafeTransaction(safeTx, safeAddress, config); - } - - async setOwner( - address: string, - config: Config, - ): Promise { - assert(config.signer); - - const org = new ethers.Contract( - this.address, - config.abi.org, - config.signer, - ); - return org.setOwner(address); - } - - async setOwnerMultisig(owner: string, config: Config): Promise { - assert(config.signer); - assert(config.safe.client); - - const safeAddress = ethers.utils.getAddress(this.owner); - const orgAddress = ethers.utils.getAddress(this.address); - const org = new ethers.Contract( - this.address, - config.abi.org, - config.signer, - ); - const unsignedTx = await org.populateTransaction.setOwner(owner); - - const txData = unsignedTx.data; - if (!txData) { - throw new Error( - "Org::setOwnerMultisig: Could not generate transaction for `setOwner` call", - ); - } - - const safeTx = { - to: orgAddress, - value: ethers.constants.Zero.toString(), - data: txData, - operation: OperationType.Call, - }; - await utils.proposeSafeTransaction(safeTx, safeAddress, config); - } - - async getMembers(config: Config): Promise> { - if (this.safe) return this.safe.owners; - - const safe = await this.getSafe(config); - if (safe) { - return safe.owners; - } - return []; - } - - async getSafe(config: Config): Promise { - if (this.safe) return this.safe; - - return utils.getSafe(this.owner, config); - } - - async isMember(address: string, config: Config): Promise { - const members = await this.getMembers(config); - return members.includes(address.toLowerCase()); } static async get(addressOrName: string, config: Config): Promise { @@ -143,26 +25,18 @@ export class Org { try { const [owner, resolved] = await resolveOrgOwner(org); - const safe = await utils.getSafe(owner, config); // If what is resolved is not the same as the input, it's because we // were given a name. if (utils.isAddressEqual(addressOrName, resolved)) { - return new Org(resolved, owner, null, safe); + return new Org(resolved, owner, null); } else { - return new Org(resolved, owner, addressOrName, safe); + return new Org(resolved, owner, addressOrName); } } catch (e) { console.error(e); return null; } } - - static async getOrgsByMember( - _owner: string, - _config: Config, - ): Promise { - return []; - } } export const getOrgContract = cache.cached( diff --git a/src/base/registrations/Submit.svelte b/src/base/registrations/Submit.svelte index 3e0e27b8b..671fbd4dd 100644 --- a/src/base/registrations/Submit.svelte +++ b/src/base/registrations/Submit.svelte @@ -1,6 +1,5 @@ - - - -{#if state === "success" && newOwner} - -
✅
- -
- The ownership of - {formatAddress(org.address)} - - was successfully transfered to - {newOwner} - . -
- -
- -
-
-{:else if state === "proposed" && org} - -
🪴
- -
-

- The transaction to set the owner of - {formatAddress(org.address)} - - to - {newOwner} - was proposed to: -

-

-
- -
- -
-
-{:else if state === "failed"} - -
- 🔑 -
Transfer ownership
-
- -
-
- {errorMessage} -
-
- -
- -
-
-{:else} - -
- 🔑 -
Transfer ownership
-
- -
- {#if state === "signing"} - Please confirm the transaction in your wallet. - {:else if state === "pending"} - Waiting for transaction to be processed… - {:else if state === "proposing" && org} - Proposal is being submitted to the safe - {formatAddress(org.owner)} - , please sign the transaction in your wallet. - {:else if state === "idle"} - Transfer the ownership of Org - {formatAddress(org.address)} - - to a new address. - {/if} -
- -
- {#if state === "idle"} -
-
- -
-
- {:else if state === "pending" || state === "proposing" || state === "signing"} - - {/if} -
- -
- {#if state === "signing"} - - {:else if state === "pending"} - - {:else} - - - - {/if} -
-
-{/if} diff --git a/src/config.json b/src/config.json index 9cc1af9e4..0dc9aacd6 100644 --- a/src/config.json +++ b/src/config.json @@ -7,21 +7,6 @@ "radToken": { "address": "0x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3" }, - "orgFactory": { - "address": "0xa15bEb4876F20018b6b4A4116B7560c5fcC9336e" - }, - "orgs": { - "contractHash": "0x5c34bb0755876de98e801805e6685456eea739ad0abba1cc450a7ee0f2a70b74", - "pinned": [ - "alt-clients.radicle.eth", - "community.radicle.eth", - "upstream.radicle.eth", - "gnosisguild.radicle.eth", - "grants.radicle.eth", - "gip-editors.radicle.eth", - "dxdao.radicle.eth" - ] - }, "users": { "pinned": ["cloudhead.radicle.eth"] }, @@ -44,13 +29,6 @@ "address": "0x7b6CbebC5646D996d258dcD4ca1d334B282e9948", "faucet": "0x9Aa75397eD632A3060aCb5dE7f96e2457bceED8d" }, - "orgFactory": { - "address": "0xF3D04e874D07d680e8b26332eEae5b9B1c263121" - }, - "orgs": { - "contractHash": "0x5c34bb0755876de98e801805e6685456eea739ad0abba1cc450a7ee0f2a70b74", - "pinned": [] - }, "users": { "pinned": [] }, @@ -177,17 +155,8 @@ "function setAddr(bytes32 node, address addr)", "function setText(bytes32 node, string calldata key, string calldata value)" ], - "orgFactory": [ - "function createOrg(address) returns (address)", - "function createOrg(address[], uint256) returns (address)", - "event OrgCreated(address, address)" - ], "reverseRegistrar": ["function setName(string) returns (bytes32)"], - "org": [ - "function owner() view returns (address)", - "function setOwner(address)", - "function setName(string, address) returns (bytes32)" - ], + "org": ["function owner() view returns (address)"], "vesting": [ "function token() view returns (address)", "function totalVestingAmount() view returns (uint256)", diff --git a/src/config.ts b/src/config.ts index ea6942c14..b591da4c4 100644 --- a/src/config.ts +++ b/src/config.ts @@ -2,7 +2,6 @@ import { get, writable } from "svelte/store"; import type { Writable } from "svelte/store"; import { ethers } from "ethers"; import type { TypedDataSigner } from "@ethersproject/abstract-signer"; -import SafeServiceClient from "@gnosis.pm/safe-service-client"; import WalletConnect from "@walletconnect/client"; import config from "@app/config.json"; import { WalletConnectSigner } from "./WalletConnectSigner"; @@ -16,11 +15,6 @@ declare global { } } -/// Gas limits for various transactions. -const gasLimits = { - createOrg: 1_200_000, -}; - export type WalletConnectState = | { state: "close" } | { state: "open"; uri: string; onClose: any }; @@ -29,13 +23,10 @@ export class Config { network: { name: string; chainId: number }; registrar: { address: string; domain: string }; radToken: { address: string; faucet: string }; - orgFactory: { address: string }; reverseRegistrar: { address: string }; - orgs: { contractHash: string; pinned: string[] }; users: { pinned: string[] }; projects: { pinned: { urn: string; name: string; seed: string }[] }; seeds: { pinned: Record }; - gasLimits: { createOrg: number }; provider: ethers.providers.JsonRpcProvider; signer: (ethers.Signer & TypedDataSigner) | WalletConnectSigner | null; walletConnect: { @@ -56,7 +47,6 @@ export class Config { }; safe: { api?: string; - client?: SafeServiceClient; viewer: string | null; }; abi: { [contract: string]: string[] }; @@ -105,17 +95,11 @@ export class Config { this.seed = config.radicle.seed; this.registrar = cfg.registrar; this.radToken = cfg.radToken; - this.orgFactory = cfg.orgFactory; this.reverseRegistrar = cfg.reverseRegistrar; - this.orgs = cfg.orgs; this.users = cfg.users; this.safe = cfg.safe; - this.safe.client = this.safe.api - ? new SafeServiceClient(this.safe.api) - : undefined; this.provider = provider; this.signer = null; - this.gasLimits = gasLimits; this.projects = config.projects; this.seeds = config.seeds; this.abi = config.abi; diff --git a/src/ens/SetName.svelte b/src/ens/SetName.svelte index 3a02cc92f..e7fcac16a 100644 --- a/src/ens/SetName.svelte +++ b/src/ens/SetName.svelte @@ -4,37 +4,25 @@ import Modal from "@app/Modal.svelte"; import type { Config } from "@app/config"; import { formatAddress, isAddressEqual } from "@app/utils"; - import { Org } from "@app/base/orgs/Org"; import type { User } from "@app/base/users/User"; import ErrorModal from "@app/ErrorModal.svelte"; - import Address from "@app/Address.svelte"; - import * as utils from "@app/utils"; import Button from "@app/Button.svelte"; import TextInput from "@app/TextInput.svelte"; import Loading from "@app/Loading.svelte"; const dispatch = createEventDispatcher(); - export let entity: Org | User; + export let entity: User; export let config: Config; - const org = Org.hasOwnProperty.call(entity, "owner") ? (entity as Org) : null; - - const label = org ? "org" : "profile"; - enum State { Idle, Checking, - // Single-sig states. Signing, Pending, Success, - // Multi-sig states. - Proposing, - Proposed, - Failed, Mismatch, } @@ -54,17 +42,11 @@ if (resolved && isAddressEqual(resolved, entity.address)) { try { - if (org && (await utils.isSafe(org.owner, config))) { - state = State.Proposing; - await org.setNameMultisig(domain, config); - state = State.Proposed; - } else { - state = State.Signing; - const tx = await entity.setName(domain, config); - state = State.Pending; - await tx.wait(); - state = State.Success; - } + state = State.Signing; + const tx = await entity.setName(domain, config); + state = State.Pending; + await tx.wait(); + state = State.Success; } catch (e) { console.error(e); state = State.Failed; @@ -100,28 +82,6 @@ .
-
- -
- -{:else if state === State.Proposed && org} - -
🪴
- -
-

- The transaction to set the ENS name for - {formatAddress(entity.address)} - - to - {name}.{config.registrar.domain} - was proposed to: -

-

-
-
diff --git a/src/polyfills/stream.ts b/src/polyfills/stream.ts deleted file mode 100644 index 98fe03092..000000000 --- a/src/polyfills/stream.ts +++ /dev/null @@ -1,7 +0,0 @@ -// This shim is used as a stand-in for the node "stream" library, used by -// the "keccack" package depended on by @gnosis.pm/safe-core-sdk. -import * as streams from "@stardazed/streams"; - -// "Transform" is the old name for "TransformStream". -export const Transform = streams.TransformStream; -export default streams; diff --git a/src/utils.ts b/src/utils.ts index 087158cd4..e59c2e15d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -5,9 +5,6 @@ import { BigNumber } from "ethers"; import multibase from "multibase"; import katex from "katex"; import multihashes from "multihashes"; -import type { TransactionResult } from "@gnosis.pm/safe-core-sdk"; -import EthersSafe, { EthersAdapter } from "@gnosis.pm/safe-core-sdk"; -import type { SafeSignature } from "@gnosis.pm/safe-core-sdk-types"; import type { Config } from "@app/config"; import config from "@app/config.json"; import { assert } from "@app/error"; @@ -422,18 +419,10 @@ export async function identifyAddress( address: string, config: Config, ): Promise { - const safe = await isSafe(address, config); - if (safe) { - return AddressType.Safe; - } - const code = await getCode(address, config); const bytes = ethers.utils.arrayify(code); if (bytes.length > 0) { - if (ethers.utils.keccak256(bytes) === config.orgs.contractHash) { - return AddressType.Org; - } return AddressType.Contract; } return AddressType.EOA; @@ -513,22 +502,6 @@ export async function resolveEnsProfile( return null; } -// Check whether a Gnosis Safe exists at an address. -export async function isSafe( - _address: string, - _config: Config, -): Promise { - return false; -} - -// Get a Gnosis Safe at an address. -export async function getSafe( - _address: string, - _config: Config, -): Promise { - return null; -} - // Get token balances for an address. export async function getTokens( address: string, @@ -595,101 +568,6 @@ export function gravatarURL(email: string): string { return `https://www.gravatar.com/avatar/${hash}`; } -// Propose a Gnosis Safe multi-sig transaction. -export async function proposeSafeTransaction( - safeTx: SafeTransaction, - safeAddress: string, - config: Config, -): Promise { - assert(config.signer); - assert(config.safe.client); - - const ethAdapter = new EthersAdapter({ - ethers, - signer: config.signer, - }); - const safeSdk = await EthersSafe.create({ - ethAdapter, - safeAddress, - }); - const estimation = await config.safe.client.estimateSafeTransaction( - safeAddress, - safeTx, - ); - const transaction = await safeSdk.createTransaction({ - ...safeTx, - safeTxGas: Number(estimation.safeTxGas), - }); - const safeTxHash = await safeSdk.getTransactionHash(transaction); - const signature = await safeSdk.signTransactionHash(safeTxHash); - - await config.safe.client.proposeTransaction( - safeAddress, - transaction.data, - safeTxHash, - signature, - ); -} - -// Sign a Gnosis Safe multi-sig transaction. -export async function signSafeTransaction( - safeAddress: string, - safeTxHash: string, - config: Config, -): Promise { - assert(config.signer); - - const ethAdapter = new EthersAdapter({ - ethers, - signer: config.signer, - }); - const safeSdk = await EthersSafe.create({ - ethAdapter, - safeAddress, - }); - return await safeSdk.signTransactionHash(safeTxHash); -} - -// Execute a Gnosis Safe signed transaction by safeTxHash. -export async function executeSignedSafeTransaction( - safeAddress: string, - safeTxHash: string, - config: Config, -): Promise { - assert(config.signer); - assert(config.safe.client); - - const ethAdapter = new EthersAdapter({ - ethers, - signer: config.signer, - }); - const safeSdk = await EthersSafe.create({ - ethAdapter, - safeAddress, - }); - - const signedTx = await config.safe.client.getTransaction(safeTxHash); - - assert(signedTx.data); - assert(signedTx.confirmations); - - const safeTx = await safeSdk.createTransaction({ - ...signedTx, - gasPrice: Number(signedTx.gasPrice), - data: signedTx.data, - }); - - signedTx.confirmations.forEach(confirmation => { - const signature = new EthSignSignature( - confirmation.owner, - confirmation.signature, - ); - safeTx.addSignature(signature); - }); - - return await safeSdk.executeTransaction(safeTx); -} - export class EthSignSignature { signer: string; data: string; diff --git a/vite.config.ts b/vite.config.ts index caf24ba05..a3dc5b593 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -36,8 +36,6 @@ const config: UserConfig = { alias: { "@public": path.resolve("./public"), "@app": path.resolve("./src"), - // Polyfill for Node.js 'stream' library. - stream: path.resolve("./src/polyfills/stream.ts"), "typedarray-to-buffer": path.resolve( "./src/polyfills/typedarray-to-buffer.js", ),