import { Address, RawRewardAccount, RewardAccount, StakeAddress } from "./address"; import { GovAction, RawGovAction } from "./govAction"; import {cborBackend} from "cbor-rpc"; import { Anchor, RawAnchor } from "../types"; import { Buffer } from "buffer"; type RawProposalProcedure = [bigint, RawRewardAccount, RawGovAction, RawAnchor]; export class ProposalProcedure { deposit: bigint; rewardAccount: RewardAccount; govAction: GovAction; anchor: Anchor; constructor(deposit: bigint, rewardAccount: RewardAccount, govAction: GovAction, anchor: Anchor) { this.deposit = deposit; this.rewardAccount = rewardAccount; this.govAction = govAction; this.anchor = anchor; } static fromCborObject(obj: RawProposalProcedure) { return new ProposalProcedure( obj[0], StakeAddress.fromBytes(obj[1]), GovAction.fromCborObject(obj[2]), Anchor.fromCborObject(obj[3]) ); } } export function parseProposalProcedures(proposalProcedures: RawProposalProcedure[]): ProposalProcedure[] { const proposals: ProposalProcedure[] = []; proposalProcedures.forEach((pp) => { proposals.push(ProposalProcedure.fromCborObject(pp)); }); return proposals; } // const proposalHex = // "D9010282841B000000174876E800581DE0DB1BC3C3F99CE68977CEAF27AB4DD917123EF9E73F85C304236EAB238305F682827668747470733A2F2F6269742E6C792F337A434832484C58201111111111111111111111111111111111111111111111111111111111111113581CDB1BC3C3F99CE68977CEAF27AB4DD917123EF9E73F85C304236EAB23827668747470733A2F2F6269742E6C792F337A434832484C58201111111111111111111111111111111111111111111111111111111111111112841B000000174876E800581DE0DB1BC3C3F99CE68977CEAF27AB4DD917123EF9E73F85C304236EAB238106827668747470733A2F2F6269742E6C792F337A434832484C58201111111111111111111111111111111111111111111111111111111111111111"; // const proposals = cborBackend.decode(Buffer.from(proposalHex, "hex")); // proposals.forEach((proposal: RawProposalProcedure) => { // if(ProposalProcedure.fromCborObject(proposal).govAction.type === "NewConstitutionAction") { // console.log(ProposalProcedure.fromCborObject(proposal).govAction); // } // });