/** * @fileoverview Governance payload serializer for the blockchain ledger. * * Handles deterministic binary serialization of governance payloads, * including the 0x01 type prefix that distinguishes governance entries * from regular (0x00) entries. * * Binary format (after 0x01 type prefix): * - 1 byte: subtype (0x00 = genesis, 0x01 = amendment) * - For genesis: quorum policy + initial signer list * - 2 bytes: actionCount (uint16 BE) * - variable: serialized actions * - 2 bytes: cosignatureCount (uint16 BE) * - variable: cosignatures * * @see Design: Governance Payload Serialization Format * @see Requirements 13.9 */ import { IAuthorizedSigner } from '../interfaces/ledger/authorizedSigner'; import { IBrightTrustPolicy } from '../interfaces/ledger/brightTrustPolicy'; import { IGovernanceAction } from '../interfaces/ledger/governanceAction'; import { IGovernancePayload } from '../interfaces/ledger/governancePayload'; /** * Genesis initialization data embedded in the genesis governance payload. */ export interface IGenesisPayloadData { readonly brightTrustPolicy: IBrightTrustPolicy; readonly signers: readonly IAuthorizedSigner[]; } export declare class GovernancePayloadSerializer { /** * Check if a payload Uint8Array is a governance payload (starts with 0x01). */ static isGovernancePayload(payload: Uint8Array): boolean; /** * Serialize a governance payload into a Uint8Array with 0x01 prefix. * This produces an amendment-subtype payload. */ serialize(payload: IGovernancePayload): Uint8Array; /** * Serialize a genesis governance payload with initial signer set and quorum policy. */ serializeGenesis(data: IGenesisPayloadData): Uint8Array; /** * Deserialize a Uint8Array (with 0x01 prefix) back into an IGovernancePayload. * For genesis payloads, also returns the genesis data. */ deserialize(data: Uint8Array): IGovernancePayload & { genesis?: IGenesisPayloadData; }; /** * Serialize the governance actions only (without cosignatures) for hashing/signing by co-signers. */ serializeActionsForSigning(actions: readonly IGovernanceAction[]): Uint8Array; private serializeActions; private serializeAction; private serializeQuorumPolicy; private serializeMetadata; private serializeSignerList; private serializeCosignatures; private deserializeGenesis; private deserializeAmendment; private deserializeAction; private deserializeQuorumPolicy; private deserializeMetadata; private deserializeSigner; private deserializeCosignatures; private ensureBytes; } //# sourceMappingURL=governancePayloadSerializer.d.ts.map