#!/usr/bin/env bash
# Propose emergency pause via multisig
# Usage: ./propose-pause.sh <multisig_address> <target_contract> <reason>

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../../.." && pwd)"

source "$PROJECT_ROOT/.env" 2>/dev/null || true

MULTISIG_ADDRESS="${1:-}"
TARGET_CONTRACT="${2:-}"
REASON="${3:-Emergency pause}"

if [ -z "$MULTISIG_ADDRESS" ] || [ -z "$TARGET_CONTRACT" ]; then
    echo "Usage: $0 <multisig_address> <target_contract> [reason]"
    echo ""
    echo "Example:"
    echo "  $0 0x1234... 0x5678... 'Security incident detected'"
    exit 1
fi

RPC_URL="${ETHEREUM_MAINNET_RPC:-${RPC_URL:-}}"
if [ -z "$RPC_URL" ]; then
    echo "Error: RPC_URL or ETHEREUM_MAINNET_RPC must be set"
    exit 1
fi

echo "Proposing emergency pause via multisig..."
echo "Multisig: $MULTISIG_ADDRESS"
echo "Target Contract: $TARGET_CONTRACT"
echo "Reason: $REASON"
echo ""

# Encode pause transaction data
# Note: This assumes the target contract has a pause() function
PAUSE_DATA=$(cast calldata "pause()")

# Create multisig transaction
MULTISIG_CALLDATA=$(cast calldata "submitTransaction(address,uint256,bytes)" \
    "$TARGET_CONTRACT" \
    "0" \
    "$PAUSE_DATA")

echo "Transaction data prepared:"
echo "$MULTISIG_CALLDATA"
echo ""

echo "To submit this transaction:"
echo "1. Use Gnosis Safe web interface, or"
echo "2. Use Gnosis Safe SDK, or"
echo "3. Call submitTransaction on the multisig contract"
echo ""
echo "Transaction details:"
echo "  To: $MULTISIG_ADDRESS"
echo "  Data: $MULTISIG_CALLDATA"
echo "  Value: 0 ETH"
echo ""

# Create JSON file with transaction details
TX_FILE="$SCRIPT_DIR/pause-proposal-$(date +%Y%m%d-%H%M%S).json"
cat > "$TX_FILE" <<EOF
{
  "multisig": "$MULTISIG_ADDRESS",
  "target": "$TARGET_CONTRACT",
  "action": "pause",
  "reason": "$REASON",
  "calldata": "$MULTISIG_CALLDATA",
  "timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
}
EOF

echo "Transaction details saved to: $TX_FILE"
echo ""
echo "⚠️  WARNING: This is an emergency action. Ensure all stakeholders are notified."
echo ""
echo "Next steps:"
echo "1. Review the transaction details"
echo "2. Submit via Gnosis Safe interface"
echo "3. Wait for required signatures (may have shorter timelock for emergencies)"
echo "4. Execute the transaction"
echo "5. Notify users and investigate the issue"

