"""
Deriva las API credentials de Polymarket para un wallet nuevo.

Uso:
  cd /var/www/html
  python3 v11b/wallets/derive_creds.py --pk 0x<PK> --proxy 0x<PROXY>

Requisito: el tunnel SSH (proxy España, puerto 40001) debe estar activo.
"""
import argparse, os, sys

def main():
    ap = argparse.ArgumentParser()
    ap.add_argument("--pk", required=True, help="Private key del EOA (con o sin 0x)")
    ap.add_argument("--proxy", required=True, help="Proxy wallet address (0x...)")
    args = ap.parse_args()

    os.environ.setdefault("HTTPS_PROXY", "socks5h://127.0.0.1:40001")
    os.environ.setdefault("HTTP_PROXY",  "socks5h://127.0.0.1:40001")

    pk = args.pk.replace("0x", "").strip()
    proxy = args.proxy.strip()

    try:
        from eth_account import Account
        eoa = Account.from_key(pk).address
        print(f"[*] EOA (signing address): {eoa}")
        print(f"[*] Proxy wallet:          {proxy}")
        print()
    except Exception as e:
        print(f"[!] Error derivando EOA: {e}", file=sys.stderr)

    try:
        from py_clob_client.client import ClobClient
        client = ClobClient(
            host="https://clob.polymarket.com",
            chain_id=137,
            key=pk,
            signature_type=2,
            funder=proxy,
        )
        creds = client.create_or_derive_api_creds()
        print(f"POLY_API_KEY={creds.api_key}")
        print(f"POLY_API_SECRET={creds.api_secret}")
        print(f"POLY_API_PASSPHRASE={creds.api_passphrase}")
        print(f"POLY_PROXY={proxy}")
    except Exception as e:
        print(f"[!] Error derivando creds: {e}", file=sys.stderr)
        print("[!] Verifica que el tunnel SSH esté activo (puerto 40001)", file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    main()
