@metamask/snaps-sdk
Version:
A library containing the core functionality for building MetaMask Snaps
43 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NonEip155AssetTypeStruct = exports.NonEip155ChainIdStruct = exports.NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct = void 0;
const superstruct_1 = require("@metamask/superstruct");
const utils_1 = require("@metamask/utils");
/**
* A struct representing a list of non-EIP-155 CAIP-10 account IDs where the account addresses are the same.
*/
exports.NonEip155CaipAccountIdsMatchedByAddressAndNamespaceStruct = (0, superstruct_1.refine)((0, superstruct_1.array)(utils_1.CaipAccountIdStruct), 'Non-EIP-155 Matching Addresses Account ID List', (value) => {
const parsedAccountIds = value.map((accountId) => (0, utils_1.parseCaipAccountId)(accountId));
if (!parsedAccountIds.every(({ address, chain: { namespace } }) => address === parsedAccountIds[0].address &&
namespace === parsedAccountIds[0].chain.namespace)) {
return 'All account IDs must have the same address and namespace.';
}
const containsEip155 = parsedAccountIds.some(({ chain: { namespace } }) => {
return namespace === utils_1.KnownCaipNamespace.Eip155;
});
if (containsEip155) {
return 'All account IDs must have non-EIP-155 namespaces.';
}
return true;
});
/**
* A struct representing a non-EIP-155 chain ID.
*/
exports.NonEip155ChainIdStruct = (0, superstruct_1.refine)(utils_1.CaipChainIdStruct, 'Non-EIP-155 Chain ID', (value) => {
const { namespace } = (0, utils_1.parseCaipChainId)(value);
if (namespace === utils_1.KnownCaipNamespace.Eip155) {
return 'Chain ID must not be an EIP-155 chain ID.';
}
return true;
});
/**
* A struct representing a non-EIP-155 asset type.
*/
exports.NonEip155AssetTypeStruct = (0, superstruct_1.refine)(utils_1.CaipAssetTypeStruct, 'Non-EIP-155 Asset Type', (value) => {
const { chain: { namespace }, } = (0, utils_1.parseCaipAssetType)(value);
if (namespace === utils_1.KnownCaipNamespace.Eip155) {
return 'Asset type must not be an EIP-155 asset type.';
}
return true;
});
//# sourceMappingURL=caip.cjs.map