@metamask/snaps-sdk
Version:
A library containing the core functionality for building MetaMask Snaps
33 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OnAssetsLookupResponseStruct = exports.FungibleAssetMetadataStruct = exports.AssetIconUrlStruct = exports.FungibleAssetUnitStruct = void 0;
const superstruct_1 = require("@metamask/superstruct");
const utils_1 = require("@metamask/utils");
exports.FungibleAssetUnitStruct = (0, superstruct_1.object)({
name: (0, superstruct_1.optional)((0, superstruct_1.string)()),
symbol: (0, superstruct_1.optional)((0, superstruct_1.string)()),
decimals: (0, superstruct_1.number)(),
});
exports.AssetIconUrlStruct = (0, superstruct_1.refine)((0, superstruct_1.string)(), 'Asset URL', (value) => {
try {
const url = new URL(value);
// For now, we require asset URLs to either be base64 SVGs or remote HTTPS URLs
(0, utils_1.assert)(url.protocol === 'https:' ||
value.startsWith('data:image/svg+xml;base64,'));
return true;
}
catch {
return 'Invalid URL';
}
});
exports.FungibleAssetMetadataStruct = (0, superstruct_1.object)({
name: (0, superstruct_1.optional)((0, superstruct_1.string)()),
symbol: (0, superstruct_1.optional)((0, superstruct_1.string)()),
fungible: (0, superstruct_1.literal)(true),
iconUrl: exports.AssetIconUrlStruct,
units: (0, superstruct_1.size)((0, superstruct_1.array)(exports.FungibleAssetUnitStruct), 1, Infinity),
});
exports.OnAssetsLookupResponseStruct = (0, superstruct_1.object)({
assets: (0, superstruct_1.record)(utils_1.CaipAssetTypeStruct, (0, superstruct_1.nullable)(exports.FungibleAssetMetadataStruct)),
});
//# sourceMappingURL=assets-lookup.cjs.map