{
  "version": 3,
  "sources": ["../../../src/methods/trackTransactions/trackTransactions.ts"],
  "sourcesContent": ["import { subscriptions } from 'constants/storage.constants';\nimport { WebsocketConnectionStatusEnum } from 'constants/websocket.constants';\nimport { websocketEventSelector } from 'store/selectors/accountSelectors';\nimport { getStore } from 'store/store';\nimport { SubscriptionsEnum } from 'types/subscriptions.type';\nimport { checkTransactionStatus } from './helpers/checkTransactionStatus';\nimport { getPollingInterval } from './helpers/getPollingInterval';\n\n/**\n * Tracks transactions using websocket or polling\n * @returns stopTransactionsTracking function\n */\nexport async function trackTransactions(): Promise<{\n  stopTransactionsTracking: () => void;\n}> {\n  const store = getStore();\n  const pollingInterval = getPollingInterval();\n  let pollingIntervalRef: ReturnType<typeof setTimeout> | null = null;\n  let timestamp = websocketEventSelector(store.getState())?.timestamp ?? null;\n\n  const recheckStatus = async (): Promise<void> => {\n    try {\n      await checkTransactionStatus();\n    } catch (error) {\n      console.error(\n        '[trackTransactions] Error checking transaction status:',\n        error\n      );\n    }\n  };\n\n  const startPolling = (): void => {\n    // Prevent multiple polling intervals\n    if (pollingIntervalRef) {\n      return;\n    }\n    pollingIntervalRef = setInterval(recheckStatus, pollingInterval);\n  };\n\n  const stopPolling = (): void => {\n    if (pollingIntervalRef) {\n      clearInterval(pollingIntervalRef);\n      pollingIntervalRef = null;\n    }\n  };\n\n  const setupWebSocketTracking = (): void => {\n    stopPolling();\n    const unsubscribeWebsocketEvent = store.subscribe(\n      ({ account: { websocketEvent } }) => {\n        if (\n          websocketEvent?.message &&\n          websocketEvent.timestamp != null &&\n          timestamp !== websocketEvent.timestamp\n        ) {\n          timestamp = websocketEvent.timestamp;\n          recheckStatus();\n        }\n      }\n    );\n\n    subscriptions.set(\n      SubscriptionsEnum.websocketEventReceived,\n      unsubscribeWebsocketEvent\n    );\n  };\n\n  // Initial execution\n  recheckStatus();\n\n  const stopTransactionsTracking = (): void => {\n    stopPolling();\n  };\n\n  const unsubscribeWebsocketStatus = store.subscribe(\n    ({ account: { address }, config: { websocketStatus } }, prevState) => {\n      const hasStatusChange =\n        prevState.config.websocketStatus !== websocketStatus;\n\n      if (!hasStatusChange) {\n        return;\n      }\n\n      switch (websocketStatus) {\n        case WebsocketConnectionStatusEnum.COMPLETED:\n          setupWebSocketTracking();\n          break;\n        case WebsocketConnectionStatusEnum.PENDING:\n          startPolling();\n          break;\n        default:\n          address ? startPolling() : stopTransactionsTracking();\n          break;\n      }\n    }\n  );\n\n  subscriptions.set(\n    SubscriptionsEnum.websocketStatusChanged,\n    unsubscribeWebsocketStatus\n  );\n  return { stopTransactionsTracking };\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA8B,uCAC9BC,EAA8C,yCAC9CC,EAAuC,4CACvCC,EAAyB,uBACzBC,EAAkC,oCAClCC,EAAuC,4CACvCC,EAAmC,wCAMnC,eAAsBR,GAEnB,CACD,MAAMS,KAAQ,YAAS,EACjBC,KAAkB,sBAAmB,EAC3C,IAAIC,EAA2D,KAC3DC,KAAY,0BAAuBH,EAAM,SAAS,CAAC,GAAG,WAAa,KAEvE,MAAMI,EAAgB,SAA2B,CAC/C,GAAI,CACF,QAAM,0BAAuB,CAC/B,OAASC,EAAO,CACd,QAAQ,MACN,yDACAA,CACF,CACF,CACF,EAEMC,EAAe,IAAY,CAE3BJ,IAGJA,EAAqB,YAAYE,EAAeH,CAAe,EACjE,EAEMM,EAAc,IAAY,CAC1BL,IACF,cAAcA,CAAkB,EAChCA,EAAqB,KAEzB,EAEMM,EAAyB,IAAY,CACzCD,EAAY,EACZ,MAAME,EAA4BT,EAAM,UACtC,CAAC,CAAE,QAAS,CAAE,eAAAU,CAAe,CAAE,IAAM,CAEjCA,GAAgB,SAChBA,EAAe,WAAa,MAC5BP,IAAcO,EAAe,YAE7BP,EAAYO,EAAe,UAC3BN,EAAc,EAElB,CACF,EAEA,gBAAc,IACZ,oBAAkB,uBAClBK,CACF,CACF,EAGAL,EAAc,EAEd,MAAMO,EAA2B,IAAY,CAC3CJ,EAAY,CACd,EAEMK,EAA6BZ,EAAM,UACvC,CAAC,CAAE,QAAS,CAAE,QAAAa,CAAQ,EAAG,OAAQ,CAAE,gBAAAC,CAAgB,CAAE,EAAGC,IAAc,CAIpE,GAFEA,EAAU,OAAO,kBAAoBD,EAMvC,OAAQA,EAAiB,CACvB,KAAK,gCAA8B,UACjCN,EAAuB,EACvB,MACF,KAAK,gCAA8B,QACjCF,EAAa,EACb,MACF,QACEO,EAAUP,EAAa,EAAIK,EAAyB,EACpD,KACJ,CACF,CACF,EAEA,uBAAc,IACZ,oBAAkB,uBAClBC,CACF,EACO,CAAE,yBAAAD,CAAyB,CACpC",
  "names": ["trackTransactions_exports", "__export", "trackTransactions", "__toCommonJS", "import_storage", "import_websocket", "import_accountSelectors", "import_store", "import_subscriptions", "import_checkTransactionStatus", "import_getPollingInterval", "store", "pollingInterval", "pollingIntervalRef", "timestamp", "recheckStatus", "error", "startPolling", "stopPolling", "setupWebSocketTracking", "unsubscribeWebsocketEvent", "websocketEvent", "stopTransactionsTracking", "unsubscribeWebsocketStatus", "address", "websocketStatus", "prevState"]
}
