import { type Address, isAddressEqual } from "viem" import { arbitrum, base, bsc, optimism, polygon } from "viem/chains" import type { CAB_VERSION, NonEmptyArray } from "../types" export const CAB_V0_1: CAB_VERSION = "0.0.1" export const CAB_V0_2: CAB_VERSION = "0.0.2" export const CAB_V0_2_1: CAB_VERSION = "0.2.1" export const cabPaymasterAddressV1: Address = "0xB4Aa062cC685e7e2B6881ED57FB830Cd7D4bCf25" export const cabPaymasterAddressV2: Address = "0x78b09791499931CC36919Ef6A38BEC8B569E7f57" export const cabPaymasterAddressV2_1: Address = "0x9A3b8B3eAEDf076956b12A5d1a0248FDD2CA9E78" export const invoiceManagerAddressV1: Address = "0x80F3b8c46381d5cF4B737742D5FE323b7CaA43b1" export const invoiceManagerAddressV2: Address = "0x5C560ee0e414d635ccaE2208cfA13715a969c631" export const invoiceManagerAddressV2_1: Address = "0x1d9E53dC7eAeE8F51995efe03d73526f83C98c59" export const vaultManagerAddressV1: Address = "0x456e6c1c701e91D8A078Be9b5fDF3FA40E01CcBe" export const vaultManagerAddressV2: Address = "0xFa4A202a24Ff90f7C3843b2CefCde012dCb2762B" export const vaultManagerAddressV2_1: Address = "0x8612d1B7909977861dDBD435592E4071FB50c0Ef" export const cabPaymasterAddress: Address = "0x78b09791499931CC36919Ef6A38BEC8B569E7f57" export type EnableCABSupportedToken = { name: "USDC" | "6TEST" | "USDT" networks?: NonEmptyArray< | 10 | 56 | 137 | 8453 | 42161 | 34443 | 80002 | 11155420 | 84532 | 421614 | 11155111 | 204 | 720380884 > } export const getInvoiceManagerAddress = ({ cabPaymasterAddress }: { cabPaymasterAddress: Address }) => { if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV1)) { return invoiceManagerAddressV1 } else if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV2)) { return invoiceManagerAddressV2 } return invoiceManagerAddressV2_1 } export const getVaultManagerAddress = ({ cabPaymasterAddress }: { cabPaymasterAddress: Address }) => { if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV1)) { return vaultManagerAddressV1 } else if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV2)) { return vaultManagerAddressV2 } return vaultManagerAddressV2_1 } export const getSupportedTokens = ({ cabPaymasterAddress }: { cabPaymasterAddress: Address }) => { console.log("getSupportedToken", cabPaymasterAddress) if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV1)) { return supportedTokensV1 } else if (isAddressEqual(cabPaymasterAddress, cabPaymasterAddressV2)) { return supportedTokensV2 } return supportedTokensV2_1 } export const supportedTokensV1: { [x: string]: { [x: number]: { token: Address vault: Address } } } = { USDC: { 10: { token: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", vault: "0x292730f659df412db94cf253945d3175399e6856" }, 137: { token: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", vault: "0xb62a615e3d8ee90b541233afb2006934706ffffe" }, 8453: { token: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", vault: "0x0d69ab235f20678f4c660c9b7de1979334c18bc1" }, 42161: { token: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", vault: "0x7becca20a39de7a95065ebf9b03c10964a1bfbfb" }, 34443: { token: "0xd988097fb8612cc24eec14542bc03424c656005f", vault: "0x94e8136353967a39659498d60b11970efcc27881" } }, USDT: { 204: { token: "0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3", vault: "0x3c623999d555e0392a43ddb7d1c9e4409a81720e" } }, "6TEST": { 80002: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" }, 11155420: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" }, 84532: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" }, 421614: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" }, 11155111: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" }, 720380884: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0x8652d7cf55e8cbc976fe53584366c6989c8ae0e5" } } } export const supportedTokensV2: { [x: string]: { [x: number]: { token: Address vault: Address } } } = { USDC: { 10: { token: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", vault: "0xf8cb9d4261f79c0e08eedf57637a5b92fcaade40" }, 56: { token: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", vault: "0xbe7fe3d3f293261ae3fcd128d57a77729496b3b7" }, 137: { token: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", vault: "0xd829854f9e9259b2a033356402f2ad314db35825" }, 8453: { token: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", vault: "0x35b459ece8281bbd2523ca9275749c6cf86c4652" }, 42161: { token: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", vault: "0xc755dad4b4b712eaee64f81ab68066122b0bca49" } }, "6TEST": { 11155420: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xaf9bec58bb2c173fef7d9ade9bbc3e179f3e8993" }, 421614: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xaf9bec58bb2c173fef7d9ade9bbc3e179f3e8993" }, 11155111: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xaf9bec58bb2c173fef7d9ade9bbc3e179f3e8993" } } } export const supportedTokensV2_1: { [x: string]: { [x: number]: { token: Address vault: Address } } } = { USDC: { 10: { token: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", vault: "0x6e937a29188080b451bdaa60750c5399b8ad22ee" }, 56: { token: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", vault: "0xd968d9c9d25a2880e3f9b6b635afbada11906057" }, 137: { token: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359", vault: "0x8c3f6120c78756ee8ad576449eed2cb6fe1d2865" }, 8453: { token: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", vault: "0xc8b901eef2621210ec36096ed676d3846230d53d" }, 42161: { token: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", vault: "0x47f94d8f273d14a418c99995693c79c53b26de70" } }, USDT: { [optimism.id]: { token: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", vault: "0x98e8c4ddce0035ebb13dcdf5edc324acb2717217" }, [bsc.id]: { token: "0x55d398326f99059fF775485246999027B3197955", vault: "0x79f2d5daa48f853d6b88a6709329ff0d6fbf6fcc" }, [polygon.id]: { token: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", vault: "0x89b4b767b568fae593c34e32d87869243802b680" }, [arbitrum.id]: { token: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", vault: "0x90b5d70eb1255720f747479f13e64c4e4d16d282" } }, "6TEST": { 11155420: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xe9ec54cc62fa5169207205e64cfcf55e095eb2a9" }, 421614: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xe9ec54cc62fa5169207205e64cfcf55e095eb2a9" }, 11155111: { token: "0x3870419ba2bbf0127060bcb37f69a1b1c090992b", vault: "0xe9ec54cc62fa5169207205e64cfcf55e095eb2a9" } } } export const supportedSwapTokens: { [x: number]: { [x: string]: Address } } = { [arbitrum.id]: { USDC: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", WETH: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", WBTC: "0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f", USDT: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", DAI: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" }, [base.id]: { USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", WETH: "0x4200000000000000000000000000000000000006", WBTC: "0x0555E30da8f98308EdB960aa94C0Db47230d2B9c", USDT: "0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2", DAI: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb" }, [polygon.id]: { USDC: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", WETH: "0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619", WBTC: "0x1BFD67037B42Cf73acF2047067bd4F2C47D9BfD6", USDT: "0xc2132D05D31c914a87C6611C10748AEb04B58e8F", DAI: "0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063" }, [optimism.id]: { USDC: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", WETH: "0x4200000000000000000000000000000000000006", WBTC: "0x68f180fcCe6836688e9084f035309E29Bf0A2095", USDT: "0x94b008aA00579c1307B0EF2c499aD98a8ce58e58", DAI: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" } }