from eth_account import Account
import secrets, time
domain = {
"name": "PredictStreetVault",
"version": "1",
"chainId": "36900",
"verifyingContract": vault_address,
}
types = {
"EIP712Domain": [
{"name": "name", "type": "string"},
{"name": "version", "type": "string"},
{"name": "chainId", "type": "uint256"},
{"name": "verifyingContract", "type": "address"},
],
"WithdrawERC20": [
{"name": "token", "type": "address"},
{"name": "to", "type": "address"},
{"name": "amount", "type": "uint256"},
{"name": "salt", "type": "uint256"},
{"name": "deadline", "type": "uint256"},
],
}
message = {
"token": usdc_address,
"to": destination,
"amount": 100_000_000,
"salt": int.from_bytes(secrets.token_bytes(32), "big"),
"deadline": int(time.time()) + 86400,
}
signed = Account.sign_typed_data(
private_key,
{"domain": domain, "primaryType": "WithdrawERC20", "types": types, "message": message},
)
signature = signed.signature.hex()