{
  "version": 3,
  "sources": ["../../../../src/providers/strategies/ExtensionProviderStrategy/ExtensionProviderStrategy.ts"],
  "sourcesContent": ["import { ExtensionProvider } from '@multiversx/sdk-extension-provider/out/extensionProvider';\nimport { providerLabels } from 'constants/providerFactory.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';\nimport { signMessage } from '../helpers/signMessage/signMessage';\n\nexport class ExtensionProviderStrategy extends BaseProviderStrategy {\n  private readonly provider: ExtensionProvider;\n\n  constructor(address?: string) {\n    super(address);\n    this.provider = ExtensionProvider.getInstance();\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  private async initializeProvider() {\n    const initialized = await this.provider.init();\n\n    if (this.address) {\n      this.setAccount({ address: this.address });\n    }\n\n    return initialized;\n  }\n\n  getAddress(): Promise<string | undefined> {\n    return this.provider.getAddress();\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  logout(): Promise<boolean> {\n    return this.provider.logout();\n  }\n\n  getType(): ProviderType {\n    return ProviderTypeEnum.extension;\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: Transaction[] =\n        (await this.provider.signTransactions(transactions)) ?? [];\n\n      return signedTransactions;\n    } catch (error) {\n      await onClose({ shouldCancelAction: false });\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.extension\n    });\n\n    return signedMessage;\n  };\n}\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkC,oEAClCC,EAA+B,+CAI/BA,EAGO,iDACPC,EAAmC,gCACnCC,EAAqC,wDACrCC,EAA4B,8CAErB,MAAMN,UAAkC,sBAAqB,CAGlE,YAAYO,EAAkB,CAC5B,MAAMA,CAAO,EAwCf,kBAAe,SAAY,CACzB,KAAK,SAAS,aAAa,CAC7B,EAEA,sBAAmB,MACjBC,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,CAIF,OAFG,MAAM,KAAK,SAAS,iBAAiBH,CAAY,GAAM,CAAC,CAG7D,OAASI,EAAO,CACd,YAAMD,EAAQ,CAAE,mBAAoB,EAAM,CAAC,EACrCC,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,SAC/B,CAAC,CAGH,EA/EE,KAAK,SAAW,oBAAkB,YAAY,EAC9C,KAAK,OAAS,KAAK,SAAS,MAAM,KAAK,KAAK,QAAQ,CACtD,CAEA,MAAM,MAAyB,CAC7B,YAAK,kBAAkB,EAChB,KAAK,mBAAmB,CACjC,CAEA,MAAc,oBAAqB,CACjC,MAAMC,EAAc,MAAM,KAAK,SAAS,KAAK,EAE7C,OAAI,KAAK,SACP,KAAK,WAAW,CAAE,QAAS,KAAK,OAAQ,CAAC,EAGpCA,CACT,CAEA,YAA0C,CACxC,OAAO,KAAK,SAAS,WAAW,CAClC,CAEA,WAAWC,EAAqC,CAC9C,OAAO,KAAK,SAAS,WAAWA,CAAO,CACzC,CAEA,eAAyB,CACvB,OAAO,KAAK,SAAS,cAAc,CACrC,CAEA,QAA2B,CACzB,OAAO,KAAK,SAAS,OAAO,CAC9B,CAEA,SAAwB,CACtB,OAAO,mBAAiB,SAC1B,CA2CF",
  "names": ["ExtensionProviderStrategy_exports", "__export", "ExtensionProviderStrategy", "__toCommonJS", "import_extensionProvider", "import_providerFactory", "import_provider", "import_BaseProviderStrategy", "import_signMessage", "address", "transactions", "_options", "manager", "onClose", "error", "message", "initialized", "account"]
}
