{"version":3,"file":"onekey-web-bridge.mjs","sourceRoot":"","sources":["../src/onekey-web-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import { UI_REQUEST, UI_RESPONSE } from '@onekeyfe/hd-core';\nimport type {\n  ConnectSettings,\n  CoreApi,\n  EVMSignedTx,\n  EVMSignMessageParams,\n  EVMSignTransactionParams,\n  EVMSignTypedDataParams,\n  Params,\n  UiEvent,\n  Unsuccessful,\n} from '@onekeyfe/hd-core';\nimport { HardwareErrorCode } from '@onekeyfe/hd-shared';\nimport type { EthereumMessageSignature } from '@onekeyfe/hd-transport';\nimport hardwareWebSdk from '@onekeyfe/hd-web-sdk';\n\nimport type { OneKeyBridge } from './onekey-bridge';\n\nexport type OneKeyIframeBridgeOptions = {\n  bridgeUrl: string;\n};\n\nexport class OneKeyWebBridge implements OneKeyBridge {\n  isSDKInitialized = false;\n\n  sdk: CoreApi | undefined = undefined;\n\n  model?: string | undefined;\n\n  #onUIEvent?: ((event: Unsuccessful['payload']) => void) | undefined;\n\n  #handleBlockErrorEvent(payload: Unsuccessful): void {\n    const { code } = payload.payload;\n    const errorCodes: number[] = [\n      HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission,\n      HardwareErrorCode.BridgeNotInstalled,\n      HardwareErrorCode.NewFirmwareForceUpdate,\n      HardwareErrorCode.NotAllowInBootloaderMode,\n      HardwareErrorCode.CallMethodNeedUpgradeFirmware,\n      HardwareErrorCode.DeviceCheckPassphraseStateError,\n      HardwareErrorCode.DeviceCheckUnlockTypeError,\n      HardwareErrorCode.SelectDevice,\n    ];\n\n    if (code && typeof code === 'number' && errorCodes.includes(code)) {\n      this.#onUIEvent?.(payload.payload);\n    }\n  }\n\n  async updateTransportMethod(\n    transportType: ConnectSettings['env'],\n  ): Promise<void> {\n    if (!this.sdk) {\n      return;\n    }\n    await this.sdk.switchTransport(transportType);\n  }\n\n  setUiEventCallback(callback: (event: Unsuccessful['payload']) => void): void {\n    this.#onUIEvent = callback;\n  }\n\n  async init(): Promise<void> {\n    if (this.isSDKInitialized) {\n      return;\n    }\n\n    const settings: Partial<ConnectSettings> = {\n      debug: false,\n      fetchConfig: false,\n      connectSrc: 'https://jssdk.onekey.so/1.1.0/',\n      env: 'webusb',\n    };\n    try {\n      await hardwareWebSdk.HardwareWebSdk.init(\n        settings,\n        hardwareWebSdk.HardwareSDKLowLevel,\n      );\n      this.isSDKInitialized = true;\n      this.sdk = hardwareWebSdk.HardwareWebSdk;\n\n      this.sdk?.on('UI_EVENT', (originEvent: UiEvent) => {\n        if (originEvent.type === UI_REQUEST.REQUEST_PIN) {\n          this.sdk?.uiResponse({\n            type: UI_RESPONSE.RECEIVE_PIN,\n            payload: '@@ONEKEY_INPUT_PIN_IN_DEVICE',\n          });\n        }\n        if (originEvent.type === UI_REQUEST.REQUEST_PASSPHRASE) {\n          this.sdk?.uiResponse({\n            type: UI_RESPONSE.RECEIVE_PASSPHRASE,\n            payload: {\n              value: '',\n              passphraseOnDevice: true,\n              save: false,\n            },\n          });\n        }\n      });\n    } catch {\n      this.isSDKInitialized = false;\n    }\n  }\n\n  async destroy(): Promise<void> {\n    this.isSDKInitialized = false;\n    this.sdk = undefined;\n  }\n\n  async dispose(): Promise<void> {\n    this.sdk?.dispose();\n    return Promise.resolve();\n  }\n\n  getModel(): string | undefined {\n    return this.model;\n  }\n\n  async getPublicKey(params: {\n    path: string;\n    coin: string;\n  }): Promise<\n    | { success: false; payload: { error: string; code?: string | number } }\n    | { success: true; payload: { publicKey: string; chainCode: string } }\n  > {\n    if (!this.sdk) {\n      return {\n        success: false,\n        payload: {\n          error: 'SDK not initialized',\n          code: HardwareErrorCode.NotInitialized,\n        },\n      };\n    }\n    return await this.sdk\n      .evmGetPublicKey('', '', { ...params, skipPassphraseCheck: true })\n      .then((result) => {\n        if (result?.success) {\n          return {\n            success: true,\n            payload: {\n              publicKey: result.payload.pub,\n              chainCode: result.payload.node.chain_code,\n            },\n          };\n        }\n        this.#handleBlockErrorEvent(result);\n        return {\n          success: false,\n          payload: {\n            error: result?.payload.error ?? '',\n            code:\n              typeof result?.payload?.code === 'number'\n                ? result?.payload?.code\n                : undefined,\n          },\n        };\n      });\n  }\n\n  async getPassphraseState(): Promise<\n    | { success: false; payload: { error: string; code?: string | number } }\n    | { success: true; payload: string | undefined }\n  > {\n    if (!this.sdk) {\n      return {\n        success: false,\n        payload: {\n          error: 'SDK not initialized',\n          code: HardwareErrorCode.NotInitialized,\n        },\n      };\n    }\n    return await this.sdk.getPassphraseState('').then((result) => {\n      if (!result?.success) {\n        this.#handleBlockErrorEvent(result);\n      }\n      return result;\n    });\n  }\n\n  async ethereumSignTransaction(\n    params: Params<EVMSignTransactionParams>,\n  ): Promise<\n    | { success: false; payload: { error: string; code?: string | number } }\n    | { success: true; payload: EVMSignedTx }\n  > {\n    if (!this.sdk) {\n      return {\n        success: false,\n        payload: {\n          error: 'SDK not initialized',\n          code: HardwareErrorCode.NotInitialized,\n        },\n      };\n    }\n    return await this.sdk\n      .evmSignTransaction('', '', {\n        ...params,\n        skipPassphraseCheck: true,\n      })\n      .then((result) => {\n        if (!result?.success) {\n          this.#handleBlockErrorEvent(result);\n        }\n        return result;\n      });\n  }\n\n  async ethereumSignMessage(\n    params: Params<EVMSignMessageParams>,\n  ): Promise<\n    | { success: false; payload: { error: string; code?: string | number } }\n    | { success: true; payload: EthereumMessageSignature }\n  > {\n    if (!this.sdk) {\n      return {\n        success: false,\n        payload: {\n          error: 'SDK not initialized',\n          code: HardwareErrorCode.NotInitialized,\n        },\n      };\n    }\n    return await this.sdk\n      .evmSignMessage('', '', {\n        ...params,\n        skipPassphraseCheck: true,\n      })\n      .then((result) => {\n        if (!result?.success) {\n          this.#handleBlockErrorEvent(result);\n        }\n        return result;\n      });\n  }\n\n  async ethereumSignTypedData(\n    params: Params<EVMSignTypedDataParams>,\n  ): Promise<\n    | { success: false; payload: { error: string; code?: string | number } }\n    | { success: true; payload: EthereumMessageSignature }\n  > {\n    if (!this.sdk) {\n      return {\n        success: false,\n        payload: {\n          error: 'SDK not initialized',\n          code: HardwareErrorCode.NotInitialized,\n        },\n      };\n    }\n    return await this.sdk\n      .evmSignTypedData('', '', {\n        ...params,\n        skipPassphraseCheck: true,\n      })\n      .then((result) => {\n        if (!result?.success) {\n          this.#handleBlockErrorEvent(result);\n        }\n        return result;\n      });\n  }\n}\n"]}