{"version":3,"file":"trezor-connect-bridge.cjs","sourceRoot":"","sources":["../src/trezor-connect-bridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mEAA0E;AAgB1E,MAAa,mBAAmB;IAAhC;QAGE,2BAAsB,GAAG,KAAK,CAAC;IAsDjC,CAAC;IApDC,KAAK,CAAC,IAAI,CACR,QAE4B;QAE5B,qBAAa,CAAC,EAAE,CAAC,0BAAY,EAAE,CAAC,KAAK,EAAE,EAAE;;YACvC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAM,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,MAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,0CAAE,KAAK,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,MAAM,qBAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,sDAAsD;QACtD,wEAAwE;QACxE,sHAAsH;QACtH,qBAAa,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY,CAAC,MAGZ;QACC,OAAO,qBAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,uBAAuB,CACrB,MAAuC;QAEvC,OAAO,qBAAa,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,mBAAmB,CACjB,MAAmC;QAEnC,OAAO,qBAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB,CACnB,MAAwC;QAExC,OAAO,qBAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;CACF;AAzDD,kDAyDC","sourcesContent":["import TrezorConnect, { DEVICE_EVENT, DEVICE } from '@trezor/connect-web';\nimport type {\n  EthereumSignedTx,\n  PROTO,\n  Response,\n  Manifest,\n  ConnectSettings,\n  EthereumSignTransaction,\n  Params,\n  EthereumSignMessage,\n  EthereumSignTypedDataTypes,\n  EthereumSignTypedHash,\n} from '@trezor/connect-web';\n\nimport type { TrezorBridge, ExtendedPublicKey } from './trezor-bridge';\n\nexport class TrezorConnectBridge implements TrezorBridge {\n  model?: string;\n\n  trezorConnectInitiated = false;\n\n  async init(\n    settings: {\n      manifest: Manifest;\n    } & Partial<ConnectSettings>,\n  ): Promise<void> {\n    TrezorConnect.on(DEVICE_EVENT, (event) => {\n      if (event.type !== DEVICE.CONNECT) {\n        return;\n      }\n      this.model = event.payload.features?.model;\n    });\n\n    if (this.trezorConnectInitiated) {\n      return;\n    }\n\n    await TrezorConnect.init(settings);\n    this.trezorConnectInitiated = true;\n  }\n\n  async dispose(): Promise<void> {\n    // This removes the Trezor Connect iframe from the DOM\n    // This method is not well documented, but the code it calls can be seen\n    // here: https://github.com/trezor/connect/blob/dec4a56af8a65a6059fb5f63fa3c6690d2c37e00/src/js/iframe/builder.js#L181\n    TrezorConnect.dispose();\n    return Promise.resolve();\n  }\n\n  getPublicKey(params: {\n    path: string;\n    coin: string;\n  }): Response<ExtendedPublicKey> {\n    return TrezorConnect.getPublicKey(params);\n  }\n\n  ethereumSignTransaction(\n    params: Params<EthereumSignTransaction>,\n  ): Response<EthereumSignedTx> {\n    return TrezorConnect.ethereumSignTransaction(params);\n  }\n\n  ethereumSignMessage(\n    params: Params<EthereumSignMessage>,\n  ): Response<PROTO.MessageSignature> {\n    return TrezorConnect.ethereumSignMessage(params);\n  }\n\n  ethereumSignTypedData<T extends EthereumSignTypedDataTypes>(\n    params: Params<EthereumSignTypedHash<T>>,\n  ): Response<PROTO.EthereumTypedDataSignature> {\n    return TrezorConnect.ethereumSignTypedData(params);\n  }\n}\n"]}