#!/bin/bash

die() {
    printf "ERROR: %s\n" "$*"
    exit 1
}

dieOnError() {
    if [ $? -ne 0 ]; then
        die $1
    fi
}

NETWORK=${NETWORK:-localhost}

export DEPLOY_AMOUNT_DECIMALS=6

rm /tmp/create-pool-output.txt
#    --curr-name "Test USDC" --curr-symbol "EUSDC" \
npx hardhat --network $NETWORK deploy $VERIFY \
    --currency-address 0x59243Ad5157088c8440741aecaf6bfF8DBca533a \
    --nft-name "Ensuro Policies NFT" --nft-symbol "EPOL" \
    --treasury-address 0x20Ce2e29ca6a7Ca6820D6DD3959A4761EE000091 | tee /tmp/create-pool-output.txt
dieOnError "Error deploying pool"

POOL=`egrep -o  "^PolicyPool deployed to: (https?://.*/)?0x[0-9a-fA-F]+" /tmp/create-pool-output.txt |
    sed -r 's|PolicyPool deployed to: (https?://.*/)?(0x[0-9a-fA-F]+)|\2|g'`
POOL_CONFIG=`egrep -o  "^PolicyPoolConfig deployed to: (https?://.*/)?0x[0-9a-fA-F]+" /tmp/create-pool-output.txt |
    sed -r 's|PolicyPoolConfig deployed to: (https?://.*/)?(0x[0-9a-fA-F]+)|\2|g'`

echo "PolicyPool = $POOL"

KOALA_WALLET="0xF9ED268a71875043623eb4A6170F20F05Ac607d1"  # TODO: later ask for production one

npx hardhat --network $NETWORK deploy:eToken $VERIFY --pool-address $POOL \
    --etk-symbol eUSD1YEAR --etk-name "eToken USD 1year" --expiration-period 365

SCR_PERCENTAGE="0.3728"
ENSURO_FEE="0.0386"
SCR_INTEREST_RATE="0.1"
MOC="1.285"
MAX_SCR_PER_POLICY="500"
SCR_LIMIT="250000"

npx hardhat --network $NETWORK deploy:riskModule $VERIFY --pool-address $POOL \
    --rm-name "Koala Partner A" --max-scr-per-policy $MAX_SCR_PER_POLICY --scr-limit $SCR_LIMIT \
    --scr-percentage $SCR_PERCENTAGE \
    --ensuro-fee $ENSURO_FEE \
    --moc $MOC \
    --scr-interest-rate $SCR_INTEREST_RATE \
    --wallet $KOALA_WALLET
dieOnError "Error deploying Trustfull RM"

npx hardhat --network $NETWORK deploy:riskModule $VERIFY --pool-address $POOL \
    --rm-name "Koala Partner B" --max-scr-per-policy $MAX_SCR_PER_POLICY --scr-limit $SCR_LIMIT \
    --scr-percentage $SCR_PERCENTAGE \
    --ensuro-fee $ENSURO_FEE \
    --moc $MOC \
    --scr-interest-rate $SCR_INTEREST_RATE \
    --wallet $KOALA_WALLET
dieOnError "Error deploying Trustfull RM"

npx hardhat --network $NETWORK deploy:riskModule $VERIFY --pool-address $POOL \
    --rm-name "Koala Partner C" --max-scr-per-policy $MAX_SCR_PER_POLICY --scr-limit $SCR_LIMIT \
    --scr-percentage $SCR_PERCENTAGE \
    --ensuro-fee $ENSURO_FEE \
    --moc $MOC \
    --scr-interest-rate $SCR_INTEREST_RATE \
    --wallet $KOALA_WALLET
dieOnError "Error deploying Trustfull RM"


AAVE_ADDR_PROV=0xd05e3E715d945B59290df0ae8eF85c1BdB684744  # Polygon
AAVE_ADDR_PROV=0x178113104fEcbcD7fF8669a0150721e231F0FD4B  # Polygon Mumbai
SWAP_ROUTER=0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506  # Polygon

# AaveAssetManager
# npx hardhat --network $NETWORK deploy:aaveAssetManager $VERIFY \
#    --pool-address $POOL \
#    --liquidity-min 500 \
#    --liquidity-middle 1000 \
#    --liquidity-max 1500 \
#    --claim-rewards-min 50 \
#    --reinvest-rewards-min 100 \
#    --aave-addr-prov $AAVE_ADDR_PROV \
#    --swap-router $SWAP_ROUTER || die "Error deploying AaveAssetManager"

# FixedRateAssetManager
npx hardhat --network $NETWORK deploy:fixedInterestAssetManager $VERIFY \
    --pool-address $POOL \
    --interest-rate 0.2
dieOnError "Error deploying FixedRateAssetManager"

# Whitelist
#npx hardhat --network $NETWORK deploy:whitelist $VERIFY \
#    --pool-address $POOL
#dieOnError "Error deploying Whitelist"

#npx hardhat --network $NETWORK ens:grantRole --contract-address $POOL_CONFIG \
#    --role LP_WHITELIST_ROLE \
#    --account 0x539fe6aD90931e02F902618d0e33D326F670B89C
exit 0
# Whitelist LP
# Approve from LP to Pool
# Deposit from LP to Pool
# Grant Role to Koala Relay

# RM_ADDRESSES="0xD6F5494e724bAeD8ABD48D296Ac06FbF98f4566e 0xD9F2DDF2B48be00b309650C77908763b66dDF41B 0xad1889A60946123B60053B9C1f988E4Ed7DbB77C"
RM_ADDRESSES="0x9CF68dbA15beD4f83bD6E40510f157fd318F41CD 0xAd631B0F005E7b10a4E8F551B4583b172F03534a 0xfACD50Da26088aaA5154314f76EF92b09df1d2f0"
# RM_ADDRESSES="0x17B4D8C60afB9C2a627a216037C3D0eB352312A2"
# KOALA_DEFENDER=0xf110ef3236afa35b3742c874d91ea35858a81794
KOALA_DEFENDER=0xf2c7ea4a88be7ae05fed1275f6eb9022411044dc
# KOALA_DEFENDER=0x7Ed2B717648Ca0A889027Cb6CC5073d08aD570D5
KOALA_DEFENDER=0x1f254b9e0665cbf018a5320d693b1109289f06fa

for RM in $RM_ADDRESSES; do
  npx hardhat --network $NETWORK ens:grantRole --contract-address $RM \
      --role PRICER_ROLE \
      --account $KOALA_DEFENDER
  npx hardhat --network $NETWORK ens:grantRole --contract-address $RM \
      --role RESOLVER_ROLE \
      --account $KOALA_DEFENDER
done

export POOL=0xEe0B426914985e19258563d8361BDA251407BB21

SCR_PERCENTAGE="0.5"
ENSURO_FEE="0.03"
SCR_INTEREST_RATE="0.05"
MOC="1.1"
MAX_SCR_PER_POLICY="10000"
SCR_LIMIT="250000"
export OTONOMI_WALLET=0x7Ed2B717648Ca0A889027Cb6CC5073d08aD570D5

npx hardhat --network $NETWORK deploy:fdRiskModule $VERIFY --pool-address $POOL \
    --rm-name "Flight Delay" --max-scr-per-policy $MAX_SCR_PER_POLICY --scr-limit $SCR_LIMIT \
    --link-token 0x326c977e6efc84e512bb9c30f76e30c160ed06fb \
    --oracle 0x0a908660e9319413a16978fa48df641b4bf37c54 \
    --data-job-id 0x2fb0c3a36f924e4ab43040291e14e0b7 \
    --sleep-job-id 0x4241bd0288324bf8a2c683833d0b824f \
    --ensuro-fee $ENSURO_FEE \
    --moc $MOC \
    --scr-interest-rate $SCR_INTEREST_RATE \
    --wallet $OTONOMI_WALLET
dieOnError "Error deploying Trustfull RM"


SCR_PERCENTAGE="0.8"
ENSURO_FEE="0.03"
SCR_INTEREST_RATE="0.1"
MOC="1.1"
MAX_SCR_PER_POLICY="500000"
SCR_LIMIT="2500000"

npx hardhat --network $NETWORK deploy:riskModule $VERIFY --pool-address $POOL \
    --rm-name "Stable" --max-scr-per-policy $MAX_SCR_PER_POLICY --scr-limit $SCR_LIMIT \
    --scr-percentage $SCR_PERCENTAGE \
    --ensuro-fee $ENSURO_FEE \
    --moc $MOC \
    --scr-interest-rate $SCR_INTEREST_RATE \
    --wallet $KOALA_WALLET
dieOnError "Error deploying Trustfull RM"
