@instadapp/interop-x 0.0.0-dev.ee3d74b → 0.0.0-dev.ef38dfb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +3 -1
- package/dist/src/abi/index.js +2 -0
- package/dist/src/abi/instList.json +232 -0
- package/dist/src/api/index.js +7 -0
- package/dist/src/constants/addresses.js +4 -2
- package/dist/src/db/models/transaction.js +15 -7
- package/dist/src/errors/index.js +10 -0
- package/dist/src/gnosis/actions/aaveV2/source.js +15 -4
- package/dist/src/gnosis/actions/aaveV2/target.js +78 -0
- package/dist/src/index.js +1 -1
- package/dist/src/tasks/InteropX/ProcessSubmitSubmitEvents.js +15 -3
- package/dist/src/tasks/InteropX/ProcessValidateEvents.js +184 -0
- package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +112 -0
- package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +1 -0
- package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +105 -0
- package/dist/src/tasks/index.js +10 -1
- package/dist/src/typechain/InstList.js +2 -0
- package/dist/src/typechain/factories/InstList__factory.js +249 -0
- package/dist/src/typechain/factories/index.js +3 -1
- package/dist/src/typechain/index.js +3 -1
- package/dist/src/utils/async.js +18 -0
- package/dist/src/utils/dsa.js +24 -0
- package/dist/src/utils/formatting.js +17 -0
- package/dist/src/utils/gnosis.js +62 -0
- package/dist/src/utils/http.js +10 -0
- package/dist/src/utils/index.js +20 -219
- package/dist/src/utils/interop.js +16 -0
- package/dist/src/utils/web3.js +92 -0
- package/package.json +3 -1
- package/src/abi/index.ts +2 -0
- package/src/abi/instList.json +232 -0
- package/src/api/index.ts +8 -0
- package/src/constants/addresses.ts +5 -3
- package/src/db/models/transaction.ts +134 -80
- package/src/errors/index.ts +6 -0
- package/src/gnosis/actions/aaveV2/source.ts +19 -5
- package/src/gnosis/actions/aaveV2/target.ts +130 -2
- package/src/tasks/InteropX/ProcessSubmitSubmitEvents.ts +20 -3
- package/src/tasks/InteropX/ProcessValidateEvents.ts +274 -0
- package/src/tasks/InteropX/SyncLogExecuteEvents.ts +162 -0
- package/src/tasks/InteropX/SyncLogSubmitEvents.ts +1 -0
- package/src/tasks/InteropX/SyncLogValidateEvents.ts +152 -0
- package/src/tasks/index.ts +13 -1
- package/src/typechain/InstList.ts +402 -0
- package/src/typechain/factories/InstList__factory.ts +253 -0
- package/src/typechain/factories/index.ts +1 -0
- package/src/typechain/index.ts +2 -0
- package/src/utils/async.ts +22 -0
- package/src/utils/dsa.ts +30 -0
- package/src/utils/formatting.ts +15 -0
- package/src/utils/gnosis.ts +123 -0
- package/src/utils/http.ts +6 -0
- package/src/utils/index.ts +7 -365
- package/src/utils/interop.ts +28 -0
- package/src/utils/web3.ts +131 -0
    
        package/dist/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
                "name": "@instadapp/interop-x",
         | 
| 3 | 
            -
                "version": "0.0.0-dev. | 
| 3 | 
            +
                "version": "0.0.0-dev.ef38dfb",
         | 
| 4 4 | 
             
                "license": "MIT",
         | 
| 5 5 | 
             
                "main": "dist/index.js",
         | 
| 6 6 | 
             
                "engines": {
         | 
| @@ -53,6 +53,7 @@ | |
| 53 53 | 
             
                    "sequelize": "6.18.0",
         | 
| 54 54 | 
             
                    "sqlite3": "^5.0.8",
         | 
| 55 55 | 
             
                    "waait": "^1.0.5",
         | 
| 56 | 
            +
                    "web3-eth-abi": "^1.7.3",
         | 
| 56 57 | 
             
                    "web3-utils": "^1.7.3"
         | 
| 57 58 | 
             
                },
         | 
| 58 59 | 
             
                "bin": {
         | 
| @@ -61,6 +62,7 @@ | |
| 61 62 | 
             
                },
         | 
| 62 63 | 
             
                "devDependencies": {
         | 
| 63 64 | 
             
                    "@typechain/ethers-v5": "^10.0.0",
         | 
| 65 | 
            +
                    "@types/async-retry": "^1.4.4",
         | 
| 64 66 | 
             
                    "@types/bn.js": "^5.1.0",
         | 
| 65 67 | 
             
                    "@types/fs-extra": "^9.0.13",
         | 
| 66 68 | 
             
                    "@types/node": "^17.0.33",
         | 
    
        package/dist/src/abi/index.js
    CHANGED
    
    | @@ -7,9 +7,11 @@ const gnosisSafe_json_1 = __importDefault(require("./gnosisSafe.json")); | |
| 7 7 | 
             
            const erc20_json_1 = __importDefault(require("./erc20.json"));
         | 
| 8 8 | 
             
            const interopX_json_1 = __importDefault(require("./interopX.json"));
         | 
| 9 9 | 
             
            const connectors_1 = require("./connectors");
         | 
| 10 | 
            +
            const instList_json_1 = __importDefault(require("./instList.json"));
         | 
| 10 11 | 
             
            exports.default = {
         | 
| 11 12 | 
             
                gnosisSafe: gnosisSafe_json_1.default,
         | 
| 12 13 | 
             
                erc20: erc20_json_1.default,
         | 
| 13 14 | 
             
                interopX: interopX_json_1.default,
         | 
| 14 15 | 
             
                connectors: connectors_1.connectors,
         | 
| 16 | 
            +
                instList: instList_json_1.default,
         | 
| 15 17 | 
             
            };
         | 
| @@ -0,0 +1,232 @@ | |
| 1 | 
            +
            [
         | 
| 2 | 
            +
                {
         | 
| 3 | 
            +
                    "inputs": [
         | 
| 4 | 
            +
                        {
         | 
| 5 | 
            +
                            "internalType": "address",
         | 
| 6 | 
            +
                            "name": "_instaIndex",
         | 
| 7 | 
            +
                            "type": "address"
         | 
| 8 | 
            +
                        }
         | 
| 9 | 
            +
                    ],
         | 
| 10 | 
            +
                    "stateMutability": "nonpayable",
         | 
| 11 | 
            +
                    "type": "constructor"
         | 
| 12 | 
            +
                },
         | 
| 13 | 
            +
                {
         | 
| 14 | 
            +
                    "inputs": [
         | 
| 15 | 
            +
                        {
         | 
| 16 | 
            +
                            "internalType": "uint64",
         | 
| 17 | 
            +
                            "name": "",
         | 
| 18 | 
            +
                            "type": "uint64"
         | 
| 19 | 
            +
                        }
         | 
| 20 | 
            +
                    ],
         | 
| 21 | 
            +
                    "name": "accountAddr",
         | 
| 22 | 
            +
                    "outputs": [
         | 
| 23 | 
            +
                        {
         | 
| 24 | 
            +
                            "internalType": "address",
         | 
| 25 | 
            +
                            "name": "",
         | 
| 26 | 
            +
                            "type": "address"
         | 
| 27 | 
            +
                        }
         | 
| 28 | 
            +
                    ],
         | 
| 29 | 
            +
                    "stateMutability": "view",
         | 
| 30 | 
            +
                    "type": "function"
         | 
| 31 | 
            +
                },
         | 
| 32 | 
            +
                {
         | 
| 33 | 
            +
                    "inputs": [
         | 
| 34 | 
            +
                        {
         | 
| 35 | 
            +
                            "internalType": "address",
         | 
| 36 | 
            +
                            "name": "",
         | 
| 37 | 
            +
                            "type": "address"
         | 
| 38 | 
            +
                        }
         | 
| 39 | 
            +
                    ],
         | 
| 40 | 
            +
                    "name": "accountID",
         | 
| 41 | 
            +
                    "outputs": [
         | 
| 42 | 
            +
                        {
         | 
| 43 | 
            +
                            "internalType": "uint64",
         | 
| 44 | 
            +
                            "name": "",
         | 
| 45 | 
            +
                            "type": "uint64"
         | 
| 46 | 
            +
                        }
         | 
| 47 | 
            +
                    ],
         | 
| 48 | 
            +
                    "stateMutability": "view",
         | 
| 49 | 
            +
                    "type": "function"
         | 
| 50 | 
            +
                },
         | 
| 51 | 
            +
                {
         | 
| 52 | 
            +
                    "inputs": [
         | 
| 53 | 
            +
                        {
         | 
| 54 | 
            +
                            "internalType": "uint64",
         | 
| 55 | 
            +
                            "name": "",
         | 
| 56 | 
            +
                            "type": "uint64"
         | 
| 57 | 
            +
                        }
         | 
| 58 | 
            +
                    ],
         | 
| 59 | 
            +
                    "name": "accountLink",
         | 
| 60 | 
            +
                    "outputs": [
         | 
| 61 | 
            +
                        {
         | 
| 62 | 
            +
                            "internalType": "address",
         | 
| 63 | 
            +
                            "name": "first",
         | 
| 64 | 
            +
                            "type": "address"
         | 
| 65 | 
            +
                        },
         | 
| 66 | 
            +
                        {
         | 
| 67 | 
            +
                            "internalType": "address",
         | 
| 68 | 
            +
                            "name": "last",
         | 
| 69 | 
            +
                            "type": "address"
         | 
| 70 | 
            +
                        },
         | 
| 71 | 
            +
                        {
         | 
| 72 | 
            +
                            "internalType": "uint64",
         | 
| 73 | 
            +
                            "name": "count",
         | 
| 74 | 
            +
                            "type": "uint64"
         | 
| 75 | 
            +
                        }
         | 
| 76 | 
            +
                    ],
         | 
| 77 | 
            +
                    "stateMutability": "view",
         | 
| 78 | 
            +
                    "type": "function"
         | 
| 79 | 
            +
                },
         | 
| 80 | 
            +
                {
         | 
| 81 | 
            +
                    "inputs": [
         | 
| 82 | 
            +
                        {
         | 
| 83 | 
            +
                            "internalType": "uint64",
         | 
| 84 | 
            +
                            "name": "",
         | 
| 85 | 
            +
                            "type": "uint64"
         | 
| 86 | 
            +
                        },
         | 
| 87 | 
            +
                        {
         | 
| 88 | 
            +
                            "internalType": "address",
         | 
| 89 | 
            +
                            "name": "",
         | 
| 90 | 
            +
                            "type": "address"
         | 
| 91 | 
            +
                        }
         | 
| 92 | 
            +
                    ],
         | 
| 93 | 
            +
                    "name": "accountList",
         | 
| 94 | 
            +
                    "outputs": [
         | 
| 95 | 
            +
                        {
         | 
| 96 | 
            +
                            "internalType": "address",
         | 
| 97 | 
            +
                            "name": "prev",
         | 
| 98 | 
            +
                            "type": "address"
         | 
| 99 | 
            +
                        },
         | 
| 100 | 
            +
                        {
         | 
| 101 | 
            +
                            "internalType": "address",
         | 
| 102 | 
            +
                            "name": "next",
         | 
| 103 | 
            +
                            "type": "address"
         | 
| 104 | 
            +
                        }
         | 
| 105 | 
            +
                    ],
         | 
| 106 | 
            +
                    "stateMutability": "view",
         | 
| 107 | 
            +
                    "type": "function"
         | 
| 108 | 
            +
                },
         | 
| 109 | 
            +
                {
         | 
| 110 | 
            +
                    "inputs": [],
         | 
| 111 | 
            +
                    "name": "accounts",
         | 
| 112 | 
            +
                    "outputs": [
         | 
| 113 | 
            +
                        {
         | 
| 114 | 
            +
                            "internalType": "uint64",
         | 
| 115 | 
            +
                            "name": "",
         | 
| 116 | 
            +
                            "type": "uint64"
         | 
| 117 | 
            +
                        }
         | 
| 118 | 
            +
                    ],
         | 
| 119 | 
            +
                    "stateMutability": "view",
         | 
| 120 | 
            +
                    "type": "function"
         | 
| 121 | 
            +
                },
         | 
| 122 | 
            +
                {
         | 
| 123 | 
            +
                    "inputs": [
         | 
| 124 | 
            +
                        {
         | 
| 125 | 
            +
                            "internalType": "address",
         | 
| 126 | 
            +
                            "name": "_owner",
         | 
| 127 | 
            +
                            "type": "address"
         | 
| 128 | 
            +
                        }
         | 
| 129 | 
            +
                    ],
         | 
| 130 | 
            +
                    "name": "addAuth",
         | 
| 131 | 
            +
                    "outputs": [],
         | 
| 132 | 
            +
                    "stateMutability": "nonpayable",
         | 
| 133 | 
            +
                    "type": "function"
         | 
| 134 | 
            +
                },
         | 
| 135 | 
            +
                {
         | 
| 136 | 
            +
                    "inputs": [
         | 
| 137 | 
            +
                        {
         | 
| 138 | 
            +
                            "internalType": "address",
         | 
| 139 | 
            +
                            "name": "_account",
         | 
| 140 | 
            +
                            "type": "address"
         | 
| 141 | 
            +
                        }
         | 
| 142 | 
            +
                    ],
         | 
| 143 | 
            +
                    "name": "init",
         | 
| 144 | 
            +
                    "outputs": [],
         | 
| 145 | 
            +
                    "stateMutability": "nonpayable",
         | 
| 146 | 
            +
                    "type": "function"
         | 
| 147 | 
            +
                },
         | 
| 148 | 
            +
                {
         | 
| 149 | 
            +
                    "inputs": [],
         | 
| 150 | 
            +
                    "name": "instaIndex",
         | 
| 151 | 
            +
                    "outputs": [
         | 
| 152 | 
            +
                        {
         | 
| 153 | 
            +
                            "internalType": "address",
         | 
| 154 | 
            +
                            "name": "",
         | 
| 155 | 
            +
                            "type": "address"
         | 
| 156 | 
            +
                        }
         | 
| 157 | 
            +
                    ],
         | 
| 158 | 
            +
                    "stateMutability": "view",
         | 
| 159 | 
            +
                    "type": "function"
         | 
| 160 | 
            +
                },
         | 
| 161 | 
            +
                {
         | 
| 162 | 
            +
                    "inputs": [
         | 
| 163 | 
            +
                        {
         | 
| 164 | 
            +
                            "internalType": "address",
         | 
| 165 | 
            +
                            "name": "_owner",
         | 
| 166 | 
            +
                            "type": "address"
         | 
| 167 | 
            +
                        }
         | 
| 168 | 
            +
                    ],
         | 
| 169 | 
            +
                    "name": "removeAuth",
         | 
| 170 | 
            +
                    "outputs": [],
         | 
| 171 | 
            +
                    "stateMutability": "nonpayable",
         | 
| 172 | 
            +
                    "type": "function"
         | 
| 173 | 
            +
                },
         | 
| 174 | 
            +
                {
         | 
| 175 | 
            +
                    "inputs": [
         | 
| 176 | 
            +
                        {
         | 
| 177 | 
            +
                            "internalType": "address",
         | 
| 178 | 
            +
                            "name": "",
         | 
| 179 | 
            +
                            "type": "address"
         | 
| 180 | 
            +
                        }
         | 
| 181 | 
            +
                    ],
         | 
| 182 | 
            +
                    "name": "userLink",
         | 
| 183 | 
            +
                    "outputs": [
         | 
| 184 | 
            +
                        {
         | 
| 185 | 
            +
                            "internalType": "uint64",
         | 
| 186 | 
            +
                            "name": "first",
         | 
| 187 | 
            +
                            "type": "uint64"
         | 
| 188 | 
            +
                        },
         | 
| 189 | 
            +
                        {
         | 
| 190 | 
            +
                            "internalType": "uint64",
         | 
| 191 | 
            +
                            "name": "last",
         | 
| 192 | 
            +
                            "type": "uint64"
         | 
| 193 | 
            +
                        },
         | 
| 194 | 
            +
                        {
         | 
| 195 | 
            +
                            "internalType": "uint64",
         | 
| 196 | 
            +
                            "name": "count",
         | 
| 197 | 
            +
                            "type": "uint64"
         | 
| 198 | 
            +
                        }
         | 
| 199 | 
            +
                    ],
         | 
| 200 | 
            +
                    "stateMutability": "view",
         | 
| 201 | 
            +
                    "type": "function"
         | 
| 202 | 
            +
                },
         | 
| 203 | 
            +
                {
         | 
| 204 | 
            +
                    "inputs": [
         | 
| 205 | 
            +
                        {
         | 
| 206 | 
            +
                            "internalType": "address",
         | 
| 207 | 
            +
                            "name": "",
         | 
| 208 | 
            +
                            "type": "address"
         | 
| 209 | 
            +
                        },
         | 
| 210 | 
            +
                        {
         | 
| 211 | 
            +
                            "internalType": "uint64",
         | 
| 212 | 
            +
                            "name": "",
         | 
| 213 | 
            +
                            "type": "uint64"
         | 
| 214 | 
            +
                        }
         | 
| 215 | 
            +
                    ],
         | 
| 216 | 
            +
                    "name": "userList",
         | 
| 217 | 
            +
                    "outputs": [
         | 
| 218 | 
            +
                        {
         | 
| 219 | 
            +
                            "internalType": "uint64",
         | 
| 220 | 
            +
                            "name": "prev",
         | 
| 221 | 
            +
                            "type": "uint64"
         | 
| 222 | 
            +
                        },
         | 
| 223 | 
            +
                        {
         | 
| 224 | 
            +
                            "internalType": "uint64",
         | 
| 225 | 
            +
                            "name": "next",
         | 
| 226 | 
            +
                            "type": "uint64"
         | 
| 227 | 
            +
                        }
         | 
| 228 | 
            +
                    ],
         | 
| 229 | 
            +
                    "stateMutability": "view",
         | 
| 230 | 
            +
                    "type": "function"
         | 
| 231 | 
            +
                }
         | 
| 232 | 
            +
            ]
         | 
    
        package/dist/src/api/index.js
    CHANGED
    
    | @@ -25,6 +25,13 @@ const startApiServer = async () => { | |
| 25 25 | 
             
                            ]
         | 
| 26 26 | 
             
                        });
         | 
| 27 27 | 
             
                    });
         | 
| 28 | 
            +
                    server.get('/transactions/:transaction', async (req) => {
         | 
| 29 | 
            +
                        return await db_1.Transaction.findOne({
         | 
| 30 | 
            +
                            where: {
         | 
| 31 | 
            +
                                transactionHash: req.params.transaction
         | 
| 32 | 
            +
                            }
         | 
| 33 | 
            +
                        });
         | 
| 34 | 
            +
                    });
         | 
| 28 35 | 
             
                    await server.listen(PORT, HOST);
         | 
| 29 36 | 
             
                    logger.log(`RPC Server listening at http://${HOST}:${PORT}`);
         | 
| 30 37 | 
             
                }
         | 
| @@ -7,11 +7,13 @@ exports.addresses = { | |
| 7 7 | 
             
                    multisend: '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761',
         | 
| 8 8 | 
             
                    interopX: '0xDB6083df37C5F224a3dF84A4B5f9fB60b6c8670a',
         | 
| 9 9 | 
             
                    dsaAddress: '0x9Fbd453a8e7a158510fBae5D9935958507cf4b19',
         | 
| 10 | 
            +
                    instList: "0x839c2D3aDe63DF5b0b8F3E57D5e145057Ab41556",
         | 
| 10 11 | 
             
                },
         | 
| 11 12 | 
             
                43114: {
         | 
| 12 13 | 
             
                    gnosisSafe: '0x31d7a5194Fe60AC209Cf1Ce2d539C9A60662Ed6b',
         | 
| 13 14 | 
             
                    multisend: '0x998739BFdAAdde7C933B942a68053933098f9EDa',
         | 
| 14 | 
            -
                    interopX: ' | 
| 15 | 
            -
                    dsaAddress: ' | 
| 15 | 
            +
                    interopX: '0xA82A87096709E3D8648c9d9a22f31133bC4B6d32',
         | 
| 16 | 
            +
                    dsaAddress: '0x995e67a652d2be45a8bff438b3dfac66dfff1c46',
         | 
| 17 | 
            +
                    instList: "0x9926955e0Dd681Dc303370C52f4Ad0a4dd061687",
         | 
| 16 18 | 
             
                }
         | 
| 17 19 | 
             
            };
         | 
| @@ -10,7 +10,7 @@ Transaction.init({ | |
| 10 10 | 
             
                id: {
         | 
| 11 11 | 
             
                    type: sequelize_2.DataTypes.INTEGER,
         | 
| 12 12 | 
             
                    autoIncrement: true,
         | 
| 13 | 
            -
                    primaryKey: true
         | 
| 13 | 
            +
                    primaryKey: true,
         | 
| 14 14 | 
             
                },
         | 
| 15 15 | 
             
                transactionHash: sequelize_2.DataTypes.STRING,
         | 
| 16 16 | 
             
                actionId: sequelize_2.DataTypes.STRING,
         | 
| @@ -26,7 +26,7 @@ Transaction.init({ | |
| 26 26 | 
             
                sourceBlockNumber: sequelize_2.DataTypes.NUMBER,
         | 
| 27 27 | 
             
                sourceStatus: {
         | 
| 28 28 | 
             
                    type: sequelize_2.DataTypes.STRING,
         | 
| 29 | 
            -
                    defaultValue:  | 
| 29 | 
            +
                    defaultValue: "pending",
         | 
| 30 30 | 
             
                },
         | 
| 31 31 | 
             
                sourceErrors: {
         | 
| 32 32 | 
             
                    type: sequelize_2.DataTypes.JSON,
         | 
| @@ -38,7 +38,7 @@ Transaction.init({ | |
| 38 38 | 
             
                },
         | 
| 39 39 | 
             
                sourceCreatedAt: {
         | 
| 40 40 | 
             
                    type: sequelize_2.DataTypes.DATE,
         | 
| 41 | 
            -
                    defaultValue: Date.now()
         | 
| 41 | 
            +
                    defaultValue: Date.now(),
         | 
| 42 42 | 
             
                },
         | 
| 43 43 | 
             
                sourceDelayUntil: sequelize_2.DataTypes.STRING,
         | 
| 44 44 | 
             
                targetChainId: sequelize_2.DataTypes.NUMBER,
         | 
| @@ -47,7 +47,7 @@ Transaction.init({ | |
| 47 47 | 
             
                targetBlockNumber: sequelize_2.DataTypes.NUMBER,
         | 
| 48 48 | 
             
                targetStatus: {
         | 
| 49 49 | 
             
                    type: sequelize_2.DataTypes.STRING,
         | 
| 50 | 
            -
                    defaultValue:  | 
| 50 | 
            +
                    defaultValue: "pending",
         | 
| 51 51 | 
             
                },
         | 
| 52 52 | 
             
                targetErrors: {
         | 
| 53 53 | 
             
                    type: sequelize_2.DataTypes.JSON,
         | 
| @@ -61,12 +61,20 @@ Transaction.init({ | |
| 61 61 | 
             
                targetDelayUntil: sequelize_2.DataTypes.DATE,
         | 
| 62 62 | 
             
                submitEvent: {
         | 
| 63 63 | 
             
                    type: sequelize_2.DataTypes.JSON,
         | 
| 64 | 
            -
                    allowNull: false
         | 
| 64 | 
            +
                    allowNull: false,
         | 
| 65 | 
            +
                },
         | 
| 66 | 
            +
                validateEvent: {
         | 
| 67 | 
            +
                    type: sequelize_2.DataTypes.JSON,
         | 
| 68 | 
            +
                    allowNull: true,
         | 
| 69 | 
            +
                },
         | 
| 70 | 
            +
                executeEvent: {
         | 
| 71 | 
            +
                    type: sequelize_2.DataTypes.JSON,
         | 
| 72 | 
            +
                    allowNull: true,
         | 
| 65 73 | 
             
                },
         | 
| 66 74 | 
             
                status: {
         | 
| 67 75 | 
             
                    type: sequelize_2.DataTypes.STRING,
         | 
| 68 | 
            -
                    defaultValue:  | 
| 76 | 
            +
                    defaultValue: "pending",
         | 
| 69 77 | 
             
                },
         | 
| 70 78 | 
             
                createdAt: sequelize_2.DataTypes.DATE,
         | 
| 71 79 | 
             
                updatedAt: sequelize_2.DataTypes.DATE,
         | 
| 72 | 
            -
            }, { sequelize: sequelize_1.sequelize, tableName:  | 
| 80 | 
            +
            }, { sequelize: sequelize_1.sequelize, tableName: "transactions" });
         | 
| @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            "use strict";
         | 
| 2 | 
            +
            Object.defineProperty(exports, "__esModule", { value: true });
         | 
| 3 | 
            +
            exports.LiquidityError = void 0;
         | 
| 4 | 
            +
            class LiquidityError extends Error {
         | 
| 5 | 
            +
                constructor(message) {
         | 
| 6 | 
            +
                    super(message || "Not enough liquidity");
         | 
| 7 | 
            +
                    Object.setPrototypeOf(this, new.target.prototype);
         | 
| 8 | 
            +
                }
         | 
| 9 | 
            +
            }
         | 
| 10 | 
            +
            exports.LiquidityError = LiquidityError;
         | 
| @@ -15,6 +15,8 @@ async function default_1(transaction) { | |
| 15 15 | 
             
                const { position, actionId, actionIdHashHash, sourceSender, sourceDsaId, targetDsaId, sourceChainId, targetChainId, vnonce, metadata, } = transaction.submitEvent;
         | 
| 16 16 | 
             
                const sourceChainProvider = new ethers_1.ethers.providers.JsonRpcProvider((0, utils_1.getRpcProviderUrl)(sourceChainId));
         | 
| 17 17 | 
             
                const sourceWallet = new ethers_1.ethers.Wallet(config_1.default.privateKey, sourceChainProvider);
         | 
| 18 | 
            +
                const dsaAddress = constants_1.addresses[sourceChainId].dsaAddress;
         | 
| 19 | 
            +
                const sourceUserAddress = Number(sourceDsaId) == 0 ? sourceSender : dsaAddress;
         | 
| 18 20 | 
             
                const interopAddress = constants_1.addresses[sourceChainId].interopX;
         | 
| 19 21 | 
             
                const contract = (0, utils_1.getContract)(interopAddress, abi_1.default.interopX, sourceWallet);
         | 
| 20 22 | 
             
                const sourceSpells = [];
         | 
| @@ -26,9 +28,18 @@ async function default_1(transaction) { | |
| 26 28 | 
             
                        args: [withdraw.sourceToken, withdraw.amount, "2", "0", "0"],
         | 
| 27 29 | 
             
                    };
         | 
| 28 30 | 
             
                    sourceSpells.push({
         | 
| 29 | 
            -
                        connector: spellData. | 
| 31 | 
            +
                        connector: spellData.connector,
         | 
| 30 32 | 
             
                        data: (0, utils_1.encodeConnectorMethod)(spellData),
         | 
| 31 33 | 
             
                    });
         | 
| 34 | 
            +
                    let spellDataBasicWithdraw = {
         | 
| 35 | 
            +
                        connector: "BASIC-A",
         | 
| 36 | 
            +
                        method: "withdraw",
         | 
| 37 | 
            +
                        args: [withdraw.sourceToken, withdraw.amount, sourceUserAddress, "0", "0"],
         | 
| 38 | 
            +
                    };
         | 
| 39 | 
            +
                    commonSpells.push({
         | 
| 40 | 
            +
                        connector: spellDataBasicWithdraw.connector,
         | 
| 41 | 
            +
                        data: (0, utils_1.encodeConnectorMethod)(spellDataBasicWithdraw),
         | 
| 42 | 
            +
                    });
         | 
| 32 43 | 
             
                }
         | 
| 33 44 | 
             
                for (const supply of position.supply) {
         | 
| 34 45 | 
             
                    let spellDataWithdraw = {
         | 
| @@ -37,16 +48,16 @@ async function default_1(transaction) { | |
| 37 48 | 
             
                        args: [supply.sourceToken, supply.amount, "0", "0"],
         | 
| 38 49 | 
             
                    };
         | 
| 39 50 | 
             
                    sourceSpells.push({
         | 
| 40 | 
            -
                        connector: spellDataWithdraw. | 
| 51 | 
            +
                        connector: spellDataWithdraw.connector,
         | 
| 41 52 | 
             
                        data: (0, utils_1.encodeConnectorMethod)(spellDataWithdraw),
         | 
| 42 53 | 
             
                    });
         | 
| 43 54 | 
             
                    let spellDataBasicWithdraw = {
         | 
| 44 55 | 
             
                        connector: "BASIC-A",
         | 
| 45 56 | 
             
                        method: "withdraw",
         | 
| 46 | 
            -
                        args: [supply.sourceToken, supply.amount,  | 
| 57 | 
            +
                        args: [supply.sourceToken, supply.amount, dsaAddress, "0", "0"],
         | 
| 47 58 | 
             
                    };
         | 
| 48 59 | 
             
                    sourceSpells.push({
         | 
| 49 | 
            -
                        connector: spellDataBasicWithdraw. | 
| 60 | 
            +
                        connector: spellDataBasicWithdraw.connector,
         | 
| 50 61 | 
             
                        data: (0, utils_1.encodeConnectorMethod)(spellDataBasicWithdraw),
         | 
| 51 62 | 
             
                    });
         | 
| 52 63 | 
             
                }
         | 
| @@ -1,8 +1,86 @@ | |
| 1 1 | 
             
            "use strict";
         | 
| 2 | 
            +
            var __importDefault = (this && this.__importDefault) || function (mod) {
         | 
| 3 | 
            +
                return (mod && mod.__esModule) ? mod : { "default": mod };
         | 
| 4 | 
            +
            };
         | 
| 2 5 | 
             
            Object.defineProperty(exports, "__esModule", { value: true });
         | 
| 6 | 
            +
            const abi_1 = __importDefault(require("@/abi"));
         | 
| 7 | 
            +
            const config_1 = __importDefault(require("@/config"));
         | 
| 8 | 
            +
            const constants_1 = require("@/constants");
         | 
| 9 | 
            +
            const utils_1 = require("@/utils");
         | 
| 10 | 
            +
            const ethers_1 = require("ethers");
         | 
| 11 | 
            +
            const ethers_multisend_1 = require("ethers-multisend");
         | 
| 3 12 | 
             
            async function default_1(transaction) {
         | 
| 4 13 | 
             
                const transactions = [];
         | 
| 5 14 | 
             
                const logs = [];
         | 
| 15 | 
            +
                const { sourceSpells, position, actionId, sourceSender, sourceDsaId, targetDsaId, sourceChainId, targetChainId, vnonce, metadata, } = transaction.validateEvent;
         | 
| 16 | 
            +
                const targetChainProvider = new ethers_1.ethers.providers.JsonRpcProvider((0, utils_1.getRpcProviderUrl)(targetChainId));
         | 
| 17 | 
            +
                const targetWallet = new ethers_1.ethers.Wallet(config_1.default.privateKey, targetChainProvider);
         | 
| 18 | 
            +
                const targetInstListContract = (0, utils_1.getContract)(constants_1.addresses[targetChainId].instList, abi_1.default.instList, targetChainProvider);
         | 
| 19 | 
            +
                const targetDsaAddress = await targetInstListContract.accountAddr(targetDsaId);
         | 
| 20 | 
            +
                const dsaAddress = constants_1.addresses[targetChainId].dsaAddress;
         | 
| 21 | 
            +
                const interopAddress = constants_1.addresses[targetChainId].interopX;
         | 
| 22 | 
            +
                const contract = (0, utils_1.getContract)(interopAddress, abi_1.default.interopX, targetWallet);
         | 
| 23 | 
            +
                const targetSpells = [];
         | 
| 24 | 
            +
                const commonSpells = [];
         | 
| 25 | 
            +
                for (const supplyToken of position.supply) {
         | 
| 26 | 
            +
                    let spellData = {
         | 
| 27 | 
            +
                        connector: "AAVE-V2-A",
         | 
| 28 | 
            +
                        method: "deposit",
         | 
| 29 | 
            +
                        args: [supplyToken.targetToken, supplyToken.amount, "0", "0"],
         | 
| 30 | 
            +
                    };
         | 
| 31 | 
            +
                    targetSpells.push({
         | 
| 32 | 
            +
                        connector: spellData.connector,
         | 
| 33 | 
            +
                        data: (0, utils_1.encodeConnectorMethod)(spellData),
         | 
| 34 | 
            +
                    });
         | 
| 35 | 
            +
                    let spellDataBasicWithdraw = {
         | 
| 36 | 
            +
                        connector: "BASIC-A",
         | 
| 37 | 
            +
                        method: "withdraw",
         | 
| 38 | 
            +
                        args: [supplyToken.targetToken, supplyToken.amount, targetDsaAddress, "0", "0"],
         | 
| 39 | 
            +
                    };
         | 
| 40 | 
            +
                    commonSpells.push({
         | 
| 41 | 
            +
                        connector: spellDataBasicWithdraw.connector,
         | 
| 42 | 
            +
                        data: (0, utils_1.encodeConnectorMethod)(spellDataBasicWithdraw),
         | 
| 43 | 
            +
                    });
         | 
| 44 | 
            +
                }
         | 
| 45 | 
            +
                for (const withdrawToken of position.withdraw) {
         | 
| 46 | 
            +
                    let spellData = {
         | 
| 47 | 
            +
                        connector: "AAVE-V2-A",
         | 
| 48 | 
            +
                        method: "borrow",
         | 
| 49 | 
            +
                        args: [
         | 
| 50 | 
            +
                            withdrawToken.targetToken,
         | 
| 51 | 
            +
                            withdrawToken.amount,
         | 
| 52 | 
            +
                            "2",
         | 
| 53 | 
            +
                            "0",
         | 
| 54 | 
            +
                            "0",
         | 
| 55 | 
            +
                        ],
         | 
| 56 | 
            +
                    };
         | 
| 57 | 
            +
                    targetSpells.push({
         | 
| 58 | 
            +
                        connector: spellData.connector,
         | 
| 59 | 
            +
                        data: (0, utils_1.encodeConnectorMethod)(spellData),
         | 
| 60 | 
            +
                    });
         | 
| 61 | 
            +
                    let spellData2 = {
         | 
| 62 | 
            +
                        connector: "BASIC-A",
         | 
| 63 | 
            +
                        method: "withdraw",
         | 
| 64 | 
            +
                        args: [
         | 
| 65 | 
            +
                            withdrawToken.targetToken,
         | 
| 66 | 
            +
                            withdrawToken.amount,
         | 
| 67 | 
            +
                            dsaAddress,
         | 
| 68 | 
            +
                            "0",
         | 
| 69 | 
            +
                            "0",
         | 
| 70 | 
            +
                        ],
         | 
| 71 | 
            +
                    };
         | 
| 72 | 
            +
                    targetSpells.push({
         | 
| 73 | 
            +
                        connector: spellData.connector,
         | 
| 74 | 
            +
                        data: (0, utils_1.encodeConnectorMethod)(spellData2),
         | 
| 75 | 
            +
                    });
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
                const { data } = await contract.populateTransaction.targetAction(sourceSpells, targetSpells, commonSpells, position, actionId, sourceSender, sourceDsaId, targetDsaId, sourceChainId, targetChainId, vnonce, metadata);
         | 
| 78 | 
            +
                transactions.push({
         | 
| 79 | 
            +
                    to: interopAddress,
         | 
| 80 | 
            +
                    data: data,
         | 
| 81 | 
            +
                    value: "0",
         | 
| 82 | 
            +
                    operation: ethers_multisend_1.OperationType.Call,
         | 
| 83 | 
            +
                });
         | 
| 6 84 | 
             
                return { transactions, logs };
         | 
| 7 85 | 
             
            }
         | 
| 8 86 | 
             
            exports.default = default_1;
         | 
    
        package/dist/src/index.js
    CHANGED
    
    | @@ -13,7 +13,7 @@ const package_json_1 = __importDefault(require("../package.json")); | |
| 13 13 | 
             
            dotenv_1.default.config();
         | 
| 14 14 | 
             
            const logger_1 = __importDefault(require("@/logger"));
         | 
| 15 15 | 
             
            const logger = new logger_1.default('Process');
         | 
| 16 | 
            -
            const GIT_SHORT_HASH = ' | 
| 16 | 
            +
            const GIT_SHORT_HASH = 'ef38dfb';
         | 
| 17 17 | 
             
            const printUsage = () => {
         | 
| 18 18 | 
             
                console.log();
         | 
| 19 19 | 
             
                console.log(`Interop X Node (v${package_json_1.default.version} - rev.${GIT_SHORT_HASH})`);
         | 
| @@ -16,6 +16,7 @@ const sequelize_1 = require("sequelize"); | |
| 16 16 | 
             
            const gnosis_1 = require("@/gnosis");
         | 
| 17 17 | 
             
            const net_1 = require("@/net");
         | 
| 18 18 | 
             
            const waait_1 = __importDefault(require("waait"));
         | 
| 19 | 
            +
            const errors_1 = require("@/errors");
         | 
| 19 20 | 
             
            class ProcessSubmitSubmitEvents extends BaseTask_1.BaseTask {
         | 
| 20 21 | 
             
                constructor({ chainId }) {
         | 
| 21 22 | 
             
                    super({
         | 
| @@ -51,16 +52,18 @@ class ProcessSubmitSubmitEvents extends BaseTask_1.BaseTask { | |
| 51 52 | 
             
                    if (!transaction) {
         | 
| 52 53 | 
             
                        return;
         | 
| 53 54 | 
             
                    }
         | 
| 55 | 
            +
                    this.logger.debug(`Processing transaction ${transaction.transactionHash}`);
         | 
| 54 56 | 
             
                    transaction.sourceStatus = "proccessing";
         | 
| 55 57 | 
             
                    await transaction.save();
         | 
| 56 58 | 
             
                    const ownersThreshold = await this.sourceGnosisContract.getThreshold();
         | 
| 57 59 | 
             
                    await (0, waait_1.default)(10000);
         | 
| 60 | 
            +
                    this.logger.debug(`Build gnosis action for ${transaction.transactionHash}`);
         | 
| 58 61 | 
             
                    let data, logs = [];
         | 
| 59 62 | 
             
                    try {
         | 
| 60 63 | 
             
                        ({ data, logs } = await (0, gnosis_1.buildGnosisAction)(transaction, "source"));
         | 
| 61 64 | 
             
                    }
         | 
| 62 65 | 
             
                    catch (error) {
         | 
| 63 | 
            -
                        if (error instanceof  | 
| 66 | 
            +
                        if (error instanceof errors_1.LiquidityError) {
         | 
| 64 67 | 
             
                            await transaction.save();
         | 
| 65 68 | 
             
                            transaction.sourceDelayUntil = new Date(Date.now() + 60 * 5 * 1000);
         | 
| 66 69 | 
             
                            transaction.sourceStatus = "pending";
         | 
| @@ -76,6 +79,7 @@ class ProcessSubmitSubmitEvents extends BaseTask_1.BaseTask { | |
| 76 79 | 
             
                        net_1.protocol.sendTransaction(transaction);
         | 
| 77 80 | 
             
                        return;
         | 
| 78 81 | 
             
                    }
         | 
| 82 | 
            +
                    this.logger.debug(`Generating gnosis tx for ${transaction.transactionHash}`);
         | 
| 79 83 | 
             
                    let gnosisTx = await (0, utils_1.generateGnosisTransaction)({
         | 
| 80 84 | 
             
                        baseGas: "0",
         | 
| 81 85 | 
             
                        data,
         | 
| @@ -121,10 +125,19 @@ class ProcessSubmitSubmitEvents extends BaseTask_1.BaseTask { | |
| 121 125 | 
             
                    }
         | 
| 122 126 | 
             
                    console.log(`Executing transaction for execution ${transaction.transactionHash}`);
         | 
| 123 127 | 
             
                    const { data: txData } = await this.sourceGnosisContract.populateTransaction.execTransaction(gnosisTx.to, gnosisTx.value, gnosisTx.data, gnosisTx.operation, gnosisTx.safeTxGas, gnosisTx.baseGas, gnosisTx.gasPrice, gnosisTx.gasToken, gnosisTx.refundReceiver, (0, utils_1.buildSignatureBytes)(validSignatures));
         | 
| 128 | 
            +
                    const [gasPrice, gasLimit] = await Promise.all([
         | 
| 129 | 
            +
                        this.sourceProvider.getGasPrice(),
         | 
| 130 | 
            +
                        this.sourceProvider.estimateGas({
         | 
| 131 | 
            +
                            from: this.sourceWallet.address,
         | 
| 132 | 
            +
                            to: this.sourceGnosisContract.address,
         | 
| 133 | 
            +
                            data: txData,
         | 
| 134 | 
            +
                        }),
         | 
| 135 | 
            +
                    ]);
         | 
| 124 136 | 
             
                    const txSent = await this.sourceWallet.sendTransaction({
         | 
| 125 137 | 
             
                        from: this.sourceWallet.address,
         | 
| 126 | 
            -
                        gasPrice: ethers_1.ethers.BigNumber.from(120 * 10 ** 9),
         | 
| 127 138 | 
             
                        to: this.sourceGnosisContract.address,
         | 
| 139 | 
            +
                        gasPrice: gasPrice.mul(120).div(100),
         | 
| 140 | 
            +
                        gasLimit: 5000000,
         | 
| 128 141 | 
             
                        data: txData,
         | 
| 129 142 | 
             
                    });
         | 
| 130 143 | 
             
                    console.log(txSent);
         | 
| @@ -151,7 +164,6 @@ class ProcessSubmitSubmitEvents extends BaseTask_1.BaseTask { | |
| 151 164 | 
             
                        if (txSent.blockNumber)
         | 
| 152 165 | 
             
                            transaction.sourceBlockNumber = txSent.blockNumber;
         | 
| 153 166 | 
             
                        transaction.sourceTransactionHash = txSent.hash;
         | 
| 154 | 
            -
                        transaction.sourceTransactionHash = txSent.hash;
         | 
| 155 167 | 
             
                        transaction.status = "failed";
         | 
| 156 168 | 
             
                        await transaction.save();
         | 
| 157 169 | 
             
                    }
         |