Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
47 changes: 27 additions & 20 deletions src/models/attestor.models.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
21 changes: 21 additions & 0 deletions src/utilities/index.ts
Original file line number Diff line number Diff line change
@@ -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));
Expand Down Expand Up @@ -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);
}
3 changes: 2 additions & 1 deletion tests/unit/attestor-request-function.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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
Expand Down
Loading