@rarible/types
Version:
`@rarible/types` is a TypeScript library that provides type definitions and interfaces for the Rarible ecosystem. This package is designed to facilitate seamless integration with Rarible's APIs and services, ensuring type safety and improved developer exp
29 lines (28 loc) • 1.01 kB
JavaScript
import { CustomError } from "@rarible/utils";
import { toLayerOneBlockchain, parseBlockchainSafe } from "../enum/utils.js";
import { contractAddressValidators } from "./validators.js";
export function toUnionContractAddress(value) {
const safe = toUnionContractAddressSafe(value);
if (!safe)
throw new InvalidUnionContractAddressError(value);
return safe;
}
export function toUnionContractAddressSafe(value) {
if (isUnionContractAddress(value))
return value;
return undefined;
}
export function isUnionContractAddress(value) {
const parsed = parseBlockchainSafe(value);
if (!parsed)
return false;
const [blockchain, address] = parsed;
const layer1 = toLayerOneBlockchain(blockchain);
const validator = contractAddressValidators[layer1];
return validator.validate(address);
}
export class InvalidUnionContractAddressError extends CustomError {
constructor(address) {
super(`Not a valid union contract address: ${address}`);
}
}