"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.blockTipConstructor = exports.blockHeaderConstructor = exports.blockConstructor = exports.BlockBase = exports.BlockHeaderBase = exports.BlockTipBase = void 0;
class BlockTipBase {
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    constructor(data) {
        this.privateData = data;
    }
    /**
     * Exposing the private data for the derived classes (dev only/python like privatization)
     */
    get _data() {
        return this.privateData;
    }
    /**
     * Only return something on Tips
     */
    get chainTipStatus() {
        return "active";
    }
}
exports.BlockTipBase = BlockTipBase;
class BlockHeaderBase extends BlockTipBase {
}
exports.BlockHeaderBase = BlockHeaderBase;
class BlockBase extends BlockHeaderBase {
    /**
     * Return if block is valid
     * Mainly for XRP
     */
    get isValid() {
        return true;
    }
}
exports.BlockBase = BlockBase;
function blockConstructor(c) {
    return new c();
}
exports.blockConstructor = blockConstructor;
function blockHeaderConstructor(c) {
    return new c();
}
exports.blockHeaderConstructor = blockHeaderConstructor;
function blockTipConstructor(c) {
    return new c();
}
exports.blockTipConstructor = blockTipConstructor;
//# sourceMappingURL=BlockBase.js.map