{
  "version": 3,
  "sources": ["../../src/managers/internal/LedgerConnectStateManager/LedgerConnectStateManager.ts"],
  "sourcesContent": ["import { UITagsEnum } from 'constants/UITags.enum';\n\nimport { MvxLedgerConnect } from 'lib/sdkDappUI.components';\nimport { UnlockPanelEventsEnum } from 'managers/UnlockPanelManager/UnlockPanelManager.types';\nimport {\n  IAccountScreenData,\n  ILedgerAccount,\n  ILedgerConnectPanelData,\n  IConnectScreenData,\n  IConfirmScreenData\n} from 'providers/strategies/LedgerProviderStrategy/types/ledger.types';\nimport { LedgerConnectEventsEnum } from './types';\nimport { UIBaseManager } from '../UIBaseManager/UIBaseManager';\n\ntype AuthEventsParams = {\n  handleCancel: () => Promise<void>;\n  handleAccessWallet: (payload: {\n    addressIndex: number;\n    selectedAddress: string;\n  }) => Promise<void>;\n  handleGoToPage: (page: number) => Promise<void>;\n};\n\ntype ProviderInitEventsParams = {\n  handleRetry: () => void;\n  handleCancel: () => void;\n};\n\nexport class LedgerConnectStateManager extends UIBaseManager<\n  MvxLedgerConnect,\n  ILedgerConnectPanelData,\n  LedgerConnectEventsEnum\n> {\n  private static instance: LedgerConnectStateManager;\n\n  public static getInstance(): LedgerConnectStateManager {\n    if (!LedgerConnectStateManager.instance) {\n      LedgerConnectStateManager.instance = new LedgerConnectStateManager();\n    }\n    return LedgerConnectStateManager.instance;\n  }\n\n  public readonly addressesPerPage = 10;\n\n  private allAccounts: ILedgerAccount[] = [];\n\n  // first screen data\n  private initialConnectScreenData: IConnectScreenData = {};\n  private connectScreenData: IConnectScreenData = {\n    ...this.initialConnectScreenData\n  };\n\n  // second screen data\n  private initialAccountScreenData: IAccountScreenData = {\n    accounts: this.allAccounts,\n    startIndex: 0,\n    addressesPerPage: this.addressesPerPage,\n    isLoading: true\n  };\n\n  private accountScreenData: IAccountScreenData = {\n    ...this.initialAccountScreenData\n  };\n\n  // third screen data\n  private initialConfirmScreenData: IConfirmScreenData = {\n    selectedAddress: '',\n    explorerLink: ''\n  };\n\n  private confirmScreenData: IConfirmScreenData = {\n    ...this.initialConfirmScreenData\n  };\n\n  protected initialData: ILedgerConnectPanelData = {\n    connectScreenData: this.initialConnectScreenData,\n    accountScreenData: this.initialAccountScreenData,\n    confirmScreenData: this.initialConfirmScreenData\n  };\n\n  constructor() {\n    super({\n      uiDataUpdateEvent: LedgerConnectEventsEnum.DATA_UPDATE,\n      uiTag: UITagsEnum.LEDGER_CONNECT\n    });\n    this.data = this.getInitialData();\n  }\n\n  public updateAllAccounts(accounts: ILedgerAccount[]): void {\n    this.allAccounts = accounts;\n    this.accountScreenData.accounts = accounts;\n  }\n\n  public updateStartIndex(startIndex: number): void {\n    this.accountScreenData.startIndex = startIndex;\n  }\n\n  public updateConnectScreen(members: Partial<IConnectScreenData>): void {\n    this.connectScreenData = {\n      ...this.connectScreenData,\n      ...members\n    };\n\n    this.data.confirmScreenData = null;\n    this.data.accountScreenData = null;\n    this.data.connectScreenData = this.connectScreenData;\n    this.notifyDataUpdate();\n  }\n\n  public updateAccountScreen(members: Partial<IAccountScreenData>): void {\n    this.accountScreenData = {\n      ...this.accountScreenData,\n      ...members\n    };\n    this.data.confirmScreenData = null;\n    this.data.accountScreenData = this.accountScreenData;\n    this.notifyDataUpdate();\n  }\n\n  public updateConfirmScreen(members: Partial<IConfirmScreenData>): void {\n    this.confirmScreenData = {\n      ...this.confirmScreenData,\n      ...members\n    };\n    this.data.accountScreenData = null;\n    this.data.confirmScreenData = this.confirmScreenData;\n    this.notifyDataUpdate();\n  }\n\n  public getAccountScreenData(): IAccountScreenData | null {\n    return this.data.accountScreenData;\n  }\n\n  public getConfirmScreenData(): IConfirmScreenData | null {\n    return this.data.confirmScreenData;\n  }\n\n  public getAllAccounts(): ILedgerAccount[] {\n    return this.allAccounts;\n  }\n\n  public subscribeToProviderInit({\n    handleRetry,\n    handleCancel\n  }: ProviderInitEventsParams): void {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.eventBus.subscribe(\n      LedgerConnectEventsEnum.CONNECT_DEVICE,\n      handleRetry\n    );\n    this.eventBus.subscribe(LedgerConnectEventsEnum.CLOSE, handleCancel);\n    this.eventBus.subscribe(\n      LedgerConnectEventsEnum.UI_DISCONNECTED,\n      this.destroy.bind(this)\n    );\n  }\n\n  public unsubscribeFromProviderInit({\n    handleRetry,\n    handleCancel\n  }: ProviderInitEventsParams): void {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.eventBus.unsubscribe(\n      LedgerConnectEventsEnum.CONNECT_DEVICE,\n      handleRetry\n    );\n    this.eventBus.unsubscribe(LedgerConnectEventsEnum.CLOSE, handleCancel);\n    this.eventBus.unsubscribe(\n      LedgerConnectEventsEnum.UI_DISCONNECTED,\n      this.destroy.bind(this)\n    );\n  }\n\n  public subscribeToAuthEvents({\n    handleCancel,\n    handleAccessWallet,\n    handleGoToPage\n  }: AuthEventsParams) {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.eventBus.subscribe(LedgerConnectEventsEnum.CLOSE, handleCancel);\n\n    this.eventBus.subscribe(\n      LedgerConnectEventsEnum.ACCESS_WALLET,\n      handleAccessWallet\n    );\n    this.eventBus.subscribe(LedgerConnectEventsEnum.GO_TO_PAGE, handleGoToPage);\n  }\n  public unsubscribeFromAuthEvents({\n    handleCancel,\n    handleAccessWallet,\n    handleGoToPage\n  }: AuthEventsParams) {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.eventBus.unsubscribe(LedgerConnectEventsEnum.CLOSE, handleCancel);\n\n    this.eventBus.unsubscribe(\n      LedgerConnectEventsEnum.ACCESS_WALLET,\n      handleAccessWallet\n    );\n    this.eventBus.unsubscribe(\n      LedgerConnectEventsEnum.GO_TO_PAGE,\n      handleGoToPage\n    );\n\n    this.resetData();\n  }\n\n  public handleClose() {\n    if (this.anchor) {\n      this.anchor?.dispatchEvent(\n        new CustomEvent(UnlockPanelEventsEnum.ANCHOR_CLOSE, {\n          composed: false,\n          bubbles: false\n        })\n      );\n    } else {\n      this.destroy();\n    }\n  }\n\n  protected resetData(): void {\n    this.accountScreenData = { ...this.initialAccountScreenData };\n    this.confirmScreenData = { ...this.initialConfirmScreenData };\n    this.connectScreenData = { ...this.initialConnectScreenData };\n    this.allAccounts = [];\n    super.resetData();\n  }\n\n  protected async setupEventListeners() {\n    if (!this.eventBus) {\n      return;\n    }\n\n    this.eventBus.subscribe(\n      LedgerConnectEventsEnum.CLOSE,\n      this.handleClose.bind(this)\n    );\n  }\n}\n"],
  "mappings": "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",
  "names": ["LedgerConnectStateManager", "_LedgerConnectStateManager", "UIBaseManager", "accounts", "startIndex", "members", "handleRetry", "handleCancel", "handleAccessWallet", "handleGoToPage"]
}
