import {fundingAmount,fundingId,fundingNetwork} from './wallet-funding';

/** Only the request is accepted here. No client field can authorize settlement. */
export function coinWithdrawalInput(value:unknown){
 if(!value||typeof value!=='object'||Array.isArray(value))throw new Error('invalid_funding_input');
 const body=value as Record<string,unknown>;
 if(Object.keys(body).some(k=>!['request_id','network','address','amount'].includes(k))||!fundingId(body.request_id)||!fundingNetwork(body.network)||typeof body.address!=='string'||body.address.length>64)throw new Error('invalid_funding_input');
 const address=body.address.trim();
 if(body.network==='ethereum'?!/^0x[0-9a-f]{40}$/i.test(address):!/^T[1-9A-HJ-NP-Za-km-z]{33}$/.test(address))throw new Error('invalid_withdrawal');
 return {p_request:body.request_id,p_network:body.network,p_address:body.network==='ethereum'?address.toLowerCase():address,p_amount_micro:fundingAmount(body.amount,6,'100000')};
}
