async function parseTransaction(rawTx: string, chain: Chain): Promise<ParseResult> {
try {
const result = await parser.parse(rawTx, chain);
return {
success: true,
visualSign: result,
warnings: []
};
} catch (error) {
// Log for debugging
console.error('Parse failed:', error);
// Determine severity
if (isInvalidTransaction(error)) {
// Don't allow signing malformed transactions
return {
success: false,
error: 'This transaction appears to be malformed and cannot be signed.',
allowSigning: false
};
}
// For other errors, allow signing with warning
return {
success: false,
fallback: {
title: 'Unknown Transaction',
warning: 'Transaction details could not be fully parsed.',
rawData: rawTx,
},
allowSigning: true // User can proceed at their own risk
};
}
}