{"version":3,"sources":["../src/connectors.tsx","../src/utils/convert.ts","../src/errors/base.ts","../src/errors/common.ts"],"sourcesContent":["// Copyright © Aptos\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable react-hooks/exhaustive-deps */\n\nimport {\n  AptosJSProClient,\n  ClientConfigs,\n  NetworkInfo,\n  AccountInfo,\n  SignerClient,\n  convertAptosAccountToAccountInfo,\n  convertAptosAccountToSigner,\n} from \"@aptos-labs/js-pro\";\nimport type { WalletContextState } from \"@aptos-labs/wallet-adapter-react\";\nimport { useEffect, useMemo } from \"react\";\nimport { Account, Network } from \"@aptos-labs/ts-sdk\";\nimport {\n  convertWalletAdapterAccountToAccountInfo,\n  convertWalletAdapterSignerToSigner,\n  convertWalletAdapterNetworkToNetworkInfo,\n} from \"./utils/convert.js\";\n\ninterface WalletAdapterCoreArgs {\n  config?: ClientConfigs;\n  defaultNetwork?: NetworkInfo;\n  wallet: Pick<\n    WalletContextState,\n    \"network\" | \"account\" | \"signAndSubmitTransaction\" | \"signTransaction\"\n  >;\n}\n\n/**\n   * Converts the wallet adapter context to a AptosJSProClient. This is useful for\n   * custom wallet implementations rely on external wallets.\n   *\n   * @param wallet - The wallet adapter context to convert to a AptosJSProClient.\n   * @param defaultNetwork - The default network to use if the wallet's network is not set.\n   * ```tsx\n  import { useWallet } from '@aptos-labs/wallet-adapter-react';\n  import { AptosJSCoreProvider } from '@aptos-labs/react';\n  import { networks } from '@aptos-labs/js-pro';\n  \n  function AptosCoreProvider({ children }: PropsWithChildren) {\n    const wallet = useWallet();\n  \n    const core = useWalletAdapterCore({ wallet });\n  \n    return <AptosJSCoreProvider core={core}>{children}</AptosJSCoreProvider>;\n  }\n   * ```\n   */\nexport const useWalletAdapterCore = ({\n  defaultNetwork = { network: Network.MAINNET },\n  wallet,\n  config,\n}: WalletAdapterCoreArgs): AptosJSProClient => {\n  const network = convertWalletAdapterNetworkToNetworkInfo(wallet.network);\n  const account = convertWalletAdapterAccountToAccountInfo(wallet.account);\n  const signer = convertWalletAdapterSignerToSigner(wallet);\n\n  const client = useMemo(\n    () =>\n      new AptosJSProClient({\n        account,\n        config,\n        network: network ?? defaultNetwork,\n        signer,\n      }),\n    []\n  );\n\n  // React to the wallet adapter network changing and update the client.\n  useEffect(() => {\n    if (network) client.setNetwork(network);\n  }, [wallet.network]);\n\n  // React to the wallet adapter account changing and update the client.\n  useEffect(() => {\n    client.setAccount(account);\n  }, [wallet.account]);\n\n  useEffect(() => {\n    client.setSigner(signer);\n  }, [signer]);\n\n  return client;\n};\n\ninterface WalletSignerCoreArgs {\n  account?: Account | AccountInfo;\n  config?: ClientConfigs;\n  network: NetworkInfo;\n  signer?: Account;\n}\n\n/**\n   * Converts a wallet's account and network to a AptosJSProClient. This is useful for\n   * custom wallet implementations that do not rely on external wallet adapters.\n   * ```tsx\n  import { useWallet } from '@aptos-labs/wallet-adapter-react';\n  import { AptosJSCoreProvider } from '@aptos-labs/react';\n  \n  /// Account and network should be tracked manually by a custom wallet implementation\n  function AptosCoreProvider({\n    account,\n    children,\n    network,\n  }: PropsWithChildren & { account?: Account; network: Network }) {\n    const core = useWalletSignerCore({ account, network });\n  \n    return <AptosJSCoreProvider core={core}>{children}</AptosJSCoreProvider>;\n  }\n   * ```\n   */\nexport const useWalletSignerCore = ({\n  account,\n  config,\n  network,\n  signer: signerAccount,\n}: WalletSignerCoreArgs) => {\n  const accountInfo =\n    account instanceof Account\n      ? convertAptosAccountToAccountInfo(account)\n      : account;\n\n  // Derive signer from account if signer is not provided.\n  let signer: SignerClient | undefined;\n  if (account instanceof Account) {\n    signer = convertAptosAccountToSigner(account);\n  } else if (signerAccount !== undefined) {\n    signer = convertAptosAccountToSigner(signerAccount);\n  }\n\n  const client = useMemo(\n    () =>\n      new AptosJSProClient({ account: accountInfo, config, network, signer }),\n    []\n  );\n\n  // React to the wallet adapter network changing and update the client.\n\n  useEffect(() => client.setNetwork(network), [network]);\n\n  useEffect(() => client.setSigner(signer), [signer]);\n\n  useEffect(() => client.setAccount(accountInfo), [accountInfo]);\n\n  return client;\n};\n","// Copyright © Aptos\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n  NetworkInfo as WalletAdapterNetworkInfo,\n  AccountInfo as WalletAdapterAccount,\n  WalletContextState,\n} from \"@aptos-labs/wallet-adapter-react\";\nimport {\n  NetworkInfo as JsProNetworkInfo,\n  AccountInfo as JsProAccountInfo,\n  SignerClient,\n} from \"@aptos-labs/js-pro\";\nimport {\n  Network,\n  NetworkToFaucetAPI,\n  NetworkToIndexerAPI,\n  NetworkToNodeAPI,\n  NetworkToPepperAPI,\n  NetworkToProverAPI,\n} from \"@aptos-labs/ts-sdk\";\nimport { MissingRequiredArgumentError } from \"../errors\";\n\nexport const convertWalletAdapterNetworkToNetworkInfo = (\n  network: WalletAdapterNetworkInfo | null\n): JsProNetworkInfo | undefined => {\n  if (network === null) return undefined;\n  if (network.name === Network.CUSTOM) {\n    return {\n      pepperUrl: NetworkToPepperAPI[network.name],\n      indexerUrl: NetworkToIndexerAPI[network.name],\n      proverUrl: NetworkToProverAPI[network.name],\n      faucetUrl: NetworkToFaucetAPI[network.name],\n      nodeUrl: network.url ?? NetworkToNodeAPI[network.name],\n      network: network.name,\n    };\n  }\n  return { network: network.name };\n};\n\nexport const convertWalletAdapterAccountToAccountInfo = (\n  account: WalletAdapterAccount | null\n): JsProAccountInfo | undefined => {\n  return account\n    ? { address: account.address, publicKey: account.publicKey }\n    : undefined;\n};\n\nexport const convertWalletAdapterSignerToSigner = (\n  signer: Pick<\n    WalletContextState,\n    \"signAndSubmitTransaction\" | \"signTransaction\"\n  > | null\n): SignerClient | undefined => {\n  return signer\n    ? {\n        type: \"adapter\",\n        signAndSubmitTransaction: async ({ aptos, transaction, payload }) => {\n          if (transaction) {\n            const signedTransaction = await signer.signTransaction({\n              transactionOrPayload: transaction,\n            });\n\n            return aptos.transaction.submit.simple({\n              senderAuthenticator: signedTransaction.authenticator,\n              transaction,\n            });\n          }\n\n          if (payload) {\n            const { hash } = await signer.signAndSubmitTransaction(payload);\n            return aptos.getTransactionByHash({ transactionHash: hash });\n          }\n\n          throw new MissingRequiredArgumentError(\"transaction or payload\");\n        },\n        signTransaction: async ({ transaction }) =>\n          await signer.signTransaction({\n            transactionOrPayload: transaction,\n          }),\n      }\n    : undefined;\n};\n","// Copyright © Aptos\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AptosBaseError } from \"@aptos-labs/js-pro\";\n\nexport class AptosReactBaseError extends AptosBaseError {\n  override docsBaseUrl = \"https://js-pro.aptos.dev/react\";\n\n  override name = \"AptosReactError\";\n}\n","// Copyright © Aptos\n// SPDX-License-Identifier: Apache-2.0\nimport { AptosReactBaseError } from \"./base.js\";\n\nexport class ClientContextMissingError extends AptosReactBaseError {\n  override name = \"ClientContextMissingError\";\n\n  constructor() {\n    super(\n      \"AptosJSCoreProvider must be defined in order to use useAptosClient\",\n      {\n        longMessage:\n          \"Make sure to wrap your application with AptosJSCoreProvider to use Aptos React hooks.\",\n      }\n    );\n  }\n}\n\nexport class MissingRequiredArgumentError extends AptosReactBaseError {\n  override name = \"MissingRequiredArgumentError\";\n\n  constructor(argName: string) {\n    super(`${argName} is required`, {\n      longMessage: `This argument ${argName} is required to be provided for this hook.`,\n    });\n  }\n}\n\nexport class SimulationArgumentError extends AptosReactBaseError {\n  override name = \"SimulationArgumentError\";\n\n  constructor(message?: string) {\n    super(message ?? \"Invalid arguments passed to simulation\");\n  }\n}\n\nexport class AccountNotFoundError extends AptosReactBaseError {\n  override name = \"AccountNotFoundError\";\n\n  constructor() {\n    super(\"No account found.\");\n  }\n}\n"],"mappings":"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","names":["AptosJSProClient","convertAptosAccountToAccountInfo","convertAptosAccountToSigner","useEffect","useMemo","Account","Network","Network","NetworkToFaucetAPI","NetworkToIndexerAPI","NetworkToNodeAPI","NetworkToPepperAPI","NetworkToProverAPI","AptosBaseError","AptosReactBaseError","MissingRequiredArgumentError","AptosReactBaseError","argName","convertWalletAdapterNetworkToNetworkInfo","network","Network","NetworkToPepperAPI","NetworkToIndexerAPI","NetworkToProverAPI","NetworkToFaucetAPI","NetworkToNodeAPI","convertWalletAdapterAccountToAccountInfo","account","convertWalletAdapterSignerToSigner","signer","aptos","transaction","payload","signedTransaction","hash","MissingRequiredArgumentError","useWalletAdapterCore","defaultNetwork","Network","wallet","config","network","convertWalletAdapterNetworkToNetworkInfo","account","convertWalletAdapterAccountToAccountInfo","signer","convertWalletAdapterSignerToSigner","client","useMemo","AptosJSProClient","useEffect","useWalletSignerCore","signerAccount","accountInfo","Account","convertAptosAccountToAccountInfo","convertAptosAccountToSigner"]}