| 1 | [ |
| 2 | "autonomous agent", |
| 3 | { |
| 4 | "bounce_fees": { |
| 5 | "base": 30000 |
| 6 | }, |
| 7 | "init": "{ |
| 8 | |
| 9 | |
| 10 | $mcr = 110000; |
| 11 | $expiration = 86400 * 360; |
| 12 | $selected_arbiter = ''; |
| 13 | $min_premium = 100; |
| 14 | $coverage_times = 12; |
| 15 | $author_address = 'T77QBAHR4CN2G6KJ3BHMJLAAPU2WG2KG'; |
| 16 | $aa_expiration = 1606827661; |
| 17 | $seven_days = 86400 * 7; |
| 18 | $arbiter_pool = 110000; |
| 19 | |
| 20 | $old_investment = 0; |
| 21 | }", |
| 22 | "messages": { |
| 23 | "cases": [ |
| 24 | { |
| 25 | "if": "{timestamp >= $aa_expiration AND var['close_investment'] == false}", |
| 26 | "messages": [ |
| 27 | { |
| 28 | "app": "state", |
| 29 | "state": "{ |
| 30 | var['close_investment'] = true; |
| 31 | response['unaccepted_request'] = 'Your request to get invest in this AA is not accepted, because the investments are closed because aa is Expired...'; |
| 32 | }" |
| 33 | } |
| 34 | ] |
| 35 | }, |
| 36 | { |
| 37 | "if": "{trigger.data.investor AND var['close_investment'] == false}", |
| 38 | "messages": { |
| 39 | "cases": [ |
| 40 | { |
| 41 | "if": "{trigger.address == $selected_arbiter AND trigger.output[[asset=base]] >= $arbiter_pool}", |
| 42 | "messages": [ |
| 43 | { |
| 44 | "app": "state", |
| 45 | "state": "{ |
| 46 | var['arbier_paid_fees'] = true; |
| 47 | }" |
| 48 | } |
| 49 | ] |
| 50 | }, |
| 51 | { |
| 52 | "if": "{var['investor_'||trigger.address]}", |
| 53 | "messages": [ |
| 54 | { |
| 55 | "app": "state", |
| 56 | "state": "{ |
| 57 | response['unaccepted_request'] = 'Your request to get invest in this AA is not accepted, because the investments cannot be done from same address again, You can withdraw previous and invest again with your new amount...'; |
| 58 | }" |
| 59 | } |
| 60 | ] |
| 61 | }, |
| 62 | { |
| 63 | "if": "{(balance[base] - 15000) >= $mcr AND !var['investor_'||trigger.address]}", |
| 64 | "messages": [ |
| 65 | { |
| 66 | "app": "state", |
| 67 | "state": "{ |
| 68 | var['close_investments'] = true; |
| 69 | var['investments_locked'] = false; |
| 70 | var['start_service'] = false; |
| 71 | var['capitalLocked'] = 0; |
| 72 | var['investor_'||trigger.address] = trigger.output[[asset=base]] - 15000; |
| 73 | }" |
| 74 | } |
| 75 | ] |
| 76 | }, |
| 77 | { |
| 78 | "if": "{(balance[base] - 15000) < $mcr AND !var['investor_'||trigger.address]}", |
| 79 | "messages": [ |
| 80 | { |
| 81 | "app": "state", |
| 82 | "state": "{ |
| 83 | var['close_investments'] = false; |
| 84 | var['investments_locked'] = false; |
| 85 | var['start_service'] = false; |
| 86 | |
| 87 | var['capitalLocked'] = 0; |
| 88 | var['investor_'||trigger.address] = trigger.output[[asset=base]] - 15000; |
| 89 | }" |
| 90 | } |
| 91 | ] |
| 92 | }, |
| 93 | { |
| 94 | "if": "{(balance[base] - 15000) >= ($mcr + $arbiter_pool) AND var['arbier_paid_fees']}", |
| 95 | "messages": [ |
| 96 | { |
| 97 | "app": "state", |
| 98 | "state": "{ |
| 99 | var['close_investments'] = true; |
| 100 | var['investments_locked'] = false; |
| 101 | var['start_service'] = true; |
| 102 | var['capitalLocked'] = 0; |
| 103 | var['investor_'||trigger.address] = trigger.output[[asset=base]] - 15000; |
| 104 | }" |
| 105 | } |
| 106 | ] |
| 107 | } |
| 108 | ] |
| 109 | } |
| 110 | }, |
| 111 | { |
| 112 | "if": "{trigger.data.investor AND var['close_investment'] == true}", |
| 113 | "messages": [ |
| 114 | { |
| 115 | "app": "state", |
| 116 | "state": "{ |
| 117 | response['unaccepted_request'] = 'Your request to get invest in this AA is not accepted, The investments are closed because Minimum/Maximum Capital required to start this service is fullfilled and locked, thank you.'; |
| 118 | }" |
| 119 | } |
| 120 | ] |
| 121 | }, |
| 122 | { |
| 123 | "if": "{trigger.data.insured AND trigger.output[[asset=base]] >= $min_premium AND var['start_service'] == true}", |
| 124 | "messages": { |
| 125 | "cases": [ |
| 126 | { |
| 127 | "if": "{($mcr - var['capitalLocked']) > (trigger.output[[asset=base]] * $coverage_times)}", |
| 128 | "messages": [ |
| 129 | { |
| 130 | "app": "state", |
| 131 | "state": "{ |
| 132 | var['insured_' || trigger.address] = trigger.output[[asset=base]] * $coverage_times; |
| 133 | var['capitalLocked'] = var['capitalLocked'] + (trigger.output[[asset=base]] * $coverage_times); |
| 134 | response['accepted_request'] = 'Your request to get insured is accepted, Your coverage is ' || (trigger.output[[asset=base]] * $coverage_times) || ' and you paid - ' || trigger.output[[asset=base]]; |
| 135 | }" |
| 136 | } |
| 137 | ] |
| 138 | }, |
| 139 | { |
| 140 | "if": "{($mcr - var['capitalLocked']) < (trigger.output[[asset=base]] * $coverage_times)}", |
| 141 | "messages": [ |
| 142 | { |
| 143 | "app": "state", |
| 144 | "state": "{ |
| 145 | response['unaccepted_request'] = 'Your request to get insured is not accepted, because the capital left is not enough to give you the right coverage, The capital left to be used is just ' || ($mcr - var['capitalLocked']); |
| 146 | }" |
| 147 | } |
| 148 | ] |
| 149 | } |
| 150 | ] |
| 151 | } |
| 152 | }, |
| 153 | { |
| 154 | "if": "{trigger.data.insured AND var['start_service'] != true}", |
| 155 | "messages": [ |
| 156 | { |
| 157 | "app": "state", |
| 158 | "state": "{ |
| 159 | response['unaccepted_request'] = 'Your request to get insured is not accepted, because the minimum requirement of capital is not fullfilled yet!'; |
| 160 | }" |
| 161 | } |
| 162 | ] |
| 163 | }, |
| 164 | { |
| 165 | "if": "{trigger.data.insured AND trigger.output[[asset=base]] < $min_premium}", |
| 166 | "messages": [ |
| 167 | { |
| 168 | "app": "state", |
| 169 | "state": "{ |
| 170 | response['unaccepted_request'] = 'Your request to get insured is not accepted, because the minimum one time premium to pay to buy this policy is ' || $min_premium || ' But you paid ' || trigger.output[[asset=base]]; |
| 171 | }" |
| 172 | } |
| 173 | ] |
| 174 | }, |
| 175 | { |
| 176 | "if": "{trigger.data.claim AND var['insured_' || trigger.address] AND !var['claim_requested_' || trigger.address]}", |
| 177 | "messages": [ |
| 178 | { |
| 179 | "app": "data_feed", |
| 180 | "payload": { |
| 181 | "{'arbiter_'||$selected_arbiter}": "{'claiming_addr-' || trigger.address || '-addr_at_time_' || timestamp}" |
| 182 | } |
| 183 | }, |
| 184 | { |
| 185 | "app": "state", |
| 186 | "state": "{ |
| 187 | var['claim_requested_' || trigger.address] = true; |
| 188 | var['claim_amount_' || trigger.address] = var['insured_' || trigger.address]; |
| 189 | var['claim_solved_' || trigger.address] = 0; |
| 190 | var['claim_requested_on_' || trigger.address] = timestamp; |
| 191 | var['arbiter_handeling_upto_' || trigger.address] = timestamp * $seven_days; |
| 192 | |
| 193 | }" |
| 194 | } |
| 195 | ] |
| 196 | }, |
| 197 | { |
| 198 | "if": "{trigger.data.progress_update AND var['insured_' || trigger.address] AND var['claim_requested_' || trigger.address]}", |
| 199 | "messages": { |
| 200 | "cases": [ |
| 201 | { |
| 202 | "if": "{timestamp > var['arbiter_handeling_upto_' || trigger.address]}", |
| 203 | "messages": [ |
| 204 | { |
| 205 | "app": "payment", |
| 206 | "payload": { |
| 207 | "asset": "base", |
| 208 | "outputs": [ |
| 209 | { |
| 210 | "address": "{trigger.address}", |
| 211 | "amount": "{var['balance_deducted_arbiter']}" |
| 212 | } |
| 213 | ] |
| 214 | } |
| 215 | }, |
| 216 | { |
| 217 | "app": "state", |
| 218 | "state": "{ |
| 219 | var['balance_deducted_arbiter'] = var['balance_deducted_arbiter'] - round(var['claim_amount_' || trigger.address]/10); |
| 220 | var['arbiter_handeling_upto_' || trigger.address] = var['arbiter_handeling_upto_' || trigger.address] * $seven_days; |
| 221 | |
| 222 | response['progress'] = ' Due to the late response from arbiter, you are receiving your 10% of claim requested funds for this time from arbiter penality fee...'; |
| 223 | }" |
| 224 | } |
| 225 | ] |
| 226 | }, |
| 227 | { |
| 228 | "if": "{timestamp < var['arbiter_handeling_upto_' || trigger.address]}", |
| 229 | "messages": [ |
| 230 | { |
| 231 | "app": "state", |
| 232 | "state": "{ |
| 233 | response['progress'] = 'The process of claiming you funds is undegoing by arbiter, Please feel free to send anything to it if arbiter asks you. And keep updating so you can tack your funds or claim penality fee...'; |
| 234 | }" |
| 235 | } |
| 236 | ] |
| 237 | } |
| 238 | ] |
| 239 | } |
| 240 | }, |
| 241 | { |
| 242 | "if": "{trigger.data.withdraw}", |
| 243 | "messages": { |
| 244 | "cases": [ |
| 245 | { |
| 246 | "if": "{timestamp > var['arbiter_handeling_upto_' || trigger.address]}", |
| 247 | "messages": [ |
| 248 | { |
| 249 | "app": "state", |
| 250 | "state": "{ |
| 251 | var['balance_deducted_arbiter'] = round(var['claim_amount_' || trigger.address]/10); |
| 252 | var['arbiter_handeling_upto_' || trigger.address] = var['arbiter_handeling_upto_' || trigger.address] * $seven_days; |
| 253 | |
| 254 | }" |
| 255 | } |
| 256 | ] |
| 257 | }, |
| 258 | { |
| 259 | "if": "{timestamp < var['arbiter_handeling_upto_' || trigger.address]}", |
| 260 | "messages": [ |
| 261 | { |
| 262 | "app": "state", |
| 263 | "state": "{ |
| 264 | response['progress'] = 'The process of claiming you funds is undergoing by arbiter, Please feel free to send anything to it if arbiter asks you. And keep updating so you can tack your funds or claim penality fee...'; |
| 265 | }" |
| 266 | } |
| 267 | ] |
| 268 | } |
| 269 | ] |
| 270 | } |
| 271 | } |
| 272 | ] |
| 273 | } |
| 274 | } |
| 275 | ] |