{
  "version": 3,
  "sources": ["../../src/providers/strategies/LedgerProviderStrategy/helpers/authenticateLedgerAccount/helpers/waitForLedgerSelection.ts"],
  "sourcesContent": ["import { HWProvider } from '@multiversx/sdk-hw-provider/out';\nimport { BigNumber } from 'bignumber.js';\n\nimport { ACCOUNTS_ENDPOINT } from 'apiCalls/endpoints';\nimport { LedgerConnectStateManager } from 'managers/internal/LedgerConnectStateManager/LedgerConnectStateManager';\nimport { getExplorerLink } from 'utils/transactions/getExplorerLink';\n\nimport { getAuthTokenText } from './getAuthTokenText';\nimport { updateAccountsList } from './updateAccountsList';\nimport { LedgerLoginType } from '../../../types/ledgerProvider.types';\n\ninterface ISelectedAccount {\n  address: string;\n  signature: string;\n  addressIndex: number;\n}\n\ninterface IWaitForLedgerSelection {\n  manager: LedgerConnectStateManager;\n  provider: HWProvider | null;\n  login: LedgerLoginType | null;\n  token?: string;\n  explorerAddress: string;\n  authData: ReturnType<typeof getAuthTokenText>;\n}\n\nexport async function waitForLedgerSelection({\n  manager,\n  provider,\n  login,\n  token,\n  explorerAddress,\n  authData\n}: IWaitForLedgerSelection): Promise<ISelectedAccount> {\n  const accountsListProps = {\n    manager,\n    provider\n  };\n\n  const selectedAccount = await new Promise<ISelectedAccount>(async function (\n    resolve,\n    reject\n  ) {\n    async function handleGoToPage(page: number) {\n      const addressesPerPage = manager ? manager.addressesPerPage ?? 1 : 1;\n      const startIndex = new BigNumber(page - 1).times(addressesPerPage);\n\n      manager?.updateStartIndex(Math.max(0, parseInt(startIndex.toString())));\n      await updateAccountsList(accountsListProps);\n    }\n\n    async function handleAccessWallet(payload: {\n      addressIndex: number;\n      selectedAddress: string;\n    }) {\n      if (!provider || !login) {\n        return;\n      }\n\n      manager?.updateConfirmScreen({\n        ...authData,\n        selectedAddress: payload.selectedAddress,\n        explorerLink: getExplorerLink({\n          to: `/${ACCOUNTS_ENDPOINT}/${payload.selectedAddress}`,\n          explorerAddress\n        })\n      });\n\n      try {\n        const loginInfo = token\n          ? await provider.tokenLogin({\n              token: Buffer.from(`${token}{}`),\n              addressIndex: payload.addressIndex\n            })\n          : await login({\n              addressIndex: payload.addressIndex\n            });\n\n        manager.unsubscribeFromAuthEvents({\n          handleCancel,\n          handleAccessWallet,\n          handleGoToPage\n        });\n\n        resolve({\n          address: loginInfo.address,\n          signature: loginInfo.signature\n            ? loginInfo.signature.toString('hex')\n            : '',\n          addressIndex: payload.addressIndex\n        });\n      } catch (err) {\n        console.error('User rejected login:', err);\n\n        const shouldGoBack = Boolean(manager?.getConfirmScreenData());\n        if (shouldGoBack) {\n          await updateAccountsList(accountsListProps);\n        }\n      }\n    }\n\n    async function handleCancel() {\n      await updateAccountsList(accountsListProps);\n      manager.unsubscribeFromAuthEvents({\n        handleCancel,\n        handleAccessWallet,\n        handleGoToPage\n      });\n      reject('User cancelled login');\n    }\n\n    manager.subscribeToAuthEvents({\n      handleCancel,\n      handleAccessWallet,\n      handleGoToPage\n    });\n  });\n\n  return selectedAccount;\n}\n"],
  "mappings": "2HACA,OAAS,aAAAA,MAAiB,eAyB1B,eAAsBC,EAAuB,CAC3C,QAAAC,EACA,SAAAC,EACA,MAAAC,EACA,MAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,EAAuD,CACrD,IAAMC,EAAoB,CACxB,QAAAN,EACA,SAAAC,CACF,EAiFA,OA/EwB,MAAM,IAAI,QAA0B,eAC1DM,EACAC,EACA,CACA,eAAeC,EAAeC,EAAc,CAC1C,IAAMC,EAAmBX,EAAUA,EAAQ,kBAAoB,EAAI,EAC7DY,EAAa,IAAIC,EAAUH,EAAO,CAAC,EAAE,MAAMC,CAAgB,EAEjEX,GAAS,iBAAiB,KAAK,IAAI,EAAG,SAASY,EAAW,SAAS,CAAC,CAAC,CAAC,EACtE,MAAME,EAAmBR,CAAiB,CAC5C,CAEA,eAAeS,EAAmBC,EAG/B,CACD,GAAI,GAACf,GAAY,CAACC,GAIlB,CAAAF,GAAS,oBAAoB,CAC3B,GAAGK,EACH,gBAAiBW,EAAQ,gBACzB,aAAcC,EAAgB,CAC5B,GAAI,IAAIC,CAAiB,IAAIF,EAAQ,eAAe,GACpD,gBAAAZ,CACF,CAAC,CACH,CAAC,EAED,GAAI,CACF,IAAMe,EAAYhB,EACd,MAAMF,EAAS,WAAW,CACxB,MAAO,OAAO,KAAK,GAAGE,CAAK,IAAI,EAC/B,aAAca,EAAQ,YACxB,CAAC,EACD,MAAMd,EAAM,CACV,aAAcc,EAAQ,YACxB,CAAC,EAELhB,EAAQ,0BAA0B,CAChC,aAAAoB,EACA,mBAAAL,EACA,eAAAN,CACF,CAAC,EAEDF,EAAQ,CACN,QAASY,EAAU,QACnB,UAAWA,EAAU,UACjBA,EAAU,UAAU,SAAS,KAAK,EAClC,GACJ,aAAcH,EAAQ,YACxB,CAAC,CACH,OAASK,EAAK,CACZ,QAAQ,MAAM,uBAAwBA,CAAG,EAEpB,EAAQrB,GAAS,qBAAqB,GAEzD,MAAMc,EAAmBR,CAAiB,CAE9C,EACF,CAEA,eAAec,GAAe,CAC5B,MAAMN,EAAmBR,CAAiB,EAC1CN,EAAQ,0BAA0B,CAChC,aAAAoB,EACA,mBAAAL,EACA,eAAAN,CACF,CAAC,EACDD,EAAO,sBAAsB,CAC/B,CAEAR,EAAQ,sBAAsB,CAC5B,aAAAoB,EACA,mBAAAL,EACA,eAAAN,CACF,CAAC,CACH,CAAC,CAGH",
  "names": ["BigNumber", "waitForLedgerSelection", "manager", "provider", "login", "token", "explorerAddress", "authData", "accountsListProps", "resolve", "reject", "handleGoToPage", "page", "addressesPerPage", "startIndex", "BigNumber", "updateAccountsList", "handleAccessWallet", "payload", "getExplorerLink", "ACCOUNTS_ENDPOINT", "loginInfo", "handleCancel", "err"]
}
