"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.SenderKeyRecord = void 0;var _generics = require("../../Utils/generics.js"); var _senderKeyState = require("./sender-key-state.js"); class SenderKeyRecord { constructor(serialized) { this.MAX_STATES = 5; this.senderKeyStates = []; if (serialized) { for (const structure of serialized) { this.senderKeyStates.push(new _senderKeyState.SenderKeyState(null, null, null, null, null, null, structure)); } } } isEmpty() { return this.senderKeyStates.length === 0; } getSenderKeyState(keyId) { if (keyId === undefined && this.senderKeyStates.length) { return this.senderKeyStates[this.senderKeyStates.length - 1]; } return this.senderKeyStates.find((state) => state.getKeyId() === keyId); } addSenderKeyState(id, iteration, chainKey, signatureKey) { this.senderKeyStates.push(new _senderKeyState.SenderKeyState(id, iteration, chainKey, null, signatureKey)); if (this.senderKeyStates.length > this.MAX_STATES) { this.senderKeyStates.shift(); } } setSenderKeyState(id, iteration, chainKey, keyPair) { this.senderKeyStates.length = 0; this.senderKeyStates.push(new _senderKeyState.SenderKeyState(id, iteration, chainKey, keyPair)); } serialize() { return this.senderKeyStates.map((state) => state.getStructure()); } static deserialize(data) { const str = Buffer.from(data).toString('utf-8'); const parsed = JSON.parse(str, _generics.BufferJSON.reviver); return new SenderKeyRecord(parsed); } }exports.SenderKeyRecord = SenderKeyRecord; /* v9-5356c436e620484e */