{"version":3,"sources":["/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-NWCDXQPG.cjs","../src/restore-modal.ts"],"names":[],"mappings":"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","file":"/home/runner/work/service-auth-simple/service-auth-simple/packages/up-connector/dist/chunk-NWCDXQPG.cjs","sourcesContent":[null,"/**\n * Restore Modal - Lit Component\n *\n * Framework-agnostic restore modal for wallet data import.\n * Uses lukso-modal from @lukso/web-components for consistent UI.\n */\n\nimport { safeCustomElement } from '@lukso/core/utils'\nimport type {\n  BackupFile,\n  PasskeyAuthProvider,\n  WalletData,\n} from '@lukso/passkey-auth'\nimport { readBackupFile } from '@lukso/passkey-auth'\nimport { html, nothing } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { CoreLitElement } from './styles'\n\n// Import lukso web components\nimport '@lukso/web-components/dist/components/lukso-modal'\nimport '@lukso/web-components/dist/components/lukso-button'\nimport '@lukso/web-components/dist/components/lukso-input'\n\nenum Step {\n  UPLOAD = 1,\n  PASSWORD = 2,\n  PREVIEW = 3,\n  SUCCESS = 4,\n}\n\n@safeCustomElement('restore-modal')\nexport class RestoreModal extends CoreLitElement {\n  // Public properties\n  @property({ type: Boolean, reflect: true }) isOpen = false\n  @property({ type: String }) theme: 'light' | 'dark' | 'auto' = 'auto'\n  @property({ type: Object }) keyGenerator: PasskeyAuthProvider | null = null\n\n  // Private state\n  @state() private currentStep: Step = Step.UPLOAD\n  @state() private selectedFile: File | null = null\n  @state() private backupData: BackupFile | null = null\n  @state() private fileError: string | null = null\n  @state() private isDragging = false\n  @state() private password = ''\n  @state() private passwordErrors: string[] = []\n  @state() private isRestoring = false\n  @state() private validationWarnings: string[] = []\n  @state() private controllers: Array<{\n    address: string\n    status: 'new' | 'existing'\n  }> = []\n  @state() private restoredAddresses: string[] = []\n  validationInfo: string[] = []\n  walletData: WalletData | null = null\n\n  /**\n   * Public method for parent to set preview result\n   * Called after parent handles the 'preview' event\n   */\n  public setPreviewResult(options: {\n    controllers: Array<{ address: string; status: 'new' | 'existing' }>\n    warnings?: string[]\n  }) {\n    this.controllers = options.controllers\n    this.validationWarnings = options.warnings || []\n  }\n\n  /**\n   * Public method for parent to set validation result\n   * Called after parent handles the 'validate' event\n   */\n  public setValidationResult(\n    walletData: WalletData | null,\n    options?: {\n      error?: string\n      warnings?: string[]\n      info?: string[]\n    }\n  ) {\n    this.isRestoring = false\n\n    if (options?.error) {\n      this.passwordErrors = [options.error]\n      this.validationWarnings = []\n      this.validationInfo = []\n    } else if (walletData) {\n      this.walletData = walletData\n      this.validationWarnings = options?.warnings || []\n      this.validationInfo = options?.info || []\n      this.currentStep = Step.SUCCESS\n    }\n  }\n\n  render() {\n    return html`\n      <lukso-modal\n        ?is-open=${this.isOpen}\n        size=\"medium\"\n        @on-backdrop-click=${this.close}\n      >\n        <div class=\"p-6\">\n          <!-- Header -->\n          <h2 class=\"m-0 mb-6 text-neutral-20 dark:text-white heading-inter-21-semi-bold\">\n            ${this.getStepTitle()}\n          </h2>\n\n          <!-- Step content -->\n          ${this.renderStep()}\n        </div>\n      </lukso-modal>\n    `\n  }\n\n  private renderStep() {\n    switch (this.currentStep) {\n      case Step.UPLOAD:\n        return this.renderUploadStep()\n      case Step.PASSWORD:\n        return this.renderPasswordStep()\n      case Step.PREVIEW:\n        return this.renderPreviewStep()\n      case Step.SUCCESS:\n        return this.renderSuccessStep()\n      default:\n        return nothing\n    }\n  }\n\n  private renderUploadStep() {\n    return html`\n      <p class=\"mb-6 text-neutral-40 dark:text-neutral-50 paragraph-inter-16-regular\">\n        Select your backup file to restore your wallet data. Your backup file stays on your device and is never uploaded.\n      </p>\n\n      <div\n        class=\"border-2 border-dashed rounded-xl p-10 text-center bg-neutral-95 dark:bg-neutral-80 transition-all cursor-pointer my-6 ${\n          this.isDragging\n            ? 'border-blue-60 bg-blue-95 dark:bg-blue-95/10'\n            : this.fileError\n              ? 'border-red-55 bg-red-95'\n              : 'border-neutral-90 dark:border-neutral-70'\n        }\"\n        @drop=${this.handleDrop}\n        @dragover=${this.handleDragOver}\n        @dragleave=${this.handleDragLeave}\n        @click=${this.triggerFileInput}\n      >\n        <div class=\"flex flex-col items-center gap-3\">\n          <p class=\"m-0 text-neutral-10 dark:text-white heading-inter-16-semi-bold\">\n            Drag and drop your backup file here\n          </p>\n          <p class=\"m-0 text-neutral-40 paragraph-inter-14-regular\">or</p>\n          <lukso-button\n            variant=\"primary\"\n            @click=${(e: Event) => {\n              e.stopPropagation()\n              this.triggerFileInput()\n            }}\n          >\n            Choose File\n          </lukso-button>\n          ${\n            this.selectedFile\n              ? html`\n            <p class=\"mt-2 mb-0 text-green-54 paragraph-inter-14-semi-bold\">\n              ${this.selectedFile.name}\n            </p>\n          `\n              : nothing\n          }\n          ${\n            this.fileError\n              ? html`\n            <p class=\"mt-2 mb-0 text-red-55 paragraph-inter-14-semi-bold\">\n              ${this.fileError}\n            </p>\n          `\n              : nothing\n          }\n        </div>\n      </div>\n\n      <input\n        type=\"file\"\n        class=\"hidden\"\n        accept=\".json\"\n        @change=${this.handleFileSelect}\n      />\n\n      <div class=\"flex justify-end mt-6\">\n        <lukso-button variant=\"text\" @click=${this.close}>\n          Cancel\n        </lukso-button>\n      </div>\n    `\n  }\n\n  private renderPasswordStep() {\n    const canProceed = this.password && this.password.length > 0\n\n    return html`\n      <p class=\"mb-5 text-neutral-40 dark:text-neutral-50 paragraph-inter-14-regular\">\n        This backup is encrypted. Enter the password to decrypt it.\n      </p>\n\n      <div>\n        <lukso-input\n          type=\"password\"\n          label=\"Password\"\n          placeholder=\"Enter decryption password\"\n          .value=${this.password}\n          @on-input=${(e: CustomEvent) => {\n            this.password = e.detail.value\n          }}\n          @keyup=${(e: KeyboardEvent) => e.key === 'Enter' && canProceed && this.previewRestore()}\n          is-full-width\n          autofocus\n        ></lukso-input>\n        ${this.passwordErrors.map(\n          (error) => html`\n          <div class=\"mt-1 text-red-55 paragraph-inter-13-regular\">${error}</div>\n        `\n        )}\n      </div>\n\n      <div class=\"flex justify-between gap-3 mt-6\">\n        <div class=\"flex gap-3\">\n          <lukso-button variant=\"text\" @click=${this.close}>\n            Cancel\n          </lukso-button>\n          <lukso-button variant=\"secondary\" @click=${this.goBack}>\n            Back\n          </lukso-button>\n        </div>\n        <lukso-button\n          variant=\"primary\"\n          ?disabled=${!canProceed || this.isRestoring}\n          ?is-loading=${this.isRestoring}\n          @click=${this.previewRestore}\n        >\n          Continue\n        </lukso-button>\n      </div>\n    `\n  }\n\n  private renderPreviewStep() {\n    return html`\n      <p class=\"mb-6 text-neutral-40 dark:text-neutral-50 paragraph-inter-16-regular\">\n        ${\n          this.controllers.length > 0\n            ? `Found ${this.controllers.length} controller${this.controllers.length === 1 ? '' : 's'} in backup.`\n            : 'No controllers found in backup.'\n        }\n      </p>\n\n      ${\n        this.controllers.length > 0\n          ? html`\n          <div class=\"mb-6\">\n            <div class=\"mb-3 text-neutral-20 dark:text-neutral-90 paragraph-inter-14-semi-bold\">\n              Controllers:\n            </div>\n            ${this.controllers.map(\n              (controller) => html`\n                <div class=\"bg-neutral-95 dark:bg-neutral-80 border border-neutral-90 dark:border-neutral-70 rounded-lg px-3 py-2.5 mb-2\">\n                  <div class=\"flex items-center justify-between\">\n                    <div class=\"text-neutral-40 paragraph-inter-13-regular font-mono\">\n                      ${this.truncateAddress(controller.address)}\n                    </div>\n                    <div\n                      class=\"px-2 py-0.5 rounded text-xs font-semibold ${\n                        controller.status === 'new'\n                          ? 'bg-green-95 dark:bg-green-95/10 text-green-55 border border-green-55/30'\n                          : 'bg-neutral-90 dark:bg-neutral-70 text-neutral-50 border border-neutral-80 dark:border-neutral-60'\n                      }\"\n                    >\n                      ${controller.status === 'new' ? 'NEW' : 'EXISTS'}\n                    </div>\n                  </div>\n                  <div class=\"text-neutral-60 paragraph-inter-12-regular mt-1\">\n                    ${controller.address}\n                  </div>\n                </div>\n              `\n            )}\n          </div>\n        `\n          : nothing\n      }\n\n      ${\n        this.validationWarnings.length > 0\n          ? html`\n          <div class=\"mb-4\">\n            ${this.validationWarnings.map(\n              (warning) => html`\n                <div class=\"bg-yellow-95 dark:bg-yellow-95/10 border border-yellow-55 dark:border-yellow-55/50 rounded-lg px-3 py-2.5 mb-2 flex items-start gap-2\">\n                  <span class=\"text-yellow-55 dark:text-yellow-55 text-lg leading-none\">⚠️</span>\n                  <span class=\"text-yellow-55 dark:text-yellow-55 paragraph-inter-13-regular flex-1\">${warning}</span>\n                </div>\n              `\n            )}\n          </div>\n        `\n          : nothing\n      }\n\n      <div class=\"flex justify-between gap-3 mt-6\">\n        <div class=\"flex gap-3\">\n          <lukso-button variant=\"text\" @click=${this.close}>\n            Cancel\n          </lukso-button>\n          <lukso-button variant=\"secondary\" @click=${this.goBackFromPreview}>\n            Back\n          </lukso-button>\n        </div>\n        <lukso-button\n          variant=\"primary\"\n          @click=${this.confirmRestore}\n        >\n          Confirm Restore\n        </lukso-button>\n      </div>\n    `\n  }\n\n  private renderSuccessStep() {\n    return html`\n      <!-- Success header with icon -->\n      <div class=\"text-center mb-6\">\n        <div class=\"w-16 h-16 mx-auto mb-4 bg-green-95 dark:bg-green-95/20 rounded-full flex items-center justify-center\">\n          <span class=\"text-2xl text-green-55\">✅</span>\n        </div>\n        <h3 class=\"text-neutral-20 dark:text-white heading-inter-18-semi-bold mb-2\">\n          Wallet Restored Successfully!\n        </h3>\n        <p class=\"text-neutral-40 dark:text-neutral-50 paragraph-inter-14-regular\">\n          ${\n            this.restoredAddresses.length > 0\n              ? `Imported ${this.restoredAddresses.length} address${this.restoredAddresses.length > 1 ? 'es' : ''} to your wallet.`\n              : 'Your wallet has been restored successfully.'\n          }\n        </p>\n      </div>\n      \n      <!-- Restored addresses -->\n      ${\n        this.restoredAddresses.length > 0\n          ? html`\n        <div class=\"mb-6\">\n          <div class=\"mb-3 text-neutral-20 dark:text-neutral-90 paragraph-inter-14-semi-bold\">\n            Restored Addresses:\n          </div>\n          ${this.restoredAddresses.map(\n            (address: string) => html`\n            <div class=\"bg-green-95 dark:bg-green-95/10 border border-green-60 dark:border-green-60/50 rounded-lg px-3 py-2.5 mb-2 flex items-center gap-2\">\n              <span class=\"text-green-60 dark:text-green-45 text-sm\">✓</span>\n              <span class=\"text-neutral-20 dark:text-white paragraph-inter-13-regular font-mono flex-1\">${this.truncateAddress(address)}</span>\n            </div>\n          `\n          )}\n        </div>\n      `\n          : ''\n      }\n\n      <!-- Action buttons for success -->\n      <div class=\"flex justify-center mt-6\">\n        <lukso-button variant=\"primary\" @click=${this.close}>\n          OK\n        </lukso-button>\n      </div>\n    `\n  }\n\n  private getStepTitle(): string {\n    switch (this.currentStep) {\n      case Step.UPLOAD:\n        return 'Restore Wallet'\n      case Step.PASSWORD:\n        return 'Enter Password'\n      case Step.PREVIEW:\n        return 'Review Changes'\n      case Step.SUCCESS:\n        return 'Restore Complete'\n      default:\n        return 'Restore Wallet'\n    }\n  }\n\n  private triggerFileInput() {\n    const input = this.shadowRoot?.querySelector(\n      'input[type=\"file\"]'\n    ) as HTMLInputElement\n    if (input) {\n      input.click()\n    }\n  }\n\n  private async handleFileSelect(e: Event) {\n    const input = e.target as HTMLInputElement\n    const file = input.files?.[0]\n    if (file) {\n      await this.handleFile(file)\n    }\n  }\n\n  private handleDragOver(e: DragEvent) {\n    e.preventDefault()\n    this.isDragging = true\n  }\n\n  private handleDragLeave() {\n    this.isDragging = false\n  }\n\n  private async handleDrop(e: DragEvent) {\n    e.preventDefault()\n    this.isDragging = false\n\n    const file = e.dataTransfer?.files?.[0]\n    if (file) {\n      await this.handleFile(file)\n    }\n  }\n\n  private async handleFile(file: File) {\n    this.fileError = null\n\n    if (!file.name.endsWith('.json')) {\n      this.fileError = 'Please select a valid JSON backup file'\n      return\n    }\n\n    try {\n      // Use passkey-auth readBackupFile function\n      const backup = await readBackupFile(file)\n\n      this.selectedFile = file\n      this.backupData = backup\n\n      // Check if encrypted (handle both current and legacy formats)\n      const isEncrypted = backup.encryptedSecrets // Legacy: always encrypted if encryptedSecrets exists\n        ? true\n        : backup.secrets?.encrypted // Current: check encrypted flag\n\n      if (isEncrypted) {\n        this.currentStep = Step.PASSWORD\n      } else {\n        // Unencrypted backup - preview directly\n        await this.previewRestore()\n      }\n    } catch (error) {\n      this.fileError =\n        error instanceof Error ? error.message : 'Failed to read backup file'\n      console.error('Failed to read backup file:', error)\n    }\n  }\n\n  private async previewRestore() {\n    if (!this.backupData) return\n\n    this.isRestoring = true\n    this.passwordErrors = []\n\n    try {\n      // First, we need to decrypt the backup if it's encrypted\n      let decryptedBackup = this.backupData\n\n      if (\n        this.backupData.encryptedSecrets ||\n        this.backupData.secrets?.encrypted\n      ) {\n        // PREVIEW ONLY: Use verify to check password and get preview data (don't actually import yet)\n        if (!this.keyGenerator) {\n          throw new Error('KeyGenerator not available')\n        }\n\n        // Use verifyBackup for preview - this validates password and returns public data only\n        const verifiedBackup = await this.keyGenerator.verifyBackup(\n          this.backupData,\n          this.password\n        )\n\n        // Use the verified backup data (which has filtered public data)\n        decryptedBackup = verifiedBackup\n      } else {\n        // Unencrypted - use data directly for preview (no import needed)\n        decryptedBackup = this.backupData\n      }\n\n      // Extract all controller addresses from the backup\n      const backupControllers = new Set<string>()\n\n      // Get addresses from the secrets (the actual private keys we're restoring)\n      const secretsData = (decryptedBackup.secrets?.data as any[]) || []\n      for (const secret of secretsData) {\n        if (secret.address) {\n          backupControllers.add(secret.address.toLowerCase())\n        }\n      }\n\n      // Also get controllers from account metadata (V2 format with networks)\n      for (const account of decryptedBackup.accounts || []) {\n        // V2 format: accounts have networks array with controllers\n        if (account.networks) {\n          for (const network of account.networks) {\n            for (const controller of network.controllers || []) {\n              if (controller.address) {\n                backupControllers.add(controller.address.toLowerCase())\n              }\n            }\n          }\n        }\n      }\n\n      // Also get controllers from LSP23CrossChainDeployment if present\n      const lsp23Deployments =\n        (decryptedBackup as any).LSP23CrossChainDeployment || []\n      for (const deployment of lsp23Deployments) {\n        for (const controller of deployment.initialControllers || []) {\n          if (controller.address) {\n            backupControllers.add(controller.address.toLowerCase())\n          }\n        }\n      }\n\n      console.log(\n        '🔍 [RestoreModal] Found controller addresses:',\n        Array.from(backupControllers)\n      )\n\n      // Extract addresses from the decrypted backup for preview\n      for (const secret of secretsData) {\n        if (secret.address) {\n          backupControllers.add(secret.address.toLowerCase())\n        }\n      }\n\n      // For now, mark all addresses as 'new' - could enhance this later\n      this.controllers = Array.from(backupControllers).map((address) => ({\n        address,\n        status: 'new' as const,\n      }))\n\n      this.currentStep = Step.PREVIEW\n    } catch (error) {\n      console.error('Failed to preview restore:', error)\n      const errorMessage =\n        error instanceof Error ? error.message : 'Failed to preview restore'\n\n      // Check for password-specific errors\n      if (errorMessage.toLowerCase().includes('password')) {\n        this.passwordErrors = ['Incorrect password. Please try again.']\n      } else {\n        // For non-password errors, set as file error to show in upload step\n        this.fileError = errorMessage\n        this.currentStep = Step.UPLOAD\n        // Clear the file selection so user can try again\n        this.selectedFile = null\n        this.backupData = null\n        // Clear the file input\n        const input = this.shadowRoot?.querySelector(\n          'input[type=\"file\"]'\n        ) as HTMLInputElement\n        if (input) {\n          input.value = ''\n        }\n      }\n    } finally {\n      this.isRestoring = false\n    }\n  }\n\n  private async confirmRestore() {\n    if (!this.backupData || !this.keyGenerator) {\n      console.error(\n        '❌ [RestoreModal] Missing backup data or keyGenerator for restore'\n      )\n      this.dispatchEvent(\n        new CustomEvent('error', {\n          detail: { error: 'Missing backup data or keyGenerator' },\n          bubbles: true,\n          composed: true,\n        })\n      )\n      return\n    }\n\n    try {\n      this.isRestoring = true\n      console.log('🔄 [RestoreModal] Starting secure restoration process...')\n\n      // ✅ SECURE: Use keyGenerator.restoreFromBackup internally\n      const result = await this.keyGenerator.restoreFromBackup(\n        this.backupData,\n        this.password\n      )\n\n      if (result.success) {\n        console.log('✅ [RestoreModal] Restore successful:', result.addresses)\n\n        // Store restored addresses for display on success screen\n        this.restoredAddresses = result.addresses\n\n        // Emit success event (only public addresses, no sensitive data)\n        this.dispatchEvent(\n          new CustomEvent('success', {\n            detail: { addresses: result.addresses },\n            bubbles: true,\n            composed: true,\n          })\n        )\n\n        // Move to success step\n        this.currentStep = Step.SUCCESS\n      } else {\n        console.error('❌ [RestoreModal] Restore failed')\n        this.dispatchEvent(\n          new CustomEvent('error', {\n            detail: {\n              error:\n                'Restore failed. Please check the backup file and password.',\n            },\n            bubbles: true,\n            composed: true,\n          })\n        )\n      }\n    } catch (error) {\n      console.error('❌ [RestoreModal] Restore error:', error)\n      const errorMessage =\n        error instanceof Error ? error.message : 'Unknown error'\n\n      this.dispatchEvent(\n        new CustomEvent('error', {\n          detail: { error: errorMessage },\n          bubbles: true,\n          composed: true,\n        })\n      )\n    } finally {\n      this.isRestoring = false\n    }\n  }\n\n  private goBack() {\n    if (this.currentStep === Step.PASSWORD) {\n      this.currentStep = Step.UPLOAD\n      this.password = ''\n      this.passwordErrors = []\n    }\n  }\n\n  private goBackFromPreview() {\n    // Go back to password step (or upload if unencrypted)\n    const isEncrypted = this.backupData?.encryptedSecrets\n      ? true\n      : this.backupData?.secrets?.encrypted\n\n    if (isEncrypted) {\n      this.currentStep = Step.PASSWORD\n    } else {\n      this.currentStep = Step.UPLOAD\n    }\n    // Clear preview data\n    this.controllers = []\n    this.validationWarnings = []\n  }\n\n  private close() {\n    this.isOpen = false\n    this.dispatchEvent(\n      new CustomEvent('close', { bubbles: true, composed: true })\n    )\n\n    // Reset state after animation\n    setTimeout(() => {\n      this.currentStep = Step.UPLOAD\n      this.selectedFile = null\n      this.backupData = null\n      this.fileError = null\n      this.isDragging = false\n      this.password = ''\n      this.passwordErrors = []\n      this.isRestoring = false\n      this.walletData = null\n      this.restoredAddresses = []\n      this.controllers = []\n      this.validationWarnings = []\n    }, 300)\n  }\n\n  private truncateAddress(address: string): string {\n    if (!address || address.length < 10) return address\n    return `${address.slice(0, 6)}...${address.slice(-4)}`\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'restore-modal': RestoreModal\n  }\n}\n"]}