{
  "version": 3,
  "sources": ["../../src/providers/strategies/WebviewProviderStrategy/WebviewProviderStrategy.ts"],
  "sourcesContent": ["import { WebviewProvider } from '@multiversx/sdk-webview-provider/out/WebviewProvider';\nimport { safeWindow, version } from 'constants/window.constants';\nimport { Message, Transaction } from 'lib/sdkCore';\nimport { IDAppProviderAccount } from 'lib/sdkDappUtils';\nimport { SignTransactionsOptionsType } from 'providers/DappProvider/helpers/signTransactions/signTransactionsWithProvider';\nimport {\n  ProviderTypeEnum,\n  ProviderType\n} from 'providers/types/providerFactory.types';\nimport { ProviderErrorsEnum } from 'types/provider.types';\nimport { BaseProviderStrategy } from '../BaseProviderStrategy/BaseProviderStrategy';\n\ntype WebviewProviderProps = {\n  address?: string;\n};\n\nexport class WebviewProviderStrategy extends BaseProviderStrategy {\n  private readonly provider: WebviewProvider;\n\n  constructor(config?: WebviewProviderProps) {\n    super(config?.address);\n    this.provider = WebviewProvider.getInstance({\n      resetStateCallback: () => {\n        /* \n          Used in Hub to clear storage when logging out via the hub header.\n        */\n        safeWindow.localStorage?.clear?.();\n        safeWindow.sessionStorage?.clear?.();\n      }\n    });\n\n    this._login = this.provider.login.bind(this.provider);\n  }\n\n  async init(): Promise<boolean> {\n    this.initializeAddress();\n    return this.initializeProvider();\n  }\n\n  logout(): Promise<boolean> {\n    return this.provider.logout();\n  }\n\n  getType(): ProviderType {\n    return ProviderTypeEnum.webview;\n  }\n\n  getAddress(): Promise<string | undefined> {\n    throw new Error('Method not implemented.');\n  }\n\n  setAccount(account: IDAppProviderAccount): void {\n    return this.provider.setAccount(account);\n  }\n\n  isInitialized(): boolean {\n    return this.provider.isInitialized();\n  }\n\n  private async initializeProvider() {\n    const isInitialized = await this.provider.init(version);\n\n    if (this.address) {\n      this.setAccount({ address: this.address });\n    }\n\n    return isInitialized;\n  }\n\n  cancelAction = async () => {\n    this.provider.cancelAction();\n  };\n\n  signTransactions = async (\n    transactions: Transaction[],\n    _options?: SignTransactionsOptionsType\n  ) => {\n    if (!this.provider) {\n      throw new Error(ProviderErrorsEnum.notInitialized);\n    }\n\n    try {\n      const signedTransactions =\n        await this.provider.signTransactions(transactions);\n      return signedTransactions || [];\n    } catch (error) {\n      this.cancelAction();\n      throw error;\n    }\n  };\n\n  signMessage = async (message: Message) => {\n    if (!this.provider) {\n      throw new Error(ProviderErrorsEnum.notInitialized);\n    }\n\n    try {\n      const signedMessage = await this.provider.signMessage(message);\n      return signedMessage;\n    } catch (error) {\n      this.cancelAction();\n      throw error;\n    }\n  };\n}\n"],
  "mappings": "kIAAA,OAAS,mBAAAA,MAAuB,uDAgBzB,IAAMC,EAAN,cAAsCC,CAAqB,CAGhE,YAAYC,EAA+B,CACzC,MAAMA,GAAQ,OAAO,EAiDvB,kBAAe,SAAY,CACzB,KAAK,SAAS,aAAa,CAC7B,EAEA,sBAAmB,MACjBC,EACAC,IACG,CACH,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,oCAAuC,EAGnD,GAAI,CAGF,OADE,MAAM,KAAK,SAAS,iBAAiBD,CAAY,GACtB,CAAC,CAChC,OAASE,EAAO,CACd,WAAK,aAAa,EACZA,CACR,CACF,EAEA,iBAAc,MAAOC,GAAqB,CACxC,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,oCAAuC,EAGnD,GAAI,CAEF,OADsB,MAAM,KAAK,SAAS,YAAYA,CAAO,CAE/D,OAASD,EAAO,CACd,WAAK,aAAa,EACZA,CACR,CACF,EAlFE,KAAK,SAAWE,EAAgB,YAAY,CAC1C,mBAAoB,IAAM,CAIxBC,EAAW,cAAc,QAAQ,EACjCA,EAAW,gBAAgB,QAAQ,CACrC,CACF,CAAC,EAED,KAAK,OAAS,KAAK,SAAS,MAAM,KAAK,KAAK,QAAQ,CACtD,CAEA,MAAM,MAAyB,CAC7B,YAAK,kBAAkB,EAChB,KAAK,mBAAmB,CACjC,CAEA,QAA2B,CACzB,OAAO,KAAK,SAAS,OAAO,CAC9B,CAEA,SAAwB,CACtB,OAAOC,EAAiB,OAC1B,CAEA,YAA0C,CACxC,MAAM,IAAI,MAAM,yBAAyB,CAC3C,CAEA,WAAWC,EAAqC,CAC9C,OAAO,KAAK,SAAS,WAAWA,CAAO,CACzC,CAEA,eAAyB,CACvB,OAAO,KAAK,SAAS,cAAc,CACrC,CAEA,MAAc,oBAAqB,CACjC,IAAMC,EAAgB,MAAM,KAAK,SAAS,KAAKC,CAAO,EAEtD,OAAI,KAAK,SACP,KAAK,WAAW,CAAE,QAAS,KAAK,OAAQ,CAAC,EAGpCD,CACT,CAqCF",
  "names": ["WebviewProvider", "WebviewProviderStrategy", "BaseProviderStrategy", "config", "transactions", "_options", "error", "message", "WebviewProvider", "safeWindow", "ProviderTypeEnum", "account", "isInitialized", "version"]
}
