{
  "version": 3,
  "sources": ["../../src/providers/strategies/LedgerProviderStrategy/helpers/authenticateLedgerAccount/authenticateLedgerAccount.ts"],
  "sourcesContent": ["import { HWProvider } from '@multiversx/sdk-hw-provider/out';\nimport { LedgerConnectStateManager } from 'managers/internal/LedgerConnectStateManager/LedgerConnectStateManager';\nimport { getExplorerAddress } from 'methods/network/getExplorerAddress';\nimport { ProviderTypeEnum } from 'providers/types/providerFactory.types';\nimport { setLedgerAccount } from 'store/actions/account/accountActions';\nimport { setLedgerLogin } from 'store/actions/loginInfo/loginInfoActions';\n\nimport { getAuthTokenText } from './helpers/getAuthTokenText';\nimport { updateAccountsList } from './helpers/updateAccountsList';\nimport { waitForLedgerSelection } from './helpers/waitForLedgerSelection';\nimport {\n  LedgerConfigType,\n  LedgerLoginType\n} from '../../types/ledgerProvider.types';\n\ninterface IGetLedgerLogin {\n  options?: {\n    callbackUrl?: string;\n    token?: string;\n  };\n  config: LedgerConfigType;\n  provider: HWProvider | null;\n  login: LedgerLoginType | null;\n}\n\nexport async function authenticateLedgerAccount({\n  options,\n  config,\n  provider,\n  login\n}: IGetLedgerLogin) {\n  const manager = LedgerConnectStateManager.getInstance();\n\n  const explorerAddress = getExplorerAddress();\n\n  const authData = getAuthTokenText({\n    loginToken: options?.token,\n    version: config.version\n  });\n\n  // refresh account list\n  await updateAccountsList({ manager, provider });\n\n  // cycle through accounts until user makes a choice\n  const selectedAccount = await waitForLedgerSelection({\n    manager,\n    provider,\n    login,\n    token: options?.token,\n    explorerAddress,\n    authData\n  });\n\n  const { version, dataEnabled } = config;\n\n  // login is finished, data can be persisted in the store\n  setLedgerLogin({\n    index: selectedAccount.addressIndex,\n    loginType: ProviderTypeEnum.ledger\n  });\n\n  setLedgerAccount({\n    address: selectedAccount.address,\n    index: selectedAccount.addressIndex,\n    version,\n    hasContractDataEnabled: dataEnabled\n  });\n\n  return {\n    address: selectedAccount.address,\n    signature: selectedAccount.signature\n  };\n}\n"],
  "mappings": "wUAyBA,eAAsBA,EAA0B,CAC9C,QAAAC,EACA,OAAAC,EACA,SAAAC,EACA,MAAAC,CACF,EAAoB,CAClB,IAAMC,EAAUC,EAA0B,YAAY,EAEhDC,EAAkBC,EAAmB,EAErCC,EAAWC,EAAiB,CAChC,WAAYT,GAAS,MACrB,QAASC,EAAO,OAClB,CAAC,EAGD,MAAMS,EAAmB,CAAE,QAAAN,EAAS,SAAAF,CAAS,CAAC,EAG9C,IAAMS,EAAkB,MAAMC,EAAuB,CACnD,QAAAR,EACA,SAAAF,EACA,MAAAC,EACA,MAAOH,GAAS,MAChB,gBAAAM,EACA,SAAAE,CACF,CAAC,EAEK,CAAE,QAAAK,EAAS,YAAAC,CAAY,EAAIb,EAGjC,OAAAc,EAAe,CACb,MAAOJ,EAAgB,aACvB,UAAWK,EAAiB,MAC9B,CAAC,EAEDC,EAAiB,CACf,QAASN,EAAgB,QACzB,MAAOA,EAAgB,aACvB,QAAAE,EACA,uBAAwBC,CAC1B,CAAC,EAEM,CACL,QAASH,EAAgB,QACzB,UAAWA,EAAgB,SAC7B,CACF",
  "names": ["authenticateLedgerAccount", "options", "config", "provider", "login", "manager", "LedgerConnectStateManager", "explorerAddress", "getExplorerAddress", "authData", "getAuthTokenText", "updateAccountsList", "selectedAccount", "waitForLedgerSelection", "version", "dataEnabled", "setLedgerLogin", "ProviderTypeEnum", "setLedgerAccount"]
}
