"use strict";
// Copyright 2023 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.Ed25519PublicKeyHashBlockIssuerKey = exports.BlockIssuerKeyType = exports.BlockIssuerKey = exports.BlockIssuerKeyDiscriminator = void 0;
/**
 * All of the block issuer key types.
 */
var BlockIssuerKeyType;
(function (BlockIssuerKeyType) {
    /** An Ed25519 public key hash block issuer key. */
    BlockIssuerKeyType[BlockIssuerKeyType["Ed25519PublicKeyHash"] = 0] = "Ed25519PublicKeyHash";
})(BlockIssuerKeyType || (BlockIssuerKeyType = {}));
exports.BlockIssuerKeyType = BlockIssuerKeyType;
/** The base class for a block issuer key. */
class BlockIssuerKey {
    /**
     * @param type The type of block issuer key.
     */
    constructor(type) {
        this.type = type;
    }
}
exports.BlockIssuerKey = BlockIssuerKey;
/**
 * Ed25519 public key hash Block Issuer Key.
 */
class Ed25519PublicKeyHashBlockIssuerKey extends BlockIssuerKey {
    constructor(pubKeyHash) {
        super(BlockIssuerKeyType.Ed25519PublicKeyHash);
        this.pubKeyHash = pubKeyHash;
    }
}
exports.Ed25519PublicKeyHashBlockIssuerKey = Ed25519PublicKeyHashBlockIssuerKey;
const BlockIssuerKeyDiscriminator = {
    property: 'type',
    subTypes: [
        {
            value: Ed25519PublicKeyHashBlockIssuerKey,
            name: BlockIssuerKeyType.Ed25519PublicKeyHash,
        },
    ],
};
exports.BlockIssuerKeyDiscriminator = BlockIssuerKeyDiscriminator;
//# sourceMappingURL=block-issuer-key.js.map