{
  "version": 3,
  "sources": ["../../../../src/providers/strategies/IframeProviderStrategy/IframeProviderStrategy.ts"],
  "sourcesContent": ["import { providerLabels } from 'constants/providerFactory.constants';\nimport { Message, Transaction } from 'lib/sdkCore';\nimport { IDAppProviderAccount } from 'lib/sdkDappUtils';\nimport { IframeProvider } from 'lib/sdkWebWalletIframeProvider';\nimport { SignTransactionsOptionsType } from 'providers/DappProvider/helpers/signTransactions/signTransactionsWithProvider';\nimport {\n  ProviderTypeEnum,\n  ProviderType\n} from 'providers/types/providerFactory.types';\nimport { networkSelector } from 'store/selectors/networkSelectors';\nimport { getState } from 'store/store';\nimport { ProviderErrorsEnum } from 'types/provider.types';\nimport { IframeProviderType } from './types';\nimport { BaseProviderStrategy } from '../BaseProviderStrategy/BaseProviderStrategy';\nimport { signMessage } from '../helpers/signMessage/signMessage';\nimport { signTransactions } from '../helpers/signTransactions/signTransactions';\n\nexport class IframeProviderStrategy extends BaseProviderStrategy {\n  private readonly provider: IframeProvider;\n  private walletUrl: string;\n\n  constructor({ address, walletUrl }: IframeProviderType = {}) {\n    super(address);\n    this.walletUrl = walletUrl ?? '';\n    this.provider = IframeProvider.getInstance();\n    this._login = this.provider.login.bind(this.provider);\n  }\n\n  init(): Promise<boolean> {\n    this.initializeAddress();\n    this.initializeWalletUrl();\n    return this.initializeProvider();\n  }\n\n  private initializeWalletUrl() {\n    if (this.walletUrl) {\n      return;\n    }\n\n    const network = networkSelector(getState());\n\n    if (!network.iframeWalletAddress) {\n      throw new Error('Invalid walletUrl');\n    }\n\n    this.walletUrl = network.iframeWalletAddress;\n  }\n\n  private async initializeProvider() {\n    await this.provider.init();\n\n    if (this.address) {\n      this.setAccount({ address: this.address });\n    }\n\n    this.provider.setWalletUrl(this.walletUrl);\n\n    return true;\n  }\n\n  logout(): Promise<boolean> {\n    return this.provider.logout();\n  }\n\n  getType(): ProviderType {\n    return ProviderTypeEnum.metamask;\n  }\n\n  getAddress(): Promise<string | undefined> {\n    if (!this.provider) {\n      throw new Error(ProviderErrorsEnum.notInitialized);\n    }\n\n    return this.provider.getAddress();\n  }\n\n  setAccount(account: IDAppProviderAccount): void {\n    this.provider.setAccount(account);\n  }\n\n  isInitialized(): boolean {\n    return this.provider.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    const { manager, onClose } = await this.initSignState();\n\n    try {\n      const signedTransactions = await signTransactions({\n        transactions,\n        handleSign: this.provider.signTransactions.bind(this.provider),\n        options\n      });\n\n      return signedTransactions;\n    } catch (error) {\n      await onClose({ shouldCancelAction: true });\n      throw error;\n    } finally {\n      manager?.closeUI();\n    }\n  };\n\n  signMessage = async (message: Message) => {\n    if (!this.provider) {\n      throw new Error(ProviderErrorsEnum.notInitialized);\n    }\n\n    const signedMessage = await signMessage({\n      message,\n      handleSignMessage: this.provider.signMessage.bind(this.provider),\n      cancelAction: this.cancelAction,\n      providerType: providerLabels[ProviderTypeEnum.metamask]\n    });\n\n    return signedMessage;\n  };\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA+B,+CAG/BC,EAA+B,0CAE/BD,EAGO,iDACPE,EAAgC,4CAChCC,EAAyB,uBACzBC,EAAmC,gCAEnCC,EAAqC,wDACrCC,EAA4B,8CAC5BC,EAAiC,wDAE1B,MAAMT,UAA+B,sBAAqB,CAI/D,YAAY,CAAE,QAAAU,EAAS,UAAAC,CAAU,EAAwB,CAAC,EAAG,CAC3D,MAAMD,CAAO,EA8Df,kBAAe,SAAY,CACzB,KAAK,SAAS,aAAa,CAC7B,EAEA,sBAAmB,MACjBE,EACAC,IACG,CACH,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,qBAAmB,cAAc,EAGnD,KAAM,CAAE,QAAAC,EAAS,QAAAC,CAAQ,EAAI,MAAM,KAAK,cAAc,EAEtD,GAAI,CAOF,OAN2B,QAAM,oBAAiB,CAChD,aAAAH,EACA,WAAY,KAAK,SAAS,iBAAiB,KAAK,KAAK,QAAQ,EAC7D,QAAAC,CACF,CAAC,CAGH,OAASG,EAAO,CACd,YAAMD,EAAQ,CAAE,mBAAoB,EAAK,CAAC,EACpCC,CACR,QAAE,CACAF,GAAS,QAAQ,CACnB,CACF,EAEA,iBAAc,MAAOG,GAAqB,CACxC,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,qBAAmB,cAAc,EAUnD,OAPsB,QAAM,eAAY,CACtC,QAAAA,EACA,kBAAmB,KAAK,SAAS,YAAY,KAAK,KAAK,QAAQ,EAC/D,aAAc,KAAK,aACnB,aAAc,iBAAe,mBAAiB,QAAQ,CACxD,CAAC,CAGH,EAxGE,KAAK,UAAYN,GAAa,GAC9B,KAAK,SAAW,iBAAe,YAAY,EAC3C,KAAK,OAAS,KAAK,SAAS,MAAM,KAAK,KAAK,QAAQ,CACtD,CAEA,MAAyB,CACvB,YAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAClB,KAAK,mBAAmB,CACjC,CAEQ,qBAAsB,CAC5B,GAAI,KAAK,UACP,OAGF,MAAMO,KAAU,sBAAgB,YAAS,CAAC,EAE1C,GAAI,CAACA,EAAQ,oBACX,MAAM,IAAI,MAAM,mBAAmB,EAGrC,KAAK,UAAYA,EAAQ,mBAC3B,CAEA,MAAc,oBAAqB,CACjC,aAAM,KAAK,SAAS,KAAK,EAErB,KAAK,SACP,KAAK,WAAW,CAAE,QAAS,KAAK,OAAQ,CAAC,EAG3C,KAAK,SAAS,aAAa,KAAK,SAAS,EAElC,EACT,CAEA,QAA2B,CACzB,OAAO,KAAK,SAAS,OAAO,CAC9B,CAEA,SAAwB,CACtB,OAAO,mBAAiB,QAC1B,CAEA,YAA0C,CACxC,GAAI,CAAC,KAAK,SACR,MAAM,IAAI,MAAM,qBAAmB,cAAc,EAGnD,OAAO,KAAK,SAAS,WAAW,CAClC,CAEA,WAAWC,EAAqC,CAC9C,KAAK,SAAS,WAAWA,CAAO,CAClC,CAEA,eAAyB,CACvB,OAAO,KAAK,SAAS,cAAc,CACrC,CA8CF",
  "names": ["IframeProviderStrategy_exports", "__export", "IframeProviderStrategy", "__toCommonJS", "import_providerFactory", "import_sdkWebWalletIframeProvider", "import_networkSelectors", "import_store", "import_provider", "import_BaseProviderStrategy", "import_signMessage", "import_signTransactions", "address", "walletUrl", "transactions", "options", "manager", "onClose", "error", "message", "network", "account"]
}
