"""Step A reference half: build+sign a fixed V2 order via py-clob-client-v2.
Run inside polymarket-weather-bot venv. Prints fixed inputs, EIP-712 digest,
and signature for cross-check against viem (browser path)."""
import json
from eth_account.messages import encode_typed_data
from eth_utils import keccak
from py_clob_client_v2.signer import Signer
from py_clob_client_v2.order_utils.exchange_order_builder_v2 import ExchangeOrderBuilderV2
from py_clob_client_v2.order_utils.model.order_data_v2 import OrderDataV2
from py_clob_client_v2.order_utils.model.side import Side
from py_clob_client_v2.order_utils.model.signature_type_v2 import SignatureTypeV2
KEY = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" # hardhat #0
MAKER = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
EXCHANGE = "0xE111180000d2663C0091e4f400237545B87B996B" # V2 non-negRisk
BUILDER = "0x3c829d5150b70f3ba347670d4b1eda96be3c255b3f64895a7eeef5caea7952d5"
ZERO32 = "0x" + "00" * 32
SALT = 479249096
TS = "1717000000000"
signer = Signer(KEY, 137)
b = ExchangeOrderBuilderV2(EXCHANGE, 137, signer, generate_salt=lambda: SALT)
od = OrderDataV2(
maker=MAKER, tokenId="100", makerAmount="1000000", takerAmount="2000000",
side=Side.BUY, signer=MAKER, signatureType=SignatureTypeV2.EOA,
timestamp=TS, metadata=ZERO32, builder=BUILDER, expiration="0",
)
order = b.build_order(od)
td = b.build_order_typed_data(order)
sig = b.build_order_signature(td)
msg = encode_typed_data(full_message=td)
digest = keccak(b"\x19" + msg.version + msg.header + msg.body).hex()
print(json.dumps({
"salt": SALT, "timestamp": TS, "maker": MAKER, "exchange": EXCHANGE,
"builder": BUILDER, "digest": "0x" + digest, "signature": sig,
}, indent=2))