diff --git a/package.json b/package.json index 6d52fe8..5aebab1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "dlc-btc-lib", - "version": "2.6.4", + "version": "2.6.5", "description": "This library provides a comprehensive set of interfaces and functions for minting dlcBTC tokens on supported blockchains.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/models/attestor.models.ts b/src/models/attestor.models.ts index 411adbc..7424bac 100644 --- a/src/models/attestor.models.ts +++ b/src/models/attestor.models.ts @@ -1,23 +1,30 @@ -export type AttestorChainID = - | 'evm-mainnet' - | 'evm-sepolia' - | 'evm-arbitrum' - | 'evm-arbsepolia' - | 'evm-base' - | 'evm-basesepolia' - | 'evm-optimism' - | 'evm-opsepolia' - | 'evm-polygon' - | 'evm-polygonsepolia' - | 'evm-avax' - | 'evm-bsc' - | 'evm-holesky' - | 'evm-localhost' - | 'evm-hardhat-arb' - | 'evm-hardhat-eth' - | 'ripple-xrpl-mainnet' - | 'ripple-xrpl-testnet' - | 'ripple-xrpl-devnet'; +export enum EVMAttestorChainID { + 'evm-mainnet' = 'evm-mainnet', + 'evm-sepolia' = 'evm-sepolia', + 'evm-arbitrum' = 'evm-arbitrum', + 'evm-arbsepolia' = 'evm-arbsepolia', + 'evm-base' = 'evm-base', + 'evm-basesepolia' = 'evm-basesepolia', + 'evm-optimism' = 'evm-optimism', + 'evm-opsepolia' = 'evm-opsepolia', + 'evm-polygon' = 'evm-polygon', + 'evm-polygonsepolia' = 'evm-polygonsepolia', + 'evm-avax' = 'evm-avax', + 'evm-bsc' = 'evm-bsc', + 'evm-holesky' = 'evm-holesky', + 'evm-localhost' = 'evm-localhost', + 'evm-hardhat-arb' = 'evm-hardhat-arb', + 'evm-hardhat-eth' = 'evm-hardhat-eth', + 'evm-bsctestnet' = 'evm-bsctestnet', +} + +export enum XRPLAttestorChainID { + 'ripple-xrpl-mainnet' = 'ripple-xrpl-mainnet', + 'ripple-xrpl-testnet' = 'ripple-xrpl-testnet', + 'ripple-xrpl-devnet' = 'ripple-xrpl-devnet', +} + +export type AttestorChainID = EVMAttestorChainID | XRPLAttestorChainID; export interface FundingTXAttestorInfo { vaultUUID: string; diff --git a/src/utilities/index.ts b/src/utilities/index.ts index babfb8f..0678734 100644 --- a/src/utilities/index.ts +++ b/src/utilities/index.ts @@ -1,5 +1,11 @@ import { Decimal } from 'decimal.js'; +import { + AttestorChainID, + EVMAttestorChainID, + XRPLAttestorChainID, +} from '../models/attestor.models.js'; + export function shiftValue(value: number): number { const decimalPoweredShift = new Decimal(10 ** 8); const decimalValue = new Decimal(Number(value)); @@ -63,3 +69,18 @@ export function reverseBytes(bytes: Buffer | Uint8Array) { if (Buffer.isBuffer(bytes)) return Buffer.from(bytes).reverse(); return new Uint8Array(bytes.slice().reverse()); } + +export function isSupportedChainID(chainID: string): chainID is AttestorChainID { + return ( + Object.values(EVMAttestorChainID).includes(chainID as EVMAttestorChainID) || + Object.values(XRPLAttestorChainID).includes(chainID as XRPLAttestorChainID) + ); +} + +export function isEVMChainID(chainID: string): chainID is EVMAttestorChainID { + return Object.values(EVMAttestorChainID).includes(chainID as EVMAttestorChainID); +} + +export function isXRPLChainID(chainID: string): chainID is XRPLAttestorChainID { + return Object.values(XRPLAttestorChainID).includes(chainID as XRPLAttestorChainID); +} diff --git a/tests/unit/attestor-request-function.test.ts b/tests/unit/attestor-request-function.test.ts index 5f93c9d..eda251d 100644 --- a/tests/unit/attestor-request-function.test.ts +++ b/tests/unit/attestor-request-function.test.ts @@ -4,6 +4,7 @@ import { } from '../../src/functions/attestor/attestor-request.functions'; import * as requestFunctions from '../../src/functions/request/request.functions'; import { + EVMAttestorChainID, FundingTXAttestorInfo, WithdrawDepositTXAttestorInfo, } from '../../src/models/attestor.models'; @@ -20,7 +21,7 @@ describe('Attestor Request Sending', () => { fundingPSBT: 'funding-psbt', userEthereumAddress: 'user-ethereum-address', userBitcoinTaprootPublicKey: 'user-bitcoin-taproot-public-key', - attestorChainID: 'evm-arbitrum', + attestorChainID: EVMAttestorChainID['evm-arbitrum'], }; it('should succeed without errors when all requests are successful', async () => { jest