{"version":3,"sources":["../../src/internal/account.ts"],"sourcesContent":["// Copyright © Endless\n// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file contains the underlying implementations for exposed API surface in\n * the {@link api/account}. By moving the methods out into a separate file,\n * other namespaces and processes can access these methods without depending on the entire\n * account namespace and without having a dependency cycle error.\n */\n\nimport { EndlessConfig } from \"../api/endlessConfig\";\nimport { EndlessApiError, getEndlessFullNode, paginateWithCursor, getEndlessIndexer, postEndlessIndexer } from \"../client\";\nimport { AccountAddress, AccountAddressInput } from \"../core/accountAddress\";\nimport { Account } from \"../account\";\nimport { AnyPublicKey, Ed25519PublicKey, PrivateKey } from \"../core/crypto\";\nimport {\n  AccountBalancesResponse,\n  AccountData,\n  GetAccountsBalancesRequest,\n  GetAccountsCoinBalanceResponse,\n  GetAccountCoinsDataResponse,\n  GetCreatedCoinDataResponse,\n  LedgerVersionArg,\n  MoveModuleBytecode,\n  MoveResource,\n  MoveStructId,\n  PageableCollectionResponse,\n  PageableNftOwnedCollectionResponse,\n  PageableNftTokenResponse,\n  PaginationArgs,\n  PaginationArgsOfIndexer,\n  TransactionResponse,\n} from \"../types\";\nimport { memoizeAsync } from \"../utils/memoize\";\nimport { AuthenticationKey, Ed25519PrivateKey, Secp256k1PrivateKey } from \"../core\";\nimport { getTableItem } from \"./table\";\n\nexport async function getInfo(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n}): Promise<AccountData> {\n  const { endlessConfig, accountAddress } = args;\n  const { data } = await getEndlessFullNode<{}, AccountData>({\n    endlessConfig,\n    originMethod: \"getInfo\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}`,\n  });\n  return data;\n}\n\nexport async function getModules(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgs & LedgerVersionArg;\n}): Promise<MoveModuleBytecode[]> {\n  const { endlessConfig, accountAddress, options } = args;\n  return paginateWithCursor<{}, MoveModuleBytecode[]>({\n    endlessConfig,\n    originMethod: \"getModules\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}/modules`,\n    params: {\n      ledger_version: options?.ledgerVersion,\n      start: options?.offset,\n      limit: options?.limit ?? 1000,\n    },\n  });\n}\n\n/**\n * Queries for a move module given account address and module name\n *\n * @param args.accountAddress Hex-encoded 32 byte Endless account address\n * @param args.moduleName The name of the module\n * @param args.query.ledgerVersion Specifies ledger version of transactions. By default, latest version will be used\n * @returns The move module.\n */\nexport async function getModule(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  moduleName: string;\n  options?: LedgerVersionArg;\n}): Promise<MoveModuleBytecode> {\n  // We don't memoize the account module by ledger version, as it's not a common use case, this would be handled\n  // by the developer directly\n  if (args.options?.ledgerVersion !== undefined) {\n    return getModuleInner(args);\n  }\n\n  return memoizeAsync(\n    async () => getModuleInner(args),\n    `module-${args.accountAddress}-${args.moduleName}`,\n    1000 * 60 * 5, // 5 minutes\n  )();\n}\n\nasync function getModuleInner(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  moduleName: string;\n  options?: LedgerVersionArg;\n}): Promise<MoveModuleBytecode> {\n  const { endlessConfig, accountAddress, moduleName, options } = args;\n\n  const { data } = await getEndlessFullNode<{}, MoveModuleBytecode>({\n    endlessConfig,\n    originMethod: \"getModule\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}/module/${moduleName}`,\n    params: { ledger_version: options?.ledgerVersion },\n  });\n  return data;\n}\n\nexport async function getTransactions(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgs;\n}): Promise<TransactionResponse[]> {\n  const { endlessConfig, accountAddress, options } = args;\n  return paginateWithCursor<{}, TransactionResponse[]>({\n    endlessConfig,\n    originMethod: \"getTransactions\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}/transactions`,\n    params: { start: options?.offset, limit: options?.limit },\n  });\n}\n\nexport async function getResources(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgs & LedgerVersionArg;\n}): Promise<MoveResource[]> {\n  const { endlessConfig, accountAddress, options } = args;\n  return paginateWithCursor<{}, MoveResource[]>({\n    endlessConfig,\n    originMethod: \"getResources\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}/resources`,\n    params: {\n      ledger_version: options?.ledgerVersion,\n      start: options?.offset,\n      limit: options?.limit ?? 999,\n    },\n  });\n}\n\nexport async function getResource<T extends {}>(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  resourceType: MoveStructId;\n  options?: LedgerVersionArg;\n}): Promise<T> {\n  const { endlessConfig, accountAddress, resourceType, options } = args;\n  const { data } = await getEndlessFullNode<{}, MoveResource>({\n    endlessConfig,\n    originMethod: \"getResource\",\n    path: `accounts/${AccountAddress.from(accountAddress).toString()}/resource/${resourceType}`,\n    params: { ledger_version: options?.ledgerVersion },\n  });\n  return data.data as T;\n}\n\nexport async function lookupOriginalAccountAddress(args: {\n  endlessConfig: EndlessConfig;\n  authenticationKey: AccountAddressInput;\n  options?: LedgerVersionArg;\n}): Promise<AccountAddress> {\n  const { endlessConfig, authenticationKey, options } = args;\n  type OriginatingAddress = {\n    address_map: { handle: string };\n  };\n  const resource = await getResource<OriginatingAddress>({\n    endlessConfig,\n    accountAddress: \"0x1\",\n    resourceType: \"0x1::account::OriginatingAddress\",\n    options,\n  });\n\n  const {\n    address_map: { handle },\n  } = resource;\n\n  const authKeyAddress = AccountAddress.from(authenticationKey);\n\n  // If the address is not found in the address map, which means its not rotated\n  // then return the address as is\n  try {\n    const originalAddress = await getTableItem<string>({\n      endlessConfig,\n      handle,\n      data: {\n        key: authKeyAddress.toString(),\n        key_type: \"address\",\n        value_type: \"address\",\n      },\n      options,\n    });\n\n    return AccountAddress.from(originalAddress);\n  } catch (err) {\n    if (err instanceof EndlessApiError && err.data.error_code === \"table_item_not_found\") {\n      return authKeyAddress;\n    }\n\n    throw err;\n  }\n}\n\nexport async function getAccountCoinAmount(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  coinId: string;\n}): Promise<number> {\n  const { endlessConfig, accountAddress, coinId } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const data = await getAccountCoinsData({\n    endlessConfig,\n    accountAddress: address,\n    options: {\n      coin: coinId,\n    },\n  });\n\n  const first = data.data[0];\n  if (!first || !first.balance || first.metadata.decimals === undefined) {\n    return 0;\n  }\n\n  return parseInt(first.balance, 10) / (10 ** first.metadata.decimals);\n}\n\nexport async function getCoinsDataCreatedBy(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgsOfIndexer & { coin?: string };\n}): Promise<GetCreatedCoinDataResponse> {\n  const { endlessConfig, accountAddress, options } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const { data } = await getEndlessIndexer<{}, GetCreatedCoinDataResponse>({\n    endlessConfig,\n    originMethod: \"getCoinsDataCreatedBy\",\n    path: `coins/created_by/${address}`,\n    params: {\n      page: options?.page,\n      pageSize: options?.pageSize,\n      coin: options?.coin,\n    },\n  });\n\n  return data;\n}\n\nexport async function getAccountCoinsData(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgsOfIndexer & { coin?: string };\n}): Promise<GetAccountCoinsDataResponse> {\n  const { endlessConfig, accountAddress, options } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const { data } = await getEndlessIndexer<{}, GetAccountCoinsDataResponse>({\n    endlessConfig,\n    originMethod: \"getAccountCoinsData\",\n    path: `accounts/${address}/coins`,\n    params: {\n      page: options?.page,\n      pageSize: options?.pageSize,\n      coin: options?.coin,\n    },\n  });\n\n  return data;\n}\n\n/**\n * NOTE: There is a potential issue once unified single signer scheme will be adopted\n * by the community.\n *\n * Becuase on could create 2 accounts with the same private key with this new authenticator type,\n * we’ll need to determine the order in which we lookup the accounts. First unified\n * scheme and then legacy scheme vs first legacy scheme and then unified scheme.\n *\n */\nexport async function deriveAccountFromPrivateKey(args: {\n  endlessConfig: EndlessConfig;\n  privateKey: PrivateKey;\n}): Promise<Account> {\n  const { endlessConfig, privateKey } = args;\n  const publicKey = new AnyPublicKey(privateKey.publicKey());\n\n  if (privateKey instanceof Secp256k1PrivateKey) {\n    // private key is secp256k1, therefore we know it for sure uses a single signer key\n    const authKey = AuthenticationKey.fromPublicKey({ publicKey });\n    const address = authKey.derivedAddress();\n    return Account.fromPrivateKey({ privateKey, address });\n  }\n\n  if (privateKey instanceof Ed25519PrivateKey) {\n    // lookup single sender ed25519\n    const singleSenderTransactionAuthenticatorAuthKey = AuthenticationKey.fromPublicKey({\n      publicKey,\n    });\n    const isSingleSenderTransactionAuthenticator = await isAccountExist({\n      authKey: singleSenderTransactionAuthenticatorAuthKey,\n      endlessConfig,\n    });\n    if (isSingleSenderTransactionAuthenticator) {\n      const address = singleSenderTransactionAuthenticatorAuthKey.derivedAddress();\n      return Account.fromPrivateKey({ privateKey, address, legacy: false });\n    }\n    // lookup legacy ed25519\n    const legacyAuthKey = AuthenticationKey.fromPublicKey({\n      publicKey: publicKey.publicKey as Ed25519PublicKey,\n    });\n    const isLegacyEd25519 = await isAccountExist({ authKey: legacyAuthKey, endlessConfig });\n    if (isLegacyEd25519) {\n      const address = legacyAuthKey.derivedAddress();\n      return Account.fromPrivateKey({ privateKey, address, legacy: true });\n    }\n  }\n  // if we are here, it means we couldn't find an address with an\n  // auth key that matches the provided private key\n  throw new Error(`Can't derive account from private key ${privateKey}`);\n}\n\nexport async function isAccountExist(args: { endlessConfig: EndlessConfig; authKey: AuthenticationKey }): Promise<boolean> {\n  const { endlessConfig, authKey } = args;\n  const accountAddress = await lookupOriginalAccountAddress({\n    endlessConfig,\n    authenticationKey: authKey.derivedAddress(),\n  });\n\n  try {\n    await getInfo({\n      endlessConfig,\n      accountAddress,\n    });\n    return true;\n  } catch (error: any) {\n    // account not found\n    if (error.status === 404) {\n      return false;\n    }\n    throw new Error(`Error while looking for an account info ${accountAddress.toString()}`);\n  }\n}\n\nexport async function getAccountsCoinBalance(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput[];\n  coinAddress: AccountAddressInput;\n}): Promise<GetAccountsCoinBalanceResponse> {\n  const { endlessConfig, accountAddress, coinAddress } = args;\n  const { data } = await postEndlessIndexer<{}, GetAccountsCoinBalanceResponse>({\n    endlessConfig,\n    originMethod: \"getAccountsCoinBalance\",\n    path: `accounts/coins/${coinAddress}`,\n    body: accountAddress,\n  });\n  return data;\n}\n\nexport async function getAccountsCoinsBalances(args: {\n  endlessConfig: EndlessConfig;\n  accounts: AccountAddressInput[];\n  coins: string[];\n}): Promise<AccountBalancesResponse[]> {\n  const { endlessConfig, accounts, coins } = args;\n  const accountAddresses = accounts.map((account) => AccountAddress.from(account).toString());\n  const request: GetAccountsBalancesRequest = {\n    accounts: accountAddresses,\n    coins,\n  };\n\n  const { data } = await postEndlessIndexer<{}, AccountBalancesResponse[]>({\n    endlessConfig,\n    originMethod: \"getAccountsCoinsBalances\",\n    path: \"accounts/coins\",\n    body: request,\n  });\n  return data;\n}\n\nexport async function getAccountCollections(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgsOfIndexer & { collection?: string };\n}): Promise<PageableCollectionResponse> {\n  const { endlessConfig, accountAddress, options } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const { data } = await getEndlessIndexer<{}, PageableCollectionResponse>({\n    endlessConfig,\n    originMethod: \"getAccountCollections\",\n    path: `accounts/${address}/collections`,\n    params: {\n      page: options?.page,\n      pageSize: options?.pageSize,\n      name: options?.collection ?? \"\",\n    },\n  });\n\n  return data;\n}\n\nexport async function getAccountNfts(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgsOfIndexer & { token?: string; collection?: string };\n}): Promise<PageableNftTokenResponse> {\n  const { endlessConfig, accountAddress, options } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const { data } = await getEndlessIndexer<{}, PageableNftTokenResponse>({\n    endlessConfig,\n    originMethod: \"getAccountNfts\",\n    path: `accounts/${address}/nfts`,\n    params: {\n      page: options?.page,\n      pageSize: options?.pageSize,\n      nft: options?.token,\n      collection: options?.collection,\n    },\n  });\n\n  return data;\n}\n\nexport async function getAccountNftCollections(args: {\n  endlessConfig: EndlessConfig;\n  accountAddress: AccountAddressInput;\n  options?: PaginationArgsOfIndexer & { collection?: string };\n}): Promise<PageableNftOwnedCollectionResponse> {\n  const { endlessConfig, accountAddress, options } = args;\n  const address = AccountAddress.from(accountAddress).toStringLong();\n\n  const { data } = await getEndlessIndexer<{}, PageableNftOwnedCollectionResponse>({\n    endlessConfig,\n    originMethod: \"getAccountNftCollections\",\n    path: `accounts/${address}/nfts/collections`,\n    params: {\n      page: options?.page,\n      pageSize: options?.pageSize,\n      collection: options?.collection,\n    },\n  });\n\n  return data;\n}"],"mappings":"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","names":["getInfo","args","endlessConfig","accountAddress","data","getEndlessFullNode","AccountAddress","getModules","options","paginateWithCursor","getModule","getModuleInner","memoizeAsync","moduleName","getTransactions","getResources","getResource","resourceType","lookupOriginalAccountAddress","authenticationKey","resource","handle","authKeyAddress","originalAddress","getTableItem","err","EndlessApiError","getAccountCoinAmount","coinId","address","first","getAccountCoinsData","getCoinsDataCreatedBy","getEndlessIndexer","deriveAccountFromPrivateKey","privateKey","publicKey","AnyPublicKey","Secp256k1PrivateKey","AuthenticationKey","Account","Ed25519PrivateKey","singleSenderTransactionAuthenticatorAuthKey","isAccountExist","legacyAuthKey","authKey","error","getAccountsCoinBalance","coinAddress","postEndlessIndexer","getAccountsCoinsBalances","accounts","coins","request","account","getAccountCollections","getAccountNfts","getAccountNftCollections"]}