@sodax/wallet-sdk-react 2.0.0-rc.3 → 2.0.0-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/dist/{XConnector-B9YQTVJ4.d.ts → XConnector-12q0OVe5.d.ts} +1 -1
- package/dist/{chunk-NY7U7OJW.mjs → chunk-7V7O3Q7Y.mjs} +0 -2
- package/dist/{chunk-BXJLBR4G.mjs → chunk-C6M34IVL.mjs} +2 -4
- package/dist/{chunk-XZ7CHO2S.mjs → chunk-FSOGMSJH.mjs} +2 -4
- package/dist/{chunk-X2MHIWXO.mjs → chunk-IFXZQW4C.mjs} +0 -2
- package/dist/{chunk-7ULB6DW4.mjs → chunk-JQ4H4GJ5.mjs} +3 -5
- package/dist/{chunk-N5A2TMF6.mjs → chunk-LKSSME2J.mjs} +2 -4
- package/dist/{chunk-BKJB527E.mjs → chunk-MWWVB7TD.mjs} +2 -4
- package/dist/{chunk-MXZVF5HR.mjs → chunk-NAKCAL2M.mjs} +0 -2
- package/dist/{chunk-PJLEJVAU.mjs → chunk-OPYSVPRW.mjs} +10 -6
- package/dist/chunk-QMXBY3UI.mjs +1 -0
- package/dist/{chunk-MAQ47Q52.mjs → chunk-TACW7Z4D.mjs} +0 -2
- package/dist/{chunk-PLCA4ZDJ.mjs → chunk-VCESC6QT.mjs} +54 -30
- package/dist/{chunk-2BOUGCJ7.mjs → chunk-WPZOLGVB.mjs} +4 -6
- package/dist/{chunk-66BAUK56.mjs → chunk-X7BHR7WS.mjs} +4 -6
- package/dist/{chunk-E5IAZ7E6.mjs → chunk-Z5GXDHGL.mjs} +11 -7
- package/dist/{config-OlnzyEUE.d.ts → config-DEsqgrG1.d.ts} +10 -5
- package/dist/index.d.ts +6 -6
- package/dist/index.mjs +20 -31
- package/dist/xchains/bitcoin/index.d.ts +1 -1
- package/dist/xchains/bitcoin/index.mjs +14 -16
- package/dist/xchains/evm/index.d.ts +3 -3
- package/dist/xchains/evm/index.mjs +3 -5
- package/dist/xchains/icon/index.d.ts +1 -1
- package/dist/xchains/icon/index.mjs +5 -7
- package/dist/xchains/injective/index.d.ts +2 -2
- package/dist/xchains/injective/index.mjs +3 -5
- package/dist/xchains/near/index.d.ts +1 -1
- package/dist/xchains/near/index.mjs +4 -6
- package/dist/xchains/solana/index.d.ts +1 -1
- package/dist/xchains/solana/index.mjs +5 -7
- package/dist/xchains/stacks/index.d.ts +10 -4
- package/dist/xchains/stacks/index.mjs +3 -5
- package/dist/xchains/stellar/index.d.ts +1 -1
- package/dist/xchains/stellar/index.mjs +4 -6
- package/dist/xchains/sui/index.d.ts +1 -1
- package/dist/xchains/sui/index.mjs +5 -7
- package/docs/ADDING_A_NEW_CHAIN.md +1 -1
- package/docs/SUB_PATH_EXPORTS.md +14 -42
- package/package.json +35 -28
- package/ai-exported/AGENTS.md +0 -122
- package/ai-exported/integration/README.md +0 -102
- package/ai-exported/integration/ai-rules.md +0 -136
- package/ai-exported/integration/architecture.md +0 -181
- package/ai-exported/integration/examples/01-minimal-evm.tsx +0 -75
- package/ai-exported/integration/examples/02-multi-chain-modal.tsx +0 -169
- package/ai-exported/integration/examples/03-nextjs-app-router.tsx +0 -99
- package/ai-exported/integration/examples/04-walletconnect-setup.tsx +0 -89
- package/ai-exported/integration/examples/README.md +0 -29
- package/ai-exported/integration/recipes/batch-operations.md +0 -223
- package/ai-exported/integration/recipes/bridge-to-sdk.md +0 -164
- package/ai-exported/integration/recipes/chain-detection.md +0 -254
- package/ai-exported/integration/recipes/connect-button.md +0 -156
- package/ai-exported/integration/recipes/multi-chain-modal.md +0 -199
- package/ai-exported/integration/recipes/setup.md +0 -160
- package/ai-exported/integration/recipes/sign-message.md +0 -137
- package/ai-exported/integration/recipes/sub-path-imports.md +0 -95
- package/ai-exported/integration/recipes/switch-chain.md +0 -141
- package/ai-exported/integration/recipes/walletconnect-setup.md +0 -139
- package/ai-exported/integration/reference/api-surface.md +0 -175
- package/ai-exported/integration/reference/chain-support.md +0 -78
- package/ai-exported/integration/reference/connectors.md +0 -74
- package/ai-exported/integration/reference/hooks.md +0 -204
- package/ai-exported/integration/reference/wallet-brands.md +0 -106
- package/ai-exported/migration/README.md +0 -49
- package/ai-exported/migration/ai-rules.md +0 -144
- package/ai-exported/migration/breaking-changes.md +0 -305
- package/ai-exported/migration/checklist.md +0 -159
- package/ai-exported/migration/recipes/connect-button.md +0 -166
- package/ai-exported/migration/recipes/multi-chain-modal.md +0 -244
- package/ai-exported/migration/recipes/ssr-setup.md +0 -164
- package/ai-exported/migration/recipes/walletconnect-migration.md +0 -168
- package/ai-exported/migration/reference/components.md +0 -73
- package/ai-exported/migration/reference/config.md +0 -325
- package/ai-exported/migration/reference/hooks.md +0 -323
- package/ai-exported/migration/reference/imports.md +0 -157
- package/dist/chunk-2BOUGCJ7.mjs.map +0 -1
- package/dist/chunk-66BAUK56.mjs.map +0 -1
- package/dist/chunk-7ULB6DW4.mjs.map +0 -1
- package/dist/chunk-BKJB527E.mjs.map +0 -1
- package/dist/chunk-BXJLBR4G.mjs.map +0 -1
- package/dist/chunk-E5IAZ7E6.mjs.map +0 -1
- package/dist/chunk-MAQ47Q52.mjs.map +0 -1
- package/dist/chunk-MXZVF5HR.mjs.map +0 -1
- package/dist/chunk-N5A2TMF6.mjs.map +0 -1
- package/dist/chunk-NY7U7OJW.mjs.map +0 -1
- package/dist/chunk-PJLEJVAU.mjs.map +0 -1
- package/dist/chunk-PLCA4ZDJ.mjs.map +0 -1
- package/dist/chunk-TZMKDXFA.mjs +0 -3
- package/dist/chunk-TZMKDXFA.mjs.map +0 -1
- package/dist/chunk-X2MHIWXO.mjs.map +0 -1
- package/dist/chunk-XZ7CHO2S.mjs.map +0 -1
- package/dist/index.cjs +0 -3337
- package/dist/index.cjs.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/xchains/bitcoin/index.cjs +0 -1927
- package/dist/xchains/bitcoin/index.cjs.map +0 -1
- package/dist/xchains/bitcoin/index.mjs.map +0 -1
- package/dist/xchains/evm/index.cjs +0 -316
- package/dist/xchains/evm/index.cjs.map +0 -1
- package/dist/xchains/evm/index.mjs.map +0 -1
- package/dist/xchains/icon/index.cjs +0 -311
- package/dist/xchains/icon/index.cjs.map +0 -1
- package/dist/xchains/icon/index.mjs.map +0 -1
- package/dist/xchains/injective/index.cjs +0 -223
- package/dist/xchains/injective/index.cjs.map +0 -1
- package/dist/xchains/injective/index.mjs.map +0 -1
- package/dist/xchains/near/index.cjs +0 -190
- package/dist/xchains/near/index.cjs.map +0 -1
- package/dist/xchains/near/index.mjs.map +0 -1
- package/dist/xchains/solana/index.cjs +0 -186
- package/dist/xchains/solana/index.cjs.map +0 -1
- package/dist/xchains/solana/index.mjs.map +0 -1
- package/dist/xchains/stacks/index.cjs +0 -240
- package/dist/xchains/stacks/index.cjs.map +0 -1
- package/dist/xchains/stacks/index.mjs.map +0 -1
- package/dist/xchains/stellar/index.cjs +0 -322
- package/dist/xchains/stellar/index.cjs.map +0 -1
- package/dist/xchains/stellar/index.mjs.map +0 -1
- package/dist/xchains/sui/index.cjs +0 -248
- package/dist/xchains/sui/index.cjs.map +0 -1
- package/dist/xchains/sui/index.mjs.map +0 -1
- package/skills/SKILLS.md +0 -84
- package/skills/bridge-to-sdk.md +0 -148
- package/skills/connect-button.md +0 -116
- package/skills/evm-only-walletconnect.md +0 -111
- package/skills/multi-chain-modal.md +0 -178
- package/skills/setup.md +0 -107
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xchains/evm/EvmXService.ts","../src/xchains/evm/EvmXConnector.ts"],"names":["address"],"mappings":"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","file":"chunk-E5IAZ7E6.mjs","sourcesContent":["import { XService } from '@/core/XService.js';\nimport { ChainKeys, type XToken } from '@sodax/types';\nimport type { EvmTypeConfig } from '@/types/config.js';\nimport { getRpcUrl, getWagmiChainId, isNativeToken } from '@/utils/index.js';\n\nimport { type Address, type Chain, defineChain, erc20Abi } from 'viem';\nimport { getPublicClient } from 'wagmi/actions';\nimport { type Config, type CreateConnectorFn, createConfig, http, createStorage, cookieStorage } from 'wagmi';\nimport {\n mainnet,\n avalanche,\n base,\n optimism,\n polygon,\n arbitrum,\n bsc,\n sonic,\n lightlinkPhoenix,\n redbellyMainnet,\n kaia,\n} from 'wagmi/chains';\ntype WagmiOptions = {\n reconnectOnMount?: boolean;\n ssr?: boolean;\n};\n\n// HyperEVM chain is not supported by viem, so we need to define it manually\nexport const hyper = /*#__PURE__*/ defineChain({\n id: 999,\n name: 'HyperEVM',\n nativeCurrency: {\n decimals: 18,\n name: 'HYPE',\n symbol: 'HYPE',\n },\n rpcUrls: {\n default: { http: ['https://rpc.hyperliquid.xyz/evm'] },\n },\n blockExplorers: {\n default: {\n name: 'HyperEVMScan',\n url: 'https://hyperevmscan.io/',\n },\n },\n contracts: {\n multicall3: {\n address: '0xcA11bde05977b3631167028862bE2a173976CA11',\n blockCreated: 13051,\n },\n },\n});\n\nexport const createWagmiConfig = (\n evmChains: EvmTypeConfig['chains'],\n options?: WagmiOptions & { connectors?: CreateConnectorFn[] },\n): Config => {\n return createConfig({\n chains: [\n mainnet,\n avalanche,\n arbitrum,\n base,\n bsc,\n sonic,\n optimism,\n polygon,\n hyper,\n lightlinkPhoenix,\n kaia,\n redbellyMainnet,\n ],\n connectors: options?.connectors ?? [],\n ssr: options?.ssr,\n transports: {\n [mainnet.id]: http(getRpcUrl(evmChains?.[ChainKeys.ETHEREUM_MAINNET])),\n [avalanche.id]: http(getRpcUrl(evmChains?.[ChainKeys.AVALANCHE_MAINNET])),\n [arbitrum.id]: http(getRpcUrl(evmChains?.[ChainKeys.ARBITRUM_MAINNET])),\n [base.id]: http(getRpcUrl(evmChains?.[ChainKeys.BASE_MAINNET])),\n [bsc.id]: http(getRpcUrl(evmChains?.[ChainKeys.BSC_MAINNET])),\n [sonic.id]: http(getRpcUrl(evmChains?.[ChainKeys.SONIC_MAINNET])),\n [optimism.id]: http(getRpcUrl(evmChains?.[ChainKeys.OPTIMISM_MAINNET])),\n [polygon.id]: http(getRpcUrl(evmChains?.[ChainKeys.POLYGON_MAINNET])),\n [hyper.id]: http(getRpcUrl(evmChains?.[ChainKeys.HYPEREVM_MAINNET])),\n [lightlinkPhoenix.id]: http(getRpcUrl(evmChains?.[ChainKeys.LIGHTLINK_MAINNET])),\n [redbellyMainnet.id]: http(getRpcUrl(evmChains?.[ChainKeys.REDBELLY_MAINNET])),\n [kaia.id]: http(getRpcUrl(evmChains?.[ChainKeys.KAIA_MAINNET])),\n },\n storage: createStorage({\n storage: cookieStorage,\n key: 'sodax',\n }),\n });\n};\n\n/**\n * Service class for handling EVM chain interactions.\n * Implements singleton pattern and provides methods for wallet/chain operations.\n */\n\nexport class EvmXService extends XService {\n private static instance: EvmXService;\n public wagmiConfig: Config | undefined;\n\n private constructor() {\n super('EVM');\n }\n\n public static getInstance(): EvmXService {\n if (!EvmXService.instance) {\n EvmXService.instance = new EvmXService();\n }\n return EvmXService.instance;\n }\n\n // get erc20 token balance in a chain (evm chain only)\n async _getTokenBalance(address: string | undefined, chainId: number, tokenAddress: string): Promise<bigint> {\n const publicClient = getPublicClient(this.wagmiConfig as Config, { chainId: chainId });\n if (!publicClient) throw new Error('Public client not found');\n const balance = await publicClient.readContract({\n abi: erc20Abi,\n address: tokenAddress as `0x${string}`,\n functionName: 'balanceOf',\n args: [address as `0x${string}`],\n });\n return balance || 0n;\n }\n\n //get native balance of the chain (evm chain only)\n async _getChainBalance(address: string | undefined, chainId: number) {\n const balance = await getPublicClient(this.wagmiConfig as Config, { chainId: chainId })?.getBalance({\n address: address as Address,\n });\n return balance || 0n;\n }\n\n override async getBalance(address: string | undefined, xToken: XToken): Promise<bigint> {\n if (!address) return 0n;\n if (!this.wagmiConfig) return 0n;\n\n const chainId = getWagmiChainId(xToken.chainKey);\n\n if (isNativeToken(xToken)) {\n return this._getChainBalance(address, chainId);\n }\n\n throw new Error(`Unsupported token: ${xToken.symbol}`);\n }\n\n override async getBalances(address: string | undefined, xTokens: XToken[]) {\n if (!address) return {};\n if (!this.wagmiConfig) return {};\n\n const nativeTokenBalancePromises = xTokens\n .filter(xToken => isNativeToken(xToken))\n .map(async xToken => {\n const balance = await this.getBalance(address, xToken);\n return { symbol: xToken.symbol, address: xToken.address, balance };\n });\n\n const nativeTokenBalances = await Promise.all(nativeTokenBalancePromises);\n const tokenMap: Record<string, bigint> = nativeTokenBalances.reduce<Record<string, bigint>>(\n (map, { address, balance }) => {\n if (balance) map[address] = balance;\n return map;\n },\n {},\n );\n\n const nonNativeXTokens = xTokens.filter(xToken => !isNativeToken(xToken));\n const firstToken = xTokens[0];\n if (!firstToken) return tokenMap;\n const chainKey = firstToken.chainKey;\n const viemChain: Chain = this.wagmiConfig.chains.find(chain => chain.id === getWagmiChainId(chainKey)) as Chain;\n const chainId = getWagmiChainId(chainKey);\n\n const publicClient = getPublicClient(this.wagmiConfig, { chainId: chainId });\n if (!publicClient) throw new Error('Public client not found');\n\n if (viemChain?.contracts?.multicall3) {\n //multicall supports\n const result = await publicClient.multicall({\n contracts: nonNativeXTokens.map(token => ({\n abi: erc20Abi,\n address: token.address as `0x${string}`,\n functionName: 'balanceOf',\n args: [address],\n })),\n });\n\n return nonNativeXTokens.reduce((acc, token, index) => {\n const resultValue = result?.[index]?.result;\n acc[token.address] = resultValue !== undefined && resultValue !== null ? BigInt(resultValue) : 0n;\n return acc;\n }, tokenMap);\n }\n\n const nonNativeTokenBalances: bigint[] = await Promise.all(\n nonNativeXTokens.map(token => this._getTokenBalance(address, chainId, token.address)),\n );\n\n return nonNativeXTokens.reduce((acc, token, idx) => {\n acc[token.address] = nonNativeTokenBalances[idx] ?? 0n;\n return acc;\n }, tokenMap);\n }\n}\n","import { XConnector } from '@/core/XConnector.js';\nimport type { XAccount } from '@/types/index.js';\nimport type { Connector } from 'wagmi';\n\nconst WALLETCONNECT_ICON = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath fill='%233B99FC' d='M9.58 11.58c3.55-3.47 9.29-3.47 12.84 0l.43.42a.44.44 0 0 1 0 .63l-1.46 1.43a.23.23 0 0 1-.32 0l-.59-.57a6.72 6.72 0 0 0-9.36 0l-.63.61a.23.23 0 0 1-.32 0L8.71 12.7a.44.44 0 0 1 0-.63l.87-.5Zm15.87 2.95 1.3 1.28a.44.44 0 0 1 0 .63l-5.87 5.74a.46.46 0 0 1-.64 0l-4.17-4.08a.11.11 0 0 0-.16 0l-4.17 4.08a.46.46 0 0 1-.64 0l-5.87-5.74a.44.44 0 0 1 0-.63l1.3-1.28a.46.46 0 0 1 .64 0l4.17 4.08a.11.11 0 0 0 .16 0l4.17-4.08a.46.46 0 0 1 .64 0l4.17 4.08a.11.11 0 0 0 .16 0l4.17-4.08a.46.46 0 0 1 .64 0Z'/%3E%3C/svg%3E\";\n\nexport class EvmXConnector extends XConnector {\n connector: Connector;\n\n constructor(connector: Connector) {\n super('EVM', connector.name, connector.id);\n this.connector = connector;\n }\n\n async connect(): Promise<XAccount | undefined> {\n return;\n }\n\n async disconnect(): Promise<void> {\n return;\n }\n\n public override get id(): string {\n return this.connector.id;\n }\n public override get icon(): string | undefined {\n if (!this.connector.icon && this.connector.type === 'walletConnect') {\n return WALLETCONNECT_ICON;\n }\n return this.connector.icon;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/guards.ts"],"names":[],"mappings":";AAcO,SAAS,SAAS,KAAA,EAAwC;AAC/D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AAGO,SAAS,iBAAA,CACd,OACA,GAAA,EAC8C;AAC9C,EAAA,OAAO,SAAS,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,GAAG,CAAA,KAAM,QAAA;AAClD;AAGO,SAAS,yBAAA,CACd,OACA,GAAA,EACuD;AACvD,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,KAAM,KAAA,CAAM,GAAG,MAAM,MAAA,IAAa,OAAO,KAAA,CAAM,GAAG,CAAA,KAAM,QAAA,CAAA;AAC/E;AAGO,SAAS,kBAAA,CACd,OACA,GAAA,EAC+C;AAC/C,EAAA,OAAO,SAAS,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,GAAG,CAAA,KAAM,SAAA;AAClD;AAGO,SAAS,mBAAA,CACd,OACA,GAAA,EACuE;AACvE,EAAA,OAAO,SAAS,KAAK,CAAA,IAAK,OAAO,KAAA,CAAM,GAAG,CAAA,KAAM,UAAA;AAClD;AAMO,SAAS,MAAA,CAAO,WAAoB,OAAA,EAAoC;AAC7E,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,MAAM,OAAO,CAAA;AAAA,EACzB;AACF;AAMO,SAAS,sBAAA,CAAuB,MAAA,EAAgB,MAAA,EAAiB,MAAA,EAAiB,OAAA,EAAwB;AAC/G,EAAA,MAAM,QAAA,GACJ,QAAA,CAAS,MAAM,CAAA,IACf,oBAAoB,MAAA,EAAQ,yBAAyB,CAAA,IACrD,mBAAA,CAAoB,MAAA,EAAQ,4BAA4B,CAAA,IACxD,mBAAA,CAAoB,QAAQ,UAAU,CAAA;AACxC,EAAA,MAAA,CAAO,QAAA,EAAU,CAAA,CAAA,EAAI,MAAM,CAAA,0BAAA,CAA4B,CAAA;AAEvD,EAAA,MAAM,WAAW,QAAA,CAAS,MAAM,CAAA,IAAK,iBAAA,CAAkB,QAAQ,MAAM,CAAA;AACrE,EAAA,MAAA,CAAO,QAAA,EAAU,CAAA,CAAA,EAAI,MAAM,CAAA,0BAAA,CAA4B,CAAA;AAEvD,EAAA,MAAM,YAAY,QAAA,CAAS,OAAO,CAAA,IAAK,iBAAA,CAAkB,SAAS,SAAS,CAAA;AAC3E,EAAA,MAAA,CAAO,SAAA,EAAW,CAAA,CAAA,EAAI,MAAM,CAAA,2BAAA,CAA6B,CAAA;AAC3D","file":"chunk-MAQ47Q52.mjs","sourcesContent":["// packages/wallet-sdk-react/src/shared/guards.ts\n\n/**\n * Tiny runtime type guards used to safely narrow `unknown` values.\n *\n * Why this exists:\n * - In wallets land, many values come from outside TypeScript (window injections, 3rd-party SDKs, serialized state).\n * - Writing `as SomeType` skips checks and can crash later in confusing places.\n * - Guards + `assert(...)` let us fail fast with a clear error message at the boundary.\n */\n\nexport type UnknownRecord = Record<string, unknown>;\n\n/** True if value is a non-null object (Record-like). */\nexport function isRecord(value: unknown): value is UnknownRecord {\n return typeof value === 'object' && value !== null;\n}\n\n/** True if the object has a string property at `key`. */\nexport function hasStringProperty<Key extends string>(\n value: unknown,\n key: Key,\n): value is UnknownRecord & Record<Key, string> {\n return isRecord(value) && typeof value[key] === 'string';\n}\n\n/** True if the object has an optional string property at `key`. */\nexport function hasOptionalStringProperty<Key extends string>(\n value: unknown,\n key: Key,\n): value is UnknownRecord & Partial<Record<Key, string>> {\n return isRecord(value) && (value[key] === undefined || typeof value[key] === 'string');\n}\n\n/** True if the object has a boolean property at `key`. */\nexport function hasBooleanProperty<Key extends string>(\n value: unknown,\n key: Key,\n): value is UnknownRecord & Record<Key, boolean> {\n return isRecord(value) && typeof value[key] === 'boolean';\n}\n\n/** True if the object has a function property at `key`. */\nexport function hasFunctionProperty<Key extends string>(\n value: unknown,\n key: Key,\n): value is UnknownRecord & Record<Key, (...args: unknown[]) => unknown> {\n return isRecord(value) && typeof value[key] === 'function';\n}\n\n/**\n * Throws if condition is false.\n * Use this after guards to stop execution early with an actionable error message.\n */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * Validates the runtime shape of Sui provider dependencies before passing them to wallet-sdk-core.\n * Used by both SuiHydrator (render path) and SuiXService.createWalletProvider (imperative path).\n */\nexport function assertSuiProviderShape(caller: string, client: unknown, wallet: unknown, account: unknown): void {\n const clientOk =\n isRecord(client) &&\n hasFunctionProperty(client, 'executeTransactionBlock') &&\n hasFunctionProperty(client, 'devInspectTransactionBlock') &&\n hasFunctionProperty(client, 'getCoins');\n assert(clientOk, `[${caller}] invalid Sui client shape`);\n\n const walletOk = isRecord(wallet) && hasStringProperty(wallet, 'name');\n assert(walletOk, `[${caller}] invalid Sui wallet shape`);\n\n const accountOk = isRecord(account) && hasStringProperty(account, 'address');\n assert(accountOk, `[${caller}] invalid Sui account shape`);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";AAUO,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AAGjC,IAAM,8BAAA,GAAiC;AACvC,IAAM,eAAA,GAAkB;AAGxB,IAAM,2BAAA,GAA8B;AACpC,IAAM,sBAAA,GAAyB;AAE/B,IAAM,kCAAA,GAAqC;AAG3C,IAAM,uBAAA,GAA0B;AAGhC,IAAM,+BAAA,GAAkC;AACxC,IAAM,+BAAA,GAAkC;AAGxC,IAAM,oBAAA,GAAuB;AAM7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,yFAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,qGAAA;AAAA,IACZ,IAAA,EACE;AAAA,GACJ;AAAA,EACA,GAAA,EAAK;AAAA,IACH,UAAA,EAAY,sFAAA;AAAA,IACZ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,UAAA,EAAY,uFAAA;AAAA,IACZ,IAAA,EAAM;AAAA;AAEV","file":"chunk-MXZVF5HR.mjs","sourcesContent":["/**\n * Default values used across providers and hydrators.\n * Centralized so consumers and tests have a single source of truth.\n */\n\n// ─── Stacks ─────────────────────────────────────────────────────────────────\nexport const STACKS_DEFAULT_RPC_URL = 'https://api.mainnet.hiro.so';\nexport const STACKS_DEFAULT_NETWORK = 'mainnet' as const;\n\n// ─── Sui ────────────────────────────────────────────────────────────────────\nexport const SUI_DEFAULT_NETWORK = 'mainnet' as const;\nexport const SUI_DEFAULT_AUTO_CONNECT = true;\n\n// ─── EVM ────────────────────────────────────────────────────────────────────\nexport const EVM_DEFAULT_RECONNECT_ON_MOUNT = false;\nexport const EVM_DEFAULT_SSR = true;\n\n// ─── Solana ─────────────────────────────────────────────────────────────────\nexport const SOLANA_DEFAULT_AUTO_CONNECT = true;\nexport const SOLANA_DEFAULT_RPC_URL = 'https://api.mainnet-beta.solana.com';\n/** Timeout for MetaMask Solana wallet connect — MetaMask's Solana adapter is slow to fire `connect`. */\nexport const SOLANA_METAMASK_CONNECT_TIMEOUT_MS = 30_000;\n\n// ─── Bitcoin ────────────────────────────────────────────────────────────────\nexport const BITCOIN_DEFAULT_RPC_URL = 'https://mempool.space/api';\n\n// ─── Stellar ────────────────────────────────────────────────────────────────\nexport const STELLAR_DEFAULT_HORIZON_RPC_URL = 'https://horizon.stellar.org';\nexport const STELLAR_DEFAULT_SOROBAN_RPC_URL = 'https://rpc.ankr.com/stellar_soroban';\n\n// ─── NEAR ───────────────────────────────────────────────────────────────────\nexport const NEAR_DEFAULT_RPC_URL = 'https://1rpc.io/near';\n\n// ─── Wallet metadata (install URLs + icons for extension-based wallets) ────\n// Keys are wallet-level, not per-connector: one OKX extension serves both\n// Bitcoin and EVM connectors, so metadata is shared.\n\nexport const WALLET_METADATA = {\n unisat: {\n installUrl: 'https://chromewebstore.google.com/detail/unisat-wallet/ppbibelpcjmhbdihakflkdcoccbgbkpo',\n icon: 'https://avatars.githubusercontent.com/u/125119198?s=200&v=4',\n },\n xverse: {\n installUrl: 'https://chromewebstore.google.com/detail/xverse-bitcoin-crypto-wal/idnnbdplmphpflfnlkomgpfbpcgelopg',\n icon:\n 'https://cdn.brandfetch.io/iddzGN5Rcv/w/400/h/400/theme/dark/icon.jpeg?c=1bxid64Mup7aczewSAYMX&t=1771902357797',\n },\n okx: {\n installUrl: 'https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge',\n icon: 'https://static.okx.com/cdn/assets/imgs/247/58E63FEA47A2B7D7.png',\n },\n hana: {\n installUrl: 'https://chromewebstore.google.com/detail/hana-wallet/jfdlamikmbghhapbgfoogdffldioobgl',\n icon: 'https://raw.githubusercontent.com/balancednetwork/icons/master/wallets/hana.svg',\n },\n} as const satisfies Record<string, { installUrl: string; icon: string }>;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xchains/solana/SolanaXConnector.ts"],"names":[],"mappings":";;;;AAOO,IAAM,gBAAA,GAAN,cAA+B,UAAA,CAAW;AAAA,EAC/C,MAAA;AAAA,EACA,YAAY,MAAA,EAAgB;AAC1B,IAAA,KAAA,CAAM,UAAU,MAAA,EAAQ,OAAA,CAAQ,IAAA,EAAM,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAC1D,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEA,WAAA,GAA8B;AAC5B,IAAA,OAAO,eAAe,WAAA,EAAY;AAAA,EACpC;AAAA,EAEA,MAAM,OAAA,GAAyC;AAC7C,IAAA;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,GAA4B;AAAA,EAAC;AAAA,EAEnC,IAAoB,IAAA,GAAe;AACjC,IAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,CAAQ,IAAA;AAAA,EAC9B;AAAA,EAEA,IAAoB,WAAA,GAAuB;AAUzC,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,EAAQ,UAAA;AAC3B,IAAA,OAAO,KAAA,KAAU,eAAe,KAAA,KAAU,UAAA;AAAA,EAC5C;AAAA,EAEA,IAAoB,UAAA,GAAiC;AACnD,IAAA,OAAO,IAAA,CAAK,QAAQ,OAAA,CAAQ,GAAA;AAAA,EAC9B;AACF","file":"chunk-N5A2TMF6.mjs","sourcesContent":["import type { XAccount } from '@/types/index.js';\n// Wallet is the type from useWallet().wallets — each entry has .adapter (name, icon, url) and .readyState.\nimport type { Wallet } from '@solana/wallet-adapter-react';\n\nimport { XConnector } from '@/core/index.js';\nimport { SolanaXService } from './SolanaXService.js';\n\nexport class SolanaXConnector extends XConnector {\n wallet: Wallet;\n constructor(wallet: Wallet) {\n super('SOLANA', wallet?.adapter.name, wallet?.adapter.name);\n this.wallet = wallet;\n }\n\n getXService(): SolanaXService {\n return SolanaXService.getInstance();\n }\n\n async connect(): Promise<XAccount | undefined> {\n return;\n }\n\n async disconnect(): Promise<void> {}\n\n public override get icon(): string {\n return this.wallet?.adapter.icon;\n }\n\n public override get isInstalled(): boolean {\n // WalletReadyState string values from @solana/wallet-adapter-base.\n // Imported as string literals to avoid adding -base as an explicit dep.\n // - 'Installed' — browser extension is injected (Phantom, Solflare, …).\n // - 'Loadable' — adapter can bootstrap the wallet on demand (e.g. mobile\n // deep-link adapters). The wallet isn't physically\n // present, but `connect()` will load it on first use,\n // so treat it as installed — otherwise the modal would\n // show a spurious \"Install\" CTA for a wallet the user\n // can actually connect to.\n const state = this.wallet?.readyState as string | undefined;\n return state === 'Installed' || state === 'Loadable';\n }\n\n public override get installUrl(): string | undefined {\n return this.wallet?.adapter.url;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/walletRpcConfig.ts","../src/utils/sortConnectors.ts","../src/utils/index.ts"],"names":[],"mappings":";;;AAUO,SAAS,iBACd,KAAA,EACoC;AACpC,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,MAAA;AAChD,EAAA,OAAQ,KAAA,CAAgD,QAAA;AAC1D;AAQO,SAAS,UAA8B,KAAA,EAAsD;AAClG,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,UAAU,OAAO,MAAA;AAChD,EAAA,OAAQ,KAAA,CAA8B,MAAA;AACxC;AAWO,SAAS,kBAAA,CACd,eACA,SAAA,EAC+B;AAC/B,EAAA,MAAM,GAAA,GAAM,wBAAwB,aAAa,CAAA;AACjD,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,SAAA,EAAW,OAAO,MAAA;AAC/B,EAAA,OAAO,SAAA,CAAU,GAAG,CAAA,EAAG,QAAA;AACzB;;;AC7BO,SAAS,cAAA,CACd,UAAA,EACA,OAAA,GAAiC,EAAC,EAC7B;AACL,EAAA,MAAM,EAAE,SAAA,GAAY,EAAC,EAAE,GAAI,OAAA;AAC3B,EAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAM,CAAC,EAAA,EAAI,CAAC,CAAC,CAAC,CAAA;AAEhE,EAAA,OAAO,CAAC,GAAG,UAAU,CAAA,CAClB,GAAA,CAAI,CAAC,SAAA,EAAW,aAAA,MAAmB,EAAE,SAAA,EAAW,eAAc,CAAE,CAAA,CAChE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AACd,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,CAAA,CAAE,UAAU,EAAE,CAAA;AAC/C,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,CAAI,CAAA,CAAE,UAAU,EAAE,CAAA;AAC/C,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,IAAI,KAAA,KAAU,QAAW,OAAO,CAAA;AAChC,MAAA,IAAI,KAAA,KAAU,QAAW,OAAO,EAAA;AAChC,MAAA,OAAO,KAAA,GAAQ,KAAA;AAAA,IACjB;AACA,IAAA,IAAI,CAAA,CAAE,SAAA,CAAU,WAAA,KAAgB,CAAA,CAAE,UAAU,WAAA,EAAa;AACvD,MAAA,OAAO,CAAA,CAAE,SAAA,CAAU,WAAA,GAAc,EAAA,GAAK,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,CAAA,CAAE,gBAAgB,CAAA,CAAE,aAAA;AAAA,EAC7B,CAAC,CAAA,CACA,GAAA,CAAI,CAAC,EAAE,SAAA,OAAgB,SAAS,CAAA;AACrC;AC5BO,IAAM,aAAA,GAAgB,CAAC,MAAA,KAA4B;AACxD,EAAA,MAAM,eAAA,GAAkB;AAAA,IACtB,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,KAAA;AAAA,IACA,8EAAA;AAAA,IACA,4CAAA;AAAA,IACA,kCAAA;AAAA;AAAA,IACA,0DAAA;AAAA;AAAA,IACA,2CAAA;AAAA;AAAA,IACA;AAAA;AAAA,GACF;AAEA,EAAA,OAAO,eAAA,CAAgB,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AAChD;AAEO,IAAM,eAAA,GAAkB,CAAC,QAAA,KAAoC;AAClE,EAAA,MAAM,OAAA,GAAU,aAAA,CAAc,QAAQ,CAAA,CAAE,OAAA;AACxC,EAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kEAAA,EAAqE,OAAO,OAAO,CAAA,CAAE,CAAA;AAAA,EACvG;AACA,EAAA,OAAO,OAAA;AACT","file":"chunk-NY7U7OJW.mjs","sourcesContent":["import { getEvmChainKeyByChainId, type ChainKey, type EvmChainKey } from '@sodax/types';\nimport type { EvmWalletDefaults } from '@sodax/wallet-sdk-core';\nimport type { ChainEntry, EvmChainEntry, WalletDefaultsByKey } from '@/types/config.js';\n\nexport type { ChainEntry, WalletDefaultsByKey };\n\n/**\n * Extract `defaults` from a chain entry. Returns undefined when the entry is\n * missing, or for Stacks's preset-name string variant (no `defaults` slot).\n */\nexport function getEntryDefaults<K extends ChainKey>(\n entry: ChainEntry<K> | undefined,\n): WalletDefaultsByKey<K> | undefined {\n if (!entry || typeof entry === 'string') return undefined;\n return (entry as { defaults?: WalletDefaultsByKey<K> }).defaults;\n}\n\n/**\n * Extract `rpcUrl` from a chain entry. Use for chains whose underlying factory\n * expects a bare URL string (EVM/Solana/Sui/Icon/Near). Returns undefined for\n * missing entries and for non-rpcUrl forms (Stacks preset name, object entries\n * lacking the field) — downstream falls back to a public default.\n */\nexport function getRpcUrl<K extends ChainKey>(entry: ChainEntry<K> | undefined): string | undefined {\n if (!entry || typeof entry === 'string') return undefined;\n return (entry as { rpcUrl?: string }).rpcUrl;\n}\n\n/**\n * Resolve EVM wallet provider defaults for the chain currently active on a\n * wagmi-supplied client. Used by `EvmHydrator` so the provider re-instantiates\n * with the right defaults when wagmi swaps clients on chain switch.\n *\n * `getEvmChainKeyByChainId` lives in `@sodax/types` (alongside `baseChainInfo`,\n * the data source); this helper composes it with the `SodaxWalletConfig.EVM.chains`\n * lookup, which is React-layer concern.\n */\nexport function resolveEvmDefaults(\n activeChainId: number | undefined,\n evmChains: Partial<Record<EvmChainKey, EvmChainEntry>> | undefined,\n): EvmWalletDefaults | undefined {\n const key = getEvmChainKeyByChainId(activeChainId);\n if (!key || !evmChains) return undefined;\n return evmChains[key]?.defaults;\n}\n","import type { IXConnector } from '@/types/interfaces.js';\n\nexport type SortConnectorsOptions = {\n /** Connector IDs to prioritize. Earlier entries win. */\n preferred?: readonly string[];\n};\n\n/**\n * Stable sort of connectors for display. Ranking (highest first):\n * 1. Appears in `preferred[]` — earlier entries rank higher\n * 2. `connector.isInstalled === true`\n * 3. Original order (stable)\n *\n * Pure function — does not subscribe or read window.\n */\nexport function sortConnectors<T extends IXConnector>(\n connectors: readonly T[],\n options: SortConnectorsOptions = {},\n): T[] {\n const { preferred = [] } = options;\n const preferredIndex = new Map(preferred.map((id, i) => [id, i]));\n\n return [...connectors]\n .map((connector, originalIndex) => ({ connector, originalIndex }))\n .sort((a, b) => {\n const aPref = preferredIndex.get(a.connector.id);\n const bPref = preferredIndex.get(b.connector.id);\n if (aPref !== bPref) {\n if (aPref === undefined) return 1;\n if (bPref === undefined) return -1;\n return aPref - bPref;\n }\n if (a.connector.isInstalled !== b.connector.isInstalled) {\n return a.connector.isInstalled ? -1 : 1;\n }\n return a.originalIndex - b.originalIndex;\n })\n .map(({ connector }) => connector);\n}\n","import { baseChainInfo, type SpokeChainKey, type XToken } from '@sodax/types';\n\nexport { sortConnectors, type SortConnectorsOptions } from './sortConnectors.js';\nexport {\n getEntryDefaults,\n getRpcUrl,\n resolveEvmDefaults,\n type WalletDefaultsByKey,\n} from './walletRpcConfig.js';\n\nexport const isNativeToken = (xToken: XToken): boolean => {\n const nativeAddresses = [\n 'cx0000000000000000000000000000000000000000',\n '0x0000000000000000000000000000000000000000',\n 'inj',\n '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI',\n 'hx0000000000000000000000000000000000000000',\n '11111111111111111111111111111111', // solana\n 'CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA', // stellar\n 'ST000000000000000000002AMW42H.nativetoken', // stacks\n '0:0', // bitcoin\n ];\n\n return nativeAddresses.includes(xToken.address);\n};\n\nexport const getWagmiChainId = (xChainId: SpokeChainKey): number => {\n const chainId = baseChainInfo[xChainId].chainId;\n if (typeof chainId !== 'number') {\n throw new Error(`[wallet-sdk-react] getWagmiChainId: expected numeric chainId, got ${typeof chainId}`);\n }\n return chainId;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xchains/stacks/StacksXService.ts","../src/xchains/stacks/StacksXConnector.ts","../src/xchains/stacks/constants.ts","../src/xchains/stacks/useStacksXConnectors.ts"],"names":[],"mappings":"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","file":"chunk-PJLEJVAU.mjs","sourcesContent":["import { XService } from '@/core/XService.js';\nimport type { XToken } from '@sodax/types';\nimport { fetchCallReadOnlyFunction, Cl, type UIntCV, type ResponseOkCV } from '@stacks/transactions';\nimport { networkFrom, type StacksNetwork, type StacksNetworkName } from '@stacks/network';\n\nexport class StacksXService extends XService {\n private static instance: StacksXService;\n\n public network: StacksNetwork;\n\n private constructor(network?: StacksNetworkName | StacksNetwork) {\n super('STACKS');\n this.network = networkFrom(network || 'mainnet');\n }\n\n public static getInstance(network?: StacksNetworkName | StacksNetwork): StacksXService {\n if (!StacksXService.instance) {\n StacksXService.instance = new StacksXService(network);\n } else if (network) {\n StacksXService.instance.network = networkFrom(network);\n }\n return StacksXService.instance;\n }\n\n override async getBalance(address: string | undefined, xToken: XToken): Promise<bigint> {\n if (!address) return 0n;\n\n // native STX balance\n if (xToken.symbol === 'STX') {\n const url = `${this.network.client.baseUrl}/extended/v1/address/${address}/balances`;\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Error fetching data: ${response.statusText}`);\n }\n const data = await response.json();\n return BigInt(data.stx.balance);\n } catch (error) {\n console.error('Error fetching STX balance:', error);\n return 0n;\n }\n }\n\n // SIP-010 fungible token balance via read-only contract call\n const parts = xToken.address.split('.');\n const contractAddress = parts[0] ?? '';\n const contractName = parts[1] ?? '';\n try {\n const result = (await fetchCallReadOnlyFunction({\n contractAddress,\n contractName,\n functionName: 'get-balance',\n functionArgs: [Cl.principal(address)],\n network: this.network,\n senderAddress: address,\n })) as ResponseOkCV<UIntCV>;\n return result.value.value as bigint;\n } catch (error) {\n console.error('Error fetching token balance:', error);\n return 0n;\n }\n }\n}\n","import type { XAccount } from '@/types/index.js';\nimport { XConnector } from '@/core/index.js';\nimport type { StacksProvider } from '@stacks/connect';\nimport { request, disconnect } from '@stacks/connect';\n\nexport interface StacksProviderConfig {\n /** The provider ID matching the window path, e.g. 'LeatherProvider' or 'XverseProviders.BitcoinProvider' */\n id: string;\n name: string;\n icon: string;\n installUrl?: string;\n}\n\n/** Resolves a provider from `window` by dot-separated ID, matching @stacks/connect-ui's getProviderFromId */\nfunction getProviderFromId(id: string): StacksProvider | undefined {\n return id.split('.').reduce<unknown>((acc, part) => (acc as Record<string, unknown>)?.[part], window) as\n | StacksProvider\n | undefined;\n}\n\nexport class StacksXConnector extends XConnector {\n private readonly config: StacksProviderConfig;\n\n constructor(config: StacksProviderConfig) {\n super('STACKS', config.name, config.id);\n this.config = config;\n }\n\n async connect(): Promise<XAccount | undefined> {\n const provider = this.getProvider();\n\n if (!provider) {\n // Throw instead of silently navigating to the install URL — callers\n // that bypass `useWalletModal.selectWallet`'s pre-check otherwise\n // see a tab open with no surfaced error. Consumers read\n // `connector.installUrl` to render the install CTA on the caught\n // error.\n throw new Error(`${this.config.name} is not installed. Install the extension and reload the page.`);\n }\n\n const response = await request({ provider }, 'stx_getAddresses');\n // Stacks SDK types don't include `purpose` on AddressEntry, but wallets return it at runtime\n const stxAddress = response.addresses.find(a => (a as unknown as { purpose?: string }).purpose === 'stacks');\n\n if (!stxAddress) {\n console.warn(\n `[StacksXConnector] ${this.config.name}: no address with purpose=\"stacks\" returned from stx_getAddresses`,\n response.addresses,\n );\n return undefined;\n }\n\n return {\n address: stxAddress.address,\n xChainType: this.xChainType,\n };\n }\n\n async disconnect(): Promise<void> {\n disconnect();\n }\n\n public override get icon(): string {\n return this.config.icon;\n }\n\n public override get isInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n return getProviderFromId(this.config.id) !== undefined;\n }\n\n public override get installUrl(): string | undefined {\n return this.config.installUrl;\n }\n\n public getProvider(): StacksProvider | undefined {\n return getProviderFromId(this.config.id);\n }\n}\n","import type { StacksProviderConfig } from './StacksXConnector.js';\n\n// Icons sourced from @stacks/connect DEFAULT_PROVIDERS\n// https://github.com/stx-labs/connect/blob/main/packages/connect/src/providers.ts\nconst LEATHER_ICON =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMjYuODM4NyIgZmlsbD0iIzEyMTAwRiIvPgo8cGF0aCBkPSJNNzQuOTE3MSA1Mi43MTE0QzgyLjQ3NjYgNTEuNTQwOCA5My40MDg3IDQzLjU4MDQgOTMuNDA4NyAzNy4zNzYxQzkzLjQwODcgMzUuNTAzMSA5MS44OTY4IDM0LjIxNTQgODkuNjg3MSAzNC4yMTU0Qzg1LjUwMDQgMzQuMjE1NCA3OC40MDYxIDQwLjUzNjggNzQuOTE3MSA1Mi43MTE0Wk0zOS45MTEgODMuNDk5MUMzMC4wMjU2IDgzLjQ5OTEgMjkuMjExNSA5My4zMzI0IDM5LjA5NjkgOTMuMzMyNEM0My41MTYzIDkzLjMzMjQgNDguODY2MSA5MS41NzY0IDUxLjY1NzMgODguNDE1N0M0Ny41ODY4IDg0LjkwMzggNDQuMjE0MSA4My40OTkxIDM5LjkxMSA4My40OTkxWk0xMDIuODI5IDc5LjI4NDhDMTAzLjQxIDk1Ljc5MDcgOTUuMDM2OSAxMDUuMDM5IDgwLjg0ODQgMTA1LjAzOUM3Mi40NzQ4IDEwNS4wMzkgNjguMjg4MSAxMDEuODc4IDU5LjMzMyA5Ni4wMjQ5QzU0LjY4MSAxMDEuMTc2IDQ1Ljg0MjMgMTA1LjAzOSAzOC41MTU0IDEwNS4wMzlDMTMuMjc4NSAxMDUuMDM5IDE0LjMyNTIgNzIuODQ2MyA0MC4wMjczIDcyLjg0NjNDNDUuMzc3MSA3Mi44NDYzIDQ5LjkxMjggNzQuMjUxMSA1NS43Mjc3IDc3Ljg4TDU5LjU2NTYgNjQuNDE3N0M0My43NDg5IDYwLjA4NjQgMzUuODQwNSA0Ny45MTE4IDQzLjYzMjYgMzAuNDY5M0g1Ni4xOTI5QzQ5LjIxNSA0Mi4wNTg2IDUzLjk4MzIgNTEuNjU3OCA2Mi44MjIgNTIuNzExNEM2Ny41OTAzIDM1LjczNzIgNzcuODI0NiAyMi41MDkgOTEuNDMxNiAyMi41MDlDOTkuMTA3NCAyMi41MDkgMTA1LjE1NSAyNy41NDI4IDEwNS4xNTUgMzYuNjczN0MxMDUuMTU1IDUxLjMwNjYgODYuMDgxOSA2My4yNDcxIDcxLjY2MDcgNjQuNDE3N0w2NS43Mjk1IDg1LjM3MjFDNzIuNDc0OCA5My4yMTUzIDkxLjE5OSAxMDAuODI0IDkxLjE5OSA3OS4yODQ4SDEwMi44MjlaIiBmaWxsPSIjRjVGMUVEIi8+Cjwvc3ZnPgo=';\n\nconst XVERSE_ICON =\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiMxNzE3MTciIGQ9Ik0wIDBoNjAwdjYwMEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTQ0MCA0MzUuNHYtNTFjMC0yLS44LTMuOS0yLjItNS4zTDIyMCAxNjIuMmE3LjYgNy42IDAgMCAwLTUuNC0yLjJoLTUxLjFjLTIuNSAwLTQuNiAyLTQuNiA0LjZ2NDcuM2MwIDIgLjggNCAyLjIgNS40bDc4LjIgNzcuOGE0LjYgNC42IDAgMCAxIDAgNi41bC03OSA3OC43Yy0xIC45LTEuNCAyLTEuNCAzLjJ2NTJjMCAyLjQgMiA0LjUgNC42IDQuNUgyNDljMi42IDAgNC42LTIgNC42LTQuNlY0MDVjMC0xLjIuNS0yLjQgMS40LTMuM2w0Mi40LTQyLjJhNC42IDQuNiAwIDAgMSA2LjQgMGw3OC43IDc4LjRhNy42IDcuNiAwIDAgMCA1LjQgMi4yaDQ3LjVjMi41IDAgNC42LTIgNC42LTQuNloiLz48cGF0aCBmaWxsPSIjRUU3QTMwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zMjUuNiAyMjcuMmg0Mi44YzIuNiAwIDQuNiAyLjEgNC42IDQuNnY0Mi42YzAgNCA1IDYuMSA4IDMuMmw1OC43LTU4LjVjLjgtLjggMS4zLTIgMS4zLTMuMnYtNTEuMmMwLTIuNi0yLTQuNi00LjYtNC42TDM4NCAxNjBjLTEuMiAwLTIuNC41LTMuMyAxLjNsLTU4LjQgNTguMWE0LjYgNC42IDAgMCAwIDMuMiA3LjhaIi8+PC9nPjwvc3ZnPg==';\n\nconst ASIGNA_ICON =\n 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMDEwMCIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Ik0xNS4xMSA1LjU1YTMgMyAwIDAgMC0xLjgyIDEuM2wtLjA1LjA4LS40My43Mi0uMDcuMTEtLjUuODUtLjA1LjA5LTEuMjkgMi4xOC0uMDQuMDctLjQ3LjgtLjA2LjEtLjQ2Ljc4LS4wNy4xMS0xLjYzIDIuNzYtLjA3LjExLS4zOC42Ni0uMDUuMDgtLjczIDEuMjQtLjM1LjYtLjQuNjctLjA1LjA5TDUuMSAyMC43bC0uMTEuMTgtLjE0LjIzLS4wNy4xMy0uMzMuNTUtLjA0LjA3di4wMWExLjI2IDEuMjYgMCAwIDAtLjE0LjQ3IDEuMzEgMS4zMSAwIDAgMCAxLjI0IDEuNGgxLjVsLjA1LS4wNi4wNC0uMDYuODctMS4yMS4wNS0uMDguNzctMS4wNy4wNS0uMDcuNC0uNTcuMDUtLjA2LjI0LS4zNGExLjUyIDEuNTIgMCAwIDEgMS4zOS0uNjIgMS41IDEuNSAwIDAgMSAuNjQuMiAxLjQ3IDEuNDcgMCAwIDEgLjczIDEuMjcgMS40NCAxLjQ0IDAgMCAxLS4yNy44NGwtLjYzLjg4LS4wNS4wNy0uMzIuNDUtLjA2LjA4LS4wOC4xMi0uMTIuMTYtLjA1LjA4aDIuMTNhMi4zMiAyLjMyIDAgMCAwIDEuNzctLjk2bDEuMTgtMS42My43Ny0xLjA4IDEuMy0xLjhhMS4yNCAxLjI0IDAgMCAxIC41NS0uNDNsLjA4LS4wM2ExLjMgMS4zIDAgMCAxIC4zLS4wNiAxLjI4IDEuMjggMCAwIDEgMS4xNS41NGwuMTEuMmExLjEzIDEuMTMgMCAwIDEgLjEuNDEgMS4xOSAxLjE5IDAgMCAxLS4yMy43N2wtLjAzLjA1LS41Ny44LS43Ljk4LS4yNy4zN2ExLjIyIDEuMjIgMCAwIDAtLjIuNSAxLjA1IDEuMDUgMCAwIDAtLjAyLjIzdi4wNmExLjE3IDEuMTcgMCAwIDAgLjE0LjQzbC4wMi4wNS4wNy4xYTEuNDQgMS40NCAwIDAgMCAuMS4xMWwuMDUuMDYuMDEuMDFhMS44IDEuOCAwIDAgMCAuMTQuMWMwIC4wMi4wMi4wMy4wNC4wM2ExIDEgMCAwIDAgLjA4LjA1bC4wNy4wNGExLjI1IDEuMjUgMCAwIDAgLjUuMWg2LjljLjEgMCAuMi0uMDEuMjktLjAzbC4wNi0uMDJhMS4yNyAxLjI3IDAgMCAwIC4yNy0uMS41Ny41NyAwIDAgMCAuMDctLjAzIDEuMjEgMS4yMSAwIDAgMCAuMjYtLjE5bC4wOC0uMDdhLjkyLjkyIDAgMCAwIC4xNS0uMTkgMS41NSAxLjU1IDAgMCAwIC4wOS0uMTdsLjAyLS4wNWExLjIyIDEuMjIgMCAwIDAgLjA4LS4yNnYtLjA0bC4wMi0uMDh2LS4wOGExLjMyIDEuMzIgMCAwIDAtLjItLjc0bC0xLjYtMi42NC0uMDYtLjEtLjItLjMyLS4zMy0uNTR2LS4wMWwtLjA1LS4wOC0xLjMtMi4xNS0uMDctLjEtLjA0LS4wNi0uOC0xLjMyLS4wNC0uMDctLjItLjM0LS4xLS4xNC0uMS0uMTYtLjUzLS45LS4xMy0uMi0uMDktLjE0LTIuMTctMy41Ny0uMDQtLjA3LS43Mi0xLjE5LS4wNS0uMDctLjQtLjY1YTIuNjUgMi42NSAwIDAgMC0uMy0uNCAyLjk2IDIuOTYgMCAwIDAtLjk3LS43NCAzLjA0IDMuMDQgMCAwIDAtMS4zLS4zYy0uMjUgMC0uNS4wNC0uNzQuMVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNMTkgMTYuM2E1LjQ1IDUuNDUgMCAwIDAtLjgzIDEuNTZsLS4wNC4xNWExLjM2IDEuMzYgMCAwIDEgLjI4LS4xNiAxLjI0IDEuMjQgMCAwIDEgLjM4LS4wOGguMWExLjI4IDEuMjggMCAwIDEgMS4wNS41NGMuMDQuMDYuMDguMTMuMS4yYTEuMjQgMS4yNCAwIDAgMSAuMDkuMjcgMS4xOSAxLjE5IDAgMCAxLS4yLjkxbC0uMDQuMDUtLjU3Ljc5LS43Ljk5LS4yNy4zN2ExLjIzIDEuMjMgMCAwIDAtLjIuNDIgMS4wNiAxLjA2IDAgMCAwLS4wMi4zMXYuMDZhMS4xNyAxLjE3IDAgMCAwIC4xNi40Ny45My45MyAwIDAgMCAuMDcuMSAxLjUgMS41IDAgMCAwIC4xLjEybC4wNS4wNmguMDFhMS45NCAxLjk0IDAgMCAwIC4wOS4wOCAxIDEgMCAwIDAgLjE3LjFsLjA3LjA0YTEuMjUgMS4yNSAwIDAgMCAuNS4xaDYuOWMuMSAwIC4yIDAgLjI4LS4wMmwuMDctLjAyYTEuMzIgMS4zMiAwIDAgMCAuMzQtLjEzbC4xNi0uMS4wMy0uMDNhMS4yOSAxLjI5IDAgMCAwIC4yLS4yIDIuNDMgMi40MyAwIDAgMCAuMTItLjE3Yy4wMy0uMDMuMDUtLjA4LjA3LS4xMmwuMDItLjA1YTEuMjEgMS4yMSAwIDAgMCAuMDktLjN2LS4wOGwuMDEtLjA5YTEuMzIgMS4zMiAwIDAgMC0uMi0uNzNsLTEuNi0yLjY0LS4wNi0uMS0uMi0uMzItLjMzLS41NHYtLjAybC0uMDUtLjA3LTEuMy0yLjE1LS4xMi0uMDctLjA3LS4wNGE0Ljk0IDQuOTQgMCAwIDAtMi40Ni0uNjdjLTEuMDMgMC0xLjc2LjU3LTIuMjYgMS4yWiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMi4yOSAyMS4wOGMwIC4yOS0uMDkuNTgtLjI3Ljg0bC0xLjMxIDEuODRIN2wyLjUyLTMuNTNhMS41NCAxLjU0IDAgMCAxIDIuMS0uMzZjLjQzLjI4LjY2Ljc0LjY2IDEuMloiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTEuMTYgMjEuMjVhLjU2LjU2IDAgMCAxLS41Ny41NS41Ni41NiAwIDAgMS0uNTctLjU2LjU2LjU2IDAgMCAxIC41Ny0uNTUuNTYuNTYgMCAwIDEgLjU3LjU2WiIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjE1LjIzIiB4Mj0iMTkuMyIgeTE9IjI1Ljc4IiB5Mj0iNi4xMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2NTIyRjQiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzlCNkJGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1ODVGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMjIuNTkiIHgyPSIyNC44IiB5MT0iMjQuNzEiIHkyPSIxNS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0MjFGOEIiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzcyMzBGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzk3NzNGRiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==';\n\nconst FORDEFI_ICON =\n 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbD0iIzEwMTExNCIgZD0iTTAgMGg0MnY0MkgweiIvPgogIDxwYXRoIGQ9Ik0xOS40NyAyNi44OUg1djMuNTdhNC41NyA0LjU3IDAgMCAwIDQuNTggNC41N2g1LjgzbDQuMDYtOC4xNFoiIGZpbGw9IiM3OTk0RkYiLz4KICA8cGF0aCBkPSJNNSAxNy40aDI3LjU4bC0zLjIgNi43OEg1VjE3LjRaIiBmaWxsPSIjNDg2REZGIi8+CiAgPHBhdGggZD0iTTE0LjY3IDdINXY3LjY4aDMzVjdoLTkuNjd2NS43NGgtMlY3aC05LjY3djUuNzRoLTEuOTlWN1oiIGZpbGw9IiM1Q0QxRkEiLz4KPC9zdmc+Cg==';\n\nexport const STACKS_PROVIDERS: StacksProviderConfig[] = [\n {\n id: 'LeatherProvider',\n name: 'Leather',\n icon: LEATHER_ICON,\n installUrl: 'https://chrome.google.com/webstore/detail/hiro-wallet/ldinpeekobnhjjdofggfgjlcehhmanlj',\n },\n {\n id: 'XverseProviders.BitcoinProvider',\n name: 'Xverse Wallet',\n icon: XVERSE_ICON,\n installUrl: 'https://chrome.google.com/webstore/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg',\n },\n {\n id: 'AsignaProvider',\n name: 'Asigna Multisig',\n icon: ASIGNA_ICON,\n installUrl: 'https://stx.asigna.io/',\n },\n {\n id: 'FordefiProviders.UtxoProvider',\n name: 'Fordefi',\n icon: FORDEFI_ICON,\n installUrl: 'https://chromewebstore.google.com/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle',\n },\n];\n","import { useMemo } from 'react';\nimport { StacksXConnector } from './StacksXConnector.js';\nimport { STACKS_PROVIDERS } from './constants.js';\n\nexport function useStacksXConnectors(): StacksXConnector[] {\n return useMemo(() => STACKS_PROVIDERS.map(config => new StacksXConnector(config)), []);\n}\n"]}
|