import * as asn1js from "asn1js";
import { isBufferSource, toArrayBuffer, } from "@peculiar/utils/bytes";
import { AsnParser } from "./parser.js";
import { AsnSerializer } from "./serializer.js";
export class AsnConvert {
    static serialize(obj) {
        return AsnSerializer.serialize(obj);
    }
    static parse(data, target, options) {
        return AsnParser.parse(data, target, options);
    }
    static toString(data, options) {
        const buf = isBufferSource(data)
            ? toArrayBuffer(data)
            : AsnConvert.serialize(data);
        const asn = asn1js.fromBER(buf, options?.berOptions);
        if (asn.offset === -1) {
            throw new Error(`Cannot decode ASN.1 data. ${asn.result.error}`);
        }
        return asn.result.toString();
    }
}
