import requests
from datetime import datetime, timedelta

ETHERSCAN_API_KEY = "4KRP6TXGD4QDZAMJNXDQPSYCB1736GPSX1"  # pon tu clave
ETHERSCAN_URL = "https://api.etherscan.io/api"

USDC_CONTRACT = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
USDT_CONTRACT = "0xdAC17F958D2ee523a2206206994597C13D831ec7"

# Lista de wallets a analizar
wallets = [
    "0x...wallet1...",
    "0x...wallet2...",
]

def get_token_transfers(wallet, contract_address, start_timestamp):
    params = {
        "module": "account",
        "action": "tokentx",
        "contractaddress": contract_address,
        "address": wallet,
        "startblock": 0,
        "endblock": 99999999,
        "sort": "desc",
        "apikey": ETHERSCAN_API_KEY
    }
    response = requests.get(ETHERSCAN_URL, params=params)
    data = response.json()

    # Filtra por timestamp
    transfers = []
    for tx in data["result"]:
        tx_time = datetime.utcfromtimestamp(int(tx["timeStamp"]))
        if tx_time >= start_timestamp:
            transfers.append(tx)
    return transfers

def compute_profit(transfers):
    """
    Suma entradas y salidas, devuelve balance neto en token units.
    """
    received = 0
    sent = 0
    for tx in transfers:
        amount = int(tx["value"]) / (10 ** int(tx["tokenDecimal"]))
        if tx["to"].lower() == tx["to"].lower():
            received += amount
        else:
            sent += amount
    return received - sent

def main():
    days_back = 7
    start_timestamp = datetime.utcnow() - timedelta(days=days_back)

    for wallet in wallets:
        print(f"Analizando wallet: {wallet}")

        usdc_txs = get_token_transfers(wallet, USDC_CONTRACT, start_timestamp)
        usdt_txs = get_token_transfers(wallet, USDT_CONTRACT, start_timestamp)

        usdc_profit = compute_profit(usdc_txs)
        usdt_profit = compute_profit(usdt_txs)

        print(f"USDC neto últimos {days_back} días: {usdc_profit:.2f}")
        print(f"USDT neto últimos {days_back} días: {usdt_profit:.2f}")
        print("-" * 40)

if __name__ == "__main__":
    main()
