import '../../generic/typed-enum.js';
import TypedBytes from '../../generic/typed-bytes.js';
import '../../generic/typed-string.js';
import '../../generic/typed-array.js';
import '../../generic/typed-tuple.js';
import '../../generic/typed-null.js';
import option from '../../generic/option.js';
import '../../../utils/types/array.js';
import 'crypto';
import 'bs58';
import 'multiformats/bases/base58';
import 'varint';
import '../../../utils/encoding/ss-58.js';
import TypedNumber from '../../generic/typed-number.js';
import '../../generic/typed-set.js';
import '../../generic/typed-map.js';
import TypedStruct from '../../generic/typed-struct.js';
import 'uuid';
import 'js-sha256';
import withProp from '../../generic/with-prop.js';
import { CurveType, CurveTypeBls12381 } from '../curve-type.js';
import { BBSParams, BBSPlusParams, PSParams, BBDT16Params } from '../params/index.js';
import { DockOrCheqdOffchainSignatureParamsRef, DockOffchainSignatureParamsRef, CheqdOffchainSignatureParamsRef, CheqdTestnetOffchainSignatureParamsRef, CheqdMainnetOffchainSignatureParamsRef } from './ref.js';
import '../../../utils/types/iterable.js';
import '../../../utils/types/object.js';
import '../../../utils/interfaces.js';
import '../../../utils/assert.js';
import '../../../utils/error.js';
import '../../../utils/inheritance.js';
import '../../../utils/types/set.js';
import '../../generic/with-base.js';
import '../../../utils/types/bytes.js';
import '../../../utils/types/string.js';
import '../../generic/with-catch-null.js';
import '../../generic/with-eq.js';
import '../../generic/any-of.js';
import '../../generic/with-from.js';
import '../../generic/with-from-json-bytes.js';
import 'blake2b';
import '../../generic/create-placeholder.js';
import '../../generic/with-props.js';
import '../params/value.js';
import '../params/id.js';
import '../../generic/typed-uuid.js';
import '../../generic/with-from-dock-id.js';
import '../../did/onchain/typed-did/index.js';
import '../../did/onchain/typed-did/did-method-key/did-method-key-public-key.js';
import '../../../utils/encoding/base-58-btc.js';
import '../../generic/sized.js';
import '../../../utils/types/number.js';
import '../../generic/with-qualifier.js';
import '../../public-keys/public-key.js';
import '../../public-keys/public-key-x25519-value.js';
import '../../public-keys/public-key-ed25519-value.js';
import '../../../vc/crypto/constants.js';
import '../../public-keys/public-key-secp256k1-value.js';
import '../../public-keys/public-key-sr25519-value.js';
import '../../did/onchain/constants.js';
import '../../did/onchain/typed-did/signature.js';
import '../../did/onchain/typed-did/did-method-key/did-method-key-signature.js';
import '../../signatures/signature-value.js';
import '../../signatures/signature-ed25519-value.js';
import '../../signatures/signature-secp256k1-value.js';
import '../../signatures/signature.js';
import '../../signatures/signature-sr25519-value.js';
import '../../did/onchain/typed-did/dock-did-value.js';
import '../../generic/utils.js';
import '../../generic/typed-bytes-array.js';
import '../../did/onchain/typed-did/cheqd-did.js';

class OffchainSignaturePublicKeyValue extends TypedStruct {
  static Classes = {
    bytes: class Bytes extends TypedBytes {},
    paramsRef: option(DockOrCheqdOffchainSignatureParamsRef),
    curveType: CurveType,
    participantId: option(TypedNumber),
  };

  constructor(
    bytes,
    paramsRef,
    curveType = new CurveTypeBls12381(),
    participantId = null,
    ...rest
  ) {
    super(bytes, paramsRef, curveType, participantId, ...rest);
  }
}

class BBSPublicKeyValue extends OffchainSignaturePublicKeyValue {
  static Params = BBSParams;
}
class BBSPlusPublicKeyValue extends OffchainSignaturePublicKeyValue {
  static Params = BBSPlusParams;
}
class PSPublicKeyValue extends OffchainSignaturePublicKeyValue {
  static Params = PSParams;
}
class BBDT16PublicKeyValue extends OffchainSignaturePublicKeyValue {
  static Params = BBDT16Params;
}

class DockOffchainSignaturePublicKeyValue extends withProp(
  OffchainSignaturePublicKeyValue,
  'paramsRef',
  DockOffchainSignatureParamsRef,
) {}
class CheqdOffchainSignaturePublicKeyValue extends withProp(
  OffchainSignaturePublicKeyValue,
  'paramsRef',
  CheqdOffchainSignatureParamsRef,
) {}
class CheqdTestnetOffchainSignaturePublicKeyValue extends withProp(
  CheqdOffchainSignaturePublicKeyValue,
  'paramsRef',
  CheqdTestnetOffchainSignatureParamsRef,
) {}
class CheqdMainnetOffchainSignaturePublicKeyValue extends withProp(
  CheqdOffchainSignaturePublicKeyValue,
  'paramsRef',
  CheqdMainnetOffchainSignatureParamsRef,
) {}

export { BBDT16PublicKeyValue, BBSPlusPublicKeyValue, BBSPublicKeyValue, CheqdMainnetOffchainSignaturePublicKeyValue, CheqdOffchainSignaturePublicKeyValue, CheqdTestnetOffchainSignaturePublicKeyValue, DockOffchainSignaturePublicKeyValue, OffchainSignaturePublicKeyValue, PSPublicKeyValue };
//# sourceMappingURL=value.js.map
