@aptos-labs/wallet-adapter-core 4.25.0 → 5.0.1

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.
Files changed (70) hide show
  1. package/README.md +10 -0
  2. package/dist/WalletCore.d.ts +71 -112
  3. package/dist/WalletCore.d.ts.map +1 -1
  4. package/dist/constants.d.ts +4 -14
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/error/index.d.ts +3 -0
  7. package/dist/error/index.d.ts.map +1 -1
  8. package/dist/index.d.ts +3 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +379 -859
  11. package/dist/index.js.map +1 -1
  12. package/dist/index.mjs +408 -894
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/{AIP62StandardWallets/registry.d.ts → registry.d.ts} +1 -1
  15. package/dist/registry.d.ts.map +1 -0
  16. package/dist/sdkWallets.d.ts +3 -0
  17. package/dist/sdkWallets.d.ts.map +1 -0
  18. package/dist/utils/helpers.d.ts +7 -7
  19. package/dist/utils/helpers.d.ts.map +1 -1
  20. package/dist/utils/index.d.ts +1 -1
  21. package/dist/utils/index.d.ts.map +1 -1
  22. package/dist/utils/localStorage.d.ts +1 -2
  23. package/dist/utils/localStorage.d.ts.map +1 -1
  24. package/dist/utils/types.d.ts +26 -0
  25. package/dist/utils/types.d.ts.map +1 -0
  26. package/dist/utils/walletSelector.d.ts +18 -19
  27. package/dist/utils/walletSelector.d.ts.map +1 -1
  28. package/dist/version.d.ts +1 -1
  29. package/dist/version.d.ts.map +1 -1
  30. package/package.json +4 -5
  31. package/src/WalletCore.ts +474 -686
  32. package/src/constants.ts +3 -13
  33. package/src/error/index.ts +4 -0
  34. package/src/index.ts +3 -3
  35. package/src/{AIP62StandardWallets/registry.ts → registry.ts} +19 -6
  36. package/src/{AIP62StandardWallets/sdkWallets.ts → sdkWallets.ts} +6 -6
  37. package/src/utils/helpers.ts +46 -32
  38. package/src/utils/index.ts +1 -1
  39. package/src/utils/localStorage.ts +1 -3
  40. package/src/{AIP62StandardWallets → utils}/types.ts +22 -3
  41. package/src/utils/walletSelector.ts +32 -26
  42. package/src/version.ts +1 -1
  43. package/dist/AIP62StandardWallets/WalletStandard.d.ts +0 -44
  44. package/dist/AIP62StandardWallets/WalletStandard.d.ts.map +0 -1
  45. package/dist/AIP62StandardWallets/index.d.ts +0 -3
  46. package/dist/AIP62StandardWallets/index.d.ts.map +0 -1
  47. package/dist/AIP62StandardWallets/registry.d.ts.map +0 -1
  48. package/dist/AIP62StandardWallets/sdkWallets.d.ts +0 -4
  49. package/dist/AIP62StandardWallets/sdkWallets.d.ts.map +0 -1
  50. package/dist/AIP62StandardWallets/types.d.ts +0 -12
  51. package/dist/AIP62StandardWallets/types.d.ts.map +0 -1
  52. package/dist/LegacyWalletPlugins/WalletCoreV1.d.ts +0 -50
  53. package/dist/LegacyWalletPlugins/WalletCoreV1.d.ts.map +0 -1
  54. package/dist/LegacyWalletPlugins/conversion.d.ts +0 -21
  55. package/dist/LegacyWalletPlugins/conversion.d.ts.map +0 -1
  56. package/dist/LegacyWalletPlugins/index.d.ts +0 -4
  57. package/dist/LegacyWalletPlugins/index.d.ts.map +0 -1
  58. package/dist/LegacyWalletPlugins/types.d.ts +0 -116
  59. package/dist/LegacyWalletPlugins/types.d.ts.map +0 -1
  60. package/dist/__tests__/WalletCore.test.d.ts +0 -2
  61. package/dist/__tests__/WalletCore.test.d.ts.map +0 -1
  62. package/dist/utils/scopePollingDetectionStrategy.d.ts +0 -2
  63. package/dist/utils/scopePollingDetectionStrategy.d.ts.map +0 -1
  64. package/src/AIP62StandardWallets/WalletStandard.ts +0 -242
  65. package/src/AIP62StandardWallets/index.ts +0 -2
  66. package/src/LegacyWalletPlugins/WalletCoreV1.ts +0 -258
  67. package/src/LegacyWalletPlugins/conversion.ts +0 -124
  68. package/src/LegacyWalletPlugins/index.ts +0 -3
  69. package/src/LegacyWalletPlugins/types.ts +0 -188
  70. package/src/utils/scopePollingDetectionStrategy.ts +0 -46
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts","../src/WalletCore.ts","../src/AIP62StandardWallets/sdkWallets.ts","../src/constants.ts","../src/error/index.ts","../src/LegacyWalletPlugins/WalletCoreV1.ts","../src/LegacyWalletPlugins/conversion.ts","../src/utils/helpers.ts","../src/utils/localStorage.ts","../src/utils/scopePollingDetectionStrategy.ts","../src/utils/walletSelector.ts","../src/LegacyWalletPlugins/types.ts","../src/AIP62StandardWallets/WalletStandard.ts","../src/ga/index.ts","../src/AIP62StandardWallets/registry.ts","../src/index.ts"],"sourcesContent":["export const WALLET_ADAPTER_CORE_VERSION = \"4.25.0\";\n","import { TxnBuilderTypes, Types, BCS } from \"aptos\";\nimport {\n Network,\n AnyRawTransaction,\n AccountAddress,\n AccountAuthenticator,\n AccountAuthenticatorEd25519,\n Ed25519PublicKey,\n InputGenerateTransactionOptions,\n Ed25519Signature,\n AptosConfig,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n Aptos,\n generateRawTransaction,\n SimpleTransaction,\n NetworkToChainId,\n Hex,\n} from \"@aptos-labs/ts-sdk\";\nimport EventEmitter from \"eventemitter3\";\nimport {\n AccountInfo as StandardAccountInfo,\n AptosChangeNetworkOutput,\n AptosWallet,\n getAptosWallets,\n NetworkInfo as StandardNetworkInfo,\n UserResponse,\n UserResponseStatus,\n isWalletWithRequiredFeatureSet,\n} from \"@aptos-labs/wallet-standard\";\n\nimport { getSDKWallets } from \"./AIP62StandardWallets/sdkWallets\";\nimport { ChainIdToAnsSupportedNetworkMap, WalletReadyState } from \"./constants\";\nimport {\n WalletAccountChangeError,\n WalletAccountError,\n WalletChangeNetworkError,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletGetNetworkError,\n WalletNetworkChangeError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n WalletNotSupportedMethod,\n WalletSignAndSubmitMessageError,\n WalletSignMessageAndVerifyError,\n WalletSignMessageError,\n WalletSignTransactionError,\n} from \"./error\";\nimport {\n AccountInfo,\n InputTransactionData,\n NetworkInfo,\n SignMessagePayload,\n SignMessageResponse,\n Wallet,\n WalletCoreEvents,\n WalletInfo,\n WalletName,\n WalletCoreV1,\n CompatibleTransactionOptions,\n convertNetwork,\n convertPayloadInputV1ToV2,\n generateTransactionPayloadFromV1Input,\n} from \"./LegacyWalletPlugins\";\nimport {\n fetchDevnetChainId,\n generalizedErrorMessage,\n getAptosConfig,\n handlePublishPackageTransaction,\n isAptosNetwork,\n isRedirectable,\n removeLocalStorage,\n scopePollingDetectionStrategy,\n setLocalStorage,\n} from \"./utils\";\nimport {\n AptosStandardWallet,\n WalletStandardCore,\n AptosStandardSupportedWallet,\n AvailableWallets,\n} from \"./AIP62StandardWallets\";\nimport { GA4 } from \"./ga\";\nimport { WALLET_ADAPTER_CORE_VERSION } from \"./version\";\nimport { aptosStandardSupportedWalletList } from \"./AIP62StandardWallets/registry\";\nimport type { AptosConnectWalletConfig } from \"@aptos-connect/wallet-adapter-plugin\";\n\nexport type IAptosWallet = AptosStandardWallet & Wallet;\n\n/**\n * Interface for dapp configuration\n *\n * @network The network the dapp is working with\n * @aptosApiKeys A map of Network<>Api Key generated with {@link https://developers.aptoslabs.com/docs/api-access}\n * @aptosConnect Config used to initialize the AptosConnect wallet provider\n * @mizuwallet Config used to initialize the Mizu wallet provider\n */\nexport interface DappConfig {\n network: Network;\n aptosApiKeys?: Partial<Record<Network, string>>;\n /** @deprecated */\n aptosApiKey?: string;\n /** @deprecated */\n aptosConnectDappId?: string;\n aptosConnect?: Omit<AptosConnectWalletConfig, \"network\">;\n mizuwallet?: {\n manifestURL: string;\n appId?: string;\n };\n}\n\n/** Any wallet that can be handled by `WalletCore`.\n * This includes both wallets from legacy wallet adapter plugins and compatible AIP-62 standard wallets.\n */\nexport type AnyAptosWallet = Wallet | AptosStandardSupportedWallet;\n\nexport class WalletCore extends EventEmitter<WalletCoreEvents> {\n // Private array to hold legacy wallet adapter plugins\n private _wallets: ReadonlyArray<Wallet> = [];\n\n // Private array that holds all the Wallets a dapp decided to opt-in to\n private _optInWallets: ReadonlyArray<AvailableWallets> = [];\n\n // Private array to hold compatible AIP-62 standard wallets\n private _standard_wallets: Array<AptosStandardWallet> = [];\n\n // Private array to hold all wallets (legacy wallet adapter plugins AND compatible AIP-62 standard wallets)\n // while providing support for legacy and new wallet standard\n private _all_wallets: Array<AnyAptosWallet> = [];\n\n // Current connected wallet\n private _wallet: Wallet | null = null;\n\n // Current connected account\n private _account: AccountInfo | null = null;\n\n // Current connected network\n private _network: NetworkInfo | null = null;\n\n // WalletCoreV1 property to interact with wallet adapter v1 (legacy wallet adapter plugins) functionality\n private readonly walletCoreV1: WalletCoreV1 = new WalletCoreV1();\n\n // WalletStandardCore property to interact with wallet adapter v2 (compatible AIP-62 standard wallets) functionality\n private readonly walletStandardCore: WalletStandardCore =\n new WalletStandardCore();\n\n // Indicates whether the dapp is currently connecting with a wallet\n private _connecting: boolean = false;\n\n // Indicates whether the dapp is connected with a wallet\n private _connected: boolean = false;\n\n // Google Analytics 4 module\n private readonly ga4: GA4 | null = null;\n\n // JSON configuration for AptosConnect\n private _dappConfig: DappConfig | undefined;\n\n // Local private variable to hold SDK wallets in the adapter\n private readonly _sdkWallets: AptosStandardWallet[];\n\n // Local flag to disable the adapter telemetry tool\n private _disableTelemetry: boolean | undefined = false;\n\n /**\n * Core functionality constructor.\n * For legacy wallet adapter v1 support we expect the dapp to pass in wallet plugins,\n * since AIP-62 standard support this is optional for dapps.\n *\n * @param plugins legacy wallet adapter v1 wallet plugins\n */\n constructor(\n plugins: ReadonlyArray<Wallet>,\n optInWallets: ReadonlyArray<AvailableWallets>,\n dappConfig?: DappConfig,\n disableTelemetry?: boolean,\n ) {\n super();\n\n this._wallets = plugins;\n this._optInWallets = optInWallets;\n this._dappConfig = dappConfig;\n this._disableTelemetry = disableTelemetry;\n this._sdkWallets = getSDKWallets(this._dappConfig);\n\n // If disableTelemetry set to false (by default), start GA4\n if (!this._disableTelemetry) {\n this.ga4 = new GA4();\n }\n\n // Strategy to detect AIP-62 standard compatible extension wallets\n this.fetchExtensionAIP62AptosWallets();\n // Strategy to detect AIP-62 standard compatible SDK wallets.\n // We separate the extension and sdk detection process so we dont refetch sdk wallets everytime a new\n // extension wallet is detected\n this.fetchSDKAIP62AptosWallets();\n // Strategy to detect legacy wallet adapter v1 wallet plugins\n this.scopePollingDetectionStrategy();\n // Append AIP-62 compatible wallets that are not detected on the user machine\n this.appendNotDetectedStandardSupportedWallets();\n }\n\n private scopePollingDetectionStrategy() {\n this._wallets?.forEach((wallet: Wallet) => {\n // Hot fix to manage Pontem wallet to not show duplications if user has the\n // new standard version installed. Pontem uses \"Pontem\" wallet name for previous versions and\n // \"Pontem Wallet\" with new version\n const existingStandardPontemWallet = this._standard_wallets.find(\n (wallet) => wallet.name == \"Pontem Wallet\",\n );\n if (wallet.name === \"Pontem\" && existingStandardPontemWallet) {\n return;\n }\n\n /**\n * Manage potential duplications when a plugin is installed in a dapp\n * but the existing wallet installed is on AIP-62 new standard - in that case we dont want to\n * include the plugin wallet (i.e npm package)\n */\n const existingWalletIndex = this._standard_wallets.findIndex(\n (standardWallet) => standardWallet.name == wallet.name,\n );\n if (existingWalletIndex !== -1) return;\n\n // push the plugin wallet to the all_wallets array\n this._all_wallets.push(wallet);\n if (!wallet.readyState) {\n wallet.readyState =\n typeof window === \"undefined\" || typeof document === \"undefined\"\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n }\n if (typeof window !== \"undefined\") {\n scopePollingDetectionStrategy(() => {\n const providerName = wallet.providerName || wallet.name.toLowerCase();\n if (Object.keys(window).includes(providerName)) {\n wallet.readyState = WalletReadyState.Installed;\n wallet.provider = window[providerName as any];\n this.emit(\"readyStateChange\", wallet);\n return true;\n }\n return false;\n });\n }\n });\n }\n\n private fetchExtensionAIP62AptosWallets() {\n let { aptosWallets, on } = getAptosWallets();\n this.setExtensionAIP62Wallets(aptosWallets);\n\n if (typeof window === \"undefined\") return;\n // Adds an event listener for new wallets that get registered after the dapp has been loaded,\n // receiving an unsubscribe function, which it can later use to remove the listener\n const that = this;\n const removeRegisterListener = on(\"register\", function () {\n let { aptosWallets } = getAptosWallets();\n that.setExtensionAIP62Wallets(aptosWallets);\n });\n\n const removeUnregisterListener = on(\"unregister\", function () {\n let { aptosWallets } = getAptosWallets();\n that.setExtensionAIP62Wallets(aptosWallets);\n });\n }\n\n // Since we can't discover AIP-62 wallets that are not installed on the user machine,\n // we hold a AIP-62 wallets registry to show on the wallet selector modal for the users.\n // Append wallets from wallet standard support registry to the `all_wallets` array\n // when wallet is not installed on the user machine\n private appendNotDetectedStandardSupportedWallets() {\n // Loop over the registry map\n aptosStandardSupportedWalletList.map((supportedWallet) => {\n // Check if we already have this wallet as an installed plugin\n const existingPluginWalletIndex = this.wallets.findIndex(\n (wallet) => wallet.name === supportedWallet.name,\n );\n\n // If the plugin wallet is installed, dont append and dont show it on the selector modal\n // as a not detected wallet\n if (existingPluginWalletIndex !== -1) return;\n\n // Hot fix to manage Pontem wallet to not show duplications if user has the\n // new standard version installed. Pontem uses \"Pontem\" wallet name for previous versions and\n // \"Pontem Wallet\" with new version\n const existingStandardPontemWallet = this.wallets.find(\n (wallet) => wallet.name == \"Pontem\",\n );\n if (\n supportedWallet.name === \"Pontem Wallet\" &&\n existingStandardPontemWallet\n ) {\n return;\n }\n\n // Check if we already have this wallet as a AIP-62 wallet standard\n const existingStandardWallet = this._standard_wallets.find(\n (wallet) => wallet.name == supportedWallet.name,\n );\n\n // If AIP-62 wallet detected but it is excluded by the dapp, dont add it to the wallets array\n if (\n existingStandardWallet &&\n this.excludeWallet(existingStandardWallet)\n ) {\n return;\n }\n\n // If AIP-62 wallet does not exist, append it to the wallet selector modal\n // as an undetected wallet\n if (!existingStandardWallet) {\n this._all_wallets.push(supportedWallet);\n this.emit(\"standardWalletsAdded\", supportedWallet);\n }\n });\n }\n\n /**\n * Set AIP-62 SDK wallets\n */\n private fetchSDKAIP62AptosWallets() {\n this._sdkWallets.map((wallet: AptosStandardWallet) => {\n this.standardizeAIP62WalletType(wallet);\n });\n }\n\n /**\n * Set AIP-62 extension wallets\n *\n * @param extensionwWallets\n */\n private setExtensionAIP62Wallets(extensionwWallets: readonly AptosWallet[]) {\n // Twallet SDK fires a register event so the adapter assumes it is an extension wallet\n // so filter out t wallet, remove it when twallet fixes it\n const wallets = extensionwWallets.filter(\n (wallet) => wallet.name !== \"Dev T wallet\" && wallet.name !== \"T wallet\",\n );\n\n wallets.map((wallet: AptosStandardWallet) => {\n this.standardizeAIP62WalletType(wallet);\n this._standard_wallets.push(wallet);\n });\n }\n\n /**\n * A function that excludes an AIP-62 compatible wallet the dapp doesnt want to include\n *\n * @param walletName\n * @returns\n */\n excludeWallet(wallet: AptosStandardWallet): boolean {\n // If _optInWallets is not empty, and does not include the provided wallet,\n // return true to exclude the wallet, otherwise return false\n if (\n this._optInWallets.length > 0 &&\n !this._optInWallets.includes(wallet.name as AvailableWallets)\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Standardize AIP62 wallet\n *\n * 1) check it is Standard compatible\n * 2) Update its readyState to Installed (for a future UI detection)\n * 3) convert it to the Wallet Plugin type interface for legacy compatibility\n * 4) push the wallet into a local standard wallets array\n *\n * @param wallet\n * @returns\n */\n private standardizeAIP62WalletType(wallet: AptosStandardWallet) {\n if (this.excludeWallet(wallet)) {\n return;\n }\n const isValid = isWalletWithRequiredFeatureSet(wallet);\n if (isValid) {\n wallet.readyState = WalletReadyState.Installed;\n this.standardizeStandardWalletToPluginWalletType(wallet);\n this._standard_wallets.push(wallet);\n }\n }\n\n /**\n * To maintain support for both plugins and AIP-62 standard wallets,\n * without introducing dapps breaking changes, we convert\n * AIP-62 standard compatible wallets to the legacy adapter wallet plugin type.\n *\n * @param standardWallet An AIP-62 standard compatible wallet\n */\n private standardizeStandardWalletToPluginWalletType = (\n standardWallet: AptosStandardWallet,\n ) => {\n let standardWalletConvertedToWallet: Wallet = {\n name: standardWallet.name as WalletName,\n url: standardWallet.url,\n icon: standardWallet.icon,\n provider: standardWallet,\n connect: standardWallet.features[\"aptos:connect\"].connect,\n disconnect: standardWallet.features[\"aptos:disconnect\"].disconnect,\n network: standardWallet.features[\"aptos:network\"].network,\n account: standardWallet.features[\"aptos:account\"].account,\n signAndSubmitTransaction:\n standardWallet.features[\"aptos:signAndSubmitTransaction\"]\n ?.signAndSubmitTransaction,\n signMessage: standardWallet.features[\"aptos:signMessage\"].signMessage,\n onAccountChange:\n standardWallet.features[\"aptos:onAccountChange\"].onAccountChange,\n onNetworkChange:\n standardWallet.features[\"aptos:onNetworkChange\"].onNetworkChange,\n signTransaction:\n standardWallet.features[\"aptos:signTransaction\"].signTransaction,\n openInMobileApp:\n standardWallet.features[\"aptos:openInMobileApp\"]?.openInMobileApp,\n changeNetwork:\n standardWallet.features[\"aptos:changeNetwork\"]?.changeNetwork,\n readyState: WalletReadyState.Installed,\n isAIP62Standard: true,\n isSignTransactionV1_1:\n standardWallet.features[\"aptos:signTransaction\"]?.version === \"1.1\",\n };\n\n // Remove optional duplications in the _all_wallets array\n this._all_wallets = this._all_wallets.filter(\n (item) => item.name !== standardWalletConvertedToWallet.name,\n );\n this._all_wallets.push(standardWalletConvertedToWallet);\n\n this.emit(\"standardWalletsAdded\", standardWalletConvertedToWallet);\n };\n\n private recordEvent(eventName: string, additionalInfo?: object) {\n this.ga4?.gtag(\"event\", `wallet_adapter_${eventName}`, {\n wallet: this._wallet?.name,\n network: this._network?.name,\n network_url: this._network?.url,\n adapter_core_version: WALLET_ADAPTER_CORE_VERSION,\n send_to: process.env.GAID,\n ...additionalInfo,\n });\n }\n\n /**\n * Helper function to ensure wallet exists\n *\n * @param wallet A wallet\n */\n private ensureWalletExists(wallet: Wallet | null): asserts wallet is Wallet {\n if (!wallet) {\n throw new WalletNotConnectedError().name;\n }\n if (\n !(\n wallet.readyState === WalletReadyState.Loadable ||\n wallet.readyState === WalletReadyState.Installed\n )\n )\n throw new WalletNotReadyError(\"Wallet is not set\").name;\n }\n\n /**\n * Helper function to ensure account exists\n *\n * @param account An account\n */\n private ensureAccountExists(\n account: AccountInfo | null,\n ): asserts account is AccountInfo {\n if (!account) {\n throw new WalletAccountError(\"Account is not set\").name;\n }\n }\n\n /**\n * @deprecated use ensureWalletExists\n */\n private doesWalletExist(): boolean | WalletNotConnectedError {\n if (!this._connected || this._connecting || !this._wallet)\n throw new WalletNotConnectedError().name;\n if (\n !(\n this._wallet.readyState === WalletReadyState.Loadable ||\n this._wallet.readyState === WalletReadyState.Installed\n )\n )\n throw new WalletNotReadyError().name;\n return true;\n }\n\n /**\n * Function to cleat wallet adapter data.\n *\n * - Removes current connected wallet state\n * - Removes current connected account state\n * - Removes current connected network state\n * - Removes autoconnect local storage value\n */\n private clearData(): void {\n this._connected = false;\n this.setWallet(null);\n this.setAccount(null);\n this.setNetwork(null);\n removeLocalStorage();\n }\n\n /**\n * Queries and sets ANS name for the current connected wallet account\n */\n private async setAnsName(): Promise<void> {\n if (this._network?.chainId && this._account) {\n // ANS supports only MAINNET or TESTNET\n if (\n !ChainIdToAnsSupportedNetworkMap[this._network.chainId] ||\n !isAptosNetwork(this._network)\n ) {\n this._account.ansName = undefined;\n return;\n }\n\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n const name = await aptos.ans.getPrimaryName({\n address: this._account.address.toString(),\n });\n\n this._account.ansName = name;\n }\n }\n\n /**\n * Sets the connected wallet\n *\n * @param wallet A wallet\n */\n setWallet(wallet: Wallet | null): void {\n this._wallet = wallet;\n }\n\n /**\n * Sets the connected account\n *\n * `AccountInfo` type comes from a legacy wallet adapter plugin\n * `StandardAccountInfo` type comes from AIP-62 standard compatible wallet when onAccountChange event is called\n * `UserResponse<StandardAccountInfo>` type comes from AIP-62 standard compatible wallet on wallet connect\n *\n * @param account An account\n */\n setAccount(\n account:\n | AccountInfo\n | StandardAccountInfo\n | UserResponse<StandardAccountInfo>\n | null,\n ): void {\n if (account === null) {\n this._account = null;\n return;\n }\n\n // Check if wallet is of type AIP-62 standard\n if (this._wallet?.isAIP62Standard) {\n // Check if account is of type UserResponse<StandardAccountInfo> which means the `account`\n // comes from the `connect` method\n if (\"status\" in account) {\n const connectStandardAccount =\n account as UserResponse<StandardAccountInfo>;\n if (connectStandardAccount.status === UserResponseStatus.REJECTED) {\n this._connecting = false;\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n // account is of type\n this._account = {\n address: connectStandardAccount.args.address.toString(),\n publicKey: connectStandardAccount.args.publicKey.toString(),\n ansName: connectStandardAccount.args.ansName,\n };\n return;\n } else {\n // account is of type `StandardAccountInfo` which means it comes from onAccountChange event\n const standardAccount = account as StandardAccountInfo;\n this._account = {\n address: standardAccount.address.toString(),\n publicKey: standardAccount.publicKey.toString(),\n ansName: standardAccount.ansName,\n };\n return;\n }\n }\n\n // account is of type `AccountInfo`\n this._account = { ...(account as AccountInfo) };\n return;\n }\n\n /**\n * Sets the connected network\n *\n * `NetworkInfo` type comes from a legacy wallet adapter plugin\n * `StandardNetworkInfo` type comes from AIP-62 standard compatible wallet\n *\n * @param network A network\n */\n setNetwork(network: NetworkInfo | StandardNetworkInfo | null): void {\n if (network === null) {\n this._network = null;\n return;\n }\n if (this._wallet?.isAIP62Standard) {\n const standardizeNetwork = network as StandardNetworkInfo;\n this.recordEvent(\"network_change\", {\n from: this._network?.name,\n to: standardizeNetwork.name,\n });\n this._network = {\n name: standardizeNetwork.name.toLowerCase() as Network,\n chainId: standardizeNetwork.chainId.toString(),\n url: standardizeNetwork.url,\n };\n\n return;\n }\n\n this.recordEvent(\"network_change\", {\n from: this._network?.name,\n to: network.name,\n });\n this._network = {\n ...(network as NetworkInfo),\n name: network.name.toLowerCase() as Network,\n };\n }\n\n /**\n * Helper function to detect whether a wallet is connected\n *\n * @returns boolean\n */\n isConnected(): boolean {\n return this._connected;\n }\n\n /**\n * Getter to fetch all detected wallets\n */\n get wallets(): ReadonlyArray<AnyAptosWallet> {\n return this._all_wallets;\n }\n\n /**\n * Getter to fetch all detected plugin wallets\n */\n get pluginWallets(): ReadonlyArray<Wallet> {\n return this._wallets;\n }\n\n /**\n * Getter to fetch all detected AIP-62 standard compatible wallets\n */\n get standardWallets(): ReadonlyArray<AptosStandardWallet> {\n return this._standard_wallets;\n }\n\n /**\n * Getter for the current connected wallet\n *\n * @return wallet info\n * @throws WalletNotSelectedError\n */\n get wallet(): WalletInfo | null {\n try {\n if (!this._wallet) return null;\n return {\n name: this._wallet.name,\n icon: this._wallet.icon,\n url: this._wallet.url,\n };\n } catch (error: any) {\n throw new WalletNotSelectedError(error).message;\n }\n }\n\n /**\n * Getter for the current connected account\n *\n * @return account info\n * @throws WalletAccountError\n */\n get account(): AccountInfo | null {\n try {\n return this._account;\n } catch (error: any) {\n throw new WalletAccountError(error).message;\n }\n }\n\n /**\n * Getter for the current wallet network\n *\n * @return network info\n * @throws WalletGetNetworkError\n */\n get network(): NetworkInfo | null {\n try {\n return this._network;\n } catch (error: any) {\n throw new WalletGetNetworkError(error).message;\n }\n }\n\n /**\n * Helper function to run some checks before we connect with a wallet.\n *\n * @param walletName. The wallet name we want to connect with.\n */\n async connect(walletName: string): Promise<void | string> {\n // Checks the wallet exists in the detected wallets array\n\n const allDetectedWallets = this._all_wallets as Array<Wallet>;\n\n const selectedWallet = allDetectedWallets.find(\n (wallet: Wallet) => wallet.name === walletName,\n );\n if (!selectedWallet) return;\n\n // Check if wallet is already connected\n if (this._connected) {\n // if the selected wallet is already connected, we don't need to connect again\n if (this._wallet?.name === walletName)\n throw new WalletConnectionError(\n `${walletName} wallet is already connected`,\n ).message;\n }\n\n // Check if we are in a redirectable view (i.e on mobile AND not in an in-app browser)\n // Ignore if wallet is installed (iOS extension)\n if (\n isRedirectable() &&\n selectedWallet.readyState !== WalletReadyState.Installed\n ) {\n // If wallet is AIP-62 compatible\n if (selectedWallet.isAIP62Standard) {\n // If wallet has a openInMobileApp method, use it\n if (selectedWallet.openInMobileApp) {\n selectedWallet.openInMobileApp();\n return;\n }\n // If wallet has a deeplinkProvider property, i.e wallet is on the internal registry, use it\n const uninstalledWallet =\n selectedWallet as AptosStandardSupportedWallet;\n if (uninstalledWallet.deeplinkProvider) {\n const url = encodeURIComponent(window.location.href);\n const location = uninstalledWallet.deeplinkProvider.concat(url);\n window.location.href = location;\n return;\n }\n }\n // Wallet is on the old standard, check if it has a deeplinkProvider method property\n if (selectedWallet.deeplinkProvider) {\n const url = encodeURIComponent(window.location.href);\n const location = selectedWallet.deeplinkProvider({ url });\n window.location.href = location;\n }\n return;\n }\n\n // Check wallet state is Installed or Loadable\n if (\n selectedWallet.readyState !== WalletReadyState.Installed &&\n selectedWallet.readyState !== WalletReadyState.Loadable\n ) {\n return;\n }\n\n // Now we can connect to the wallet\n await this.connectWallet(selectedWallet);\n }\n\n /**\n * Connects a wallet to the dapp.\n * On connect success, we set the current account and the network, and keeping the selected wallet\n * name in LocalStorage to support autoConnect function.\n *\n * @param selectedWallet. The wallet we want to connect.\n * @emit emits \"connect\" event\n * @throws WalletConnectionError\n */\n async connectWallet(selectedWallet: Wallet): Promise<void> {\n try {\n this._connecting = true;\n this.setWallet(selectedWallet);\n let account;\n if (selectedWallet.isAIP62Standard) {\n account = await this.walletStandardCore.connect(selectedWallet);\n } else {\n account = await this.walletCoreV1.connect(selectedWallet);\n }\n this.setAccount(account);\n const network = await selectedWallet.network();\n this.setNetwork(network);\n await this.setAnsName();\n setLocalStorage(selectedWallet.name);\n this._connected = true;\n this.recordEvent(\"wallet_connect\");\n this.emit(\"connect\", account);\n } catch (error: any) {\n this.clearData();\n const errMsg = generalizedErrorMessage(error);\n throw new WalletConnectionError(errMsg).message;\n } finally {\n this._connecting = false;\n }\n }\n\n /**\n * Disconnect the current connected wallet. On success, we clear the\n * current account, current network and LocalStorage data.\n *\n * @emit emits \"disconnect\" event\n * @throws WalletDisconnectionError\n */\n async disconnect(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.disconnect();\n this.clearData();\n this.recordEvent(\"wallet_disconnect\");\n this.emit(\"disconnect\");\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletDisconnectionError(errMsg).message;\n }\n }\n\n /**\n * Signs and submits a transaction to chain\n *\n * @param transactionInput InputTransactionData\n * @param options optional. A configuration object to generate a transaction by\n * @returns The pending transaction hash (V1 output) | PendingTransactionResponse (V2 output)\n */\n async signAndSubmitTransaction(\n transactionInput: InputTransactionData,\n ): Promise<\n { hash: Types.HexEncodedBytes; output?: any } | PendingTransactionResponse\n > {\n try {\n if (\"function\" in transactionInput.data) {\n if (\n transactionInput.data.function ===\n \"0x1::account::rotate_authentication_key_call\"\n ) {\n throw new WalletSignAndSubmitMessageError(\"SCAM SITE DETECTED\")\n .message;\n }\n\n if (\n transactionInput.data.function === \"0x1::code::publish_package_txn\"\n ) {\n ({\n metadataBytes: transactionInput.data.functionArguments[0],\n byteCode: transactionInput.data.functionArguments[1],\n } = handlePublishPackageTransaction(transactionInput));\n }\n }\n\n this.ensureWalletExists(this._wallet);\n this.ensureAccountExists(this._account);\n this.recordEvent(\"sign_and_submit_transaction\");\n // get the payload piece from the input\n const payloadData = transactionInput.data;\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n\n const aptos = new Aptos(aptosConfig);\n\n if (this._wallet.signAndSubmitTransaction) {\n // if wallet is compatible with the AIP-62 standard\n if (this._wallet.isAIP62Standard) {\n const { hash, ...output } =\n await this.walletStandardCore.signAndSubmitTransaction(\n transactionInput,\n aptos,\n this._account,\n this._wallet,\n this._standard_wallets,\n );\n return { hash, output };\n } else {\n // Else use wallet plugin\n const { hash, ...output } =\n await this.walletCoreV1.resolveSignAndSubmitTransaction(\n payloadData,\n this._network,\n this._wallet,\n transactionInput,\n this._dappConfig,\n );\n return { hash, output };\n }\n }\n\n // If wallet does not support signAndSubmitTransaction\n // the adapter will sign and submit it for the dapp.\n // Note: This should happen only for AIP-62 standard compatible wallets since\n // signAndSubmitTransaction is not a required function implementation\n const transaction = await aptos.transaction.build.simple({\n sender: this._account.address,\n data: transactionInput.data,\n options: transactionInput.options,\n });\n\n const senderAuthenticator = await this.signTransaction(transaction);\n const response = await this.submitTransaction({\n transaction,\n senderAuthenticator,\n });\n return response;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignAndSubmitMessageError(errMsg).message;\n }\n }\n\n /**\n * Signs a transaction\n *\n * To support both existing wallet adapter V1 and V2, we support 2 input types\n *\n * @param transactionOrPayload AnyRawTransaction - V2 input | Types.TransactionPayload - V1 input\n * @param options optional. V1 input\n *\n * @returns AccountAuthenticator\n */\n async signTransaction(\n transactionOrPayload: AnyRawTransaction | Types.TransactionPayload,\n asFeePayer?: boolean,\n options?: InputGenerateTransactionOptions,\n ): Promise<AccountAuthenticator> {\n try {\n this.ensureWalletExists(this._wallet);\n this.recordEvent(\"sign_transaction\");\n // Make sure wallet supports signTransaction\n if (this._wallet.signTransaction) {\n // If current connected wallet is AIP-62 standard compatible\n // we want to make sure the transaction input is what the\n // standard expects, i,e new sdk v2 input\n if (this._wallet.isAIP62Standard) {\n // if rawTransaction prop it means transaction input data is\n // compatible with new sdk v2 input\n if (\"rawTransaction\" in transactionOrPayload) {\n return await this.walletStandardCore.signTransaction(\n transactionOrPayload,\n this._wallet,\n asFeePayer,\n );\n } else if (this._wallet.isSignTransactionV1_1) {\n // This wallet is AIP-62 compliant and supports transaction inputs\n const payload = convertPayloadInputV1ToV2(transactionOrPayload);\n const optionsV1 = options as\n | CompatibleTransactionOptions\n | undefined;\n const { authenticator } =\n await this.walletStandardCore.signTransaction(\n {\n payload,\n expirationTimestamp:\n optionsV1?.expireTimestamp ??\n optionsV1?.expirationTimestamp,\n expirationSecondsFromNow: optionsV1?.expirationSecondsFromNow,\n gasUnitPrice:\n optionsV1?.gasUnitPrice ?? optionsV1?.gas_unit_price,\n maxGasAmount:\n optionsV1?.maxGasAmount ?? optionsV1?.max_gas_amount,\n sequenceNumber: optionsV1?.sequenceNumber,\n sender: optionsV1?.sender\n ? { address: AccountAddress.from(optionsV1.sender) }\n : undefined,\n },\n this._wallet,\n );\n return authenticator;\n } else {\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n this.ensureAccountExists(this._account);\n const sender = this._account.address;\n const payload = await generateTransactionPayloadFromV1Input(\n aptosConfig,\n transactionOrPayload,\n );\n const optionsV1 = options as CompatibleTransactionOptions;\n const optionsV2 = {\n accountSequenceNumber: optionsV1?.sequenceNumber,\n expireTimestamp:\n optionsV1?.expireTimestamp ?? optionsV1?.expirationTimestamp,\n gasUnitPrice:\n optionsV1?.gasUnitPrice ?? optionsV1?.gas_unit_price,\n maxGasAmount:\n optionsV1?.maxGasAmount ?? optionsV1?.max_gas_amount,\n };\n const rawTransaction = await generateRawTransaction({\n aptosConfig,\n payload,\n sender,\n options: optionsV2,\n });\n return await this.walletStandardCore.signTransaction(\n new SimpleTransaction(rawTransaction),\n this._wallet,\n false,\n );\n }\n }\n\n // If current connected wallet is legacy compatible with wallet standard\n\n // if input is AnyRawTransaction, i.e new sdk v2 input\n if (\"rawTransaction\" in transactionOrPayload) {\n const accountAuthenticator = (await this._wallet.signTransaction(\n transactionOrPayload,\n asFeePayer,\n )) as AccountAuthenticator;\n\n return accountAuthenticator;\n } else {\n const response = await this.walletCoreV1.signTransaction(\n transactionOrPayload as Types.TransactionPayload,\n this._wallet!,\n {\n max_gas_amount: options?.maxGasAmount\n ? BigInt(options?.maxGasAmount)\n : undefined,\n gas_unit_price: options?.gasUnitPrice\n ? BigInt(options?.gasUnitPrice)\n : undefined,\n },\n );\n\n if (!response) {\n throw new Error(\"error\");\n }\n\n // Convert retuned bcs serialized SignedTransaction into V2 AccountAuthenticator\n const deserializer1 = new BCS.Deserializer(response);\n const deserializedSignature =\n TxnBuilderTypes.SignedTransaction.deserialize(deserializer1);\n const transactionAuthenticator =\n deserializedSignature.authenticator as TxnBuilderTypes.TransactionAuthenticatorEd25519;\n\n const publicKey = transactionAuthenticator.public_key.value;\n const signature = transactionAuthenticator.signature.value;\n\n const accountAuthenticator = new AccountAuthenticatorEd25519(\n new Ed25519PublicKey(publicKey),\n new Ed25519Signature(signature),\n );\n return accountAuthenticator;\n }\n }\n\n // If we are here it means this wallet does not support signTransaction\n throw new WalletNotSupportedMethod(\n `Sign Transaction is not supported by ${this.wallet?.name}`,\n ).message;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignTransactionError(errMsg).message;\n }\n }\n\n /**\n * Sign message (doesnt submit to chain).\n *\n * @param message\n * @return response from the wallet's signMessage function\n * @throws WalletSignMessageError\n */\n async signMessage(message: SignMessagePayload): Promise<SignMessageResponse> {\n try {\n this.ensureWalletExists(this._wallet);\n this.recordEvent(\"sign_message\");\n if (this._wallet.isAIP62Standard) {\n return await this.walletStandardCore.signMessage(message, this._wallet);\n }\n const response = await this._wallet!.signMessage(message);\n return response as SignMessageResponse;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageError(errMsg).message;\n }\n }\n\n /**\n * Submits transaction to chain\n *\n * @param transaction\n * @returns PendingTransactionResponse\n */\n async submitTransaction(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse> {\n try {\n this.ensureWalletExists(this._wallet);\n\n const { additionalSignersAuthenticators } = transaction;\n const transactionType =\n additionalSignersAuthenticators !== undefined\n ? \"multi-agent\"\n : \"simple\";\n this.recordEvent(\"submit_transaction\", {\n transaction_type: transactionType,\n });\n // If wallet supports submitTransaction transaction function\n if (this._wallet.submitTransaction) {\n const pendingTransaction =\n await this._wallet.submitTransaction(transaction);\n return pendingTransaction;\n }\n\n // Else have the adapter submit the transaction\n\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n if (additionalSignersAuthenticators !== undefined) {\n const multiAgentTxn = {\n ...transaction,\n additionalSignersAuthenticators,\n };\n return aptos.transaction.submit.multiAgent(multiAgentTxn);\n } else {\n return aptos.transaction.submit.simple(transaction);\n }\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignTransactionError(errMsg).message;\n }\n }\n\n /**\n Event for when account has changed on the wallet\n @return the new account info\n @throws WalletAccountChangeError\n */\n async onAccountChange(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.onAccountChange(\n async (data: AccountInfo | StandardAccountInfo) => {\n this.setAccount(data);\n await this.setAnsName();\n this.recordEvent(\"account_change\");\n this.emit(\"accountChange\", this._account);\n },\n );\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletAccountChangeError(errMsg).message;\n }\n }\n\n /**\n Event for when network has changed on the wallet\n @return the new network info\n @throws WalletNetworkChangeError\n */\n async onNetworkChange(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.onNetworkChange(\n async (data: NetworkInfo | StandardNetworkInfo) => {\n this.setNetwork(data);\n await this.setAnsName();\n this.emit(\"networkChange\", this._network);\n },\n );\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletNetworkChangeError(errMsg).message;\n }\n }\n\n /**\n * Sends a change network request to the wallet to change the connected network\n *\n * @param network\n * @returns AptosChangeNetworkOutput\n */\n async changeNetwork(network: Network): Promise<AptosChangeNetworkOutput> {\n try {\n this.ensureWalletExists(this._wallet);\n this.recordEvent(\"change_network_request\", {\n from: this._network?.name,\n to: network,\n });\n const chainId =\n network === Network.DEVNET\n ? await fetchDevnetChainId()\n : NetworkToChainId[network];\n if (this._wallet.changeNetwork) {\n const networkInfo: StandardNetworkInfo = {\n name: network,\n chainId,\n };\n const response = await this._wallet.changeNetwork(networkInfo);\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return response.args;\n }\n throw new WalletChangeNetworkError(\n `${this._wallet.name} does not support changing network request`,\n ).message;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletChangeNetworkError(errMsg).message;\n }\n }\n\n /**\n * Signs a message and verifies the signer\n * @param message SignMessagePayload\n * @returns boolean\n */\n async signMessageAndVerify(message: SignMessagePayload): Promise<boolean> {\n try {\n this.ensureWalletExists(this._wallet);\n this.ensureAccountExists(this._account);\n this.recordEvent(\"sign_message_and_verify\");\n // If current connected wallet is AIP-62 standard compatible\n if (this._wallet.isAIP62Standard) {\n return this.walletStandardCore.signMessageAndVerify(\n message,\n this._wallet,\n );\n }\n\n return await this.walletCoreV1.signMessageAndVerify(\n message,\n this._wallet,\n this._account,\n );\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageAndVerifyError(errMsg).message;\n }\n }\n}\n","import {\n AptosConnectAppleWallet,\n AptosConnectGoogleWallet,\n} from \"@aptos-connect/wallet-adapter-plugin\";\nimport { Network } from \"@aptos-labs/ts-sdk\";\nimport { DevTWallet, TWallet } from \"@atomrigslab/aptos-wallet-adapter\";\nimport { MizuWallet } from \"@mizuwallet-sdk/aptos-wallet-adapter\";\nimport { DappConfig } from \"../WalletCore\";\nimport { AptosStandardWallet } from \"./WalletStandard\";\n\nexport function getSDKWallets(dappConfig?: DappConfig) {\n const sdkWallets: AptosStandardWallet[] = [];\n\n // Need to check window is defined for AptosConnect\n if (typeof window !== \"undefined\") {\n sdkWallets.push(\n new AptosConnectGoogleWallet({\n network: dappConfig?.network,\n dappId: dappConfig?.aptosConnectDappId,\n ...dappConfig?.aptosConnect,\n }),\n new AptosConnectAppleWallet({\n network: dappConfig?.network,\n dappId: dappConfig?.aptosConnectDappId,\n ...dappConfig?.aptosConnect,\n }),\n );\n\n if (\n dappConfig?.mizuwallet &&\n dappConfig?.network &&\n [Network.MAINNET, Network.TESTNET].includes(dappConfig.network)\n ) {\n sdkWallets.push(\n new MizuWallet({\n network: dappConfig.network as any,\n manifestURL: dappConfig.mizuwallet.manifestURL,\n appId: dappConfig.mizuwallet.appId,\n }) as any,\n );\n }\n }\n\n // Push production wallet if env is production, otherwise use dev wallet\n if (dappConfig?.network === Network.MAINNET) {\n // TODO twallet uses @aptos-labs/wallet-standard at version 0.0.11 while adapter uses\n // a newer version (0.1.0) - this causes type mismatch. We should figure out how to handle it.\n sdkWallets.push(new TWallet() as any);\n } else {\n sdkWallets.push(new DevTWallet() as any);\n }\n\n // Add new SDK wallet plugins (ones that should be installed as packages) here:\n // Ex. sdkWallets.push(new YourSDKWallet(dappConfig))\n\n return sdkWallets;\n}\n","export enum WalletReadyState {\n /**\n * User-installable wallets can typically be detected by scanning for an API\n * that they've injected into the global context. If such an API is present,\n * we consider the wallet to have been installed.\n */\n Installed = \"Installed\",\n NotDetected = \"NotDetected\",\n /**\n * Loadable wallets are always available to you. Since you can load them at\n * any time, it's meaningless to say that they have been detected.\n */\n Loadable = \"Loadable\",\n /**\n * If a wallet is not supported on a given platform (eg. server-rendering, or\n * mobile) then it will stay in the `Unsupported` state.\n */\n Unsupported = \"Unsupported\",\n}\n\nexport enum NetworkName {\n Mainnet = \"mainnet\",\n Testnet = \"testnet\",\n Devnet = \"devnet\",\n}\n\nexport const ChainIdToAnsSupportedNetworkMap: Record<string, string> = {\n \"1\": \"mainnet\", // mainnet\n \"2\": \"testnet\", // testnet\n};\n\n/** The base URL for all Aptos Connect wallets. */\nexport const APTOS_CONNECT_BASE_URL = \"https://aptosconnect.app\";\n\n/** The URL to the Aptos Connect account page if the user is signed in to Aptos Connect. */\nexport const APTOS_CONNECT_ACCOUNT_URL =\n \"https://aptosconnect.app/dashboard/main-account\";\n","export class WalletError extends Error {\n public error: any;\n\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotSelectedError extends WalletError {\n name = \"WalletNotSelectedError\";\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = \"WalletNotReadyError\";\n}\n\nexport class WalletLoadError extends WalletError {\n name = \"WalletLoadError\";\n}\n\nexport class WalletConfigError extends WalletError {\n name = \"WalletConfigError\";\n}\n\nexport class WalletConnectionError extends WalletError {\n name = \"WalletConnectionError\";\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = \"WalletDisconnectedError\";\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = \"WalletDisconnectionError\";\n}\n\nexport class WalletAccountError extends WalletError {\n name = \"WalletAccountError\";\n}\nexport class WalletGetNetworkError extends WalletError {\n name = \"WalletGetNetworkError\";\n}\n\nexport class WalletAccountChangeError extends WalletError {\n name = \"WalletAccountChangeError\";\n}\n\nexport class WalletNetworkChangeError extends WalletError {\n name = \"WalletNetworkChangeError\";\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = \"WalletPublicKeyError\";\n}\n\nexport class WalletKeypairError extends WalletError {\n name = \"WalletKeypairError\";\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = \"WalletNotConnectedError\";\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = \"WalletSendTransactionError\";\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = \"WalletSignMessageError\";\n}\n\nexport class WalletSignMessageAndVerifyError extends WalletError {\n name = \"WalletSignMessageAndVerifyError\";\n}\n\nexport class WalletSignAndSubmitMessageError extends WalletError {\n name = \"WalletSignAndSubmitMessageError\";\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = \"WalletSignTransactionError\";\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = \"WalletTimeoutError\";\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = \"WalletWindowBlockedError\";\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = \"WalletWindowClosedError\";\n}\n\nexport class WalletResponseError extends WalletError {\n name = \"WalletResponseError\";\n}\n\nexport class WalletNotSupportedMethod extends WalletError {\n name = \"WalletNotSupportedMethod\";\n}\n\nexport class WalletChangeNetworkError extends WalletError {\n name = \"WalletChangeNetworkError\";\n}\n","import { HexString, TxnBuilderTypes, Types } from \"aptos\";\nimport EventEmitter from \"eventemitter3\";\nimport { Buffer } from \"buffer\";\nimport {\n InputEntryFunctionDataWithRemoteABI,\n InputGenerateTransactionPayloadData,\n generateTransactionPayload,\n} from \"@aptos-labs/ts-sdk\";\nimport nacl from \"tweetnacl\";\nimport {\n WalletNotSupportedMethod,\n WalletSignAndSubmitMessageError,\n WalletSignMessageAndVerifyError,\n WalletSignTransactionError,\n} from \"../error\";\nimport {\n Wallet,\n WalletCoreEvents,\n TransactionOptions,\n NetworkInfo,\n InputTransactionData,\n AccountInfo,\n SignMessagePayload,\n SignMessageResponse,\n} from \"./types\";\n\nimport {\n convertV2PayloadToV1JSONPayload,\n convertV2TransactionPayloadToV1BCSPayload,\n} from \"./conversion\";\nimport {\n areBCSArguments,\n generalizedErrorMessage,\n getAptosConfig,\n} from \"../utils\";\nimport { DappConfig } from \"../WalletCore\";\n\nexport class WalletCoreV1 extends EventEmitter<WalletCoreEvents> {\n async connect(wallet: Wallet) {\n const account = await wallet.connect();\n return account;\n }\n\n /**\n * Resolve the transaction type (BCS arguments or Simple arguments)\n *\n * @param payloadData\n * @param network\n * @param wallet\n * @param transactionInput\n *\n * @returns\n */\n async resolveSignAndSubmitTransaction(\n payloadData: InputGenerateTransactionPayloadData,\n network: NetworkInfo | null,\n wallet: Wallet,\n transactionInput: InputTransactionData,\n dappConfig?: DappConfig,\n ) {\n // first check if each argument is a BCS serialized argument\n if (areBCSArguments(payloadData.functionArguments)) {\n const aptosConfig = getAptosConfig(network, dappConfig);\n const newPayload = await generateTransactionPayload({\n ...(payloadData as InputEntryFunctionDataWithRemoteABI),\n aptosConfig: aptosConfig,\n });\n const oldTransactionPayload =\n convertV2TransactionPayloadToV1BCSPayload(newPayload);\n // Call and return signAndSubmitBCSTransaction response\n return await this.signAndSubmitBCSTransaction(\n oldTransactionPayload,\n wallet!,\n {\n max_gas_amount: transactionInput.options?.maxGasAmount\n ? BigInt(transactionInput.options?.maxGasAmount)\n : undefined,\n gas_unit_price: transactionInput.options?.gasUnitPrice\n ? BigInt(transactionInput.options?.gasUnitPrice)\n : undefined,\n },\n );\n }\n\n // if it is not a bcs serialized arguments transaction, convert to the old\n // json format\n const oldTransactionPayload = convertV2PayloadToV1JSONPayload(payloadData);\n return await this.signAndSubmitTransaction(oldTransactionPayload, wallet!, {\n max_gas_amount: transactionInput.options?.maxGasAmount\n ? BigInt(transactionInput.options?.maxGasAmount)\n : undefined,\n gas_unit_price: transactionInput.options?.gasUnitPrice\n ? BigInt(transactionInput.options?.gasUnitPrice)\n : undefined,\n });\n }\n\n /**\n Sign and submit an entry (not bcs serialized) transaction type to chain.\n @param transaction a non-bcs serialized transaction\n @param options max_gas_amount and gas_unit_limit\n @return response from the wallet's signAndSubmitTransaction function\n @throws WalletSignAndSubmitMessageError\n */\n async signAndSubmitTransaction(\n transaction: Types.TransactionPayload,\n wallet: Wallet,\n options?: TransactionOptions,\n ): Promise<any> {\n try {\n const response = await (wallet as any).signAndSubmitTransaction(\n transaction,\n options,\n );\n return response;\n } catch (error: any) {\n const errMsg =\n typeof error == \"object\" && \"message\" in error ? error.message : error;\n throw new WalletSignAndSubmitMessageError(errMsg).message;\n }\n }\n\n /**\n Sign and submit a bsc serialized transaction type to chain.\n @param transaction a bcs serialized transaction\n @param options max_gas_amount and gas_unit_limit\n @return response from the wallet's signAndSubmitBCSTransaction function\n @throws WalletSignAndSubmitMessageError\n */\n async signAndSubmitBCSTransaction(\n transaction: TxnBuilderTypes.TransactionPayload,\n wallet: Wallet,\n options?: TransactionOptions,\n ): Promise<any> {\n if (!(\"signAndSubmitBCSTransaction\" in wallet)) {\n throw new WalletNotSupportedMethod(\n `Submit a BCS Transaction is not supported by ${wallet.name}`,\n ).message;\n }\n try {\n const response = await (wallet as any).signAndSubmitBCSTransaction(\n transaction,\n options,\n );\n return response;\n } catch (error: any) {\n const errMsg =\n typeof error == \"object\" && \"message\" in error ? error.message : error;\n throw new WalletSignAndSubmitMessageError(errMsg).message;\n }\n }\n\n /**\n Sign transaction\n @param transaction\n @param options max_gas_amount and gas_unit_limit\n @return response from the wallet's signTransaction function\n @throws WalletSignTransactionError\n */\n async signTransaction(\n transaction: Types.TransactionPayload,\n wallet: Wallet,\n options?: TransactionOptions,\n ): Promise<Uint8Array | null> {\n try {\n const response = await (wallet as any).signTransaction(\n transaction,\n options,\n );\n return response;\n } catch (error: any) {\n const errMsg =\n typeof error == \"object\" && \"message\" in error ? error.message : error;\n throw new WalletSignTransactionError(errMsg).message;\n }\n }\n\n /**\n * Signs a message and verifies the signer\n * @param message SignMessagePayload\n * @returns boolean\n */\n async signMessageAndVerify(\n message: SignMessagePayload,\n wallet: Wallet,\n account: AccountInfo,\n ): Promise<boolean> {\n try {\n const response = await wallet.signMessage(message);\n if (!response)\n throw new WalletSignMessageAndVerifyError(\"Failed to sign a message\")\n .message;\n console.log(\"signMessageAndVerify signMessage response\", response);\n\n // Verify that the bytes were signed using the private key that matches the known public key\n let verified = false;\n if (Array.isArray((response as SignMessageResponse).signature)) {\n // multi sig wallets\n const { fullMessage, signature, bitmap } =\n response as SignMessageResponse;\n if (bitmap) {\n const minKeysRequired = account.minKeysRequired as number;\n if ((signature as string[]).length < minKeysRequired) {\n verified = false;\n } else {\n // Getting an array which marks the keys signing the message with 1, while marking 0 for the keys not being used.\n const bits = Array.from(bitmap).flatMap((n) =>\n Array.from({ length: 8 }).map((_, i) => (n >> i) & 1),\n );\n // Filter out indexes of the keys we need\n const index = bits.map((_, i) => i).filter((i) => bits[i]);\n\n const publicKeys = account.publicKey as string[];\n const matchedPublicKeys = publicKeys.filter(\n (_: string, i: number) => index.includes(i),\n );\n\n verified = true;\n for (let i = 0; i < (signature as string[]).length; i++) {\n const isSigVerified = nacl.sign.detached.verify(\n Buffer.from(fullMessage),\n Buffer.from((signature as string[])[i], \"hex\"),\n Buffer.from(matchedPublicKeys[i], \"hex\"),\n ); // `isSigVerified` should be `true` for every signature\n\n if (!isSigVerified) {\n verified = false;\n break;\n }\n }\n }\n } else {\n throw new WalletSignMessageAndVerifyError(\"Failed to get a bitmap\")\n .message;\n }\n } else {\n // single sig wallets\n // support for when address doesnt have hex prefix (0x)\n const currentAccountPublicKey = new HexString(\n account.publicKey as string,\n );\n // support for when address doesnt have hex prefix (0x)\n const signature = new HexString(\n (response as SignMessageResponse).signature as string,\n );\n verified = nacl.sign.detached.verify(\n Buffer.from((response as SignMessageResponse).fullMessage),\n Buffer.from(signature.noPrefix(), \"hex\"),\n Buffer.from(currentAccountPublicKey.noPrefix(), \"hex\"),\n );\n }\n return verified;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageAndVerifyError(errMsg).message;\n }\n }\n}\n","import {\n Network,\n TransactionPayload,\n InputGenerateTransactionPayloadData,\n TypeTag,\n AptosConfig,\n InputEntryFunctionData,\n InputMultiSigData,\n MoveFunctionId,\n generateTransactionPayload,\n TransactionPayloadEntryFunction,\n} from \"@aptos-labs/ts-sdk\";\nimport { NetworkInfo as StandardNetworkInfo } from \"@aptos-labs/wallet-standard\";\nimport { BCS, TxnBuilderTypes, Types } from \"aptos\";\nimport { NetworkInfo } from \"./types\";\n\n// old => new\nexport function convertNetwork(\n networkInfo: NetworkInfo | StandardNetworkInfo | null,\n): Network {\n switch (networkInfo?.name) {\n case \"mainnet\" as Network:\n return Network.MAINNET;\n case \"testnet\" as Network:\n return Network.TESTNET;\n case \"devnet\" as Network:\n return Network.DEVNET;\n case \"local\" as Network:\n return Network.LOCAL;\n default:\n throw new Error(\"Invalid Aptos network name\");\n }\n}\n\n// new => old\nexport function convertV2TransactionPayloadToV1BCSPayload(\n payload: TransactionPayload,\n): TxnBuilderTypes.TransactionPayload {\n const deserializer = new BCS.Deserializer(payload.bcsToBytes());\n return TxnBuilderTypes.TransactionPayload.deserialize(deserializer);\n}\n\nexport function convertV2PayloadToV1JSONPayload(\n payload: InputGenerateTransactionPayloadData,\n): Types.TransactionPayload {\n if (\"bytecode\" in payload) {\n // is a script payload\n throw new Error(\"script payload not supported\");\n // is multisig function payload\n } else if (\"multisigAddress\" in payload) {\n const stringTypeTags: string[] | undefined = payload.typeArguments?.map(\n (typeTag) => {\n if (typeTag instanceof TypeTag) {\n return typeTag.toString();\n }\n return typeTag;\n },\n );\n const newPayload: Types.TransactionPayload = {\n type: \"multisig_payload\",\n multisig_address: payload.multisigAddress.toString(),\n function: payload.function,\n type_arguments: stringTypeTags || [],\n arguments: payload.functionArguments,\n };\n\n return newPayload;\n } else {\n // is entry function payload\n const stringTypeTags: string[] | undefined = payload.typeArguments?.map(\n (typeTag) => {\n if (typeTag instanceof TypeTag) {\n return typeTag.toString();\n }\n return typeTag;\n },\n );\n const newPayload: Types.TransactionPayload = {\n type: \"entry_function_payload\",\n function: payload.function,\n type_arguments: stringTypeTags || [],\n arguments: payload.functionArguments,\n };\n\n return newPayload;\n }\n}\n\nexport function convertPayloadInputV1ToV2(inputV1: Types.TransactionPayload) {\n if (\"function\" in inputV1) {\n const inputV2: InputEntryFunctionData | InputMultiSigData = {\n function: inputV1.function as MoveFunctionId,\n functionArguments: inputV1.arguments,\n typeArguments: inputV1.type_arguments,\n };\n return inputV2;\n }\n\n throw new Error(\"Payload type not supported\");\n}\n\nexport async function generateTransactionPayloadFromV1Input(\n aptosConfig: AptosConfig,\n inputV1: Types.TransactionPayload,\n): Promise<TransactionPayloadEntryFunction> {\n if (\"function\" in inputV1) {\n const inputV2 = convertPayloadInputV1ToV2(inputV1);\n return generateTransactionPayload({ ...inputV2, aptosConfig });\n }\n\n throw new Error(\"Payload type not supported\");\n}\n\nexport interface CompatibleTransactionOptions {\n expireTimestamp?: number;\n expirationSecondsFromNow?: number;\n expirationTimestamp?: number;\n gasUnitPrice?: number;\n gas_unit_price?: number;\n maxGasAmount?: number;\n max_gas_amount?: number;\n sender?: string;\n sequenceNumber?: number;\n}\n","import {\n Aptos,\n AptosConfig,\n EntryFunctionArgumentTypes,\n Hex,\n Network,\n NetworkToNodeAPI,\n Serializable,\n SimpleEntryFunctionArgumentTypes,\n} from \"@aptos-labs/ts-sdk\";\nimport { NetworkInfo as StandardNetworkInfo } from \"@aptos-labs/wallet-standard\";\nimport { convertNetwork } from \"../LegacyWalletPlugins/conversion\";\nimport {\n InputTransactionData,\n NetworkInfo,\n} from \"../LegacyWalletPlugins/types\";\nimport { DappConfig } from \"../WalletCore\";\nimport { WalletSignAndSubmitMessageError } from \"../error\";\n\nexport function isMobile(): boolean {\n return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(\n navigator.userAgent,\n );\n}\n\nexport function isInAppBrowser(): boolean {\n const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(\n navigator.userAgent,\n );\n\n const isAndroid = /(Android).*Version\\/[\\d.]+.*Chrome\\/[^\\s]+ Mobile/i.test(\n navigator.userAgent,\n );\n\n return isIphone || isAndroid;\n}\n\nexport function isRedirectable(): boolean {\n // SSR: return false\n if (typeof navigator === \"undefined\" || !navigator) return false;\n\n // if we are on mobile and NOT in a in-app browser we will redirect to a wallet app\n\n return isMobile() && !isInAppBrowser();\n}\n\nexport function generalizedErrorMessage(error: any): string {\n return typeof error === \"object\" && \"message\" in error\n ? error.message\n : error;\n}\n\n// Helper function to check if input arguments are BCS serialized arguments.\n// In @aptos-labs/ts-sdk each move representative class extends\n// Serializable, so if each argument is of an instance of a class\n// the extends Serializable - we know these are BCS arguments\nexport const areBCSArguments = (\n args: Array<EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes>,\n): boolean => {\n // `every` returns true if the array is empty, so\n // first check the array length\n if (args.length === 0) return false;\n return args.every(\n (arg: EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes) =>\n arg instanceof Serializable,\n );\n};\n\n/**\n * Helper function to get AptosConfig that supports Aptos and Custom networks\n *\n * @param networkInfo\n * @param dappConfig\n * @returns AptosConfig\n */\nexport const getAptosConfig = (\n networkInfo: NetworkInfo | StandardNetworkInfo | null,\n dappConfig: DappConfig | undefined,\n): AptosConfig => {\n if (!networkInfo) {\n throw new Error(\"Undefined network\");\n }\n\n if (isAptosNetwork(networkInfo)) {\n const currentNetwork = convertNetwork(networkInfo);\n\n if (isAptosLiveNetwork(currentNetwork)) {\n const apiKey = dappConfig?.aptosApiKeys;\n return new AptosConfig({\n network: currentNetwork,\n clientConfig: { API_KEY: apiKey ? apiKey[currentNetwork] : undefined },\n });\n }\n\n return new AptosConfig({\n network: currentNetwork,\n });\n }\n\n // Custom networks are not supported, please ensure that the wallet is returning the appropriate network Mainnet, Testnet, Devnet, Local\n throw new Error(\n \"Invalid network, custom network not supported with Aptos wallet adapter to prevent user from using an unexpected network.\",\n );\n};\n\n/**\n * Helper function to resolve if the current connected network is an Aptos network\n *\n * @param networkInfo\n * @returns boolean\n */\nexport const isAptosNetwork = (\n networkInfo: NetworkInfo | StandardNetworkInfo | null,\n): boolean => {\n if (!networkInfo) {\n throw new Error(\"Undefined network\");\n }\n return NetworkToNodeAPI[networkInfo.name] !== undefined;\n};\n\nexport const isAptosLiveNetwork = (networkInfo: Network): boolean => {\n return (\n networkInfo === \"devnet\" ||\n networkInfo === \"testnet\" ||\n networkInfo === \"mainnet\"\n );\n};\n\n/**\n * Helper function to fetch Devnet chain id\n */\nexport const fetchDevnetChainId = async (): Promise<number> => {\n const aptos = new Aptos(); // default to devnet\n return await aptos.getChainId();\n};\n\n/**\n * A helper function to handle the publish package transaction.\n * The Aptos SDK expects the metadataBytes and byteCode to be Uint8Array, but in case the arguments are passed in\n * as a string, this function converts the string to Uint8Array.\n */\nexport const handlePublishPackageTransaction = (\n transactionInput: InputTransactionData,\n) => {\n // convert the first argument, metadataBytes, to uint8array if is a string\n let metadataBytes = transactionInput.data.functionArguments[0];\n if (typeof metadataBytes === \"string\") {\n metadataBytes = Hex.fromHexInput(metadataBytes).toUint8Array();\n }\n\n // convert the second argument, byteCode, to uint8array if is a string\n let byteCode = transactionInput.data.functionArguments[1];\n if (Array.isArray(byteCode)) {\n byteCode = byteCode.map((byte) => {\n if (typeof byte === \"string\") {\n return Hex.fromHexInput(byte).toUint8Array();\n }\n return byte;\n });\n } else {\n throw new WalletSignAndSubmitMessageError(\n \"The bytecode argument must be an array.\",\n ).message;\n }\n\n return { metadataBytes, byteCode };\n};\n","import { WalletName } from \"../LegacyWalletPlugins/types\";\n\nconst LOCAL_STORAGE_ITEM_KEY = \"AptosWalletName\";\n\nexport function setLocalStorage(walletName: WalletName) {\n localStorage.setItem(LOCAL_STORAGE_ITEM_KEY, walletName);\n}\n\nexport function removeLocalStorage() {\n localStorage.removeItem(LOCAL_STORAGE_ITEM_KEY);\n}\n\nexport function getLocalStorage() {\n localStorage.getItem(LOCAL_STORAGE_ITEM_KEY);\n}\n","export function scopePollingDetectionStrategy(detect: () => boolean): void {\n // Early return when server-side rendering\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return;\n\n const disposers: (() => void)[] = [];\n\n function detectAndDispose() {\n const detected = detect();\n if (detected) {\n for (const dispose of disposers) {\n dispose();\n }\n }\n }\n\n // Strategy #1: Try detecting every second.\n const interval =\n // TODO: #334 Replace with idle callback strategy.\n setInterval(detectAndDispose, 1000);\n disposers.push(() => clearInterval(interval));\n\n // Strategy #2: Detect as soon as the DOM becomes 'ready'/'interactive'.\n if (\n // Implies that `DOMContentLoaded` has not yet fired.\n document.readyState === \"loading\"\n ) {\n document.addEventListener(\"DOMContentLoaded\", detectAndDispose, {\n once: true,\n });\n disposers.push(() =>\n document.removeEventListener(\"DOMContentLoaded\", detectAndDispose),\n );\n }\n\n // Strategy #3: Detect after the `window` has fully loaded.\n if (\n // If the `complete` state has been reached, we're too late.\n document.readyState !== \"complete\"\n ) {\n window.addEventListener(\"load\", detectAndDispose, { once: true });\n disposers.push(() => window.removeEventListener(\"load\", detectAndDispose));\n }\n\n // Strategy #4: Detect synchronously, now.\n detectAndDispose();\n}\n","import { AptosStandardWallet } from \"../AIP62StandardWallets\";\nimport { WalletInfo } from \"../LegacyWalletPlugins\";\nimport { AnyAptosWallet } from \"../WalletCore\";\nimport { APTOS_CONNECT_BASE_URL, WalletReadyState } from \"../constants\";\nimport { isRedirectable } from \"./helpers\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n partitionFunction: (\n wallet: AnyAptosWallet,\n ) => boolean = isInstalledOrLoadable,\n) {\n const defaultWallets: Array<AnyAptosWallet> = [];\n const moreWallets: Array<AnyAptosWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet);\n else moreWallets.push(wallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(wallet: AnyAptosWallet) {\n return (\n wallet.readyState === WalletReadyState.Installed ||\n wallet.readyState === WalletReadyState.Loadable\n );\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(wallet: AnyAptosWallet) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n\n/** Returns `true` if the provided wallet is an Aptos Connect wallet. */\nexport function isAptosConnectWallet(\n wallet: WalletInfo | AnyAptosWallet | AptosStandardWallet,\n) {\n if (!wallet.url) return false;\n return wallet.url.startsWith(APTOS_CONNECT_BASE_URL);\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(wallets: ReadonlyArray<AnyAptosWallet>) {\n const { defaultWallets, moreWallets } = partitionWallets(\n wallets,\n isAptosConnectWallet,\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\nexport interface WalletSortingOptions {\n /** An optional function for sorting Aptos Connect wallets. */\n sortAptosConnectWallets?: (a: AnyAptosWallet, b: AnyAptosWallet) => number;\n /** An optional function for sorting wallets that are currently installed or loadable. */\n sortAvailableWallets?: (a: AnyAptosWallet, b: AnyAptosWallet) => number;\n /** An optional function for sorting wallets that are NOT currently installed or loadable. */\n sortInstallableWallets?: (a: AnyAptosWallet, b: AnyAptosWallet) => number;\n}\n\n/**\n * Partitions the `wallets` array into three distinct groups:\n *\n * `aptosConnectWallets` - Wallets that use social login to create accounts on\n * the blockchain via Aptos Connect.\n *\n * `availableWallets` - Wallets that are currently installed or loadable by the client.\n *\n * `installableWallets` - Wallets that are NOT current installed or loadable and\n * require the client to install a browser extension first.\n *\n * Additionally, these wallet groups can be sorted by passing sort functions via the `options` argument.\n */\nexport function groupAndSortWallets(\n wallets: ReadonlyArray<AnyAptosWallet>,\n options?: WalletSortingOptions,\n) {\n const { aptosConnectWallets, otherWallets } = getAptosConnectWallets(wallets);\n const { defaultWallets, moreWallets } = partitionWallets(otherWallets);\n\n if (options?.sortAptosConnectWallets) {\n aptosConnectWallets.sort(options.sortAptosConnectWallets);\n }\n if (options?.sortAvailableWallets) {\n defaultWallets.sort(options.sortAvailableWallets);\n }\n if (options?.sortInstallableWallets) {\n moreWallets.sort(options.sortInstallableWallets);\n }\n\n return {\n /** Wallets that use social login to create an account on the blockchain */\n aptosConnectWallets,\n /** Wallets that are currently installed or loadable. */\n availableWallets: defaultWallets,\n /** Wallets that are NOT currently installed or loadable. */\n installableWallets: moreWallets,\n };\n}\n","import { Types } from \"aptos\";\nimport {\n Network,\n InputGenerateTransactionOptions,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAddressInput,\n InputGenerateTransactionPayloadData,\n AnyRawTransaction,\n Signature,\n AccountAuthenticator,\n} from \"@aptos-labs/ts-sdk\";\nimport { WalletReadyState } from \"../constants\";\nimport {\n AptosSignAndSubmitTransactionOutput,\n AptosSignMessageOutput,\n UserResponse,\n AccountInfo as StandardAccountInfo,\n NetworkInfo as StandardNetworkInfo,\n AptosChangeNetworkMethod,\n AptosSignAndSubmitTransactionInput,\n} from \"@aptos-labs/wallet-standard\";\nimport { AptosStandardSupportedWallet } from \"../AIP62StandardWallets/types\";\n\nexport { TxnBuilderTypes, Types } from \"aptos\";\nexport type {\n InputGenerateTransactionData,\n InputGenerateTransactionOptions,\n AnyRawTransaction,\n InputSubmitTransactionData,\n PendingTransactionResponse,\n AccountAuthenticator,\n Network,\n} from \"@aptos-labs/ts-sdk\";\n\nexport type {\n NetworkInfo as StandardNetworkInfo,\n AptosChangeNetworkOutput,\n} from \"@aptos-labs/wallet-standard\";\n\n// WalletName is a nominal type that wallet adapters should use, e.g. `'MyCryptoWallet' as WalletName<'MyCryptoWallet'>`\nexport type WalletName<T extends string = string> = T & {\n __brand__: \"WalletName\";\n};\n\nexport type NetworkInfo = {\n name: Network;\n chainId?: string;\n url?: string;\n};\n\nexport type WalletInfo = {\n name: WalletName;\n icon: string;\n url: string;\n};\n\nexport type AccountInfo = {\n address: string;\n publicKey: string | string[];\n minKeysRequired?: number;\n ansName?: string | null;\n};\n\nexport interface AptosWalletErrorResult {\n code: number;\n name: string;\n message: string;\n}\n\nexport declare interface WalletCoreEvents {\n connect(account: AccountInfo | null): void;\n disconnect(): void;\n readyStateChange(wallet: Wallet): void;\n standardWalletsAdded(wallets: Wallet | AptosStandardSupportedWallet): void;\n networkChange(network: NetworkInfo | null): void;\n accountChange(account: AccountInfo | null): void;\n}\n\nexport interface SignMessagePayload {\n address?: boolean; // Should we include the address of the account in the message\n application?: boolean; // Should we include the domain of the dapp\n chainId?: boolean; // Should we include the current chain id the wallet is connected to\n message: string; // The message to be signed and displayed to the user\n nonce: string; // A nonce the dapp should generate\n}\n\nexport interface SignMessageResponse {\n address?: string;\n application?: string;\n chainId?: number;\n fullMessage: string; // The message that was generated to sign\n message: string; // The message passed in by the user\n nonce: string;\n prefix: \"APTOS\"; // Should always be APTOS\n signature: string | string[] | Signature; // The signed full message\n bitmap?: Uint8Array; // a 4-byte (32 bits) bit-vector of length N\n}\n\nexport type OnNetworkChange = (\n callBack: (networkInfo: NetworkInfo | StandardNetworkInfo) => Promise<void>,\n) => Promise<void>;\n\nexport type OnAccountChange = (\n callBack: (accountInfo: AccountInfo | StandardAccountInfo) => Promise<any>,\n) => Promise<void>;\n\nexport interface AdapterPluginEvents {\n onNetworkChange: OnNetworkChange;\n onAccountChange: OnAccountChange;\n}\n\n// TODO add signTransaction()\nexport interface AdapterPluginProps<Name extends string = string> {\n name: WalletName<Name>;\n url: string;\n icon: `data:image/${\"svg+xml\" | \"webp\" | \"png\" | \"gif\"};base64,${string}`;\n providerName?: string;\n provider: any;\n // Compatible with legacy wallet plugin\n deeplinkProvider?: (data: { url: string }) => string;\n // Comaptible with AIP-62 standard wallet\n openInMobileApp?: () => void;\n connect(): Promise<any>;\n disconnect: () => Promise<any>;\n network: () => Promise<any>;\n signAndSubmitTransaction?(\n transaction:\n | Types.TransactionPayload\n | InputTransactionData\n | AnyRawTransaction\n | AptosSignAndSubmitTransactionInput,\n options?: InputGenerateTransactionOptions,\n ): Promise<\n | { hash: Types.HexEncodedBytes; output?: any }\n | PendingTransactionResponse\n | UserResponse<AptosSignAndSubmitTransactionOutput>\n >;\n submitTransaction?(\n transaction: InputSubmitTransactionData,\n ): Promise<PendingTransactionResponse>;\n signMessage<T extends SignMessagePayload>(\n message: T,\n ): Promise<SignMessageResponse | UserResponse<AptosSignMessageOutput>>;\n signTransaction?( // `any` type for backwards compatibility, especially for identity connect\n transactionOrPayload: any,\n optionsOrAsFeePayer?: any,\n ): Promise<any>;\n account?: () => Promise<AccountInfo | StandardAccountInfo>;\n changeNetwork?: AptosChangeNetworkMethod;\n}\n\nexport type AdapterPlugin<Name extends string = string> =\n AdapterPluginProps<Name> & AdapterPluginEvents;\n\nexport type Wallet<Name extends string = string> = AdapterPlugin<Name> & {\n readyState?: WalletReadyState;\n isAIP62Standard?: boolean;\n isSignTransactionV1_1?: boolean;\n};\n\nexport interface TransactionOptions {\n max_gas_amount?: bigint;\n gas_unit_price?: bigint;\n}\n\nexport type InputTransactionData = {\n sender?: AccountAddressInput;\n data: InputGenerateTransactionPayloadData;\n options?: InputGenerateTransactionOptions;\n};\n\n// To be used by a wallet plugin\nexport interface PluginProvider {\n connect: () => Promise<AccountInfo>;\n account: () => Promise<AccountInfo>;\n disconnect: () => Promise<void>;\n signAndSubmitTransaction: (\n transaction: any,\n options?: any,\n ) => Promise<{ hash: Types.HexEncodedBytes } | AptosWalletErrorResult>;\n signMessage: (message: SignMessagePayload) => Promise<SignMessageResponse>;\n network: () => Promise<NetworkInfo>;\n onAccountChange: (\n listener: (newAddress: AccountInfo) => Promise<void>,\n ) => Promise<void>;\n onNetworkChange: OnNetworkChange;\n}\n","import {\n UserResponse,\n AptosSignTransactionInputV1_1,\n AptosSignTransactionOutput,\n AptosSignMessageOutput,\n AptosSignMessageInput,\n AptosWallet,\n UserResponseStatus,\n AptosSignAndSubmitTransactionOutput,\n AccountInfo as StandardAccountInfo,\n AptosConnectOutput,\n AptosSignTransactionOutputV1_1,\n} from \"@aptos-labs/wallet-standard\";\nimport {\n AnyPublicKey,\n AnyPublicKeyVariant,\n AnyRawTransaction,\n PendingTransactionResponse,\n Aptos,\n MultiEd25519Signature,\n MultiEd25519PublicKey,\n} from \"@aptos-labs/ts-sdk\";\n\nimport { WalletReadyState } from \"../constants\";\nimport {\n WalletConnectionError,\n WalletSignAndSubmitMessageError,\n WalletSignMessageAndVerifyError,\n WalletSignMessageError,\n} from \"../error\";\nimport {\n AccountInfo,\n InputTransactionData,\n Wallet,\n} from \"../LegacyWalletPlugins\";\nimport { generalizedErrorMessage } from \"../utils\";\n\nexport type AptosStandardWallet = AptosWallet & {\n readyState?: WalletReadyState;\n};\n\nexport class WalletStandardCore {\n async connect(wallet: Wallet) {\n const response =\n (await wallet.connect()) as UserResponse<AptosConnectOutput>;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\").message;\n }\n return response.args;\n }\n\n /**\n * Signs and submits a transaction to chain\n *\n * @param transactionInput InputTransactionData\n * @returns PendingTransactionResponse\n */\n async signAndSubmitTransaction(\n transactionInput: InputTransactionData,\n aptos: Aptos,\n account: AccountInfo,\n wallet: Wallet,\n standardWallets: ReadonlyArray<AptosStandardWallet>,\n ): Promise<AptosSignAndSubmitTransactionOutput> {\n try {\n // need to find the standard wallet type to do the\n // next features check\n const standardWallet = standardWallets.find(\n (standardWallet: AptosStandardWallet) =>\n wallet.name === standardWallet.name,\n );\n\n // check for backward compatibility. before version 1.1.0 the standard expected\n // AnyRawTransaction input so the adapter built the transaction before sending it to the wallet\n if (\n standardWallet?.features[\"aptos:signAndSubmitTransaction\"]?.version !==\n \"1.1.0\"\n ) {\n const transaction = await aptos.transaction.build.simple({\n sender: account.address.toString(),\n data: transactionInput.data,\n options: transactionInput.options,\n });\n const response = (await wallet.signAndSubmitTransaction!(\n transaction,\n )) as UserResponse<AptosSignAndSubmitTransactionOutput>;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n\n return response.args;\n }\n\n // build standard json format\n const transaction = {\n gasUnitPrice: transactionInput.options?.gasUnitPrice,\n maxGasAmount: transactionInput.options?.maxGasAmount,\n payload: transactionInput.data,\n };\n const response = (await wallet.signAndSubmitTransaction!(\n transaction,\n )) as UserResponse<AptosSignAndSubmitTransactionOutput>;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n\n return response.args;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignAndSubmitMessageError(errMsg).message;\n }\n }\n\n /**\n * Signs a transaction\n *\n * To support both existing wallet adapter V1 and V2, we support 2 input types\n *\n * @param transactionOrPayload AnyRawTransaction\n * @param options asFeePayer. To sign a transaction as the fee payer sponsor\n *\n * @returns AptosSignTransactionOutput\n */\n async signTransaction(\n transaction: AnyRawTransaction,\n wallet: Wallet,\n asFeePayer?: boolean,\n ): Promise<AptosSignTransactionOutput>;\n async signTransaction(\n input: AptosSignTransactionInputV1_1,\n wallet: Wallet,\n ): Promise<AptosSignTransactionOutputV1_1>;\n async signTransaction(\n transactionOrInput: AnyRawTransaction | AptosSignTransactionInputV1_1,\n wallet: Wallet,\n asFeePayer?: boolean,\n ): Promise<AptosSignTransactionOutput | AptosSignTransactionOutputV1_1> {\n const response = (await wallet.signTransaction!(\n transactionOrInput,\n asFeePayer,\n )) as UserResponse<AptosSignTransactionOutput>;\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\").message;\n }\n return response.args;\n }\n\n /**\n * Sign message\n *\n * @param message AptosSignMessageInput\n * @return AptosSignMessageOutput\n * @throws WalletSignMessageError\n */\n async signMessage(\n message: AptosSignMessageInput,\n wallet: Wallet,\n ): Promise<AptosSignMessageOutput> {\n try {\n const response = (await wallet.signMessage(\n message,\n )) as UserResponse<AptosSignMessageOutput>;\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return response.args;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageError(errMsg).message;\n }\n }\n\n /**\n * Signs a message and verifies the signer\n * @param message AptosSignMessageInput\n * @returns boolean\n */\n async signMessageAndVerify(\n message: AptosSignMessageInput,\n wallet: Wallet,\n ): Promise<boolean> {\n try {\n // sign the message\n const response = (await wallet.signMessage(\n message,\n )) as UserResponse<AptosSignMessageOutput>;\n // standard wallet account() method is a required method\n const account = (await wallet.account!()) as StandardAccountInfo;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"Failed to sign a message\").message;\n }\n\n // For Keyless wallet accounts we skip verification for now.\n // TODO: Remove when client-side verification is done in SDK.\n if (\n account.publicKey instanceof AnyPublicKey &&\n account.publicKey.variant === AnyPublicKeyVariant.Keyless\n ) {\n return true;\n }\n\n let verified = false;\n // if is a multi sig wallet with a MultiEd25519Signature type\n if (response.args.signature instanceof MultiEd25519Signature) {\n if (!(account.publicKey instanceof MultiEd25519PublicKey)) {\n throw new WalletSignMessageAndVerifyError(\n \"Public key and Signature type mismatch\",\n ).message;\n }\n const { fullMessage, signature } = response.args;\n const bitmap = signature.bitmap;\n if (bitmap) {\n const minKeysRequired = account.publicKey.threshold;\n if (signature.signatures.length < minKeysRequired) {\n verified = false;\n } else {\n verified = account.publicKey.verifySignature({\n message: new TextEncoder().encode(fullMessage),\n signature,\n });\n }\n }\n } else {\n verified = account.publicKey.verifySignature({\n message: new TextEncoder().encode(response.args.fullMessage),\n signature: response.args.signature,\n });\n }\n return verified;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageAndVerifyError(errMsg).message;\n }\n }\n}\n","export class GA4 {\n readonly aptosGAID: string | undefined = process.env.GAID;\n\n constructor() {\n // Inject Aptos Google Analytics 4 script\n this.injectGA(this.aptosGAID);\n }\n\n gtag(a: string, b: string | object, c?: object) {\n let dataLayer = (window as any).dataLayer || [];\n dataLayer.push(arguments);\n }\n\n private injectGA(gaID?: string) {\n if (typeof window === \"undefined\") return;\n if (!gaID) return;\n\n const head = document.getElementsByTagName(\"head\")[0];\n\n var myScript = document.createElement(\"script\");\n\n myScript.setAttribute(\n \"src\",\n `https://www.googletagmanager.com/gtag/js?id=${gaID}`,\n );\n\n const that = this;\n myScript.onload = function () {\n that.gtag(\"js\", new Date());\n that.gtag(\"config\", `${gaID}`, {\n send_page_view: false,\n });\n };\n\n head.insertBefore(myScript, head.children[1]);\n }\n}\n","import { WalletName } from \"../LegacyWalletPlugins/types\";\nimport { WalletReadyState } from \"../constants\";\nimport { AptosStandardSupportedWallet } from \"./types\";\n\n/**\n * Registry of AIP-62 wallet standard supported wallets.\n * This list is used to show supported wallets even if they are not installed on the user machine.\n *\n * AIP-62 compatible wallets are required to add their wallet info here if they want to be detected by the adapter\n *\n * @param name - The name of your wallet cast to WalletName (Ex. \"Petra\" as WalletName<\"Petra\">)\n * @param url - The link to your chrome extension or main website where new users can create an account with your wallet.\n * @param icon - An icon for your wallet. Can be one of 4 data types. Be sure to follow the below format exactly (including the literal \",\" after base64).\n * Format: `data:image/${\"svg+xml\" | \"webp\" | \"png\" | \"gif\"};base64,${string}`\n * Note: ${...} data in the above format should be replaced. Other characters are literals (ex. \";\")\n * @param deeplinkProvider optional - An optional deeplink provider for the wallet. If the wallet is not installed, we can redirect the user to the wallet's deeplink provider\n * @example \"https://myWallet.app/explore?link=\"\n */\nexport const aptosStandardSupportedWalletList: Array<AptosStandardSupportedWallet> =\n [\n {\n name: \"Nightly\" as WalletName<\"Nightly\">,\n url: \"https://nightly.app/\",\n icon: \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iV2Fyc3R3YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDg1MS41IDg1MS41IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA4NTEuNSA4NTEuNTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzYwNjdGOTt9DQoJLnN0MXtmaWxsOiNGN0Y3Rjc7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnIGlkPSJXYXJzdHdhXzJfMDAwMDAwMTQ2MDk2NTQyNTMxODA5NDY0NjAwMDAwMDg2NDc4NTIwMDIxMTY5MTg2ODhfIj4NCgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNCwwaDYwMy42YzY4LjUsMCwxMjQsNTUuNSwxMjQsMTI0djYwMy42YzAsNjguNS01NS41LDEyNC0xMjQsMTI0SDEyNGMtNjguNSwwLTEyNC01NS41LTEyNC0xMjRWMTI0DQoJCQlDMCw1NS41LDU1LjUsMCwxMjQsMHoiLz4NCgk8L2c+DQoJPGcgaWQ9IldhcnN0d2FfMyI+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02MjMuNSwxNzAuM2MtMzcuNCw1Mi4yLTg0LjIsODguNC0xMzkuNSwxMTIuNmMtMTkuMi01LjMtMzguOS04LTU4LjMtNy44Yy0xOS40LTAuMi0zOS4xLDIuNi01OC4zLDcuOA0KCQkJYy01NS4zLTI0LjMtMTAyLjEtNjAuMy0xMzkuNS0xMTIuNmMtMTEuMywyOC40LTU0LjgsMTI2LjQtMi42LDI2My40YzAsMC0xNi43LDcxLjUsMTQsMTMyLjljMCwwLDQ0LjQtMjAuMSw3OS43LDguMg0KCQkJYzM2LjksMjkuOSwyNS4xLDU4LjcsNTEuMSw4My41YzIyLjQsMjIuOSw1NS43LDIyLjksNTUuNywyMi45czMzLjMsMCw1NS43LTIyLjhjMjYtMjQuNywxNC4zLTUzLjUsNTEuMS04My41DQoJCQljMzUuMi0yOC4zLDc5LjctOC4yLDc5LjctOC4yYzMwLjYtNjEuNCwxNC0xMzIuOSwxNC0xMzIuOUM2NzguMywyOTYuNyw2MzQuOSwxOTguNyw2MjMuNSwxNzAuM3ogTTI1My4xLDQxNC44DQoJCQljLTI4LjQtNTguMy0zNi4yLTEzOC4zLTE4LjMtMjAxLjVjMjMuNyw2MCw1NS45LDg2LjksOTQuMiwxMTUuM0MzMTIuOCwzNjIuMywyODIuMywzOTQuMSwyNTMuMSw0MTQuOHogTTMzNC44LDUxNy41DQoJCQljLTIyLjQtOS45LTI3LjEtMjkuNC0yNy4xLTI5LjRjMzAuNS0xOS4yLDc1LjQtNC41LDc2LjgsNDAuOUMzNjAuOSw1MTQuNywzNTMsNTI1LjQsMzM0LjgsNTE3LjV6IE00MjUuNyw2NzguNw0KCQkJYy0xNiwwLTI5LTExLjUtMjktMjUuNnMxMy0yNS42LDI5LTI1LjZzMjksMTEuNSwyOSwyNS42QzQ1NC43LDY2Ny4zLDQ0MS43LDY3OC43LDQyNS43LDY3OC43eiBNNTE2LjcsNTE3LjUNCgkJCWMtMTguMiw4LTI2LTIuOC00OS43LDExLjVjMS41LTQ1LjQsNDYuMi02MC4xLDc2LjgtNDAuOUM1NDMuOCw0ODgsNTM5LDUwNy42LDUxNi43LDUxNy41eiBNNTk4LjMsNDE0LjgNCgkJCWMtMjkuMS0yMC43LTU5LjctNTIuNC03Ni04Ni4yYzM4LjMtMjguNCw3MC42LTU1LjQsOTQuMi0xMTUuM0M2MzQuNiwyNzYuNSw2MjYuOCwzNTYuNiw1OTguMyw0MTQuOHoiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n deeplinkProvider: \"nightly://v1?network=aptos&url=\",\n },\n {\n name: \"Petra\" as WalletName<\"Petra\">,\n url: \"https://chromewebstore.google.com/detail/petra-aptos-wallet/ejjladinnckdgjemekebdpeokbikhfci?hl=en\",\n icon: \"data:image/png;base64,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\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n deeplinkProvider: \"https://petra.app/explore?link=\",\n },\n {\n name: \"Pontem Wallet\" as WalletName<\"Pontem Wallet\">,\n url: \"https://pontem.network/pontem-wallet\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE4IDBDOC4wNzMwNCAwIDAgOC4wNzEzOSAwIDE3Ljk5NjNDMCAyNS4xMjk4IDQuMTczMTYgMzEuMzEwOCAxMC4yMDc2IDM0LjIyMDNWMzQuMjM1MUgxMC4yMzcyQzEyLjU4NiAzNS4zNjQ5IDE1LjIyMjggMzYgMTggMzZDMjcuOTI3IDM2IDM2IDI3LjkyODYgMzYgMTguMDAzN0MzNiA4LjA3MTM4IDI3LjkyNyAwIDE4IDBaTTE4IDEuNDc2OTJDMjcuMTA3MSAxLjQ3NjkyIDM0LjUyMjggOC44OTEwOCAzNC41MjI4IDE3Ljk5NjNDMzQuNTIyOCAyMC42MTA1IDMzLjkwOTcgMjMuMDkxNyAzMi44MjQgMjUuMjkyM0MzMC40NDU2IDI0LjE0MDMgMjguMDMwNCAyMy4yODM3IDI1LjU5MjkgMjIuNzAwM1Y4LjkyMDYyQzI1LjU5MjkgOC40NDA2MiAyNS4yMTYyIDguMDU2NjIgMjQuNzQzNSA4LjA1NjYySDIxLjcxNTJIMTQuMDg1NEgxMS4wNTdDMTAuNTkxNyA4LjA1NjYyIDEwLjIwNzYgOC40NDA2MiAxMC4yMDc2IDguOTIwNjJWMjIuNzY2OEM3Ljg0NDA3IDIzLjM1MDIgNS40OTUyOCAyNC4xOTIgMy4xODM0MiAyNS4yOTk3QzIuMDkwMjcgMjMuMDkxNyAxLjQ3NzIzIDIwLjYxNzggMS40NzcyMyAxNy45OTYzQzEuNDc3MjMgOC44OTEwOCA4Ljg5MjkgMS40NzY5MiAxOCAxLjQ3NjkyWk00LjEzNjIzIDI2Ljk2MTJDNi4wOTM1NiAyNS45OTM4IDguMTI0NzQgMjUuMjQ4IDEwLjIxNSAyNC43MzExVjMyLjU1ODhDNy43NDA2NiAzMS4yMzY5IDUuNjUwMzkgMjkuMzAyMiA0LjEzNjIzIDI2Ljk2MTJaTTE0LjA4NTQgMzQuMDQzMVYxNS42MDM3QzE0LjA4NTQgMTMuNDY5NSAxNS44MzU5IDExLjcwNDYgMTcuOTI2MSAxMS43MDQ2QzIwLjAxNjQgMTEuNzA0NiAyMS43MTUyIDEzLjQzMjYgMjEuNzE1MiAxNS41NTk0QzIxLjcxNTIgMTUuNTc0MiAyMS43MDc4IDE1LjU4ODkgMjEuNzA3OCAxNS42MDM3SDIxLjcxNTJWMjIuMDIwOUMxOS45MzUyIDIxLjgxNDIgMTguMTQ3NyAyMS43NDc3IDE2LjM2MDMgMjEuODQzN0wxNC44OTA0IDIzLjk3NzhDMTcuMTgwMSAyMy43ODU4IDE5LjQxMDcgMjMuODAwNiAyMS42MTE4IDI0LjA1MTdDMjEuNjM0IDI0LjA1MTcgMjEuNjQ4NyAyNC4wNTE3IDIxLjY3MDkgMjQuMDU5MUMyMS42ODU3IDI0LjA1OTEgMjEuNzAwNSAyNC4wNTkxIDIxLjcyMjYgMjQuMDY2NUMyMi4xMDY3IDI0LjExMDggMjMuNTAyNyAyNC4yODggMjQuNzgwNSAyNC42MDU1TDIxLjcyMjYgMjUuNjQ2OFYzNC4xMDIyQzIwLjUyNjEgMzQuMzc1NCAxOS4yODUyIDM0LjUzMDUgMTguMDE0OCAzNC41MzA1QzE2LjY0ODMgMzQuNTE1NyAxNS4zNDEgMzQuMzQ1OCAxNC4wODU0IDM0LjA0MzFaTTI1LjU4NTYgMzIuNjYyMlYyNC43NjhDMjcuNjY4NCAyNS4yOTIzIDI5LjcyOTIgMjYuMDYwMyAzMS43OTczIDI3LjA2NDZDMzAuMjQ2MiAyOS40MjAzIDI4LjEwNDIgMzEuMzU1MSAyNS41ODU2IDMyLjY2MjJaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjIyXzE2NzApIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjIyXzE2NzAiIHgxPSIxNy45OTk3IiB5MT0iMzYuNzc4OSIgeDI9IjE3Ljk5OTciIHkyPSItNS41MTk3OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMDg1OCIgc3RvcC1jb2xvcj0iIzhEMjlDMSIvPgo8c3RvcCBvZmZzZXQ9IjAuMjM4MyIgc3RvcC1jb2xvcj0iIzk0MkJCQiIvPgo8c3RvcCBvZmZzZXQ9IjAuNDY2NyIgc3RvcC1jb2xvcj0iI0E5MkZBQyIvPgo8c3RvcCBvZmZzZXQ9IjAuNzQxMyIgc3RvcC1jb2xvcj0iI0NBMzc5MyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGMDNGNzciLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n },\n ];\n","import { WALLET_ADAPTER_CORE_VERSION } from \"./version\";\n\nexport { type AnyAptosWallet, type DappConfig, WalletCore } from \"./WalletCore\";\nexport * from \"./LegacyWalletPlugins\";\nexport * from \"./constants\";\nexport * from \"./utils\";\nexport * from \"./AIP62StandardWallets\";\n\n// inject adapter core version to the window\nif (typeof window !== \"undefined\") {\n (window as any).WALLET_ADAPTER_CORE_VERSION = WALLET_ADAPTER_CORE_VERSION;\n}\n"],"mappings":"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","names":["TxnBuilderTypes","BCS","Network","Aptos","EventEmitter","UserResponseStatus","WalletReadyState","NetworkName","generateTransactionPayload","Network","AptosConfig","AptosConfig","isMobile","generateTransactionPayload","oldTransactionPayload","TxnBuilderTypes","Types","standardWallet","transaction","response","EventEmitter","wallet","aptosWallets","Aptos","UserResponseStatus","BCS","TxnBuilderTypes","Network"]}
1
+ {"version":3,"sources":["../src/version.ts","../src/WalletCore.ts","../src/ga/index.ts","../src/error/index.ts","../src/constants.ts","../src/utils/helpers.ts","../src/utils/localStorage.ts","../src/utils/walletSelector.ts","../src/registry.ts","../src/sdkWallets.ts","../src/index.ts"],"sourcesContent":["export const WALLET_ADAPTER_CORE_VERSION = \"5.0.1\";\n","import EventEmitter from \"eventemitter3\";\nimport {\n AccountAddress,\n AccountAuthenticator,\n AnyPublicKey,\n AnyPublicKeyVariant,\n AnyRawTransaction,\n Aptos,\n InputSubmitTransactionData,\n MultiEd25519PublicKey,\n MultiEd25519Signature,\n Network,\n NetworkToChainId,\n PendingTransactionResponse,\n} from \"@aptos-labs/ts-sdk\";\nimport {\n AptosWallet,\n getAptosWallets,\n isWalletWithRequiredFeatureSet,\n UserResponseStatus,\n AptosSignAndSubmitTransactionOutput,\n UserResponse,\n AptosSignTransactionOutputV1_1,\n AptosSignTransactionInputV1_1,\n AptosSignTransactionMethod,\n AptosSignTransactionMethodV1_1,\n NetworkInfo,\n AccountInfo,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AptosChangeNetworkOutput,\n} from \"@aptos-labs/wallet-standard\";\nimport { AptosConnectWalletConfig } from \"@aptos-connect/wallet-adapter-plugin\";\n\nexport type {\n NetworkInfo,\n AccountInfo,\n AptosSignAndSubmitTransactionOutput,\n AptosSignTransactionOutputV1_1,\n AptosSignMessageInput,\n AptosSignMessageOutput,\n AptosChangeNetworkOutput,\n} from \"@aptos-labs/wallet-standard\";\nexport type {\n AccountAuthenticator,\n AnyRawTransaction,\n InputGenerateTransactionOptions,\n PendingTransactionResponse,\n InputSubmitTransactionData,\n Network,\n} from \"@aptos-labs/ts-sdk\";\n\nimport { GA4 } from \"./ga\";\nimport {\n WalletChangeNetworkError,\n WalletAccountChangeError,\n WalletAccountError,\n WalletConnectionError,\n WalletGetNetworkError,\n WalletNetworkChangeError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n WalletSignAndSubmitMessageError,\n WalletSignMessageError,\n WalletSignTransactionError,\n WalletSignMessageAndVerifyError,\n WalletDisconnectionError,\n WalletSubmitTransactionError,\n} from \"./error\";\nimport { ChainIdToAnsSupportedNetworkMap, WalletReadyState } from \"./constants\";\nimport { WALLET_ADAPTER_CORE_VERSION } from \"./version\";\nimport {\n fetchDevnetChainId,\n generalizedErrorMessage,\n getAptosConfig,\n handlePublishPackageTransaction,\n isAptosNetwork,\n isRedirectable,\n removeLocalStorage,\n setLocalStorage,\n} from \"./utils\";\nimport { aptosStandardSupportedWalletList } from \"./registry\";\nimport { getSDKWallets } from \"./sdkWallets\";\nimport {\n AvailableWallets,\n AptosStandardSupportedWallet,\n InputTransactionData,\n} from \"./utils/types\";\n\n// An adapter wallet types is a wallet that is compatible with the wallet standard and the wallet adapter properties\nexport type AdapterWallet = AptosWallet & {\n readyState?: WalletReadyState;\n};\n\n// An adapter not detected wallet types is a wallet that is compatible with the wallet standard but not detected\nexport type AdapterNotDetectedWallet = Omit<\n AdapterWallet,\n \"features\" | \"version\" | \"chains\" | \"accounts\"\n> & {\n readyState: WalletReadyState.NotDetected;\n};\n\nexport interface DappConfig {\n network: Network;\n aptosApiKeys?: Partial<Record<Network, string>>;\n aptosConnectDappId?: string;\n aptosConnect?: Omit<AptosConnectWalletConfig, \"network\">;\n mizuwallet?: {\n manifestURL: string;\n appId?: string;\n };\n}\n\nexport declare interface WalletCoreEvents {\n connect(account: AccountInfo | null): void;\n disconnect(): void;\n standardWalletsAdded(wallets: AdapterWallet): void;\n standardNotDetectedWalletAdded(wallets: AdapterNotDetectedWallet): void;\n networkChange(network: NetworkInfo | null): void;\n accountChange(account: AccountInfo | null): void;\n}\n\nexport type AdapterAccountInfo = Omit<AccountInfo, \"ansName\"> & {\n // ansName is a read-only property on the standard AccountInfo type\n ansName?: string;\n};\n\nexport class WalletCore extends EventEmitter<WalletCoreEvents> {\n // Local private variable to hold the wallet that is currently connected\n private _wallet: AdapterWallet | null = null;\n\n // Local private variable to hold SDK wallets in the adapter\n private readonly _sdkWallets: AdapterWallet[] = [];\n\n // Local array that holds all the wallets that are AIP-62 standard compatible\n private _standard_wallets: AdapterWallet[] = [];\n\n // Local array that holds all the wallets that are AIP-62 standard compatible but are not installed on the user machine\n private _standard_not_detected_wallets: AdapterNotDetectedWallet[] = [];\n\n // Local private variable to hold the network that is currently connected\n private _network: NetworkInfo | null = null;\n\n // Local private variable to hold the wallet connected state\n private _connected: boolean = false;\n\n // Local private variable to hold the connecting state\n private _connecting: boolean = false;\n\n // Local private variable to hold the account that is currently connected\n private _account: AdapterAccountInfo | null = null;\n\n // JSON configuration for AptosConnect\n private _dappConfig: DappConfig | undefined;\n\n // Private array that holds all the Wallets a dapp decided to opt-in to\n private _optInWallets: ReadonlyArray<AvailableWallets> = [];\n\n // Local flag to disable the adapter telemetry tool\n private _disableTelemetry: boolean = false;\n\n // Google Analytics 4 module\n private readonly ga4: GA4 | null = null;\n\n constructor(\n optInWallets?: ReadonlyArray<AvailableWallets>,\n dappConfig?: DappConfig,\n disableTelemetry?: boolean\n ) {\n super();\n this._optInWallets = optInWallets || [];\n this._dappConfig = dappConfig;\n this._disableTelemetry = disableTelemetry ?? false;\n this._sdkWallets = getSDKWallets(this._dappConfig);\n\n // If disableTelemetry set to false (by default), start GA4\n if (!this._disableTelemetry) {\n this.ga4 = new GA4();\n }\n // Strategy to detect AIP-62 standard compatible extension wallets\n this.fetchExtensionAIP62AptosWallets();\n // Strategy to detect AIP-62 standard compatible SDK wallets.\n // We separate the extension and sdk detection process so we dont refetch sdk wallets everytime a new\n // extension wallet is detected\n this.fetchSDKAIP62AptosWallets();\n // Strategy to append not detected AIP-62 standard compatible extension wallets\n this.appendNotDetectedStandardSupportedWallets();\n }\n\n private fetchExtensionAIP62AptosWallets(): void {\n let { aptosWallets, on } = getAptosWallets();\n this.setExtensionAIP62Wallets(aptosWallets);\n\n if (typeof window === \"undefined\") return;\n // Adds an event listener for new wallets that get registered after the dapp has been loaded,\n // receiving an unsubscribe function, which it can later use to remove the listener\n const that = this;\n const removeRegisterListener = on(\"register\", function () {\n let { aptosWallets } = getAptosWallets();\n that.setExtensionAIP62Wallets(aptosWallets);\n });\n\n const removeUnregisterListener = on(\"unregister\", function () {\n let { aptosWallets } = getAptosWallets();\n that.setExtensionAIP62Wallets(aptosWallets);\n });\n }\n\n /**\n * Set AIP-62 extension wallets\n *\n * @param extensionwWallets\n */\n private setExtensionAIP62Wallets(\n extensionwWallets: readonly AptosWallet[]\n ): void {\n extensionwWallets.map((wallet: AdapterWallet) => {\n if (this.excludeWallet(wallet)) {\n return;\n }\n\n // Remove optional duplications in the _all_wallets array\n this._standard_wallets = this._standard_wallets.filter(\n (item) => item.name !== wallet.name\n );\n\n const isValid = isWalletWithRequiredFeatureSet(wallet);\n if (isValid) {\n // check if we already have this wallet as a not detected wallet\n const index = this._standard_not_detected_wallets.findIndex(\n (notDetctedWallet) => notDetctedWallet.name == wallet.name\n );\n // if we do, remove it from the not detected wallets array as it is now become detected\n if (index !== -1) {\n this._standard_not_detected_wallets.splice(index, 1);\n }\n\n wallet.readyState = WalletReadyState.Installed;\n this._standard_wallets.push(wallet);\n this.emit(\"standardWalletsAdded\", wallet);\n }\n });\n }\n\n /**\n * Set AIP-62 SDK wallets\n */\n private fetchSDKAIP62AptosWallets(): void {\n this._sdkWallets.map((wallet: AdapterWallet) => {\n if (this.excludeWallet(wallet)) {\n return;\n }\n const isValid = isWalletWithRequiredFeatureSet(wallet);\n\n if (isValid) {\n wallet.readyState = WalletReadyState.Installed;\n this._standard_wallets.push(wallet);\n }\n });\n }\n\n // Since we can't discover AIP-62 wallets that are not installed on the user machine,\n // we hold a AIP-62 wallets registry to show on the wallet selector modal for the users.\n // Append wallets from wallet standard support registry to the `_standard_not_detected_wallets` array\n // when wallet is not installed on the user machine\n private appendNotDetectedStandardSupportedWallets(): void {\n // Loop over the registry map\n aptosStandardSupportedWalletList.map((supportedWallet) => {\n // Check if we already have this wallet as a detected AIP-62 wallet standard\n const existingStandardWallet = this._standard_wallets.find(\n (wallet) => wallet.name == supportedWallet.name\n );\n // If it is detected, it means the user has the wallet installed, so dont add it to the wallets array\n if (existingStandardWallet) {\n return;\n }\n // If AIP-62 wallet detected but it is excluded by the dapp, dont add it to the wallets array\n if (this.excludeWallet(supportedWallet)) {\n return;\n }\n // If AIP-62 wallet does not exist, append it to the wallet selector modal\n // as an undetected wallet\n if (!existingStandardWallet) {\n this._standard_not_detected_wallets.push(supportedWallet);\n this.emit(\"standardNotDetectedWalletAdded\", supportedWallet);\n }\n });\n }\n\n /**\n * A function that excludes an AIP-62 compatible wallet the dapp doesnt want to include\n *\n * @param wallet AdapterWallet | AdapterNotDetectedWallet\n * @returns boolean\n */\n excludeWallet(wallet: AdapterWallet | AdapterNotDetectedWallet): boolean {\n // If _optInWallets is not empty, and does not include the provided wallet,\n // return true to exclude the wallet, otherwise return false\n if (\n this._optInWallets.length > 0 &&\n !this._optInWallets.includes(wallet.name as AvailableWallets)\n ) {\n return true;\n }\n return false;\n }\n\n private recordEvent(eventName: string, additionalInfo?: object): void {\n this.ga4?.gtag(\"event\", `wallet_adapter_${eventName}`, {\n wallet: this._wallet?.name,\n network: this._network?.name,\n network_url: this._network?.url,\n adapter_core_version: WALLET_ADAPTER_CORE_VERSION,\n send_to: process.env.GAID,\n ...additionalInfo,\n });\n }\n\n /**\n * Helper function to ensure wallet exists\n *\n * @param wallet A wallet\n */\n private ensureWalletExists(\n wallet: AdapterWallet | null\n ): asserts wallet is AdapterWallet {\n if (!wallet) {\n throw new WalletNotConnectedError().name;\n }\n if (!(wallet.readyState === WalletReadyState.Installed))\n throw new WalletNotReadyError(\"Wallet is not set\").name;\n }\n\n /**\n * Helper function to ensure account exists\n *\n * @param account An account\n */\n private ensureAccountExists(\n account: AccountInfo | null\n ): asserts account is AccountInfo {\n if (!account) {\n throw new WalletAccountError(\"Account is not set\").name;\n }\n }\n\n /**\n * Queries and sets ANS name for the current connected wallet account\n */\n private async setAnsName(): Promise<void> {\n if (this._network?.chainId && this._account) {\n if (this._account.ansName) return;\n // ANS supports only MAINNET or TESTNET\n if (\n !ChainIdToAnsSupportedNetworkMap[this._network.chainId] ||\n !isAptosNetwork(this._network)\n ) {\n this._account.ansName = undefined;\n return;\n }\n\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n const name = await aptos.ans.getPrimaryName({\n address: this._account.address.toString(),\n });\n\n this._account.ansName = name;\n }\n }\n\n /**\n * Function to cleat wallet adapter data.\n *\n * - Removes current connected wallet state\n * - Removes current connected account state\n * - Removes current connected network state\n * - Removes autoconnect local storage value\n */\n private clearData(): void {\n this._connected = false;\n this.setWallet(null);\n this.setAccount(null);\n this.setNetwork(null);\n removeLocalStorage();\n }\n\n /**\n * Sets the connected wallet\n *\n * @param wallet A wallet\n */\n setWallet(wallet: AptosWallet | null): void {\n this._wallet = wallet;\n }\n\n /**\n * Sets the connected account\n *\n * @param account An account\n */\n setAccount(account: AccountInfo | null): void {\n this._account = account;\n }\n\n /**\n * Sets the connected network\n *\n * @param network A network\n */\n setNetwork(network: NetworkInfo | null): void {\n this._network = network;\n }\n\n /**\n * Helper function to detect whether a wallet is connected\n *\n * @returns boolean\n */\n isConnected(): boolean {\n return this._connected;\n }\n\n /**\n * Getter to fetch all detected wallets\n */\n get wallets(): ReadonlyArray<AptosWallet> {\n return this._standard_wallets;\n }\n\n get notDetectedWallets(): ReadonlyArray<AdapterNotDetectedWallet> {\n return this._standard_not_detected_wallets;\n }\n\n /**\n * Getter for the current connected wallet\n *\n * @return wallet info\n * @throws WalletNotSelectedError\n */\n get wallet(): AptosWallet | null {\n try {\n if (!this._wallet) return null;\n return this._wallet;\n } catch (error: any) {\n throw new WalletNotSelectedError(error).message;\n }\n }\n\n /**\n * Getter for the current connected account\n *\n * @return account info\n * @throws WalletAccountError\n */\n get account(): AccountInfo | null {\n try {\n return this._account;\n } catch (error: any) {\n throw new WalletAccountError(error).message;\n }\n }\n\n /**\n * Getter for the current wallet network\n *\n * @return network info\n * @throws WalletGetNetworkError\n */\n get network(): NetworkInfo | null {\n try {\n return this._network;\n } catch (error: any) {\n throw new WalletGetNetworkError(error).message;\n }\n }\n\n /**\n * Helper function to run some checks before we connect with a wallet.\n *\n * @param walletName. The wallet name we want to connect with.\n */\n async connect(walletName: string): Promise<void | string> {\n // Checks the wallet exists in the detected wallets array\n const allDetectedWallets = this._standard_wallets;\n\n const selectedWallet = allDetectedWallets.find(\n (wallet: AdapterWallet) => wallet.name === walletName\n );\n\n if (!selectedWallet) return;\n\n // Check if wallet is already connected\n if (this._connected) {\n // if the selected wallet is already connected, we don't need to connect again\n if (this._wallet?.name === walletName)\n throw new WalletConnectionError(\n `${walletName} wallet is already connected`\n ).message;\n }\n\n // Check if we are in a redirectable view (i.e on mobile AND not in an in-app browser)\n // Ignore if wallet is installed (iOS extension)\n if (isRedirectable()) {\n if (selectedWallet.readyState === WalletReadyState.Installed) {\n // If wallet has a openInMobileApp method, use it\n if (selectedWallet.features[\"aptos:openInMobileApp\"]?.openInMobileApp) {\n selectedWallet.features[\"aptos:openInMobileApp\"]?.openInMobileApp();\n return;\n }\n }\n\n if (selectedWallet.readyState === WalletReadyState.NotDetected) {\n // If wallet has a deeplinkProvider property, i.e wallet is on the internal registry, use it\n const uninstalledWallet =\n selectedWallet as unknown as AptosStandardSupportedWallet;\n if (uninstalledWallet.deeplinkProvider) {\n const url = encodeURIComponent(window.location.href);\n const location = uninstalledWallet.deeplinkProvider.concat(url);\n window.location.href = location;\n return;\n }\n }\n }\n\n // Now we can connect to the wallet\n await this.connectWallet(selectedWallet);\n }\n\n /**\n * Connects a wallet to the dapp.\n * On connect success, we set the current account and the network, and keeping the selected wallet\n * name in LocalStorage to support autoConnect function.\n *\n * @param selectedWallet. The wallet we want to connect.\n * @emit emits \"connect\" event\n * @throws WalletConnectionError\n */\n async connectWallet(selectedWallet: AdapterWallet): Promise<void> {\n try {\n this._connecting = true;\n this.setWallet(selectedWallet);\n const response = await selectedWallet.features[\"aptos:connect\"].connect();\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n const account = response.args;\n this.setAccount(account);\n const network = await selectedWallet.features[\"aptos:network\"].network();\n this.setNetwork(network);\n await this.setAnsName();\n setLocalStorage(selectedWallet.name);\n this._connected = true;\n this.recordEvent(\"wallet_connect\");\n this.emit(\"connect\", account);\n } catch (error: any) {\n this.clearData();\n const errMsg = generalizedErrorMessage(error);\n throw new WalletConnectionError(errMsg).message;\n } finally {\n this._connecting = false;\n }\n }\n\n /**\n * Disconnect the current connected wallet. On success, we clear the\n * current account, current network and LocalStorage data.\n *\n * @emit emits \"disconnect\" event\n * @throws WalletDisconnectionError\n */\n async disconnect(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.features[\"aptos:disconnect\"].disconnect();\n this.clearData();\n this.recordEvent(\"wallet_disconnect\");\n this.emit(\"disconnect\");\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletDisconnectionError(errMsg).message;\n }\n }\n\n /**\n * Signs and submits a transaction to chain\n *\n * @param transactionInput InputTransactionData\n * @returns AptosSignAndSubmitTransactionOutput\n */\n async signAndSubmitTransaction(\n transactionInput: InputTransactionData\n ): Promise<AptosSignAndSubmitTransactionOutput> {\n try {\n if (\"function\" in transactionInput.data) {\n if (\n transactionInput.data.function ===\n \"0x1::account::rotate_authentication_key_call\"\n ) {\n throw new WalletSignAndSubmitMessageError(\"SCAM SITE DETECTED\")\n .message;\n }\n\n if (\n transactionInput.data.function === \"0x1::code::publish_package_txn\"\n ) {\n ({\n metadataBytes: transactionInput.data.functionArguments[0],\n byteCode: transactionInput.data.functionArguments[1],\n } = handlePublishPackageTransaction(transactionInput));\n }\n }\n this.ensureWalletExists(this._wallet);\n this.ensureAccountExists(this._account);\n this.recordEvent(\"sign_and_submit_transaction\");\n\n if (this._wallet.features[\"aptos:signAndSubmitTransaction\"]) {\n // check for backward compatibility. before version 1.1.0 the standard expected\n // AnyRawTransaction input so the adapter built the transaction before sending it to the wallet\n if (\n this._wallet.features[\"aptos:signAndSubmitTransaction\"].version !==\n \"1.1.0\"\n ) {\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n\n const aptos = new Aptos(aptosConfig);\n const transaction = await aptos.transaction.build.simple({\n sender: this._account.address.toString(),\n data: transactionInput.data,\n options: transactionInput.options,\n });\n\n type AptosSignAndSubmitTransactionV1Method = (\n transaction: AnyRawTransaction\n ) => Promise<UserResponse<AptosSignAndSubmitTransactionOutput>>;\n\n const signAndSubmitTransactionMethod = this._wallet.features[\n \"aptos:signAndSubmitTransaction\"\n ]\n .signAndSubmitTransaction as unknown as AptosSignAndSubmitTransactionV1Method;\n\n const response = (await signAndSubmitTransactionMethod(\n transaction\n )) as UserResponse<AptosSignAndSubmitTransactionOutput>;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n\n return response.args;\n }\n\n const response = await this._wallet.features[\n \"aptos:signAndSubmitTransaction\"\n ].signAndSubmitTransaction({\n payload: transactionInput.data,\n gasUnitPrice: transactionInput.options?.gasUnitPrice,\n maxGasAmount: transactionInput.options?.maxGasAmount,\n });\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return response.args;\n }\n\n // If wallet does not support signAndSubmitTransaction\n // the adapter will sign and submit it for the dapp.\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n const transaction = await aptos.transaction.build.simple({\n sender: this._account.address,\n data: transactionInput.data,\n options: transactionInput.options,\n });\n\n const signTransactionResponse = await this.signTransaction({\n transactionOrPayload: transaction,\n });\n const response = await this.submitTransaction({\n transaction,\n senderAuthenticator: signTransactionResponse.authenticator,\n });\n return { hash: response.hash };\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignAndSubmitMessageError(errMsg).message;\n }\n }\n\n /**\n * Signs a transaction\n *\n * This method supports 2 input types -\n * 1. A raw transaction that was already built by the dapp,\n * 2. A transaction data input as JSON. This is for the wallet to be able to simulate before signing\n *\n * @param transactionOrPayload AnyRawTransaction | InputTransactionData\n * @param asFeePayer optional. A flag indicates to sign the transaction as the fee payer\n * @param options optional. Transaction options\n *\n * @returns AccountAuthenticator\n */\n async signTransaction(args: {\n transactionOrPayload: AnyRawTransaction | InputTransactionData;\n asFeePayer?: boolean;\n }): Promise<{\n authenticator: AccountAuthenticator;\n rawTransaction: Uint8Array;\n }> {\n const { transactionOrPayload, asFeePayer } = args;\n /**\n * All standard compatible wallets should support AnyRawTransaction for signTransaction version 1.0.0\n * For standard signTransaction version 1.1.0, the standard expects a transaction input\n *\n * So, if the input is AnyRawTransaction, we can directly call the wallet's signTransaction method\n *\n *\n * If the input is InputTransactionData, we need to\n * 1. check if the wallet supports signTransaction version 1.1.0 - if so, we convert the input to the standard expected input\n * 2. if it does not support signTransaction version 1.1.0, we convert it to a rawTransaction input and call the wallet's signTransaction method\n */\n\n try {\n this.ensureWalletExists(this._wallet);\n this.ensureAccountExists(this._account);\n this.recordEvent(\"sign_transaction\");\n\n // dapp sends a generated transaction (i.e AnyRawTransaction), which is supported by the wallet standard at signTransaction version 1.0.0\n if (\"rawTransaction\" in transactionOrPayload) {\n const response = (await this._wallet?.features[\n \"aptos:signTransaction\"\n ].signTransaction(\n transactionOrPayload,\n asFeePayer\n )) as UserResponse<AccountAuthenticator>;\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return {\n authenticator: response.args,\n rawTransaction: transactionOrPayload.rawTransaction.bcsToBytes(),\n };\n } // dapp sends a transaction data input (i.e InputTransactionData), which is supported by the wallet standard at signTransaction version 1.1.0\n else if (\n this._wallet.features[\"aptos:signTransaction\"]?.version === \"1.1\"\n ) {\n // convert input to standard expected input\n const signTransactionV1_1StandardInput: AptosSignTransactionInputV1_1 =\n {\n payload: transactionOrPayload.data,\n expirationTimestamp:\n transactionOrPayload.options?.expirationTimestamp,\n expirationSecondsFromNow:\n transactionOrPayload.options?.expirationSecondsFromNow,\n gasUnitPrice: transactionOrPayload.options?.gasUnitPrice,\n maxGasAmount: transactionOrPayload.options?.maxGasAmount,\n sequenceNumber: transactionOrPayload.options?.accountSequenceNumber,\n sender: transactionOrPayload.sender\n ? { address: AccountAddress.from(transactionOrPayload.sender) }\n : undefined,\n };\n\n const walletSignTransactionMethod = this._wallet?.features[\n \"aptos:signTransaction\"\n ].signTransaction as AptosSignTransactionMethod &\n AptosSignTransactionMethodV1_1;\n\n const response = (await walletSignTransactionMethod(\n signTransactionV1_1StandardInput\n )) as UserResponse<AptosSignTransactionOutputV1_1>;\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return {\n authenticator: response.args.authenticator,\n rawTransaction: response.args.rawTransaction.bcsToBytes(),\n };\n } else {\n // dapp input is InputTransactionData but the wallet does not support it, so we convert it to a rawTransaction\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n\n const transaction = await aptos.transaction.build.simple({\n sender: this._account.address,\n data: transactionOrPayload.data,\n options: transactionOrPayload.options,\n });\n\n const response = (await this._wallet?.features[\n \"aptos:signTransaction\"\n ].signTransaction(\n transaction,\n asFeePayer\n )) as UserResponse<AccountAuthenticator>;\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n\n return {\n authenticator: response.args,\n rawTransaction: transaction.bcsToBytes(),\n };\n }\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignTransactionError(errMsg).message;\n }\n }\n\n /**\n * Sign a message (doesnt submit to chain).\n *\n * @param message - AptosSignMessageInput\n *\n * @return response from the wallet's signMessage function\n * @throws WalletSignMessageError\n */\n async signMessage(\n message: AptosSignMessageInput\n ): Promise<AptosSignMessageOutput> {\n try {\n this.ensureWalletExists(this._wallet);\n this.recordEvent(\"sign_message\");\n\n const response =\n await this._wallet?.features[\"aptos:signMessage\"]?.signMessage(message);\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return response.args;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageError(errMsg).message;\n }\n }\n\n /**\n * Submits transaction to chain\n *\n * @param transaction - InputSubmitTransactionData\n * @returns PendingTransactionResponse\n */\n async submitTransaction(\n transaction: InputSubmitTransactionData\n ): Promise<PendingTransactionResponse> {\n // The standard does not support submitTransaction, so we use the adapter to submit the transaction\n try {\n this.ensureWalletExists(this._wallet);\n\n const { additionalSignersAuthenticators } = transaction;\n const transactionType =\n additionalSignersAuthenticators !== undefined\n ? \"multi-agent\"\n : \"simple\";\n this.recordEvent(\"submit_transaction\", {\n transaction_type: transactionType,\n });\n\n const aptosConfig = getAptosConfig(this._network, this._dappConfig);\n const aptos = new Aptos(aptosConfig);\n if (additionalSignersAuthenticators !== undefined) {\n const multiAgentTxn = {\n ...transaction,\n additionalSignersAuthenticators,\n };\n return aptos.transaction.submit.multiAgent(multiAgentTxn);\n } else {\n return aptos.transaction.submit.simple(transaction);\n }\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSubmitTransactionError(errMsg).message;\n }\n }\n\n /**\n Event for when account has changed on the wallet\n @return the new account info\n @throws WalletAccountChangeError\n */\n async onAccountChange(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.features[\"aptos:onAccountChange\"]?.onAccountChange(\n async (data: AccountInfo) => {\n this.setAccount(data);\n await this.setAnsName();\n this.recordEvent(\"account_change\");\n this.emit(\"accountChange\", this._account);\n }\n );\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletAccountChangeError(errMsg).message;\n }\n }\n\n /**\n Event for when network has changed on the wallet\n @return the new network info\n @throws WalletNetworkChangeError\n */\n async onNetworkChange(): Promise<void> {\n try {\n this.ensureWalletExists(this._wallet);\n await this._wallet.features[\"aptos:onNetworkChange\"]?.onNetworkChange(\n async (data: NetworkInfo) => {\n this.setNetwork(data);\n await this.setAnsName();\n this.emit(\"networkChange\", this._network);\n }\n );\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletNetworkChangeError(errMsg).message;\n }\n }\n\n /**\n * Sends a change network request to the wallet to change the connected network\n *\n * @param network - Network\n * @returns AptosChangeNetworkOutput\n */\n async changeNetwork(network: Network): Promise<AptosChangeNetworkOutput> {\n try {\n this.ensureWalletExists(this._wallet);\n this.recordEvent(\"change_network_request\", {\n from: this._network?.name,\n to: network,\n });\n const chainId =\n network === Network.DEVNET\n ? await fetchDevnetChainId()\n : NetworkToChainId[network];\n\n const networkInfo: NetworkInfo = {\n name: network,\n chainId,\n };\n\n if (this._wallet.features[\"aptos:changeNetwork\"]) {\n const response =\n await this._wallet.features[\"aptos:changeNetwork\"].changeNetwork(\n networkInfo\n );\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"User has rejected the request\")\n .message;\n }\n return response.args;\n }\n\n throw new WalletChangeNetworkError(\n `${this._wallet.name} does not support changing network request`\n ).message;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletChangeNetworkError(errMsg).message;\n }\n }\n\n /**\n * Signs a message and verifies the signer\n * @param message - AptosSignMessageInput\n * @returns boolean\n */\n async signMessageAndVerify(message: AptosSignMessageInput): Promise<boolean> {\n try {\n this.ensureWalletExists(this._wallet);\n this.ensureAccountExists(this._account);\n this.recordEvent(\"sign_message_and_verify\");\n\n try {\n // sign the message\n const response = (await this._wallet.features[\n \"aptos:signMessage\"\n ].signMessage(message)) as UserResponse<AptosSignMessageOutput>;\n\n if (response.status === UserResponseStatus.REJECTED) {\n throw new WalletConnectionError(\"Failed to sign a message\").message;\n }\n\n // For Keyless wallet accounts we skip verification for now.\n // TODO: Remove when client-side verification is done in SDK.\n if (\n this._account.publicKey instanceof AnyPublicKey &&\n this._account.publicKey.variant === AnyPublicKeyVariant.Keyless\n ) {\n return true;\n }\n\n let verified = false;\n // if is a multi sig wallet with a MultiEd25519Signature type\n if (response.args.signature instanceof MultiEd25519Signature) {\n if (!(this._account.publicKey instanceof MultiEd25519PublicKey)) {\n throw new WalletSignMessageAndVerifyError(\n \"Public key and Signature type mismatch\"\n ).message;\n }\n const { fullMessage, signature } = response.args;\n const bitmap = signature.bitmap;\n if (bitmap) {\n const minKeysRequired = this._account.publicKey.threshold;\n if (signature.signatures.length < minKeysRequired) {\n verified = false;\n } else {\n verified = this._account.publicKey.verifySignature({\n message: new TextEncoder().encode(fullMessage),\n signature,\n });\n }\n }\n } else {\n verified = this._account.publicKey.verifySignature({\n message: new TextEncoder().encode(response.args.fullMessage),\n signature: response.args.signature,\n });\n }\n return verified;\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageAndVerifyError(errMsg).message;\n }\n } catch (error: any) {\n const errMsg = generalizedErrorMessage(error);\n throw new WalletSignMessageAndVerifyError(errMsg).message;\n }\n }\n}\n","export class GA4 {\n readonly aptosGAID: string | undefined = process.env.GAID;\n\n constructor() {\n // Inject Aptos Google Analytics 4 script\n this.injectGA(this.aptosGAID);\n }\n\n gtag(a: string, b: string | object, c?: object) {\n let dataLayer = (window as any).dataLayer || [];\n dataLayer.push(arguments);\n }\n\n private injectGA(gaID?: string) {\n if (typeof window === \"undefined\") return;\n if (!gaID) return;\n\n const head = document.getElementsByTagName(\"head\")[0];\n\n var myScript = document.createElement(\"script\");\n\n myScript.setAttribute(\n \"src\",\n `https://www.googletagmanager.com/gtag/js?id=${gaID}`,\n );\n\n const that = this;\n myScript.onload = function () {\n that.gtag(\"js\", new Date());\n that.gtag(\"config\", `${gaID}`, {\n send_page_view: false,\n });\n };\n\n head.insertBefore(myScript, head.children[1]);\n }\n}\n","export class WalletError extends Error {\n public error: any;\n\n constructor(message?: string, error?: any) {\n super(message);\n this.error = error;\n }\n}\n\nexport class WalletNotSelectedError extends WalletError {\n name = \"WalletNotSelectedError\";\n}\n\nexport class WalletNotReadyError extends WalletError {\n name = \"WalletNotReadyError\";\n}\n\nexport class WalletLoadError extends WalletError {\n name = \"WalletLoadError\";\n}\n\nexport class WalletConfigError extends WalletError {\n name = \"WalletConfigError\";\n}\n\nexport class WalletConnectionError extends WalletError {\n name = \"WalletConnectionError\";\n}\n\nexport class WalletDisconnectedError extends WalletError {\n name = \"WalletDisconnectedError\";\n}\n\nexport class WalletDisconnectionError extends WalletError {\n name = \"WalletDisconnectionError\";\n}\n\nexport class WalletAccountError extends WalletError {\n name = \"WalletAccountError\";\n}\nexport class WalletGetNetworkError extends WalletError {\n name = \"WalletGetNetworkError\";\n}\n\nexport class WalletAccountChangeError extends WalletError {\n name = \"WalletAccountChangeError\";\n}\n\nexport class WalletNetworkChangeError extends WalletError {\n name = \"WalletNetworkChangeError\";\n}\n\nexport class WalletPublicKeyError extends WalletError {\n name = \"WalletPublicKeyError\";\n}\n\nexport class WalletKeypairError extends WalletError {\n name = \"WalletKeypairError\";\n}\n\nexport class WalletNotConnectedError extends WalletError {\n name = \"WalletNotConnectedError\";\n}\n\nexport class WalletSendTransactionError extends WalletError {\n name = \"WalletSendTransactionError\";\n}\n\nexport class WalletSignMessageError extends WalletError {\n name = \"WalletSignMessageError\";\n}\n\nexport class WalletSignMessageAndVerifyError extends WalletError {\n name = \"WalletSignMessageAndVerifyError\";\n}\n\nexport class WalletSignAndSubmitMessageError extends WalletError {\n name = \"WalletSignAndSubmitMessageError\";\n}\n\nexport class WalletSignTransactionError extends WalletError {\n name = \"WalletSignTransactionError\";\n}\n\nexport class WalletTimeoutError extends WalletError {\n name = \"WalletTimeoutError\";\n}\n\nexport class WalletWindowBlockedError extends WalletError {\n name = \"WalletWindowBlockedError\";\n}\n\nexport class WalletWindowClosedError extends WalletError {\n name = \"WalletWindowClosedError\";\n}\n\nexport class WalletResponseError extends WalletError {\n name = \"WalletResponseError\";\n}\n\nexport class WalletNotSupportedMethod extends WalletError {\n name = \"WalletNotSupportedMethod\";\n}\n\nexport class WalletChangeNetworkError extends WalletError {\n name = \"WalletChangeNetworkError\";\n}\n\nexport class WalletSubmitTransactionError extends WalletError {\n name = \"WalletSubmitTransactionError\";\n}\n","export enum WalletReadyState {\n /**\n * Wallet can only be in one of two states - installed or not installed\n * Installed: wallets are detected by the browser event listeners and means they are installed on the user's browser.\n * NotDetected: wallets are not detected by the browser event listeners and means they are not installed on the user's browser.\n */\n Installed = \"Installed\",\n NotDetected = \"NotDetected\",\n}\n\nexport enum NetworkName {\n Mainnet = \"mainnet\",\n Testnet = \"testnet\",\n Devnet = \"devnet\",\n}\n\nexport const ChainIdToAnsSupportedNetworkMap: Record<string, string> = {\n \"1\": \"mainnet\", // mainnet\n \"2\": \"testnet\", // testnet\n};\n\n/** The base URL for all Aptos Connect wallets. */\nexport const APTOS_CONNECT_BASE_URL = \"https://aptosconnect.app\";\n\n/** The URL to the Aptos Connect account page if the user is signed in to Aptos Connect. */\nexport const APTOS_CONNECT_ACCOUNT_URL =\n \"https://aptosconnect.app/dashboard/main-account\";\n","import {\n Aptos,\n AptosConfig,\n Hex,\n Network,\n NetworkToNodeAPI,\n} from \"@aptos-labs/ts-sdk\";\nimport {\n NetworkInfo,\n NetworkInfo as StandardNetworkInfo,\n} from \"@aptos-labs/wallet-standard\";\n\nimport { DappConfig } from \"../WalletCore\";\nimport { WalletSignAndSubmitMessageError } from \"../error\";\nimport { InputTransactionData } from \"./types\";\n\nexport function isMobile(): boolean {\n return /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/i.test(\n navigator.userAgent\n );\n}\n\nexport function isInAppBrowser(): boolean {\n const isIphone = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(\n navigator.userAgent\n );\n\n const isAndroid = /(Android).*Version\\/[\\d.]+.*Chrome\\/[^\\s]+ Mobile/i.test(\n navigator.userAgent\n );\n\n return isIphone || isAndroid;\n}\n\nexport function isRedirectable(): boolean {\n // SSR: return false\n if (typeof navigator === \"undefined\" || !navigator) return false;\n\n // if we are on mobile and NOT in a in-app browser we will redirect to a wallet app\n\n return isMobile() && !isInAppBrowser();\n}\n\nexport function generalizedErrorMessage(error: any): string {\n return typeof error === \"object\" && \"message\" in error\n ? error.message\n : error;\n}\n\n/**\n * Helper function to get AptosConfig that supports Aptos and Custom networks\n *\n * @param networkInfo\n * @param dappConfig\n * @returns AptosConfig\n */\nexport const getAptosConfig = (\n networkInfo: NetworkInfo | null,\n dappConfig: DappConfig | undefined\n): AptosConfig => {\n if (!networkInfo) {\n throw new Error(\"Undefined network\");\n }\n\n if (isAptosNetwork(networkInfo)) {\n const currentNetwork = convertNetwork(networkInfo);\n\n if (isAptosLiveNetwork(currentNetwork)) {\n const apiKey = dappConfig?.aptosApiKeys;\n return new AptosConfig({\n network: currentNetwork,\n clientConfig: { API_KEY: apiKey ? apiKey[currentNetwork] : undefined },\n });\n }\n\n return new AptosConfig({\n network: currentNetwork,\n });\n }\n\n const knownNetworks = {\n okx: \"https://wallet.okx.com/fullnode/aptos/discover/rpc\",\n };\n\n if (networkInfo.url) {\n const isKnownNetwork = Object.values(knownNetworks).includes(\n networkInfo.url\n );\n\n if (isKnownNetwork) {\n return new AptosConfig({\n network: Network.CUSTOM,\n fullnode: networkInfo.url,\n });\n }\n }\n\n // Custom networks are not supported, please ensure that the wallet is returning the appropriate network Mainnet, Testnet, Devnet, Local\n throw new Error(\n `Invalid network, network ${networkInfo.name} not supported with Aptos wallet adapter to prevent user from using an unexpected network.`\n );\n};\n\n/**\n * Helper function to resolve if the current connected network is an Aptos network\n *\n * @param networkInfo\n * @returns boolean\n */\nexport const isAptosNetwork = (\n networkInfo: NetworkInfo | StandardNetworkInfo | null\n): boolean => {\n if (!networkInfo) {\n throw new Error(\"Undefined network\");\n }\n return NetworkToNodeAPI[networkInfo.name] !== undefined;\n};\n\nexport const isAptosLiveNetwork = (networkInfo: Network): boolean => {\n return (\n networkInfo === \"devnet\" ||\n networkInfo === \"testnet\" ||\n networkInfo === \"mainnet\"\n );\n};\n\n/**\n * Helper function to fetch Devnet chain id\n */\nexport const fetchDevnetChainId = async (): Promise<number> => {\n const aptos = new Aptos(); // default to devnet\n return await aptos.getChainId();\n};\n\n/**\n * A helper function to handle the publish package transaction.\n * The Aptos SDK expects the metadataBytes and byteCode to be Uint8Array, but in case the arguments are passed in\n * as a string, this function converts the string to Uint8Array.\n */\nexport const handlePublishPackageTransaction = (\n transactionInput: InputTransactionData\n) => {\n // convert the first argument, metadataBytes, to uint8array if is a string\n let metadataBytes = transactionInput.data.functionArguments[0];\n if (typeof metadataBytes === \"string\") {\n metadataBytes = Hex.fromHexInput(metadataBytes).toUint8Array();\n }\n\n // convert the second argument, byteCode, to uint8array if is a string\n let byteCode = transactionInput.data.functionArguments[1];\n if (Array.isArray(byteCode)) {\n byteCode = byteCode.map((byte) => {\n if (typeof byte === \"string\") {\n return Hex.fromHexInput(byte).toUint8Array();\n }\n return byte;\n });\n } else {\n throw new WalletSignAndSubmitMessageError(\n \"The bytecode argument must be an array.\"\n ).message;\n }\n\n return { metadataBytes, byteCode };\n};\n\n// old => new\nexport function convertNetwork(networkInfo: NetworkInfo | null): Network {\n switch (networkInfo?.name) {\n case \"mainnet\" as Network:\n return Network.MAINNET;\n case \"testnet\" as Network:\n return Network.TESTNET;\n case \"devnet\" as Network:\n return Network.DEVNET;\n case \"local\" as Network:\n return Network.LOCAL;\n default:\n throw new Error(\"Invalid Aptos network name\");\n }\n}\n","const LOCAL_STORAGE_ITEM_KEY = \"AptosWalletName\";\n\nexport function setLocalStorage(walletName: string) {\n localStorage.setItem(LOCAL_STORAGE_ITEM_KEY, walletName);\n}\n\nexport function removeLocalStorage() {\n localStorage.removeItem(LOCAL_STORAGE_ITEM_KEY);\n}\n\nexport function getLocalStorage() {\n localStorage.getItem(LOCAL_STORAGE_ITEM_KEY);\n}\n","import { WalletInfo } from \"./types\";\nimport { AdapterNotDetectedWallet, AdapterWallet } from \"../WalletCore\";\nimport { APTOS_CONNECT_BASE_URL, WalletReadyState } from \"../constants\";\nimport { isRedirectable } from \"./helpers\";\n\n/**\n * A function that will partition the provided wallets into two list — `defaultWallets` and `moreWallets`.\n * By default, the wallets will be partitioned by whether or not they are installed or loadable.\n * You can pass your own partition function if you wish to customize this behavior.\n */\nexport function partitionWallets(\n wallets: ReadonlyArray<AdapterWallet | AdapterNotDetectedWallet>,\n partitionFunction: (\n wallet: AdapterWallet | AdapterNotDetectedWallet\n ) => boolean = isInstalledOrLoadable\n) {\n const defaultWallets: Array<AdapterWallet> = [];\n const moreWallets: Array<AdapterNotDetectedWallet> = [];\n\n for (const wallet of wallets) {\n if (partitionFunction(wallet)) defaultWallets.push(wallet as AdapterWallet);\n else moreWallets.push(wallet as AdapterNotDetectedWallet);\n }\n\n return { defaultWallets, moreWallets };\n}\n\n/** Returns true if the wallet is installed or loadable. */\nexport function isInstalledOrLoadable(\n wallet: AdapterWallet | AdapterNotDetectedWallet\n) {\n return wallet.readyState === WalletReadyState.Installed;\n}\n\n/**\n * Returns true if the user is on desktop and the provided wallet requires installation of a browser extension.\n * This can be used to decide whether to show a \"Connect\" button or \"Install\" link in the UI.\n */\nexport function isInstallRequired(\n wallet: AdapterWallet | AdapterNotDetectedWallet\n) {\n const isWalletReady = isInstalledOrLoadable(wallet);\n const isMobile = !isWalletReady && isRedirectable();\n\n return !isMobile && !isWalletReady;\n}\n\n/** Truncates the provided wallet address at the middle with an ellipsis. */\nexport function truncateAddress(address: string | undefined) {\n if (!address) return;\n return `${address.slice(0, 6)}...${address.slice(-5)}`;\n}\n\n/** Returns `true` if the provided wallet is an Aptos Connect wallet. */\nexport function isAptosConnectWallet(wallet: WalletInfo | AdapterWallet) {\n if (!wallet.url) return false;\n return wallet.url.startsWith(APTOS_CONNECT_BASE_URL);\n}\n\n/**\n * Partitions the `wallets` array so that Aptos Connect wallets are grouped separately from the rest.\n * Aptos Connect is a web wallet that uses social login to create accounts on the blockchain.\n */\nexport function getAptosConnectWallets(\n wallets: ReadonlyArray<AdapterWallet | AdapterNotDetectedWallet>\n) {\n const { defaultWallets, moreWallets } = partitionWallets(\n wallets,\n isAptosConnectWallet\n );\n return { aptosConnectWallets: defaultWallets, otherWallets: moreWallets };\n}\n\nexport interface WalletSortingOptions {\n /** An optional function for sorting Aptos Connect wallets. */\n sortAptosConnectWallets?: (a: AdapterWallet, b: AdapterWallet) => number;\n /** An optional function for sorting wallets that are currently installed or loadable. */\n sortAvailableWallets?: (\n a: AdapterWallet | AdapterNotDetectedWallet,\n b: AdapterWallet | AdapterNotDetectedWallet\n ) => number;\n /** An optional function for sorting wallets that are NOT currently installed or loadable. */\n sortInstallableWallets?: (\n a: AdapterWallet | AdapterNotDetectedWallet,\n b: AdapterWallet | AdapterNotDetectedWallet\n ) => number;\n}\n\n/**\n * Partitions the `wallets` array into three distinct groups:\n *\n * `aptosConnectWallets` - Wallets that use social login to create accounts on\n * the blockchain via Aptos Connect.\n *\n * `availableWallets` - Wallets that are currently installed or loadable by the client.\n *\n * `installableWallets` - Wallets that are NOT current installed or loadable and\n * require the client to install a browser extension first.\n *\n * Additionally, these wallet groups can be sorted by passing sort functions via the `options` argument.\n */\nexport function groupAndSortWallets(\n wallets: ReadonlyArray<AdapterWallet | AdapterNotDetectedWallet>,\n options?: WalletSortingOptions\n) {\n const { aptosConnectWallets, otherWallets } = getAptosConnectWallets(wallets);\n const { defaultWallets, moreWallets } = partitionWallets(otherWallets);\n\n if (options?.sortAptosConnectWallets) {\n aptosConnectWallets.sort(options.sortAptosConnectWallets);\n }\n if (options?.sortAvailableWallets) {\n defaultWallets.sort(options.sortAvailableWallets);\n }\n if (options?.sortInstallableWallets) {\n moreWallets.sort(options.sortInstallableWallets);\n }\n\n return {\n /** Wallets that use social login to create an account on the blockchain */\n aptosConnectWallets,\n /** Wallets that are currently installed or loadable. */\n availableWallets: defaultWallets,\n /** Wallets that are NOT currently installed or loadable. */\n installableWallets: moreWallets,\n };\n}\n","import { WalletReadyState } from \"./constants\";\nimport { AptosStandardSupportedWallet } from \"./utils/types\";\n\n/**\n * Registry of AIP-62 wallet standard supported wallets.\n * This list is used to show supported wallets even if they are not installed on the user machine.\n *\n * AIP-62 compatible wallets are required to add their wallet info here if they want to be detected by the adapter\n *\n * @param name - The name of your wallet cast to WalletName (Ex. \"Petra\" as WalletName<\"Petra\">)\n * @param url - The link to your chrome extension or main website where new users can create an account with your wallet.\n * @param icon - An icon for your wallet. Can be one of 4 data types. Be sure to follow the below format exactly (including the literal \",\" after base64).\n * Format: `data:image/${\"svg+xml\" | \"webp\" | \"png\" | \"gif\"};base64,${string}`\n * Note: ${...} data in the above format should be replaced. Other characters are literals (ex. \";\")\n * @param deeplinkProvider optional - An optional deeplink provider for the wallet. If the wallet is not installed, we can redirect the user to the wallet's deeplink provider\n * @example \"https://myWallet.app/explore?link=\"\n */\nexport const aptosStandardSupportedWalletList: Array<AptosStandardSupportedWallet> =\n [\n {\n name: \"Nightly\",\n url: \"https://nightly.app/\",\n icon: \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iV2Fyc3R3YV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgdmlld0JveD0iMCAwIDg1MS41IDg1MS41IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA4NTEuNSA4NTEuNTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzYwNjdGOTt9DQoJLnN0MXtmaWxsOiNGN0Y3Rjc7fQ0KPC9zdHlsZT4NCjxnPg0KCTxnIGlkPSJXYXJzdHdhXzJfMDAwMDAwMTQ2MDk2NTQyNTMxODA5NDY0NjAwMDAwMDg2NDc4NTIwMDIxMTY5MTg2ODhfIj4NCgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyNCwwaDYwMy42YzY4LjUsMCwxMjQsNTUuNSwxMjQsMTI0djYwMy42YzAsNjguNS01NS41LDEyNC0xMjQsMTI0SDEyNGMtNjguNSwwLTEyNC01NS41LTEyNC0xMjRWMTI0DQoJCQlDMCw1NS41LDU1LjUsMCwxMjQsMHoiLz4NCgk8L2c+DQoJPGcgaWQ9IldhcnN0d2FfMyI+DQoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik02MjMuNSwxNzAuM2MtMzcuNCw1Mi4yLTg0LjIsODguNC0xMzkuNSwxMTIuNmMtMTkuMi01LjMtMzguOS04LTU4LjMtNy44Yy0xOS40LTAuMi0zOS4xLDIuNi01OC4zLDcuOA0KCQkJYy01NS4zLTI0LjMtMTAyLjEtNjAuMy0xMzkuNS0xMTIuNmMtMTEuMywyOC40LTU0LjgsMTI2LjQtMi42LDI2My40YzAsMC0xNi43LDcxLjUsMTQsMTMyLjljMCwwLDQ0LjQtMjAuMSw3OS43LDguMg0KCQkJYzM2LjksMjkuOSwyNS4xLDU4LjcsNTEuMSw4My41YzIyLjQsMjIuOSw1NS43LDIyLjksNTUuNywyMi45czMzLjMsMCw1NS43LTIyLjhjMjYtMjQuNywxNC4zLTUzLjUsNTEuMS04My41DQoJCQljMzUuMi0yOC4zLDc5LjctOC4yLDc5LjctOC4yYzMwLjYtNjEuNCwxNC0xMzIuOSwxNC0xMzIuOUM2NzguMywyOTYuNyw2MzQuOSwxOTguNyw2MjMuNSwxNzAuM3ogTTI1My4xLDQxNC44DQoJCQljLTI4LjQtNTguMy0zNi4yLTEzOC4zLTE4LjMtMjAxLjVjMjMuNyw2MCw1NS45LDg2LjksOTQuMiwxMTUuM0MzMTIuOCwzNjIuMywyODIuMywzOTQuMSwyNTMuMSw0MTQuOHogTTMzNC44LDUxNy41DQoJCQljLTIyLjQtOS45LTI3LjEtMjkuNC0yNy4xLTI5LjRjMzAuNS0xOS4yLDc1LjQtNC41LDc2LjgsNDAuOUMzNjAuOSw1MTQuNywzNTMsNTI1LjQsMzM0LjgsNTE3LjV6IE00MjUuNyw2NzguNw0KCQkJYy0xNiwwLTI5LTExLjUtMjktMjUuNnMxMy0yNS42LDI5LTI1LjZzMjksMTEuNSwyOSwyNS42QzQ1NC43LDY2Ny4zLDQ0MS43LDY3OC43LDQyNS43LDY3OC43eiBNNTE2LjcsNTE3LjUNCgkJCWMtMTguMiw4LTI2LTIuOC00OS43LDExLjVjMS41LTQ1LjQsNDYuMi02MC4xLDc2LjgtNDAuOUM1NDMuOCw0ODgsNTM5LDUwNy42LDUxNi43LDUxNy41eiBNNTk4LjMsNDE0LjgNCgkJCWMtMjkuMS0yMC43LTU5LjctNTIuNC03Ni04Ni4yYzM4LjMtMjguNCw3MC42LTU1LjQsOTQuMi0xMTUuM0M2MzQuNiwyNzYuNSw2MjYuOCwzNTYuNiw1OTguMyw0MTQuOHoiLz4NCgk8L2c+DQo8L2c+DQo8L3N2Zz4NCg==\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n deeplinkProvider: \"nightly://v1?network=aptos&url=\",\n },\n {\n name: \"Petra\",\n url: \"https://chromewebstore.google.com/detail/petra-aptos-wallet/ejjladinnckdgjemekebdpeokbikhfci?hl=en\",\n icon: \"data:image/png;base64,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\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n deeplinkProvider: \"https://petra.app/explore?link=\",\n },\n {\n name: \"Pontem Wallet\",\n url: \"https://pontem.network/pontem-wallet\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCAzNiAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE4IDBDOC4wNzMwNCAwIDAgOC4wNzEzOSAwIDE3Ljk5NjNDMCAyNS4xMjk4IDQuMTczMTYgMzEuMzEwOCAxMC4yMDc2IDM0LjIyMDNWMzQuMjM1MUgxMC4yMzcyQzEyLjU4NiAzNS4zNjQ5IDE1LjIyMjggMzYgMTggMzZDMjcuOTI3IDM2IDM2IDI3LjkyODYgMzYgMTguMDAzN0MzNiA4LjA3MTM4IDI3LjkyNyAwIDE4IDBaTTE4IDEuNDc2OTJDMjcuMTA3MSAxLjQ3NjkyIDM0LjUyMjggOC44OTEwOCAzNC41MjI4IDE3Ljk5NjNDMzQuNTIyOCAyMC42MTA1IDMzLjkwOTcgMjMuMDkxNyAzMi44MjQgMjUuMjkyM0MzMC40NDU2IDI0LjE0MDMgMjguMDMwNCAyMy4yODM3IDI1LjU5MjkgMjIuNzAwM1Y4LjkyMDYyQzI1LjU5MjkgOC40NDA2MiAyNS4yMTYyIDguMDU2NjIgMjQuNzQzNSA4LjA1NjYySDIxLjcxNTJIMTQuMDg1NEgxMS4wNTdDMTAuNTkxNyA4LjA1NjYyIDEwLjIwNzYgOC40NDA2MiAxMC4yMDc2IDguOTIwNjJWMjIuNzY2OEM3Ljg0NDA3IDIzLjM1MDIgNS40OTUyOCAyNC4xOTIgMy4xODM0MiAyNS4yOTk3QzIuMDkwMjcgMjMuMDkxNyAxLjQ3NzIzIDIwLjYxNzggMS40NzcyMyAxNy45OTYzQzEuNDc3MjMgOC44OTEwOCA4Ljg5MjkgMS40NzY5MiAxOCAxLjQ3NjkyWk00LjEzNjIzIDI2Ljk2MTJDNi4wOTM1NiAyNS45OTM4IDguMTI0NzQgMjUuMjQ4IDEwLjIxNSAyNC43MzExVjMyLjU1ODhDNy43NDA2NiAzMS4yMzY5IDUuNjUwMzkgMjkuMzAyMiA0LjEzNjIzIDI2Ljk2MTJaTTE0LjA4NTQgMzQuMDQzMVYxNS42MDM3QzE0LjA4NTQgMTMuNDY5NSAxNS44MzU5IDExLjcwNDYgMTcuOTI2MSAxMS43MDQ2QzIwLjAxNjQgMTEuNzA0NiAyMS43MTUyIDEzLjQzMjYgMjEuNzE1MiAxNS41NTk0QzIxLjcxNTIgMTUuNTc0MiAyMS43MDc4IDE1LjU4ODkgMjEuNzA3OCAxNS42MDM3SDIxLjcxNTJWMjIuMDIwOUMxOS45MzUyIDIxLjgxNDIgMTguMTQ3NyAyMS43NDc3IDE2LjM2MDMgMjEuODQzN0wxNC44OTA0IDIzLjk3NzhDMTcuMTgwMSAyMy43ODU4IDE5LjQxMDcgMjMuODAwNiAyMS42MTE4IDI0LjA1MTdDMjEuNjM0IDI0LjA1MTcgMjEuNjQ4NyAyNC4wNTE3IDIxLjY3MDkgMjQuMDU5MUMyMS42ODU3IDI0LjA1OTEgMjEuNzAwNSAyNC4wNTkxIDIxLjcyMjYgMjQuMDY2NUMyMi4xMDY3IDI0LjExMDggMjMuNTAyNyAyNC4yODggMjQuNzgwNSAyNC42MDU1TDIxLjcyMjYgMjUuNjQ2OFYzNC4xMDIyQzIwLjUyNjEgMzQuMzc1NCAxOS4yODUyIDM0LjUzMDUgMTguMDE0OCAzNC41MzA1QzE2LjY0ODMgMzQuNTE1NyAxNS4zNDEgMzQuMzQ1OCAxNC4wODU0IDM0LjA0MzFaTTI1LjU4NTYgMzIuNjYyMlYyNC43NjhDMjcuNjY4NCAyNS4yOTIzIDI5LjcyOTIgMjYuMDYwMyAzMS43OTczIDI3LjA2NDZDMzAuMjQ2MiAyOS40MjAzIDI4LjEwNDIgMzEuMzU1MSAyNS41ODU2IDMyLjY2MjJaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjIyXzE2NzApIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjIyXzE2NzAiIHgxPSIxNy45OTk3IiB5MT0iMzYuNzc4OSIgeDI9IjE3Ljk5OTciIHkyPSItNS41MTk3OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMDg1OCIgc3RvcC1jb2xvcj0iIzhEMjlDMSIvPgo8c3RvcCBvZmZzZXQ9IjAuMjM4MyIgc3RvcC1jb2xvcj0iIzk0MkJCQiIvPgo8c3RvcCBvZmZzZXQ9IjAuNDY2NyIgc3RvcC1jb2xvcj0iI0E5MkZBQyIvPgo8c3RvcCBvZmZzZXQ9IjAuNzQxMyIgc3RvcC1jb2xvcj0iI0NBMzc5MyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGMDNGNzciLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n },\n {\n name: \"Rimosafe\",\n url: \"https://chromewebstore.google.com/detail/rimo-safe-wallet/kiicddjcakdmobjkcpppkgcjbpakcagp\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9Im5vbmUiLz4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLCAzKSBzY2FsZSgwLjgpIj4KICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjkuNTMxMSA5Ljg0MzY5VjBIMTkuNjg3NEwxOS42ODc3IDAuMDAwMzQwNTU1TDAgMC4wMDAzNDE0MTVMNC4zMjEzNGUtMDcgOS44NDQwM0g5Ljg0MzY5QzQuNDA3MTcgOS44NDQwMyAwIDE0LjI1MTIgMCAxOS42ODc3VjMwLjAwMDFIOS44NDM2OVYxOS42ODc5TDE5LjY4NzEgMzAuMDAwMUwxOS42ODcxIDE5LjY4NzdMMjkuNTMwOCA5Ljg0NDAzTDI5LjUzMTEgOS44NDQwM1Y5Ljg0MzY1TDI5LjUzMTEgOS44NDM2OVpNMTkuNjg3MSAxOS42ODc2TDE5LjY4NzEgOS44NDQwM0g5Ljg0MzY5VjE5LjY4NzZIMTkuNjg3MVpNMjkuNTMxMSA5Ljg0MzY1TDE5LjY4NzcgMC4wMDAzNDA1NTVMMjkuNTMxMSAwLjAwMDM0MDEyNVY5Ljg0MzY1Wk0xOS42ODc0IDE5LjY4NzZIMjkuNTMxMVYzMC4wMDAxSDE5LjY4NzRWMTkuNjg3NloiIGZpbGw9IiNGRjVDMjgiLz4KICA8L2c+Cjwvc3ZnPgo=\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n },\n {\n name: \"OKX Wallet\",\n url: \"https://chromewebstore.google.com/detail/okx-wallet/mcohilncbfahbmgdjkbpemcciiolgcge\",\n icon: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJDSURBVHgB7Zq9jtpAEMfHlhEgQLiioXEkoAGECwoKxMcTRHmC5E3IoyRPkPAEkI7unJYmTgEFTYwA8a3NTKScLnCHN6c9r1e3P2llWQy7M/s1Gv1twCP0ej37dDq9x+Zut1t3t9vZjDEHIiSRSPg4ZpDL5fxkMvn1cDh8m0wmfugfO53OoFQq/crn8wxfY9EymQyrVCqMfHvScZx1p9ls3pFxXBy/bKlUipGPrVbLuQqAfsCliq3zl0H84zwtjQrOw4Mt1W63P5LvBm2d+Xz+YzqdgkqUy+WgWCy+Mc/nc282m4FqLBYL+3g8fjDxenq72WxANZbLJeA13zDX67UDioL5ybXwafMYu64Ltn3bdDweQ5R97fd7GyhBQMipx4POeEDHIu2LfDdBIGGz+hJ9CQ1ABjoA2egAZPM6AgiCAEQhsi/C4jHyPA/6/f5NG3Ks2+3CYDC4aTccDrn6ojG54MnEvG00GoVmWLIRNZ7wTCwDHYBsdACy0QHIhiuRETxlICWpMMhGZHmqS8qH6JLyGegAZKMDkI0uKf8X4SWlaZo+Pp1bRrwlJU8ZKLIvUjKh0WiQ3sRUbNVq9c5Ebew7KEo2m/1p4jJ4qAmDaqDQBzj5XyiAT4VCQezJigAU+IDU+z8vJFnGWeC+bKQV/5VZ71FV6L7PA3gg3tXrdQ+DgLhC+75Wq3no69P3MC0NFQpx2lL04Ql9gHK1bRDjsSBIvScBnDTk1WrlGIZBorIDEYJj+rhdgnQ67VmWRe0zlplXl81vcyEt0rSoYDUAAAAASUVORK5CYII=\",\n readyState: WalletReadyState.NotDetected,\n isAIP62Standard: true,\n },\n ];\n","import {\n AptosConnectAppleWallet,\n AptosConnectGoogleWallet,\n} from \"@aptos-connect/wallet-adapter-plugin\";\nimport { Network } from \"@aptos-labs/ts-sdk\";\nimport { DevTWallet, TWallet } from \"@atomrigslab/aptos-wallet-adapter\";\nimport { MizuWallet } from \"@mizuwallet-sdk/aptos-wallet-adapter\";\nimport { DappConfig, AdapterWallet } from \"./WalletCore\";\n\nexport function getSDKWallets(dappConfig?: DappConfig) {\n const sdkWallets: AdapterWallet[] = [];\n\n // Need to check window is defined for AptosConnect\n if (typeof window !== \"undefined\") {\n sdkWallets.push(\n new AptosConnectGoogleWallet({\n network: dappConfig?.network,\n dappId: dappConfig?.aptosConnectDappId,\n ...dappConfig?.aptosConnect,\n }),\n new AptosConnectAppleWallet({\n network: dappConfig?.network,\n dappId: dappConfig?.aptosConnectDappId,\n ...dappConfig?.aptosConnect,\n })\n );\n\n if (\n dappConfig?.mizuwallet &&\n dappConfig?.network &&\n [Network.MAINNET, Network.TESTNET].includes(dappConfig.network)\n ) {\n sdkWallets.push(\n new MizuWallet({\n // mizo supports only TESTNET and MAINNET and holds a custom type for network\n network: dappConfig.network as Network.MAINNET | Network.TESTNET,\n manifestURL: dappConfig.mizuwallet.manifestURL,\n appId: dappConfig.mizuwallet.appId,\n })\n );\n }\n }\n\n // Push production wallet if env is production, otherwise use dev wallet\n if (dappConfig?.network === Network.MAINNET) {\n // TODO twallet uses @aptos-labs/wallet-standard at version 0.0.11 while adapter uses\n // a newer version (0.1.0) - this causes type mismatch. We should figure out how to handle it.\n sdkWallets.push(new TWallet() as any);\n } else {\n sdkWallets.push(new DevTWallet() as any);\n }\n\n // Add new SDK wallet plugins (ones that should be installed as packages) here:\n // Ex. sdkWallets.push(new YourSDKWallet(dappConfig))\n\n return sdkWallets;\n}\n","import { WALLET_ADAPTER_CORE_VERSION } from \"./version\";\n\nexport * from \"./WalletCore\";\nexport * from \"./constants\";\nexport * from \"./utils\";\nexport * from \"./sdkWallets\";\nexport * from \"./registry\";\n\n// inject adapter core version to the window\nif (typeof window !== \"undefined\") {\n (window as any).WALLET_ADAPTER_CORE_VERSION = WALLET_ADAPTER_CORE_VERSION;\n}\n"],"mappings":"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","names":["Aptos","Network","WalletReadyState","NetworkName","isMobile","Network","aptosWallets","Aptos","aptosConfig","aptos","transaction","response","Network"]}
@@ -1,4 +1,4 @@
1
- import { AptosStandardSupportedWallet } from "./types";
1
+ import { AptosStandardSupportedWallet } from "./utils/types";
2
2
  /**
3
3
  * Registry of AIP-62 wallet standard supported wallets.
4
4
  * This list is used to show supported wallets even if they are not installed on the user machine.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gCAAgC,EAAE,KAAK,CAAC,4BAA4B,CAuC9E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DappConfig, AdapterWallet } from "./WalletCore";
2
+ export declare function getSDKWallets(dappConfig?: DappConfig): AdapterWallet[];
3
+ //# sourceMappingURL=sdkWallets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkWallets.d.ts","sourceRoot":"","sources":["../src/sdkWallets.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzD,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,mBA+CpD"}
@@ -1,12 +1,11 @@
1
- import { AptosConfig, EntryFunctionArgumentTypes, Network, SimpleEntryFunctionArgumentTypes } from "@aptos-labs/ts-sdk";
2
- import { NetworkInfo as StandardNetworkInfo } from "@aptos-labs/wallet-standard";
3
- import { InputTransactionData, NetworkInfo } from "../LegacyWalletPlugins/types";
1
+ import { AptosConfig, Network } from "@aptos-labs/ts-sdk";
2
+ import { NetworkInfo, NetworkInfo as StandardNetworkInfo } from "@aptos-labs/wallet-standard";
4
3
  import { DappConfig } from "../WalletCore";
4
+ import { InputTransactionData } from "./types";
5
5
  export declare function isMobile(): boolean;
6
6
  export declare function isInAppBrowser(): boolean;
7
7
  export declare function isRedirectable(): boolean;
8
8
  export declare function generalizedErrorMessage(error: any): string;
9
- export declare const areBCSArguments: (args: Array<EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes>) => boolean;
10
9
  /**
11
10
  * Helper function to get AptosConfig that supports Aptos and Custom networks
12
11
  *
@@ -14,7 +13,7 @@ export declare const areBCSArguments: (args: Array<EntryFunctionArgumentTypes |
14
13
  * @param dappConfig
15
14
  * @returns AptosConfig
16
15
  */
17
- export declare const getAptosConfig: (networkInfo: NetworkInfo | StandardNetworkInfo | null, dappConfig: DappConfig | undefined) => AptosConfig;
16
+ export declare const getAptosConfig: (networkInfo: NetworkInfo | null, dappConfig: DappConfig | undefined) => AptosConfig;
18
17
  /**
19
18
  * Helper function to resolve if the current connected network is an Aptos network
20
19
  *
@@ -33,7 +32,8 @@ export declare const fetchDevnetChainId: () => Promise<number>;
33
32
  * as a string, this function converts the string to Uint8Array.
34
33
  */
35
34
  export declare const handlePublishPackageTransaction: (transactionInput: InputTransactionData) => {
36
- metadataBytes: number | bigint | boolean | Uint8Array | import("@aptos-labs/ts-sdk/dist/common/accountAddress-CDtCLtJA").g | import("@aptos-labs/ts-sdk").Bool | import("@aptos-labs/ts-sdk").U8 | import("@aptos-labs/ts-sdk").U16 | import("@aptos-labs/ts-sdk").U32 | import("@aptos-labs/ts-sdk").U64 | import("@aptos-labs/ts-sdk").U128 | import("@aptos-labs/ts-sdk").U256 | import("@aptos-labs/ts-sdk").MoveVector<EntryFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").MoveOption<EntryFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").MoveString | import("@aptos-labs/ts-sdk").FixedBytes | ArrayBuffer | (EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes)[] | import("@aptos-labs/ts-sdk").MoveVector<import("@aptos-labs/ts-sdk").ScriptFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").Serialized | null | undefined;
37
- byteCode: (EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes)[];
35
+ metadataBytes: number | bigint | boolean | Uint8Array | import("@aptos-labs/ts-sdk/dist/common/accountAddress-CuHovHdK").g | import("@aptos-labs/ts-sdk").Bool | import("@aptos-labs/ts-sdk").U8 | import("@aptos-labs/ts-sdk").U16 | import("@aptos-labs/ts-sdk").U32 | import("@aptos-labs/ts-sdk").U64 | import("@aptos-labs/ts-sdk").U128 | import("@aptos-labs/ts-sdk").U256 | import("@aptos-labs/ts-sdk").MoveVector<import("@aptos-labs/ts-sdk").EntryFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").MoveOption<import("@aptos-labs/ts-sdk").EntryFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").MoveString | import("@aptos-labs/ts-sdk").FixedBytes | ArrayBuffer | (import("@aptos-labs/ts-sdk").EntryFunctionArgumentTypes | import("@aptos-labs/ts-sdk").SimpleEntryFunctionArgumentTypes)[] | import("@aptos-labs/ts-sdk").MoveVector<import("@aptos-labs/ts-sdk").ScriptFunctionArgumentTypes> | import("@aptos-labs/ts-sdk").Serialized | null | undefined;
36
+ byteCode: (import("@aptos-labs/ts-sdk").EntryFunctionArgumentTypes | import("@aptos-labs/ts-sdk").SimpleEntryFunctionArgumentTypes)[];
38
37
  };
38
+ export declare function convertNetwork(networkInfo: NetworkInfo | null): Network;
39
39
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,0BAA0B,EAE1B,OAAO,EAGP,gCAAgC,EACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEjF,OAAO,EACL,oBAAoB,EACpB,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,wBAAgB,QAAQ,IAAI,OAAO,CAIlC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAI1D;AAMD,eAAO,MAAM,eAAe,SACpB,MAAM,0BAA0B,GAAG,gCAAgC,CAAC,KACzE,OAQF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,gBACZ,WAAW,GAAG,mBAAmB,GAAG,IAAI,cACzC,UAAU,GAAG,SAAS,KACjC,WAyBF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,gBACZ,WAAW,GAAG,mBAAmB,GAAG,IAAI,KACpD,OAKF,CAAC;AAEF,eAAO,MAAM,kBAAkB,gBAAiB,OAAO,KAAG,OAMzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAa,QAAQ,MAAM,CAGzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,qBACxB,oBAAoB;;;CAwBvC,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,OAAO,EAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,WAAW,IAAI,mBAAmB,EACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,QAAQ,IAAI,OAAO,CAIlC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAUxC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAI1D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,gBACZ,WAAW,GAAG,IAAI,cACnB,UAAU,GAAG,SAAS,KACjC,WA0CF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,gBACZ,WAAW,GAAG,mBAAmB,GAAG,IAAI,KACpD,OAKF,CAAC;AAEF,eAAO,MAAM,kBAAkB,gBAAiB,OAAO,KAAG,OAMzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,QAAa,QAAQ,MAAM,CAGzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,qBACxB,oBAAoB;;;CAwBvC,CAAC;AAGF,wBAAgB,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAavE"}
@@ -1,5 +1,5 @@
1
1
  export * from "./helpers";
2
2
  export * from "./localStorage";
3
- export { scopePollingDetectionStrategy } from "./scopePollingDetectionStrategy";
4
3
  export * from "./walletSelector";
4
+ export * from "./types";
5
5
  //# sourceMappingURL=index.d.ts.map