import fs from 'node:fs';
import { createWalletClient, createPublicClient, http, erc20Abi, formatUnits, getContract } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { polygon } from 'viem/chains';
let PK = '';
for (const l of fs.readFileSync('/home/app/polymarket-weather-bot/.env','utf8').split('\n')) {
const t=l.trim(); if(t.startsWith('PRIVATE_KEY=')) PK=t.slice('PRIVATE_KEY='.length).trim();
}
if (!PK.startsWith('0x')) PK='0x'+PK;
const account = privateKeyToAccount(PK);
const RPC='https://polygon.drpc.org';
const pub = createPublicClient({chain:polygon,transport:http(RPC)});
const wal = createWalletClient({account,chain:polygon,transport:http(RPC)});
const PUSD='0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB';
const VAULT='0xecf49480f7b93a8e788cd0b671ffff7a263ef3e4';
const DW='0x50A8061e9448EB1e5d5e7aF07BE4E4F63C6F24Ff';
const VAULT_ABI=[{name:'owner',type:'function',stateMutability:'view',inputs:[],outputs:[{type:'address'}]},
{name:'withdraw',type:'function',stateMutability:'nonpayable',inputs:[{type:'address'},{type:'address'},{type:'uint256'}],outputs:[]}];
console.log('signer (weather EOA):', account.address);
const owner = await pub.readContract({address:VAULT,abi:VAULT_ABI,functionName:'owner'});
console.log('vault owner:', owner, owner.toLowerCase()===account.address.toLowerCase()?'β match':'β MISMATCH');
if (owner.toLowerCase()!==account.address.toLowerCase()) { console.log('abort: not owner'); process.exit(1); }
const bal = await pub.readContract({address:PUSD,abi:erc20Abi,functionName:'balanceOf',args:[VAULT]});
console.log('vault pUSD:', formatUnits(bal,6));
if (bal===0n) { console.log('nothing to withdraw'); process.exit(0); }
const hash = await wal.writeContract({address:VAULT,abi:VAULT_ABI,functionName:'withdraw',args:[PUSD,DW,bal]});
console.log('tx:', hash, 'β waitingβ¦');
const rc = await pub.waitForTransactionReceipt({hash, timeout:120000});
console.log('status:', rc.status);
const dw = await pub.readContract({address:PUSD,abi:erc20Abi,functionName:'balanceOf',args:[DW]});
console.log('DW pUSD now:', formatUnits(dw,6));