diff --git a/packages/fnd-base/src/endpoints.ts b/packages/fnd-base/src/endpoints.ts index 45c8bdc..26a282e 100644 --- a/packages/fnd-base/src/endpoints.ts +++ b/packages/fnd-base/src/endpoints.ts @@ -1,7 +1,6 @@ import { KEY_TYPE, LEGACY_NETWORKS_ROUTE_MAP, - SIG_TYPE, TORUS_LEGACY_NETWORK_TYPE, TORUS_SAPPHIRE_NETWORK, TORUS_SAPPHIRE_NETWORK_TYPE, @@ -9,7 +8,7 @@ import { WEB3AUTH_SIG_TYPE, } from "@toruslabs/constants"; -import { validateKeyTypeAndSigTypeForTSS } from "./utils"; +import { validateSigTypeAndGetTSSPath } from "./utils"; export const SAPPHIRE_NETWORK_URLS: Record = { [TORUS_SAPPHIRE_NETWORK.SAPPHIRE_DEVNET]: [ @@ -61,25 +60,15 @@ export const getTSSEndpoints = ( sapphireNetwork: TORUS_SAPPHIRE_NETWORK_TYPE, legacyNetwork?: TORUS_LEGACY_NETWORK_TYPE, keyType = KEY_TYPE.SECP256K1 as WEB3AUTH_KEY_TYPE, - sigType = SIG_TYPE.ECDSA_SECP256K1 as WEB3AUTH_SIG_TYPE + sigType?: WEB3AUTH_SIG_TYPE ) => { const endpoints = SAPPHIRE_NETWORK_URLS[sapphireNetwork]; if (!endpoints || endpoints.length === 0) { throw new Error(`Unsupported network: ${sapphireNetwork}`); } - validateKeyTypeAndSigTypeForTSS(keyType, sigType); - - let tssPath: "tss" | "tss-frost"; - if (sigType === SIG_TYPE.ECDSA_SECP256K1) { - // we will use dkls for ECDSA Sigs - tssPath = "tss"; - } else if (sigType === SIG_TYPE.ED25519 || sigType === SIG_TYPE.BIP340) { - // we will use frost for Ed25519 and BIP340 Sigs - tssPath = "tss-frost"; - } else { - throw new Error(`Unsupported signature type: ${sigType}`); - } + // validate the keyType and sigType and get the relevant tssPath + const tssPath = validateSigTypeAndGetTSSPath(keyType, sigType); const routeIdentifier = LEGACY_NETWORKS_ROUTE_MAP[legacyNetwork as TORUS_LEGACY_NETWORK_TYPE]; return endpoints.map((e) => { diff --git a/packages/fnd-base/src/index.ts b/packages/fnd-base/src/index.ts index eb29e0f..65c5a3f 100644 --- a/packages/fnd-base/src/index.ts +++ b/packages/fnd-base/src/index.ts @@ -1,3 +1,30 @@ +import { + INodeDetails, + LEGACY_NETWORKS_ROUTE_MAP, + TORUS_LEGACY_NETWORK, + TORUS_LEGACY_NETWORK_TYPE, + TORUS_NETWORK_TYPE, + TORUS_SAPPHIRE_NETWORK, + TORUS_SAPPHIRE_NETWORK_TYPE, + WEB3AUTH_KEY_TYPE, + WEB3AUTH_SIG_TYPE, +} from "@toruslabs/constants"; + +import { getSapphireNodeDetails } from "./sapphireNetworkConfig"; + export * from "./endpoints"; export * from "./sapphireNetworkConfig"; export * from "./utils"; + +export function fetchLocalConfig(network: TORUS_NETWORK_TYPE, keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): INodeDetails | undefined { + if (Object.values(TORUS_SAPPHIRE_NETWORK).includes(network as TORUS_SAPPHIRE_NETWORK_TYPE)) { + return getSapphireNodeDetails(network as TORUS_SAPPHIRE_NETWORK_TYPE, undefined, keyType, sigType); + } + + if (Object.values(TORUS_LEGACY_NETWORK).includes(network as TORUS_LEGACY_NETWORK_TYPE)) { + const legacyMap = LEGACY_NETWORKS_ROUTE_MAP[network as TORUS_LEGACY_NETWORK_TYPE]; + if (legacyMap.migrationCompleted) return getSapphireNodeDetails(legacyMap.networkMigratedTo, network as TORUS_LEGACY_NETWORK_TYPE, keyType); + } + + return undefined; +} diff --git a/packages/fnd-base/src/utils.ts b/packages/fnd-base/src/utils.ts index 508850b..379f09d 100644 --- a/packages/fnd-base/src/utils.ts +++ b/packages/fnd-base/src/utils.ts @@ -1,20 +1,6 @@ -import { - INodeDetails, - KEY_TYPE, - LEGACY_NETWORKS_ROUTE_MAP, - SIG_TYPE, - TORUS_LEGACY_NETWORK, - TORUS_LEGACY_NETWORK_TYPE, - TORUS_NETWORK_TYPE, - TORUS_SAPPHIRE_NETWORK, - TORUS_SAPPHIRE_NETWORK_TYPE, - WEB3AUTH_KEY_TYPE, - WEB3AUTH_SIG_TYPE, -} from "@toruslabs/constants"; +import { KEY_TYPE, SIG_TYPE, WEB3AUTH_KEY_TYPE, WEB3AUTH_SIG_TYPE } from "@toruslabs/constants"; -import { getSapphireNodeDetails } from "./sapphireNetworkConfig"; - -export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigType: WEB3AUTH_SIG_TYPE) { +export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE) { if (sigType === SIG_TYPE.ECDSA_SECP256K1) { if (keyType !== KEY_TYPE.SECP256K1) { throw new Error("Invalid key type for ecdsa-secp256k1"); @@ -27,20 +13,28 @@ export function validateKeyTypeAndSigTypeForTSS(keyType: WEB3AUTH_KEY_TYPE, sigT if (keyType !== KEY_TYPE.ED25519) { throw new Error("Invalid key type for ed25519"); } - } else { - throw new Error(`Invalid signature type, ${sigType}`); } } -export function fetchLocalConfig(network: TORUS_NETWORK_TYPE, keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): INodeDetails | undefined { - if (Object.values(TORUS_SAPPHIRE_NETWORK).includes(network as TORUS_SAPPHIRE_NETWORK_TYPE)) { - return getSapphireNodeDetails(network as TORUS_SAPPHIRE_NETWORK_TYPE, undefined, keyType, sigType); - } +export function validateSigTypeAndGetTSSPath(keyType: WEB3AUTH_KEY_TYPE, sigType?: WEB3AUTH_SIG_TYPE): "tss" | "tss-frost" { + validateKeyTypeAndSigTypeForTSS(keyType, sigType); - if (Object.values(TORUS_LEGACY_NETWORK).includes(network as TORUS_LEGACY_NETWORK_TYPE)) { - const legacyMap = LEGACY_NETWORKS_ROUTE_MAP[network as TORUS_LEGACY_NETWORK_TYPE]; - if (legacyMap.migrationCompleted) return getSapphireNodeDetails(legacyMap.networkMigratedTo, network as TORUS_LEGACY_NETWORK_TYPE, keyType); + let tssPath: "tss" | "tss-frost"; + if (!sigType) { + // if sigType is not provided, we will determine the tssPath based on the keyType + if (keyType === KEY_TYPE.SECP256K1) { + tssPath = "tss"; + } else if (keyType === KEY_TYPE.ED25519) { + tssPath = "tss-frost"; + } + } else if (sigType === SIG_TYPE.ECDSA_SECP256K1) { + // we will use dkls for ECDSA Sigs + tssPath = "tss"; + } else if (sigType === SIG_TYPE.ED25519 || sigType === SIG_TYPE.BIP340) { + // we will use frost for Ed25519 and BIP340 Sigs + tssPath = "tss-frost"; + } else { + throw new Error(`Unsupported signature type: ${sigType} for key: ${keyType}`); } - - return undefined; + return tssPath; }