@aptos-labs/ts-sdk
Version:
Aptos TypeScript SDK
59 lines • 2.01 kB
JavaScript
// Copyright © Aptos Foundation
// SPDX-License-Identifier: Apache-2.0
const publicKeyDeserializers = new Map();
const signatureDeserializers = new Map();
const publicKeyVariantDetectors = [];
const signatureVariantDetectors = [];
/**
* Register a deserializer for a public key variant.
* Called by modules that define new AnyPublicKey variants (e.g., keyless).
*/
export function registerPublicKeyVariant(variant, deserializer, detector) {
publicKeyDeserializers.set(variant, deserializer);
publicKeyVariantDetectors.push(detector);
}
/**
* Register a deserializer for a signature variant.
* Called by modules that define new AnySignature variants (e.g., keyless).
*/
export function registerSignatureVariant(variant, deserializer, detector) {
signatureDeserializers.set(variant, deserializer);
signatureVariantDetectors.push(detector);
}
/**
* Look up a registered public key deserializer by variant index.
*/
export function getPublicKeyDeserializer(variant) {
return publicKeyDeserializers.get(variant);
}
/**
* Look up a registered signature deserializer by variant index.
*/
export function getSignatureDeserializer(variant) {
return signatureDeserializers.get(variant);
}
/**
* Detect the variant for a public key using registered detectors.
* Returns the variant number, or undefined if no detector matches.
*/
export function detectPublicKeyVariant(key) {
for (const detector of publicKeyVariantDetectors) {
const variant = detector(key);
if (variant !== undefined)
return variant;
}
return undefined;
}
/**
* Detect the variant for a signature using registered detectors.
* Returns the variant number, or undefined if no detector matches.
*/
export function detectSignatureVariant(sig) {
for (const detector of signatureVariantDetectors) {
const variant = detector(sig);
if (variant !== undefined)
return variant;
}
return undefined;
}
//# sourceMappingURL=anyKeyRegistry.js.map