import { P256PublicJwk } from "../../../kms/jwk/kty/ec/P256PublicJwk.js";
import { P384PublicJwk } from "../../../kms/jwk/kty/ec/P384PublicJwk.js";
import { P521PublicJwk } from "../../../kms/jwk/kty/ec/P521PublicJwk.js";
import { Secp256k1PublicJwk } from "../../../kms/jwk/kty/ec/Secp256k1PublicJwk.js";
import { Ed25519PublicJwk } from "../../../kms/jwk/kty/okp/Ed25519PublicJwk.js";
import { X25519PublicJwk } from "../../../kms/jwk/kty/okp/X25519PublicJwk.js";
import { RsaPublicJwk } from "../../../kms/jwk/kty/rsa/RsaPublicJwk.js";
import { PublicJwk } from "../../../kms/jwk/PublicJwk.js";
import { VerificationMethod } from "./VerificationMethod.js";

//#region src/modules/dids/domain/verificationMethod/Multikey.d.ts
declare const VERIFICATION_METHOD_TYPE_MULTIKEY = "Multikey";
type GetMultikeyOptions = {
  did: string;
  publicJwk: PublicJwk;
  verificationMethodId?: string;
};
/**
 * Get a Multikey verification method.
 */
declare function getMultikey({
  did,
  publicJwk,
  verificationMethodId
}: GetMultikeyOptions): {
  id: string;
  type: string;
  controller: string;
  publicKeyMultibase: string;
};
/**
 * Check whether a verification method is a Multikey verification method.
 */
declare function isMultikey(verificationMethod: VerificationMethod): verificationMethod is VerificationMethod & {
  type: 'Multikey';
};
/**
 * Get a public jwk from a Multikey verification method.
 */
declare function getPublicJwkFromMultikey(verificationMethod: VerificationMethod & {
  type: 'Multikey';
}): PublicJwk<Ed25519PublicJwk | P256PublicJwk | P384PublicJwk | P521PublicJwk | RsaPublicJwk | Secp256k1PublicJwk | X25519PublicJwk>;
//#endregion
export { VERIFICATION_METHOD_TYPE_MULTIKEY, getMultikey, getPublicJwkFromMultikey, isMultikey };
//# sourceMappingURL=Multikey.d.ts.map