mirror of
https://github.com/Brotocol-xyz/bro-sdk.git
synced 2026-01-12 14:54:21 +08:00
feat: add cbBTC support
This commit is contained in:
@@ -274,11 +274,12 @@ export async function fromCorrespondingStacksToken(
|
||||
assertExclude(restEVMTokenPossibilities, EVMToken.sUSDT)
|
||||
|
||||
if (stacksToken === StacksToken.aBTC) {
|
||||
return [EVMToken.WBTC, EVMToken.BTCB, EVMToken.aBTC]
|
||||
return [EVMToken.aBTC, EVMToken.WBTC, EVMToken.BTCB, EVMToken.cbBTC]
|
||||
}
|
||||
assertExclude(restEVMTokenPossibilities, EVMToken.aBTC)
|
||||
assertExclude(restEVMTokenPossibilities, EVMToken.WBTC)
|
||||
assertExclude(restEVMTokenPossibilities, EVMToken.BTCB)
|
||||
assertExclude(restEVMTokenPossibilities, EVMToken.cbBTC)
|
||||
|
||||
if (stacksToken === StacksToken.uBTC) {
|
||||
return [EVMToken.uBTC, EVMToken.wuBTC]
|
||||
@@ -320,9 +321,10 @@ export async function toCorrespondingStacksToken(
|
||||
case EVMToken.USDT:
|
||||
case EVMToken.sUSDT:
|
||||
return StacksToken.sUSDT
|
||||
case EVMToken.aBTC:
|
||||
case EVMToken.BTCB:
|
||||
case EVMToken.WBTC:
|
||||
case EVMToken.aBTC:
|
||||
case EVMToken.cbBTC:
|
||||
return StacksToken.aBTC
|
||||
case EVMToken.uBTC:
|
||||
case EVMToken.wuBTC:
|
||||
@@ -369,6 +371,8 @@ export const isSupportedEVMRoute: IsSupportedFn = async (ctx, route) => {
|
||||
if (fromTokenInfo == null) return false
|
||||
|
||||
if (KnownChainId.isStacksChain(toChain)) {
|
||||
if (!KnownTokenId.isStacksToken(toToken)) return false
|
||||
|
||||
const stacksToken = await toCorrespondingStacksToken(fromToken)
|
||||
if (stacksToken == null) return false
|
||||
|
||||
@@ -396,11 +400,14 @@ export const isSupportedEVMRoute: IsSupportedFn = async (ctx, route) => {
|
||||
}
|
||||
|
||||
if (KnownChainId.isBitcoinChain(toChain)) {
|
||||
if (!KnownTokenId.isBitcoinToken(toToken)) return false
|
||||
const stacksToken = await toCorrespondingStacksToken(fromToken)
|
||||
return stacksToken === KnownTokenId.Stacks.aBTC
|
||||
}
|
||||
|
||||
if (KnownChainId.isRunesChain(toChain)) {
|
||||
if (!KnownTokenId.isRunesToken(toToken)) return false
|
||||
|
||||
const transitStacksToken = await toCorrespondingStacksToken(fromToken)
|
||||
if (transitStacksToken == null) return false
|
||||
|
||||
@@ -409,6 +416,8 @@ export const isSupportedEVMRoute: IsSupportedFn = async (ctx, route) => {
|
||||
}
|
||||
|
||||
if (KnownChainId.isBRC20Chain(toChain)) {
|
||||
if (!KnownTokenId.isBRC20Token(toToken)) return false
|
||||
|
||||
const transitStacksToken = await toCorrespondingStacksToken(fromToken)
|
||||
if (transitStacksToken == null) return false
|
||||
|
||||
|
||||
@@ -231,7 +231,12 @@ const _getOnChainConfigsImpl = async (
|
||||
[EVMToken.vLiALEX]: maybeAddress(configs[5]),
|
||||
[EVMToken.vLiSTX]: maybeAddress(configs[6]),
|
||||
[EVMToken.USDT]: maybeAddress(configs[7]),
|
||||
[chain === KnownChainId.EVM.BSC ? EVMToken.BTCB : EVMToken.WBTC]:
|
||||
// prettier-ignore
|
||||
[
|
||||
chain === KnownChainId.EVM.BSC ? EVMToken.BTCB :
|
||||
chain === KnownChainId.EVM.Base ? EVMToken.cbBTC :
|
||||
EVMToken.WBTC
|
||||
]:
|
||||
maybeAddress(configs[8]),
|
||||
[EVMToken.LUNR]: maybeAddress(configs[9]),
|
||||
[EVMToken.SKO]: maybeAddress(configs[10]),
|
||||
|
||||
@@ -46,6 +46,16 @@ const stxAlternativeTokenContractAddresses = {
|
||||
contractName: "token-btcb",
|
||||
},
|
||||
},
|
||||
cbBTC: {
|
||||
[KnownChainId.Stacks.Mainnet]: {
|
||||
deployerAddress: xlinkContractsMultisigMainnet,
|
||||
contractName: "token-wbtc",
|
||||
},
|
||||
[KnownChainId.Stacks.Testnet]: {
|
||||
deployerAddress: xlinkContractsDeployerTestnet,
|
||||
contractName: "token-wbtc",
|
||||
},
|
||||
},
|
||||
usdt: {
|
||||
[KnownChainId.Stacks.Mainnet]: {
|
||||
deployerAddress: xlinkContractsMultisigMainnet,
|
||||
@@ -71,6 +81,9 @@ export const getTerminatingStacksTokenContractAddress = (
|
||||
if (toToken === KnownTokenId.EVM.BTCB) {
|
||||
return stxAlternativeTokenContractAddresses.btcb[route.fromChain]
|
||||
}
|
||||
if (toToken === KnownTokenId.EVM.cbBTC) {
|
||||
return stxAlternativeTokenContractAddresses.cbBTC[route.fromChain]
|
||||
}
|
||||
}
|
||||
if (fromToken === KnownTokenId.Stacks.sUSDT) {
|
||||
if (toToken === KnownTokenId.EVM.USDT) {
|
||||
@@ -102,6 +115,15 @@ export const getTokenIdFromTerminatingStacksTokenContractAddress = (route: {
|
||||
return KnownTokenId.EVM.BTCB
|
||||
}
|
||||
|
||||
if (
|
||||
isStacksContractAddressEqual(
|
||||
route.toTokenAddress,
|
||||
stxAlternativeTokenContractAddresses.cbBTC[route.toChain],
|
||||
)
|
||||
) {
|
||||
return KnownTokenId.EVM.cbBTC
|
||||
}
|
||||
|
||||
if (
|
||||
isStacksContractAddressEqual(
|
||||
route.toTokenAddress,
|
||||
|
||||
@@ -57,6 +57,8 @@ export namespace KnownTokenId {
|
||||
export const WBTC = tokenId("evm-wbtc")
|
||||
/** Represents the BTCB token ID on EVM-compatible blockchains. */
|
||||
export const BTCB = tokenId("evm-btcb")
|
||||
/** Represents the cbBTC token ID on EVM-compatible blockchains. */
|
||||
export const cbBTC = tokenId("evm-cbbtc")
|
||||
|
||||
// wrapped tokens
|
||||
/** Represents the aBTC token ID on EVM-compatible blockchains. */
|
||||
|
||||
@@ -47,9 +47,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
// to Bitcoin
|
||||
[[..._allKnownEVMMainnetChains], [KnownChainId.Bitcoin.Mainnet]],
|
||||
[
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.Bitcoin.BTC],
|
||||
],
|
||||
),
|
||||
...defineRoute(
|
||||
@@ -57,9 +58,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[..._allKnownEVMMainnetChains], [KnownChainId.Stacks.Mainnet]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.Stacks.aBTC],
|
||||
// USDTs
|
||||
[KnownTokenId.EVM.USDT, KnownTokenId.Stacks.sUSDT],
|
||||
[KnownTokenId.EVM.sUSDT, KnownTokenId.Stacks.sUSDT],
|
||||
@@ -79,18 +81,25 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[..._allKnownEVMMainnetChains], [..._allKnownEVMMainnetChains]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.WBTC],
|
||||
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.cbBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.WBTC],
|
||||
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.cbBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.BTCB],
|
||||
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.cbBTC],
|
||||
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.cbBTC],
|
||||
|
||||
// USDTs
|
||||
[KnownTokenId.EVM.sUSDT, KnownTokenId.EVM.USDT],
|
||||
@@ -120,9 +129,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
// to Bitcoin
|
||||
[[..._allKnownEVMTestnetChains], [KnownChainId.Bitcoin.Testnet]],
|
||||
[
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Bitcoin.BTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.Bitcoin.BTC],
|
||||
],
|
||||
),
|
||||
...defineRoute(
|
||||
@@ -130,9 +140,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[..._allKnownEVMTestnetChains], [KnownChainId.Stacks.Testnet]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.Stacks.aBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.Stacks.aBTC],
|
||||
// USDTs
|
||||
[KnownTokenId.EVM.USDT, KnownTokenId.Stacks.sUSDT],
|
||||
[KnownTokenId.EVM.sUSDT, KnownTokenId.Stacks.sUSDT],
|
||||
@@ -152,18 +163,25 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[..._allKnownEVMTestnetChains], [..._allKnownEVMTestnetChains]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.WBTC],
|
||||
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.cbBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.WBTC],
|
||||
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.cbBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.BTCB],
|
||||
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.cbBTC],
|
||||
|
||||
[KnownTokenId.EVM.WBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.EVM.BTCB, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.EVM.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.EVM.cbBTC, KnownTokenId.EVM.cbBTC],
|
||||
|
||||
// USDTs
|
||||
[KnownTokenId.EVM.sUSDT, KnownTokenId.EVM.USDT],
|
||||
|
||||
@@ -43,9 +43,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[KnownChainId.Stacks.Mainnet], [..._allKnownEVMMainnetChains]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.cbBTC],
|
||||
// USDTs
|
||||
[KnownTokenId.Stacks.sUSDT, KnownTokenId.EVM.USDT],
|
||||
[KnownTokenId.Stacks.sUSDT, KnownTokenId.EVM.sUSDT],
|
||||
@@ -72,9 +73,10 @@ export const supportedRoutes = buildSupportedRoutes(
|
||||
[[KnownChainId.Stacks.Testnet], [..._allKnownEVMTestnetChains]],
|
||||
[
|
||||
// BTCs
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.WBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.BTCB],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.aBTC],
|
||||
[KnownTokenId.Stacks.aBTC, KnownTokenId.EVM.cbBTC],
|
||||
// USDTs
|
||||
[KnownTokenId.Stacks.sUSDT, KnownTokenId.EVM.USDT],
|
||||
[KnownTokenId.Stacks.sUSDT, KnownTokenId.EVM.sUSDT],
|
||||
|
||||
Reference in New Issue
Block a user