import { Certificate, parseCertificates } from "./certificates"; // import { RewardWithdrawls, parseRewardWithdrawl } from "./govAction" import { ProposalProcedure, parseProposalProcedures } from "./proposal"; import { Output, parseOutputBytes, parseOutputs } from "./txinout"; import { RawToken, assetMapParse } from "./value"; import { VotingProcedure } from "./vote"; import { Buffer28, UtxoId, parseUtxoIds } from "../types"; import { Withdrawal, parseWithdrawals } from "./withdrawls"; import {cborBackend} from "cbor-rpc"; import { Buffer } from "buffer"; // CDDL TxBody export type TxBody = { inputs: UtxoId[]; outputs: Output[]; fee: number | bigint; ttl?: number | bigint; certificates?: Certificate[]; withdrawals?: Withdrawal; auxDataHash?: Buffer; validityIntervalStart?: number | bigint; mint?: RawToken[]; scriptDataHash?: Buffer; collateralInputs?: UtxoId[]; requiredSigners?: Set; networkId?: 0 | 1; collateralReturn?: Output; totalCollateral?: number | bigint; referenceInputs?: UtxoId[]; votingProcedures?: VotingProcedure[]; proposalProcedures?: ProposalProcedure[]; currentTreasuryValue?: number | bigint; donation?: number | bigint; }; export function parseTxBodies(txBodies: Map[]): TxBody[] { const parsedTxBodies: TxBody[] = []; txBodies.forEach((txBody) => { parsedTxBodies.push(parseTxBody(txBody)); }); return parsedTxBodies; } export function parseTxBody(txBody: Map): TxBody { const inputs = parseUtxoIds(txBody.get(0)); const outputs = parseOutputs(txBody.get(1)); const fee = txBody.get(2); const ttl = txBody.get(3); const certificates = txBody.get(4) ? parseCertificates(txBody.get(4)) : undefined; const withdrawls = txBody.get(5) ? Withdrawal.fromCborObject(txBody.get(5)) : undefined; const auxDataHash = txBody.get(7); const validityIntervalStart = txBody.get(8); const mint = txBody.get(9) ? assetMapParse(txBody.get(9)) : undefined; const scriptDataHash = txBody.get(11); const collateralInputs = txBody.get(13) ? parseUtxoIds(txBody.get(13)) : undefined; const signers = txBody.get(14); const networkId = txBody.get(15); const collateralReturn = txBody.get(16) ? Output.fromCborObject(txBody.get(16)) : undefined; const totalCollateral = txBody.get(17); const referenceInputs = txBody.get(18) ? parseUtxoIds(txBody.get(18)) : undefined; const votingProcedures = txBody.get(19) ? VotingProcedure.fromRawVoteMap(txBody.get(19)) : undefined; const proposalProcedures = txBody.get(20) ? parseProposalProcedures(txBody.get(20)) : undefined; const currentTreasuryValue = txBody.get(21); const donation = txBody.get(22); const transactionBody: TxBody = { inputs: inputs, outputs: outputs, fee: fee, ttl: ttl, certificates: certificates, withdrawals: withdrawls, auxDataHash: auxDataHash, validityIntervalStart: validityIntervalStart, mint: mint, scriptDataHash: scriptDataHash, collateralInputs: collateralInputs, requiredSigners: signers, networkId: networkId, collateralReturn: collateralReturn, totalCollateral: totalCollateral, referenceInputs: referenceInputs, votingProcedures: votingProcedures, proposalProcedures: proposalProcedures, currentTreasuryValue: currentTreasuryValue, donation: donation, }; return transactionBody; } // const tx_with_proposal = // "84a400d9010282825820280547044f3856acad471ec62d9a1d186825fe7a5fe39dfbd66057a0343b487801825820da54669e45d57a558ad6f9706928386f62bdb7d9cb069a4b5390d4f45889b5db01018182583900db1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab2397a993b0c8166aa8c48345be19257a4025ab764c86e799beab15b3031b00000016956a0ccc021a0002b69d14d9010281841b000000174876e800581de0db1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab238301825820049ae5d612b2fa825655809133b023d60c7f8cac683c278cf95de1622e4592f300820a01827668747470733a2f2f6269742e6c792f337a434832484c58201111111111111111111111111111111111111111111111111111111111111111a100d90102818258205f89ea8c6ab580e2e7a32c3586869eb95fae54f42ac982639b6665359601f63e58408e7671e3263d28f7acbd1b43d73093547c6a7b5aee5df61e3c10a5533e2593e238c4ed3a2527ab24b81333a204b0f2f9cc4c1ecee54ec9c7138078588a6ca206f5f6"; // const tx_with_reference_script = // "84A300D9010282825820063B8CFB08E097B3606065B456F567A2B443712AEE5C14834AB7E7F48E9F24E30182582056D95081EFA6C0842A174E8A6BFBFF454F69B833D4814C903B61B3C3A3FAD28C010182A4005839005D4F58F5D89DB08086D4CB0D933E2ECCB38C0148586F0758B88B486FDD8F5D45A1954E0AECF1DBCAB8A2F723652F67ED5FB06C8EC27E42CC01821A01047F26A2581C34E6054E3E74ECF4A9B6EB4E34A865F6B0B5FEE85E6A9BFBA0D2D025A848366B546F6B656E7319157C43414243194D9043444546194DB9434E47451903E844526F6F6D0449536967546F6B656E731907CF46546F6B656E311902FE46546F6B656E3218BD581CEFF7E215E355546CD0A59F0307638264CB98B88C8DCBBB36CAD29818A14850726F706F73616C01028201D81843D8798003D818590DF68203590DF1590DEE010100332323232323232323232323232323232323232323232323232323232323232323223223323232322932323255333573466E1D2000002118019BAE357420021155333573466E1D200200211804980A1ABA10019980E10009ABA1357440021155333573466E1D200400211803980D9ABA100108AA999AB9A3370E900300108C004DD69ABA10019919192A999AB9A3370E900000108C034C078D5D0800CCC07DD69ABA1357440021155333573466E1D200200211809980F1ABA10019980FBAD357426AE8800422AA666AE68CDC3A400800423003301E357420033015357426AE8800422AA666AE68CDC3A400C004226500B301F35742005301635742003375A6AE84D5D10008D5D100088AA999AB9A3370E900400108C024C078D5D0800CDD69ABA1357440021155333573466E1D200A0021180A980F1ABA100108AA999AB9A3370E900600108C044C078D5D0800CDD69ABA1357440021155333573466E1D200E002118029BAE35742003375C6AE84D5D100084554CCD5CD19B87480400084600E6EB8D5D0800CDD69ABA1357440021155333573466E1D201200211800980F1ABA1001980F1ABA1357440021155333573466E1D201400211807980F1ABA1001089812249035054310035573C0046AAE74004DD51ABA1357440021155333573466E1D2008002118059919192A999AB9A3370E900000108C004C078D5D080084554CCD5CD19B874800800846006603C6AE8400422AA666AE68CDC3A400800423005375C6AE84004226048921035054310035573C0046AAE74004DD51ABA100108AA999AB9A3370E900500108C014DD69ABA10019919192A999AB9A3370E900000108994004DD69ABA1002980F9ABA10019919192A999AB9A3370E900000108994024CC0900A0D5D08014D5D0800CCC091D71ABA1357440023574400222AA666AE68CDC3A400400423001330230273574200332323255333573466E1D2000002118009BAD35742003375A6AE84D5D1000844C0AD241035054310035573C0046AAE74004DD51ABA1357440021155333573466E1D20040021180599980F0113AD357420033302375C6AE84D5D100084554CCD5CD19B87480180084600E6604604E6AE8400422AA666AE68CDC3A401000422646500D3302502935742007330260243574200533302002475A6AE840072646464AA666AE68CDC3A400000423001375A6AE840066EB4D5D09ABA2001089816A481035054310035573C0046AAE74004DD51ABA13574400322330290020010D5D10009ABA20011155333573466E1D200A00211802998118139ABA10019919192A999AB9A3370E900000108998133AE357420022260569201035054310035573C0046AAE74004DD51ABA1357440021155333573466E1D200C002118010898142481035054310035573C0046AAE74004DD51ABA135744002357440022260489201035054310035573C0046AAE74004DD51ABA1357440021130214901035054310035573C0046AAE74004DD51ABA1357446AE89401644D23232323232593012801C004C034C09401292010444433032006007001333573466E1D200233010001006800400A92103443034004CA0070015900190C0023002524104444330340060070015900190ACC800C88880091801484CA000603E003218012300252401044443303100600018029981512CCC800C88880112290029400A50010011213302D0080018C0080044526898122481035054350019980CBAE5018357426AE88D5D10011980F00B1ABA100150065004302A22590018C00A442AA666AE68CDC3A40046601F2005222200300288C00400822600800291349A4644646464646464646464B2B26031003800AC980318161802802484C8CCC05E400644444002003900191111001166400644440048B484C09000642C8C00949104444330350060008AC9803804C84C064CA007001333573466E1D200233018302F00100A800400A921044443303600600700159330322333573466E1D20023301990019111001802E0010020018C00A442B2003159900291110012300290994000C09C0064300248860045240104444330310060001981892CCC800C88880112290029400A50010011213303400B0018C008007180023002452689815249035054350019812BAE357426AE88D5D11ABA2357446AE88D5D10011981200E1ABA1001500C33022018357426AE894030C0C08964006200D2218018014C010004302F22590018C00A442AA666AE68CDC3A4004660292005222200300308C004008226008002302E22590018C00A442AA666AE68CDC3A40046602732005220014888800C00A230010020898020009666564C00C0062D221590018801488589111002245200528014A0020022420031628029815112C800C60012213259593301B900391001001A300190039100091801243003001801220023004001400426603001C6AE8540084D5D11ABA25001135573C6EA8D5D0A80089AAB9E37540024C604444B20031801488564CC04801400A30008980200086040444644AA666AE68CDC3A4000008230001159590038C002443002460051333005593002001899B810044800A2008590038980D24903505439009108008004604644B20031801488554CCD5CD19B8F590058980E24810350543800910801000846000226008002223302122590018A40012219002912A999AB9A3371E00400E22601200222600C006001180F112C800C52000910C801488CDC000098030018460046006002603844B2003180048856400A2600800318010603644B200318004886007200522590028C0022602C0024C010004232323255333573466E1D2000002118009BAE35742002115325333573466E1D20020031180298009ABA100208AA999AB9A3370E900200188C00CDD71ABA100298009ABA1357440041130144910350543100232323255333573466E1D20000021180098089ABA100108AA999AB9A3370E900100108C0084554CCD5CD19B87480100084600822602E9201035054310035573C0046AAE74004DD50009AAB9E00235573A0026EA80048C8C8C954CCD5CD19B874800000846002600A6AE84006600C6AE84D5D1000844C049241035054310035573C0046AAE74004DD500091919192A999AB9A3370E900000108C004DD71ABA10019BAD357426AE880042260229201035054310035573C0046AAE74004DD500091919192A999AB9A3370E90000010899194004C02CD5D0801CCCC021D728039ABA10029919192A999AB9A3370E900000108C0004554CCD5CD19B87480080084600A6EB8D5D080084554CCD5CD19B8748010008460066AE8400422602A921035054310035573C0046AAE74004DD51ABA100199806BAE357426AE880046AE88004D5D1000889808249035054310035573C0046AAE74004DD5000899800BAE75A4464460046EAC004C05C88CCCD55CF800940008CA007001300635573A003300535573C00298021ABA20031ABA100280011480148A400E44AA666AE68CDC780200108999AB9A3370E00600300080108C008232323255333573466E1D20000021132323280099805BAD35742009300835742007375C6AE8400A66016EB8D5D0800CDD69ABA135744002357440026AE88004D5D10008898062481035054310035573C0046AAE74004DD500091919192A999AB9A3370E900000108C004C014D5D0800CCC0188C8C8C954CCD5CD19B87480000084600260126AE8400422AA666AE68CDC3A40040042265003375A6AE8400A6EB4D5D0800CDD69ABA1357440023574400222601E9201035054310035573C0046AAE74004DD50009ABA13574400211300B491035054310035573C0046AAE74004DD500091919192A999AB9A3370E900000108C004DD71ABA100108AA999AB9A3370E900100108C00CDD71ABA1001089805249035054310035573C0046AAE74004DD5000911919192A999AB9A3370E900100108C0084554CCD5CD19B874800000846002600A6AE84004226014921035054310035573C0046AAE74004DD5000919118011BAC00130102233335573E0025000280198021ABA100298019ABA20024000C03888954CCD5CD19B874800000444C01924103505433001155333573466E200052000113300333702900000119B814800000444CA00266E1000C00666E1000800466008004002601A444AA666AE68CDC3A400000222004226600600266E180080048C8C8C954CCD5CD19B8748000008460026EB8D5D0800CDD69ABA1357440021130054901035054310035573C0046AAE74004DD5000919319AB9C0018001805112C800C6001221801C80148800930040010C02489640063000910C00E400A4400298020008601044B200318004884E400A4444460206014666A01601A00800230040011803912C800C6001221801C80148A002005900191805800C88CCD402402C0080064601800226008002099111191919806112C800C400E443003002980200086004008600A6600C5200323223002007300D22590018C002443200522593300C0020078C00A2600C0060004601444B2003180048860072005228008014CC040896400630050034886400A44B26601E0040111801803C00513006003000E4C010004300622590018C002443003900291400400B0010011300400108C88C008004C01889640063000910992C9803001C600600700144004600800222333573466E3C008006001002300322590018C002443003900291400400B001001130040010C00889640063000910C00E400A45001002C0140044C010004300122590018C002443003900291400400A6600E44B20031800488600720052280080164006466E0120000019119B80002001919B80480000044C010004001260080021191800800918011198010010009999A89100111400400A002212900280092212056D95081EFA6C0842A174E8A6BFBFF454F69B833D4814C903B61B3C3A3FAD28C00480101825839005D4F58F5D89DB08086D4CB0D933E2ECCB38C0148586F0758B88B486FDD8F5D45A1954E0AECF1DBCAB8A2F723652F67ED5FB06C8EC27E42CC821B0000000340EAB042A2581CA48A63CA4083B142057F7F62599AB1E7CA73D3BA6DB800E25C1E6E83A14850726F706F73616C05581CF123088056B0F07927AC7D23CC22F9BC03E4B2FDF0F2E2DF605B58CAA14850726F706F73616C05021A0005396DA0F5F6"; // const tx_with_drep_reg_cert = // "84a400d90102818258201ab52118435707a522e10fbc683d8bd44473b4d92b7dc4f3b579a46275a0262800018182583900db1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab2373e88f2802df95d2f7c69752451ed408d4aaf6cc52f6a9bc7f0181561b000000046c77a45e021a0002a90904d901028184108200581cdb1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab231a1dcd6500827668747470733a2f2f6269742e6c792f337a434832484c58201111111111111111111111111111111111111111111111111111111111111111a100d90102818258205f89ea8c6ab580e2e7a32c3586869eb95fae54f42ac982639b6665359601f63e58400e9283c606d2d2bf326f76898719f23f0fcffd3ae4c01c8fae0a4b62f161b5eabced8e7f45e848b153008d384e7ed9f3034bac17ca56827bd8fc01afd225740ef5f6"; // const cbortx = (hex: string) => { // return cborBackend.decode(Buffer.from(hex, "hex")); // }; // const parsedTx = (hex: string) => { // return parseTxBody(cbortx(hex)[0]); // }; // parsedTx(tx_with_reference_script).outputs.forEach((output) => { // if (output.referenceScript) { // console.log(output.referenceScript); // } // }); // parsedTx(tx_with_drep_reg_cert).certificates?.forEach((cert) => { // console.log(cert); // });