@ledgerhq/device-signer-kit-ethereum 0.0.0-try-to-fix-20250429171448 → 0.0.0-verify-safe-address-20251016105127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -1
- package/lib/cjs/api/SignerEth.js +1 -1
- package/lib/cjs/api/SignerEth.js.map +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js +2 -0
- package/lib/cjs/api/app-binder/SignDelegationAuthorizationTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +3 -3
- package/lib/cjs/api/model/AddressOptions.js +1 -1
- package/lib/cjs/api/model/AddressOptions.js.map +1 -1
- package/lib/cjs/api/model/ClearSigningType.js +2 -0
- package/lib/cjs/api/model/ClearSigningType.js.map +7 -0
- package/lib/cjs/api/model/MessageOptions.js +2 -0
- package/lib/cjs/api/model/MessageOptions.js.map +7 -0
- package/lib/cjs/api/model/SafeAddressOptions.js +2 -0
- package/lib/cjs/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/cjs/api/model/TransactionOptions.js +1 -1
- package/lib/cjs/api/model/TransactionOptions.js.map +1 -1
- package/lib/cjs/api/model/TypedDataOptions.js +2 -0
- package/lib/cjs/api/model/TypedDataOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerEth.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.js.map +3 -3
- package/lib/cjs/internal/DefaultSignerEth.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.js.map +3 -3
- package/lib/cjs/internal/address/di/addressModule.test.js +1 -1
- package/lib/cjs/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/cjs/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/cjs/internal/di.js +1 -1
- package/lib/cjs/internal/di.js.map +3 -3
- package/lib/cjs/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/cjs/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/cjs/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/cjs/internal/message/di/messageModule.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.js.map +3 -3
- package/lib/cjs/internal/message/di/messageModule.test.js +1 -1
- package/lib/cjs/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/safe/di/safeModule.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js +2 -0
- package/lib/cjs/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/cjs/internal/safe/di/safeTypes.js +2 -0
- package/lib/cjs/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/cjs/internal/transaction/di/transactionModule.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/cjs/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/cjs/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/cjs/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js +1 -1
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/cjs/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/cjs/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/cjs/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/cjs/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/cjs/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/cjs/package.json +13 -14
- package/lib/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +2 -2
- package/lib/esm/api/app-binder/SignDelegationAuthorizationTypes.js +1 -0
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js +2 -0
- package/lib/esm/api/app-binder/VerifySafeAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/ClearSigningType.js +2 -0
- package/lib/esm/api/model/ClearSigningType.js.map +7 -0
- package/lib/esm/api/model/MessageOptions.js +1 -0
- package/lib/esm/api/model/MessageOptions.js.map +7 -0
- package/lib/esm/api/model/SafeAddressOptions.js +1 -0
- package/lib/esm/api/model/SafeAddressOptions.js.map +7 -0
- package/lib/esm/api/model/TypedDataOptions.js +1 -0
- package/lib/esm/api/model/TypedDataOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerEth.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.js.map +3 -3
- package/lib/esm/internal/DefaultSignerEth.test.js +1 -1
- package/lib/esm/internal/DefaultSignerEth.test.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.js +1 -1
- package/lib/esm/internal/address/di/addressModule.js.map +3 -3
- package/lib/esm/internal/address/di/addressModule.test.js +1 -1
- package/lib/esm/internal/address/di/addressModule.test.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.js.map +2 -2
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js +1 -1
- package/lib/esm/internal/address/use-case/GetAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideProxyInfoCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/ProvideSafeAccountCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.js.map +7 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js +2 -0
- package/lib/esm/internal/app-binder/command/SignAuthorizationDelegationCommand.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js +2 -0
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.js.map +7 -0
- package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
- package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSafeAddressContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideContextTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextsTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendPayloadInChunksTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SendSignTransactionTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/SignTypedDataLegacyTask.test.js.map +7 -0
- package/lib/esm/internal/di.js +1 -1
- package/lib/esm/internal/di.js.map +3 -3
- package/lib/esm/internal/eip7702/di/eip7702Module.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Module.test.js.map +7 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js +2 -0
- package/lib/esm/internal/eip7702/di/eip7702Types.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.js.map +7 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js +2 -0
- package/lib/esm/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.js.map +7 -0
- package/lib/esm/internal/message/di/messageModule.js +1 -1
- package/lib/esm/internal/message/di/messageModule.js.map +3 -3
- package/lib/esm/internal/message/di/messageModule.test.js +1 -1
- package/lib/esm/internal/message/di/messageModule.test.js.map +2 -2
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.js.map +3 -3
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/message/use-case/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/safe/di/safeModule.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.js.map +7 -0
- package/lib/esm/internal/safe/di/safeModule.test.js +2 -0
- package/lib/esm/internal/safe/di/safeModule.test.js.map +7 -0
- package/lib/esm/internal/safe/di/safeTypes.js +2 -0
- package/lib/esm/internal/safe/di/safeTypes.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.js.map +7 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js +2 -0
- package/lib/esm/internal/safe/use-case/VerifySafeAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/shared/utils/ApplicationChecker.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +3 -3
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +1 -1
- package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +2 -2
- package/lib/esm/internal/transaction/di/transactionModule.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.js.map +3 -3
- package/lib/esm/internal/transaction/di/transactionModule.test.js +1 -1
- package/lib/esm/internal/transaction/di/transactionModule.test.js.map +2 -2
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js +2 -0
- package/lib/esm/internal/transaction/service/mapper/EthersTransactionMapperService.test.js.map +7 -0
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.js.map +4 -4
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.js.map +3 -3
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js +1 -1
- package/lib/esm/internal/transaction/service/parser/TransactionParserService.test.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.js.map +3 -3
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js +1 -1
- package/lib/esm/internal/typed-data/di/typedDataModule.test.js.map +2 -2
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js +1 -1
- package/lib/esm/internal/typed-data/service/DefaultTypedDataParserService.js.map +2 -2
- package/lib/esm/internal/typed-data/service/TypedDataParser.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.js.map +3 -3
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js +1 -1
- package/lib/esm/internal/typed-data/service/TypedDataParser.test.js.map +2 -2
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.js.map +3 -3
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js +1 -1
- package/lib/esm/internal/typed-data/use-case/SignTypedDataUseCase.test.js.map +2 -2
- package/lib/esm/package.json +13 -14
- package/lib/types/api/SignerEth.d.ts +11 -4
- package/lib/types/api/SignerEth.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts +19 -0
- package/lib/types/api/app-binder/SignDelegationAuthorizationTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +17 -12
- package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +11 -1
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts +30 -0
- package/lib/types/api/app-binder/VerifySafeAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +5 -4
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/AddressOptions.d.ts +1 -0
- package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
- package/lib/types/api/model/ClearSigningType.d.ts +5 -0
- package/lib/types/api/model/ClearSigningType.d.ts.map +1 -0
- package/lib/types/api/model/MessageOptions.d.ts +4 -0
- package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts +5 -0
- package/lib/types/api/model/SafeAddressOptions.d.ts.map +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts +1 -0
- package/lib/types/api/model/TransactionOptions.d.ts.map +1 -1
- package/lib/types/api/model/TypedDataOptions.d.ts +4 -0
- package/lib/types/api/model/TypedDataOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerEth.d.ts +10 -3
- package/lib/types/internal/DefaultSignerEth.d.ts.map +1 -1
- package/lib/types/internal/address/di/addressModule.d.ts.map +1 -1
- package/lib/types/internal/address/use-case/GetAddressUseCase.d.ts.map +1 -1
- package/lib/types/internal/app-binder/EthAppBinder.d.ts +19 -3
- package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts +28 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideNetworkConfigurationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts +20 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideProxyInfoCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts +34 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/ProvideSafeAccountCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts +29 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts +2 -0
- package/lib/types/internal/app-binder/command/SignAuthorizationDelegationCommand.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/command/utils/ethAppErrors.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +15 -36
- package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts +20 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/VerifySafeAddress/VerifySafeAddress.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts +6 -0
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionUntilStep.d.ts.map +1 -0
- package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts +51 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildBaseContexts.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
- package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts +39 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts +19 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSafeAddressContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +28 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +2 -3
- package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts +21 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts +17 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts +22 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideContextTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +14 -5
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts +36 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/ProvideTransactionContextsTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +2 -2
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts +18 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SendSignAuthorizationDelegationTask.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts +2 -1
- package/lib/types/internal/app-binder/task/SendSignTransactionTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts +12 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/SignTypedDataLegacyTask.test.d.ts.map +1 -0
- package/lib/types/internal/di.d.ts.map +1 -1
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts +3 -0
- package/lib/types/internal/eip7702/di/eip7702Module.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts +2 -0
- package/lib/types/internal/eip7702/di/eip7702Module.test.d.ts.map +1 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts +4 -0
- package/lib/types/internal/eip7702/di/eip7702Types.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts +8 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.d.ts.map +1 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts +2 -0
- package/lib/types/internal/eip7702/use-case/SignDelegationAuthorizationUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/message/di/messageModule.d.ts.map +1 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts +2 -1
- package/lib/types/internal/message/use-case/SignMessageUseCase.d.ts.map +1 -1
- package/lib/types/internal/safe/di/safeModule.d.ts +3 -0
- package/lib/types/internal/safe/di/safeModule.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts +2 -0
- package/lib/types/internal/safe/di/safeModule.test.d.ts.map +1 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts +4 -0
- package/lib/types/internal/safe/di/safeTypes.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts +9 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/safe/use-case/VerifySafeAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -1
- package/lib/types/internal/transaction/di/transactionModule.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts +8 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts +2 -0
- package/lib/types/internal/transaction/service/mapper/EthersTransactionMapperService.test.d.ts.map +1 -0
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts +4 -7
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.d.ts.map +1 -1
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts +2 -2
- package/lib/types/internal/transaction/service/parser/TransactionParserService.d.ts.map +1 -1
- package/lib/types/internal/typed-data/di/typedDataModule.d.ts.map +1 -1
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts +4 -2
- package/lib/types/internal/typed-data/service/TypedDataParser.d.ts.map +1 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts +2 -1
- package/lib/types/internal/typed-data/use-case/SignTypedDataUseCase.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +19 -20
- package/lib/cjs/internal/app-binder/constant/plugins.js +0 -2
- package/lib/cjs/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/cjs/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapper.js.map +0 -7
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/cjs/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/esm/internal/app-binder/constant/plugins.js +0 -2
- package/lib/esm/internal/app-binder/constant/plugins.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionContextTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.js.map +0 -7
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js +0 -2
- package/lib/esm/internal/app-binder/task/ProvideTransactionGenericContextTask.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/EthersRawTransactionMapper.test.js.map +0 -7
- package/lib/esm/internal/transaction/service/mapper/TransactionMapper.js +0 -1
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js +0 -2
- package/lib/esm/internal/transaction/service/mapper/TransactionMapperService.test.js.map +0 -7
- package/lib/types/internal/app-binder/constant/plugins.d.ts +0 -2
- package/lib/types/internal/app-binder/constant/plugins.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +0 -32
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/BuildTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts +0 -38
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts +0 -80
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionFieldDescriptionTask.test.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts +0 -28
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.d.ts.map +0 -1
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts +0 -2
- package/lib/types/internal/app-binder/task/ProvideTransactionGenericContextTask.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts +0 -7
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/EthersRawTransactionMapper.test.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts +0 -6
- package/lib/types/internal/transaction/service/mapper/TransactionMapper.d.ts.map +0 -1
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts +0 -2
- package/lib/types/internal/transaction/service/mapper/TransactionMapperService.test.d.ts.map +0 -1
- /package/lib/esm/{internal/transaction/service/mapper/TransactionMapper.js.map → api/app-binder/SignDelegationAuthorizationTypes.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ProvideEIP712ContextTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ContextModule,\n type TypedDataClearSignContextSuccess,\n type TypedDataFilter,\n type TypedDataTokenIndex,\n VERIFYING_CONTRACT_TOKEN_INDEX,\n} from \"@ledgerhq/context-module\";\nimport {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport type {\n CommandResult,\n InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n bufferToHexaString,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Maybe, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport {\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport { StructImplemType } from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { SendEIP712StructImplemTask } from \"@internal/app-binder/task/SendEIP712StructImplemTask\";\nimport { TypedDataValueField } from \"@internal/typed-data/model/Types\";\nimport {\n type FieldName,\n type FieldType,\n type StructName,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\ntype AllSuccessTypes = void | { tokenIndex: number };\n\nexport type ProvideEIP712ContextTaskReturnType = Promise<\n CommandResult<AllSuccessTypes, EthErrorCodes>\n>;\n\nexport type ProvideEIP712ContextTaskArgs = {\n types: Record<StructName, Record<FieldName, FieldType>>;\n domain: Array<TypedDataValue>;\n message: Array<TypedDataValue>;\n clearSignContext: Maybe<TypedDataClearSignContextSuccess>;\n domainHash: string;\n messageHash: string;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n};\n\nconst DEVICE_ASSETS_MAX = 5;\n\ntype DeviceAssetIndexes = {\n indexes: Record<TypedDataTokenIndex, number>;\n nextIndex: number;\n};\n\nexport class ProvideEIP712ContextTask {\n private chainId: Maybe<number> = Nothing;\n\n constructor(\n private api: InternalApi,\n private contextModule: ContextModule,\n private args: ProvideEIP712ContextTaskArgs,\n ) {\n for (const domainValue of this.args.domain) {\n if (\n domainValue.path === \"chainId\" &&\n domainValue.value instanceof TypedDataValueField\n ) {\n const val = BigInt(bufferToHexaString(domainValue.value.data));\n if (val <= Number.MAX_SAFE_INTEGER) {\n this.chainId = Just(Number(val));\n }\n break;\n }\n }\n }\n\n async run(): ProvideEIP712ContextTaskReturnType {\n // Send message simulation first\n if (this.args.web3Check) {\n if (this.args.web3Check.certificate) {\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: this.args.web3Check.certificate.keyUsageNumber,\n certificate: this.args.web3Check.certificate.payload,\n }),\n );\n }\n await new SendPayloadInChunksTask(this.api, {\n payload: this.args.web3Check.payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n\n const result: CommandResult<AllSuccessTypes, EthErrorCodes> =\n CommandResultFactory<AllSuccessTypes, EthErrorCodes>({ data: undefined });\n\n // Provide the structure definitions.\n // Should be sent before struct implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-send-struct-definition\n // Note that those types are used to compute the schema hash, in the device and in ClearSignContexts, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\n // Therefore it should be normalized on both sides: sorted per keys\n const types = Object.entries(this.args.types).sort(([aKey], [bKey]) =>\n aKey.localeCompare(bKey),\n );\n for (const [structName, fields] of types) {\n const structNameResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name: structName,\n }),\n );\n if (!isSuccessCommandResult(structNameResult)) {\n return structNameResult;\n }\n\n for (const [fieldName, fieldType] of Object.entries(fields)) {\n const fieldResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name: fieldName,\n type: fieldType,\n }),\n );\n if (!isSuccessCommandResult(fieldResult)) {\n return fieldResult;\n }\n }\n }\n\n // possibly activate the filtering, before sending domain and message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#activation\n if (this.args.clearSignContext.isJust()) {\n const activationResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n if (!isSuccessCommandResult(activationResult)) {\n return activationResult;\n }\n }\n\n // send domain implementation values.\n for (const value of this.args.domain) {\n const domainImplTask = this.getImplementationTask(value);\n const domainImplResult = await domainImplTask.run();\n if (!isSuccessCommandResult(domainImplResult)) {\n return domainImplResult;\n }\n }\n\n // possibly send MessageInformation filter (between Domain and Message)\n // should be sent between Domain and Message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#message-info\n if (this.args.clearSignContext.isJust()) {\n const clearSignContext = this.args.clearSignContext.extract();\n const messageInfoFilterResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: clearSignContext.messageInfo.displayName,\n filtersCount: clearSignContext.messageInfo.filtersCount,\n signature: clearSignContext.messageInfo.signature,\n }),\n );\n if (!isSuccessCommandResult(messageInfoFilterResult)) {\n return messageInfoFilterResult;\n }\n }\n\n // send message implementation values\n const deviceIndexes: DeviceAssetIndexes = { indexes: {}, nextIndex: 0 };\n for (const value of this.args.message) {\n // 5.1 Provide token descriptors, if any\n // Keep a map of all device indexes for those provided tokens.\n const maybeTokenError = await this.provideTokenInformation(\n value,\n deviceIndexes,\n );\n if (maybeTokenError.isJust()) {\n return maybeTokenError.extract();\n }\n\n // Provide trusted name descriptors, if any\n const maybeNameError = await this.provideTrustedName(value);\n if (maybeNameError.isJust()) {\n return maybeNameError.extract();\n }\n\n // if there's a filter, send it\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-token\n const maybeFilterResult = await this.filterValue(value, deviceIndexes);\n if (\n maybeFilterResult.isJust() &&\n !isSuccessCommandResult(maybeFilterResult.extract())\n ) {\n return maybeFilterResult.extract();\n }\n\n // provide message value implementation\n const messageImplTask = this.getImplementationTask(value);\n const messageImplResult = await messageImplTask.run();\n if (!isSuccessCommandResult(messageImplResult)) {\n return messageImplResult;\n }\n\n // if the value is an empty array, discard sub-filters since\n // there will be no according sub-values in the message\n if (\n this.args.clearSignContext.isJust() &&\n value.value instanceof TypedDataValueArray &&\n value.value.length === 0\n ) {\n const filters = Object.entries(\n this.args.clearSignContext.extract().filters,\n );\n const discardedFilters = filters\n .filter(([path]) => path.startsWith(`${value.path}.[]`))\n .map(([, filter]) => filter);\n for (const filter of discardedFilters) {\n const discardedPathResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: filter.path,\n }),\n );\n if (!isSuccessCommandResult(discardedPathResult)) {\n return discardedPathResult;\n }\n\n const provideFilteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n true,\n );\n if (!isSuccessCommandResult(provideFilteringResult)) {\n return provideFilteringResult;\n }\n }\n }\n }\n\n return result;\n }\n\n getImplementationTask(value: TypedDataValue): SendEIP712StructImplemTask {\n if (value.value instanceof TypedDataValueRoot) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ROOT,\n value: value.value.root,\n });\n } else if (value.value instanceof TypedDataValueArray) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ARRAY,\n value: value.value.length,\n });\n } else {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.FIELD,\n value: value.value.data,\n });\n }\n }\n\n async provideTokenInformation(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n // tokens descriptors only needed when a tokenIndex is available in filter.\n // it should be sent to the device only 1 time so deviceIndexes has to be checked.\n if (\n filter !== undefined &&\n (filter.type === \"amount\" || filter.type === \"token\") &&\n deviceIndexes.indexes[filter.tokenIndex] === undefined\n ) {\n const descriptorIndex = filter.tokenIndex;\n const tokens = this.args.clearSignContext.extract().tokens;\n const token = tokens[descriptorIndex];\n if (token === undefined) {\n return Nothing;\n }\n\n const provideTokenInfoResult = await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload: token }),\n );\n if (!isSuccessCommandResult(provideTokenInfoResult)) {\n return Maybe.of(provideTokenInfoResult);\n }\n let { tokenIndex: deviceIndex } = provideTokenInfoResult.data;\n deviceIndexes.nextIndex = (deviceIndex + 1) % DEVICE_ASSETS_MAX;\n\n // the token corresponding to the Verifying Contract of message domain has a special index value, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-value\n if (Number(descriptorIndex) === VERIFYING_CONTRACT_TOKEN_INDEX) {\n deviceIndex = VERIFYING_CONTRACT_TOKEN_INDEX;\n }\n\n deviceIndexes.indexes[Number(descriptorIndex)] = deviceIndex;\n }\n }\n return Nothing;\n }\n\n private async provideTrustedName(\n value: TypedDataValue,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust() && this.chainId.isJust()) {\n const context = this.args.clearSignContext.extract();\n const filter = context.filters[value.path];\n const address = context.trustedNamesAddresses[value.path];\n if (\n filter !== undefined &&\n filter.type === \"trusted-name\" &&\n address !== undefined\n ) {\n const getChallengeResult = await this.api.sendCommand(\n new GetChallengeCommand(),\n );\n if (!isSuccessCommandResult(getChallengeResult)) {\n return Just(getChallengeResult);\n }\n\n const context = await this.contextModule.getContext({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: this.chainId.extract(),\n address,\n challenge: getChallengeResult.data.challenge,\n types: filter.types,\n sources: filter.sources,\n });\n if (context.type === ClearSignContextType.TRUSTED_NAME) {\n if (context.certificate) {\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: context.certificate.keyUsageNumber,\n certificate: context.certificate.payload,\n }),\n );\n }\n const provideNameResult = await new SendPayloadInChunksTask(\n this.api,\n {\n payload: context.payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n },\n ).run();\n if (!isSuccessCommandResult(provideNameResult)) {\n return Just(provideNameResult);\n }\n }\n }\n }\n return Nothing;\n }\n\n async filterValue(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n if (filter === undefined) {\n return Nothing;\n }\n // provide the filter\n const filteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n false,\n );\n return Maybe.of(filteringResult);\n }\n return Nothing;\n }\n\n async provideFiltering(\n filter: TypedDataFilter,\n deviceIndexes: DeviceAssetIndexes,\n discarded: boolean,\n ): Promise<CommandResult<AllSuccessTypes, EthErrorCodes>> {\n switch (filter.type) {\n case \"trusted-name\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded,\n displayName: filter.displayName,\n typesAndSourcesPayload: filter.typesAndSourcesPayload,\n signature: filter.signature,\n }),\n );\n case \"datetime\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"raw\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"token\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n case \"amount\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded,\n displayName: filter.displayName,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n default:\n return CommandResultFactory<AllSuccessTypes, EthErrorCodes>({\n error: new InvalidStatusWordError(\n \"ProvideEIP712ContextTask/provideFiltering - Unhandled filter type\",\n ),\n });\n }\n }\n\n private sanitizeDeviceIndex(\n descriptorIndex: number,\n deviceIndexes: DeviceAssetIndexes,\n ) {\n // If a token is missing, the device will replace it with a placeholder and use the next available index\n if (deviceIndexes.indexes[descriptorIndex] === undefined) {\n deviceIndexes.indexes[descriptorIndex] = deviceIndexes.nextIndex;\n deviceIndexes.nextIndex =\n (deviceIndexes.nextIndex + 1) % DEVICE_ASSETS_MAX;\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "AAAA,
|
|
6
|
-
"names": ["VERIFYING_CONTRACT_TOKEN_INDEX", "ClearSignContextType", "bufferToHexaString", "CommandResultFactory", "
|
|
4
|
+
"sourcesContent": ["import {\n type ContextModule,\n type TypedDataCalldataIndex,\n TypedDataCalldataParamPresence,\n type TypedDataClearSignContextSuccess,\n type TypedDataFilter,\n type TypedDataTokenIndex,\n VERIFYING_CONTRACT_TOKEN_INDEX,\n} from \"@ledgerhq/context-module\";\nimport {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport type {\n CommandResult,\n DeviceModelId,\n InternalApi,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n bufferToHexaString,\n CommandResultFactory,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Maybe, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport {\n CalldataParamPresence,\n Eip712FilterType,\n SendEIP712FilteringCommand,\n} from \"@internal/app-binder/command/SendEIP712FilteringCommand\";\nimport {\n SendEIP712StructDefinitionCommand,\n StructDefinitionCommand,\n} from \"@internal/app-binder/command/SendEIP712StructDefinitionCommand\";\nimport { StructImplemType } from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type ContextWithSubContexts } from \"@internal/app-binder/task/BuildFullContextsTask\";\nimport { SendEIP712StructImplemTask } from \"@internal/app-binder/task/SendEIP712StructImplemTask\";\nimport { TypedDataValueField } from \"@internal/typed-data/model/Types\";\nimport {\n type FieldName,\n type FieldType,\n type StructName,\n type TypedDataValue,\n TypedDataValueArray,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideTransactionContextsTask,\n type ProvideTransactionContextsTaskArgs,\n} from \"./ProvideTransactionContextsTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\ntype AllSuccessTypes = void | { tokenIndex: number };\n\nexport type ProvideEIP712ContextTaskReturnType = Promise<\n CommandResult<AllSuccessTypes, EthErrorCodes>\n>;\n\nexport type ProvideEIP712ContextTaskArgs = {\n deviceModelId: DeviceModelId;\n derivationPath: string;\n types: Record<StructName, Record<FieldName, FieldType>>;\n domain: Array<TypedDataValue>;\n message: Array<TypedDataValue>;\n clearSignContext: Maybe<TypedDataClearSignContextSuccess>;\n calldatasContexts: Record<TypedDataCalldataIndex, ContextWithSubContexts[]>;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n};\n\nconst DEVICE_ASSETS_MAX = 5;\n\ntype DeviceAssetIndexes = {\n indexes: Record<TypedDataTokenIndex, number>;\n nextIndex: number;\n};\n\ntype CalldataFiltersMetadata = {\n remainingFilters: number;\n contexts?: ContextWithSubContexts[];\n};\n\nexport class ProvideEIP712ContextTask {\n private chainId: Maybe<number> = Nothing;\n private calldataMetadatas: Record<\n TypedDataCalldataIndex,\n CalldataFiltersMetadata\n > = {};\n\n constructor(\n private api: InternalApi,\n private contextModule: ContextModule,\n private args: ProvideEIP712ContextTaskArgs,\n private readonly provideContextFactory = (\n args: ProvideTransactionContextsTaskArgs,\n ) => new ProvideTransactionContextsTask(this.api, args),\n ) {\n for (const domainValue of this.args.domain) {\n if (\n domainValue.path === \"chainId\" &&\n domainValue.value instanceof TypedDataValueField\n ) {\n const val = BigInt(bufferToHexaString(domainValue.value.data));\n if (val <= Number.MAX_SAFE_INTEGER) {\n this.chainId = Just(Number(val));\n }\n break;\n }\n }\n }\n\n async run(): ProvideEIP712ContextTaskReturnType {\n // Send message simulation first\n if (this.args.web3Check) {\n await this.provideContext(this.args.web3Check);\n }\n\n // Send proxy descriptor first if required\n await this.args.clearSignContext.ifJust(async (clearSignContext) => {\n if (clearSignContext.proxy !== undefined) {\n await this.provideContext(clearSignContext.proxy);\n }\n });\n\n const result: CommandResult<AllSuccessTypes, EthErrorCodes> =\n CommandResultFactory<AllSuccessTypes, EthErrorCodes>({ data: undefined });\n\n // Provide the structure definitions.\n // Should be sent before struct implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-send-struct-definition\n // Note that those types are used to compute the schema hash, in the device and in ClearSignContexts, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#eip712-filtering\n // Therefore it should be normalized on both sides: sorted per keys\n const types = Object.entries(this.args.types).sort(([aKey], [bKey]) =>\n aKey.localeCompare(bKey),\n );\n for (const [structName, fields] of types) {\n const structNameResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name: structName,\n }),\n );\n if (!isSuccessCommandResult(structNameResult)) {\n return structNameResult;\n }\n\n for (const [fieldName, fieldType] of Object.entries(fields)) {\n const fieldResult = await this.api.sendCommand(\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name: fieldName,\n type: fieldType,\n }),\n );\n if (!isSuccessCommandResult(fieldResult)) {\n return fieldResult;\n }\n }\n }\n\n // possibly activate the filtering, before sending domain and message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#activation\n if (this.args.clearSignContext.isJust()) {\n const activationResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n if (!isSuccessCommandResult(activationResult)) {\n return activationResult;\n }\n }\n\n // send domain implementation values.\n for (const value of this.args.domain) {\n const domainImplTask = this.getImplementationTask(value);\n const domainImplResult = await domainImplTask.run();\n if (!isSuccessCommandResult(domainImplResult)) {\n return domainImplResult;\n }\n }\n\n // possibly send MessageInformation filter (between Domain and Message)\n // should be sent between Domain and Message implementations, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#message-info\n if (this.args.clearSignContext.isJust()) {\n const clearSignContext = this.args.clearSignContext.extract();\n const messageInfoFilterResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: clearSignContext.messageInfo.displayName,\n filtersCount: clearSignContext.messageInfo.filtersCount,\n signature: clearSignContext.messageInfo.signature,\n }),\n );\n if (!isSuccessCommandResult(messageInfoFilterResult)) {\n return messageInfoFilterResult;\n }\n }\n\n // send message implementation values\n const deviceIndexes: DeviceAssetIndexes = { indexes: {}, nextIndex: 0 };\n for (const value of this.args.message) {\n // 5.1 Provide token descriptors, if any\n // Keep a map of all device indexes for those provided tokens.\n const maybeTokenError = await this.provideTokenInformation(\n value,\n deviceIndexes,\n );\n if (maybeTokenError.isJust()) {\n return maybeTokenError.extract();\n }\n\n // Provide trusted name descriptors, if any\n const maybeNameError = await this.provideTrustedName(value);\n if (maybeNameError.isJust()) {\n return maybeNameError.extract();\n }\n\n // if there's a filter, send it\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-token\n const maybeFilterResult = await this.filterValue(value, deviceIndexes);\n if (\n maybeFilterResult.isJust() &&\n !isSuccessCommandResult(maybeFilterResult.extract())\n ) {\n return maybeFilterResult.extract();\n }\n\n // provide message value implementation\n const messageImplTask = this.getImplementationTask(value);\n const messageImplResult = await messageImplTask.run();\n if (!isSuccessCommandResult(messageImplResult)) {\n return messageImplResult;\n }\n\n // if a transaction was embedded in that value, provide the related clear sign context\n await this.tryProvideTransactionContext();\n\n // if the value is an empty array, discard sub-filters since\n // there will be no according sub-values in the message\n if (\n this.args.clearSignContext.isJust() &&\n value.value instanceof TypedDataValueArray &&\n value.value.length === 0\n ) {\n const filters = Object.entries(\n this.args.clearSignContext.extract().filters,\n );\n const discardedFilters = filters\n .filter(([path]) => path.startsWith(`${value.path}.[]`))\n .map(([, filter]) => filter);\n for (const filter of discardedFilters) {\n const discardedPathResult = await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: filter.path,\n }),\n );\n if (!isSuccessCommandResult(discardedPathResult)) {\n return discardedPathResult;\n }\n\n const provideFilteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n true,\n );\n if (!isSuccessCommandResult(provideFilteringResult)) {\n return provideFilteringResult;\n }\n }\n }\n }\n\n return result;\n }\n\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess) {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.WEB3_CHECK:\n await new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n break;\n case ClearSignContextType.PROXY_INFO:\n await new SendPayloadInChunksTask(this.api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n break;\n case ClearSignContextType.TOKEN:\n case ClearSignContextType.NFT:\n case ClearSignContextType.TRUSTED_NAME:\n case ClearSignContextType.PLUGIN:\n case ClearSignContextType.EXTERNAL_PLUGIN:\n case ClearSignContextType.ENUM:\n case ClearSignContextType.TRANSACTION_INFO:\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n case ClearSignContextType.DYNAMIC_NETWORK:\n case ClearSignContextType.DYNAMIC_NETWORK_ICON:\n case ClearSignContextType.SAFE:\n case ClearSignContextType.SIGNER:\n throw new Error(\n `Context type ${type} not supported in EIP712 messages`,\n );\n default: {\n const uncoveredType: never = type;\n throw new Error(`Unhandled context type ${uncoveredType}`);\n }\n }\n }\n\n getImplementationTask(value: TypedDataValue): SendEIP712StructImplemTask {\n if (value.value instanceof TypedDataValueRoot) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ROOT,\n value: value.value.root,\n });\n } else if (value.value instanceof TypedDataValueArray) {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.ARRAY,\n value: value.value.length,\n });\n } else {\n return new SendEIP712StructImplemTask(this.api, {\n type: StructImplemType.FIELD,\n value: value.value.data,\n });\n }\n }\n\n async provideTokenInformation(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n // tokens descriptors only needed when a tokenIndex is available in filter.\n // it should be sent to the device only 1 time so deviceIndexes has to be checked.\n if (\n filter !== undefined &&\n (filter.type === \"amount\" || filter.type === \"token\") &&\n deviceIndexes.indexes[filter.tokenIndex] === undefined\n ) {\n const descriptorIndex = filter.tokenIndex;\n const tokens = this.args.clearSignContext.extract().tokens;\n const token = tokens[descriptorIndex];\n if (token === undefined) {\n return Nothing;\n }\n\n const provideTokenInfoResult = await this.api.sendCommand(\n new ProvideTokenInformationCommand({ payload: token }),\n );\n if (!isSuccessCommandResult(provideTokenInfoResult)) {\n return Maybe.of(provideTokenInfoResult);\n }\n let { tokenIndex: deviceIndex } = provideTokenInfoResult.data;\n deviceIndexes.nextIndex = (deviceIndex + 1) % DEVICE_ASSETS_MAX;\n\n // the token corresponding to the Verifying Contract of message domain has a special index value, as described here:\n // https://github.com/LedgerHQ/app-ethereum/blob/develop/doc/ethapp.adoc#amount-join-value\n if (Number(descriptorIndex) === VERIFYING_CONTRACT_TOKEN_INDEX) {\n deviceIndex = VERIFYING_CONTRACT_TOKEN_INDEX;\n }\n\n deviceIndexes.indexes[Number(descriptorIndex)] = deviceIndex;\n }\n }\n return Nothing;\n }\n\n private async provideTrustedName(\n value: TypedDataValue,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust() && this.chainId.isJust()) {\n const context = this.args.clearSignContext.extract();\n const filter = context.filters[value.path];\n const address = context.trustedNamesAddresses[value.path];\n if (\n filter !== undefined &&\n filter.type === \"trusted-name\" &&\n address !== undefined\n ) {\n const getChallengeResult = await this.api.sendCommand(\n new GetChallengeCommand(),\n );\n if (!isSuccessCommandResult(getChallengeResult)) {\n return Just(getChallengeResult);\n }\n\n const context = await this.contextModule.getFieldContext(\n {\n chainId: this.chainId.extract(),\n address,\n challenge: getChallengeResult.data.challenge,\n types: filter.types,\n sources: filter.sources,\n deviceModelId: this.args.deviceModelId,\n },\n ClearSignContextType.TRUSTED_NAME,\n );\n if (context.type === ClearSignContextType.TRUSTED_NAME) {\n if (context.certificate) {\n await this.api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: context.certificate.keyUsageNumber,\n certificate: context.certificate.payload,\n }),\n );\n }\n const provideNameResult = await new SendPayloadInChunksTask(\n this.api,\n {\n payload: context.payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n },\n ).run();\n if (!isSuccessCommandResult(provideNameResult)) {\n return Just(provideNameResult);\n }\n }\n }\n }\n return Nothing;\n }\n\n async filterValue(\n value: TypedDataValue,\n deviceIndexes: DeviceAssetIndexes,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n const filter = this.args.clearSignContext.extract().filters[value.path];\n if (filter === undefined) {\n return Nothing;\n }\n // provide the filter\n const filteringResult = await this.provideFiltering(\n filter,\n deviceIndexes,\n false,\n );\n return Maybe.of(filteringResult);\n }\n return Nothing;\n }\n\n async provideFiltering(\n filter: TypedDataFilter,\n deviceIndexes: DeviceAssetIndexes,\n discarded: boolean,\n ): Promise<CommandResult<AllSuccessTypes, EthErrorCodes>> {\n switch (filter.type) {\n case \"trusted-name\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded,\n displayName: filter.displayName,\n typesAndSourcesPayload: filter.typesAndSourcesPayload,\n signature: filter.signature,\n }),\n );\n case \"datetime\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"raw\":\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded,\n displayName: filter.displayName,\n signature: filter.signature,\n }),\n );\n case \"token\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n case \"amount\":\n this.sanitizeDeviceIndex(filter.tokenIndex, deviceIndexes);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded,\n displayName: filter.displayName,\n tokenIndex: deviceIndexes.indexes[filter.tokenIndex]!,\n signature: filter.signature,\n }),\n );\n case \"calldata-value\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataValue,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n case \"calldata-callee\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataCallee,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n case \"calldata-spender\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataSpender,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n case \"calldata-chain-id\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataChainId,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n case \"calldata-selector\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataSelector,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n case \"calldata-amount\":\n await this.provideCalldataInfos(filter.calldataIndex);\n return await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataAmount,\n discarded,\n calldataIndex: filter.calldataIndex,\n signature: filter.signature,\n }),\n );\n default: {\n const unhandledType: never = filter;\n throw new Error(\n `ProvideEIP712ContextTask/provideFiltering - Unhandled filter ${unhandledType}`,\n );\n }\n }\n }\n\n private async provideCalldataInfos(\n calldataIndex: number,\n ): Promise<Maybe<CommandResult<AllSuccessTypes, EthErrorCodes>>> {\n if (this.args.clearSignContext.isJust()) {\n // ensure the calldata info was not already provided to the device\n if (this.calldataMetadatas[calldataIndex] !== undefined) {\n // If already provided, update the remaining filters count\n this.calldataMetadatas[calldataIndex]!.remainingFilters--;\n return Nothing;\n }\n\n // get the calldata infos\n const calldataInfos =\n this.args.clearSignContext.extract().calldatas[calldataIndex];\n if (calldataInfos === undefined) {\n return Nothing;\n }\n\n // Initialize the expected filters count\n const filtersPresence = [\n calldataInfos.filter.valueFlag,\n calldataInfos.filter.calleeFlag ===\n TypedDataCalldataParamPresence.Present,\n calldataInfos.filter.chainIdFlag,\n calldataInfos.filter.selectorFlag,\n calldataInfos.filter.amountFlag,\n calldataInfos.filter.spenderFlag ===\n TypedDataCalldataParamPresence.Present,\n ];\n const filtersCount = filtersPresence.filter((f) => f).length;\n this.calldataMetadatas[calldataIndex] = {\n remainingFilters: filtersCount - 1, // Minus 1 since a filter is already being sent\n contexts: this.args.calldatasContexts[calldataIndex],\n };\n\n // provide the transaction infos filter\n return Maybe.of(\n await this.api.sendCommand(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataInfo,\n discarded: false,\n calldataIndex: calldataIndex,\n valueFlag: calldataInfos.filter.valueFlag,\n calleeFlag: this.mapCalldataPresence(\n calldataInfos.filter.calleeFlag,\n ),\n chainIdFlag: calldataInfos.filter.chainIdFlag,\n selectorFlag: calldataInfos.filter.selectorFlag,\n amountFlag: calldataInfos.filter.amountFlag,\n spenderFlag: this.mapCalldataPresence(\n calldataInfos.filter.spenderFlag,\n ),\n signature: calldataInfos.filter.signature,\n }),\n ),\n );\n }\n return Nothing;\n }\n\n private async tryProvideTransactionContext() {\n for (const calldataIndex in this.calldataMetadatas) {\n const metadata = this.calldataMetadatas[calldataIndex]!;\n if (metadata.remainingFilters === 0) {\n // All the filters and implementations were sent for that TX,\n // the related clear sign contexts should now be provided\n if (metadata.contexts !== undefined) {\n await this.provideContextFactory({\n contexts: metadata.contexts,\n derivationPath: this.args.derivationPath,\n }).run();\n }\n delete this.calldataMetadatas[calldataIndex];\n }\n }\n }\n\n private mapCalldataPresence(\n presence: TypedDataCalldataParamPresence,\n ): CalldataParamPresence {\n switch (presence) {\n case TypedDataCalldataParamPresence.None:\n return CalldataParamPresence.None;\n case TypedDataCalldataParamPresence.Present:\n return CalldataParamPresence.Present;\n case TypedDataCalldataParamPresence.VerifyingContract:\n return CalldataParamPresence.VerifyingContract;\n default: {\n const unhandledPresence: never = presence;\n throw new Error(`Unhandled presence ${unhandledPresence}`);\n }\n }\n }\n\n private sanitizeDeviceIndex(\n descriptorIndex: number,\n deviceIndexes: DeviceAssetIndexes,\n ) {\n // If a token is missing, the device will replace it with a placeholder and use the next available index\n if (deviceIndexes.indexes[descriptorIndex] === undefined) {\n deviceIndexes.indexes[descriptorIndex] = deviceIndexes.nextIndex;\n deviceIndexes.nextIndex =\n (deviceIndexes.nextIndex + 1) % DEVICE_ASSETS_MAX;\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAGE,kCAAAA,EAIA,kCAAAC,MACK,2BACP,OAEE,wBAAAC,MACK,2BAMP,OACE,sBAAAC,EACA,wBAAAC,EACA,0BAAAC,EACA,0BAAAC,MACK,kCACP,OAAS,QAAAC,EAAM,SAAAC,EAAO,WAAAC,MAAe,YAErC,OAAS,uBAAAC,MAA2B,mDACpC,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,2BAAAC,MAA+B,uDACxC,OACE,yBAAAC,EACA,oBAAAC,EACA,8BAAAC,MACK,0DACP,OACE,qCAAAC,EACA,2BAAAC,MACK,iEACP,OAAS,oBAAAC,MAAwB,6DAGjC,OAAS,8BAAAC,MAAkC,uDAC3C,OAAS,uBAAAC,MAA2B,mCACpC,OAKE,uBAAAC,EACA,sBAAAC,MACK,mCAEP,OACE,kCAAAC,MAEK,mCACP,OAAS,2BAAAC,MAA+B,4BAmBxC,MAAMC,EAAoB,EAYnB,MAAMC,EAAyB,CAOpC,YACUC,EACAC,EACAC,EACSC,EACfD,GACG,IAAIN,EAA+B,KAAK,IAAKM,CAAI,EACtD,CANQ,SAAAF,EACA,mBAAAC,EACA,UAAAC,EACS,2BAAAC,EAIjB,UAAWC,KAAe,KAAK,KAAK,OAClC,GACEA,EAAY,OAAS,WACrBA,EAAY,iBAAiBX,EAC7B,CACA,MAAMY,EAAM,OAAO/B,EAAmB8B,EAAY,MAAM,IAAI,CAAC,EACzDC,GAAO,OAAO,mBAChB,KAAK,QAAU3B,EAAK,OAAO2B,CAAG,CAAC,GAEjC,KACF,CAEJ,CA1BQ,QAAyBzB,EACzB,kBAGJ,CAAC,EAwBL,MAAM,KAA0C,CAE1C,KAAK,KAAK,WACZ,MAAM,KAAK,eAAe,KAAK,KAAK,SAAS,EAI/C,MAAM,KAAK,KAAK,iBAAiB,OAAO,MAAO0B,GAAqB,CAC9DA,EAAiB,QAAU,QAC7B,MAAM,KAAK,eAAeA,EAAiB,KAAK,CAEpD,CAAC,EAED,MAAMC,EACJhC,EAAqD,CAAE,KAAM,MAAU,CAAC,EAQpEiC,EAAQ,OAAO,QAAQ,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,CAACC,CAAI,EAAG,CAACC,CAAI,IAC/DD,EAAK,cAAcC,CAAI,CACzB,EACA,SAAW,CAACC,EAAYC,CAAM,IAAKJ,EAAO,CACxC,MAAMK,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAIxB,EAAkC,CACpC,QAASC,EAAwB,KACjC,KAAMqB,CACR,CAAC,CACH,EACA,GAAI,CAACnC,EAAuBqC,CAAgB,EAC1C,OAAOA,EAGT,SAAW,CAACC,EAAWC,CAAS,IAAK,OAAO,QAAQH,CAAM,EAAG,CAC3D,MAAMI,EAAc,MAAM,KAAK,IAAI,YACjC,IAAI3B,EAAkC,CACpC,QAASC,EAAwB,MACjC,KAAMwB,EACN,KAAMC,CACR,CAAC,CACH,EACA,GAAI,CAACvC,EAAuBwC,CAAW,EACrC,OAAOA,CAEX,CACF,CAIA,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMC,EAAmB,MAAM,KAAK,IAAI,YACtC,IAAI7B,EAA2B,CAAE,KAAMD,EAAiB,UAAW,CAAC,CACtE,EACA,GAAI,CAACX,EAAuByC,CAAgB,EAC1C,OAAOA,CAEX,CAGA,UAAWC,KAAS,KAAK,KAAK,OAAQ,CAEpC,MAAMC,EAAmB,MADF,KAAK,sBAAsBD,CAAK,EACT,IAAI,EAClD,GAAI,CAAC1C,EAAuB2C,CAAgB,EAC1C,OAAOA,CAEX,CAKA,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMb,EAAmB,KAAK,KAAK,iBAAiB,QAAQ,EACtDc,EAA0B,MAAM,KAAK,IAAI,YAC7C,IAAIhC,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,YAAamB,EAAiB,YAAY,YAC1C,aAAcA,EAAiB,YAAY,aAC3C,UAAWA,EAAiB,YAAY,SAC1C,CAAC,CACH,EACA,GAAI,CAAC9B,EAAuB4C,CAAuB,EACjD,OAAOA,CAEX,CAGA,MAAMC,EAAoC,CAAE,QAAS,CAAC,EAAG,UAAW,CAAE,EACtE,UAAWH,KAAS,KAAK,KAAK,QAAS,CAGrC,MAAMI,EAAkB,MAAM,KAAK,wBACjCJ,EACAG,CACF,EACA,GAAIC,EAAgB,OAAO,EACzB,OAAOA,EAAgB,QAAQ,EAIjC,MAAMC,EAAiB,MAAM,KAAK,mBAAmBL,CAAK,EAC1D,GAAIK,EAAe,OAAO,EACxB,OAAOA,EAAe,QAAQ,EAKhC,MAAMC,EAAoB,MAAM,KAAK,YAAYN,EAAOG,CAAa,EACrE,GACEG,EAAkB,OAAO,GACzB,CAAChD,EAAuBgD,EAAkB,QAAQ,CAAC,EAEnD,OAAOA,EAAkB,QAAQ,EAKnC,MAAMC,EAAoB,MADF,KAAK,sBAAsBP,CAAK,EACR,IAAI,EACpD,GAAI,CAAC1C,EAAuBiD,CAAiB,EAC3C,OAAOA,EAQT,GAJA,MAAM,KAAK,6BAA6B,EAKtC,KAAK,KAAK,iBAAiB,OAAO,GAClCP,EAAM,iBAAiBxB,GACvBwB,EAAM,MAAM,SAAW,EACvB,CAIA,MAAMQ,EAHU,OAAO,QACrB,KAAK,KAAK,iBAAiB,QAAQ,EAAE,OACvC,EAEG,OAAO,CAAC,CAACC,CAAI,IAAMA,EAAK,WAAW,GAAGT,EAAM,IAAI,KAAK,CAAC,EACtD,IAAI,CAAC,CAAC,CAAEU,CAAM,IAAMA,CAAM,EAC7B,UAAWA,KAAUF,EAAkB,CACrC,MAAMG,EAAsB,MAAM,KAAK,IAAI,YACzC,IAAIzC,EAA2B,CAC7B,KAAMD,EAAiB,cACvB,KAAMyC,EAAO,IACf,CAAC,CACH,EACA,GAAI,CAACpD,EAAuBqD,CAAmB,EAC7C,OAAOA,EAGT,MAAMC,EAAyB,MAAM,KAAK,iBACxCF,EACAP,EACA,EACF,EACA,GAAI,CAAC7C,EAAuBsD,CAAsB,EAChD,OAAOA,CAEX,CACF,CACF,CAEA,OAAOvB,CACT,CAEA,MAAM,eAAe,CACnB,KAAAwB,EACA,QAAAC,EACA,YAAAC,CACF,EAA4B,CAW1B,OATIA,GACF,MAAM,KAAK,IAAI,YACb,IAAIxD,EAAuB,CACzB,SAAUwD,EAAY,eACtB,YAAaA,EAAY,OAC3B,CAAC,CACH,EAGMF,EAAM,CACZ,KAAK1D,EAAqB,WACxB,MAAM,IAAIwB,EAAwB,KAAK,IAAK,CAC1C,QAAAmC,EACA,eAAiB9B,GACf,IAAIjB,EAAwB,CAC1B,QAASiB,EAAK,YACd,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACP,MACF,KAAK7B,EAAqB,WACxB,MAAM,IAAIwB,EAAwB,KAAK,IAAK,CAC1C,QAAAmC,EACA,eAAiB9B,GACf,IAAIpB,EAAwB,CAC1B,KAAMoB,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CAAC,EAAE,IAAI,EACP,MACF,KAAK7B,EAAqB,MAC1B,KAAKA,EAAqB,IAC1B,KAAKA,EAAqB,aAC1B,KAAKA,EAAqB,OAC1B,KAAKA,EAAqB,gBAC1B,KAAKA,EAAqB,KAC1B,KAAKA,EAAqB,iBAC1B,KAAKA,EAAqB,8BAC1B,KAAKA,EAAqB,gBAC1B,KAAKA,EAAqB,qBAC1B,KAAKA,EAAqB,KAC1B,KAAKA,EAAqB,OACxB,MAAM,IAAI,MACR,gBAAgB0D,CAAI,mCACtB,EACF,QAAS,CACP,MAAMG,EAAuBH,EAC7B,MAAM,IAAI,MAAM,0BAA0BG,CAAa,EAAE,CAC3D,CACF,CACF,CAEA,sBAAsBhB,EAAmD,CACvE,OAAIA,EAAM,iBAAiBvB,EAClB,IAAIH,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,KACvB,MAAO2B,EAAM,MAAM,IACrB,CAAC,EACQA,EAAM,iBAAiBxB,EACzB,IAAIF,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,MACvB,MAAO2B,EAAM,MAAM,MACrB,CAAC,EAEM,IAAI1B,EAA2B,KAAK,IAAK,CAC9C,KAAMD,EAAiB,MACvB,MAAO2B,EAAM,MAAM,IACrB,CAAC,CAEL,CAEA,MAAM,wBACJA,EACAG,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMO,EAAS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,QAAQV,EAAM,IAAI,EAGtE,GACEU,IAAW,SACVA,EAAO,OAAS,UAAYA,EAAO,OAAS,UAC7CP,EAAc,QAAQO,EAAO,UAAU,IAAM,OAC7C,CACA,MAAMO,EAAkBP,EAAO,WAEzBQ,EADS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,OAC/BD,CAAe,EACpC,GAAIC,IAAU,OACZ,OAAOxD,EAGT,MAAMyD,EAAyB,MAAM,KAAK,IAAI,YAC5C,IAAItD,EAA+B,CAAE,QAASqD,CAAM,CAAC,CACvD,EACA,GAAI,CAAC5D,EAAuB6D,CAAsB,EAChD,OAAO1D,EAAM,GAAG0D,CAAsB,EAExC,GAAI,CAAE,WAAYC,CAAY,EAAID,EAAuB,KACzDhB,EAAc,WAAaiB,EAAc,GAAKxC,EAI1C,OAAOqC,CAAe,IAAM/D,IAC9BkE,EAAclE,GAGhBiD,EAAc,QAAQ,OAAOc,CAAe,CAAC,EAAIG,CACnD,CACF,CACA,OAAO1D,CACT,CAEA,MAAc,mBACZsC,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,GAAK,KAAK,QAAQ,OAAO,EAAG,CAChE,MAAMqB,EAAU,KAAK,KAAK,iBAAiB,QAAQ,EAC7CX,EAASW,EAAQ,QAAQrB,EAAM,IAAI,EACnCsB,EAAUD,EAAQ,sBAAsBrB,EAAM,IAAI,EACxD,GACEU,IAAW,QACXA,EAAO,OAAS,gBAChBY,IAAY,OACZ,CACA,MAAMC,EAAqB,MAAM,KAAK,IAAI,YACxC,IAAI5D,CACN,EACA,GAAI,CAACL,EAAuBiE,CAAkB,EAC5C,OAAO/D,EAAK+D,CAAkB,EAGhC,MAAMF,EAAU,MAAM,KAAK,cAAc,gBACvC,CACE,QAAS,KAAK,QAAQ,QAAQ,EAC9B,QAAAC,EACA,UAAWC,EAAmB,KAAK,UACnC,MAAOb,EAAO,MACd,QAASA,EAAO,QAChB,cAAe,KAAK,KAAK,aAC3B,EACAvD,EAAqB,YACvB,EACA,GAAIkE,EAAQ,OAASlE,EAAqB,aAAc,CAClDkE,EAAQ,aACV,MAAM,KAAK,IAAI,YACb,IAAI9D,EAAuB,CACzB,SAAU8D,EAAQ,YAAY,eAC9B,YAAaA,EAAQ,YAAY,OACnC,CAAC,CACH,EAEF,MAAMG,EAAoB,MAAM,IAAI7C,EAClC,KAAK,IACL,CACE,QAAS0C,EAAQ,QACjB,eAAiBrC,GACf,IAAIlB,EAA0B,CAC5B,KAAMkB,EAAK,YACX,aAAcA,EAAK,YACrB,CAAC,CACL,CACF,EAAE,IAAI,EACN,GAAI,CAAC1B,EAAuBkE,CAAiB,EAC3C,OAAOhE,EAAKgE,CAAiB,CAEjC,CACF,CACF,CACA,OAAO9D,CACT,CAEA,MAAM,YACJsC,EACAG,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CACvC,MAAMO,EAAS,KAAK,KAAK,iBAAiB,QAAQ,EAAE,QAAQV,EAAM,IAAI,EACtE,GAAIU,IAAW,OACb,OAAOhD,EAGT,MAAM+D,EAAkB,MAAM,KAAK,iBACjCf,EACAP,EACA,EACF,EACA,OAAO1C,EAAM,GAAGgE,CAAe,CACjC,CACA,OAAO/D,CACT,CAEA,MAAM,iBACJgD,EACAP,EACAuB,EACwD,CACxD,OAAQhB,EAAO,KAAM,CACnB,IAAK,eACH,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,YACvB,UAAAyD,EACA,YAAahB,EAAO,YACpB,uBAAwBA,EAAO,uBAC/B,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,WACH,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,SACvB,UAAAyD,EACA,YAAahB,EAAO,YACpB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,MACH,OAAO,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,IACvB,UAAAyD,EACA,YAAahB,EAAO,YACpB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,QACH,YAAK,oBAAoBA,EAAO,WAAYP,CAAa,EAClD,MAAM,KAAK,IAAI,YACpB,IAAIjC,EAA2B,CAC7B,KAAMD,EAAiB,MACvB,UAAAyD,EACA,WAAYvB,EAAc,QAAQO,EAAO,UAAU,EACnD,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,SACH,YAAK,oBAAoBA,EAAO,WAAYP,CAAa,EAClD,MAAM,KAAK,IAAI,YACpB,IAAIjC,EAA2B,CAC7B,KAAMD,EAAiB,OACvB,UAAAyD,EACA,YAAahB,EAAO,YACpB,WAAYP,EAAc,QAAQO,EAAO,UAAU,EACnD,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,iBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,cACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,kBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,eACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,mBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,gBACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,oBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,gBACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,oBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,iBACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,IAAK,kBACH,aAAM,KAAK,qBAAqBA,EAAO,aAAa,EAC7C,MAAM,KAAK,IAAI,YACpB,IAAIxC,EAA2B,CAC7B,KAAMD,EAAiB,eACvB,UAAAyD,EACA,cAAehB,EAAO,cACtB,UAAWA,EAAO,SACpB,CAAC,CACH,EACF,QAAS,CACP,MAAMiB,EAAuBjB,EAC7B,MAAM,IAAI,MACR,gEAAgEiB,CAAa,EAC/E,CACF,CACF,CACF,CAEA,MAAc,qBACZC,EAC+D,CAC/D,GAAI,KAAK,KAAK,iBAAiB,OAAO,EAAG,CAEvC,GAAI,KAAK,kBAAkBA,CAAa,IAAM,OAE5C,YAAK,kBAAkBA,CAAa,EAAG,mBAChClE,EAIT,MAAMmE,EACJ,KAAK,KAAK,iBAAiB,QAAQ,EAAE,UAAUD,CAAa,EAC9D,GAAIC,IAAkB,OACpB,OAAOnE,EAcT,MAAMoE,EAVkB,CACtBD,EAAc,OAAO,UACrBA,EAAc,OAAO,aACnB5E,EAA+B,QACjC4E,EAAc,OAAO,YACrBA,EAAc,OAAO,aACrBA,EAAc,OAAO,WACrBA,EAAc,OAAO,cACnB5E,EAA+B,OACnC,EACqC,OAAQ8E,GAAMA,CAAC,EAAE,OACtD,YAAK,kBAAkBH,CAAa,EAAI,CACtC,iBAAkBE,EAAe,EACjC,SAAU,KAAK,KAAK,kBAAkBF,CAAa,CACrD,EAGOnE,EAAM,GACX,MAAM,KAAK,IAAI,YACb,IAAIS,EAA2B,CAC7B,KAAMD,EAAiB,aACvB,UAAW,GACX,cAAe2D,EACf,UAAWC,EAAc,OAAO,UAChC,WAAY,KAAK,oBACfA,EAAc,OAAO,UACvB,EACA,YAAaA,EAAc,OAAO,YAClC,aAAcA,EAAc,OAAO,aACnC,WAAYA,EAAc,OAAO,WACjC,YAAa,KAAK,oBAChBA,EAAc,OAAO,WACvB,EACA,UAAWA,EAAc,OAAO,SAClC,CAAC,CACH,CACF,CACF,CACA,OAAOnE,CACT,CAEA,MAAc,8BAA+B,CAC3C,UAAWkE,KAAiB,KAAK,kBAAmB,CAClD,MAAMI,EAAW,KAAK,kBAAkBJ,CAAa,EACjDI,EAAS,mBAAqB,IAG5BA,EAAS,WAAa,QACxB,MAAM,KAAK,sBAAsB,CAC/B,SAAUA,EAAS,SACnB,eAAgB,KAAK,KAAK,cAC5B,CAAC,EAAE,IAAI,EAET,OAAO,KAAK,kBAAkBJ,CAAa,EAE/C,CACF,CAEQ,oBACNK,EACuB,CACvB,OAAQA,EAAU,CAChB,KAAKhF,EAA+B,KAClC,OAAOe,EAAsB,KAC/B,KAAKf,EAA+B,QAClC,OAAOe,EAAsB,QAC/B,KAAKf,EAA+B,kBAClC,OAAOe,EAAsB,kBAC/B,QAAS,CACP,MAAMkE,EAA2BD,EACjC,MAAM,IAAI,MAAM,sBAAsBC,CAAiB,EAAE,CAC3D,CACF,CACF,CAEQ,oBACNjB,EACAd,EACA,CAEIA,EAAc,QAAQc,CAAe,IAAM,SAC7Cd,EAAc,QAAQc,CAAe,EAAId,EAAc,UACvDA,EAAc,WACXA,EAAc,UAAY,GAAKvB,EAEtC,CACF",
|
|
6
|
+
"names": ["TypedDataCalldataParamPresence", "VERIFYING_CONTRACT_TOKEN_INDEX", "ClearSignContextType", "bufferToHexaString", "CommandResultFactory", "isSuccessCommandResult", "LoadCertificateCommand", "Just", "Maybe", "Nothing", "GetChallengeCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "CalldataParamPresence", "Eip712FilterType", "SendEIP712FilteringCommand", "SendEIP712StructDefinitionCommand", "StructDefinitionCommand", "StructImplemType", "SendEIP712StructImplemTask", "TypedDataValueField", "TypedDataValueArray", "TypedDataValueRoot", "ProvideTransactionContextsTask", "SendPayloadInChunksTask", "DEVICE_ASSETS_MAX", "ProvideEIP712ContextTask", "api", "contextModule", "args", "provideContextFactory", "domainValue", "val", "clearSignContext", "result", "types", "aKey", "bKey", "structName", "fields", "structNameResult", "fieldName", "fieldType", "fieldResult", "activationResult", "value", "domainImplResult", "messageInfoFilterResult", "deviceIndexes", "maybeTokenError", "maybeNameError", "maybeFilterResult", "messageImplResult", "discardedFilters", "path", "filter", "discardedPathResult", "provideFilteringResult", "type", "payload", "certificate", "uncoveredType", "descriptorIndex", "token", "provideTokenInfoResult", "deviceIndex", "context", "address", "getChallengeResult", "provideNameResult", "filteringResult", "discarded", "unhandledType", "calldataIndex", "calldataInfos", "filtersCount", "f", "metadata", "presence", "unhandledPresence"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ClearSignContextType as g}from"@ledgerhq/context-module";import{CommandResultFactory as a,hexaStringToBuffer as S,LoadCertificateCommand as H,UnknownDeviceExchangeError as w}from"@ledgerhq/device-management-kit";import{Just as l,Nothing as b}from"purify-ts";import{GetChallengeCommand as O}from"../../app-binder/command/GetChallengeCommand";import{ProvideTokenInformationCommand as A}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideWeb3CheckCommand as N}from"../../app-binder/command/ProvideWeb3CheckCommand";import{Eip712FilterType as c,SendEIP712FilteringCommand as o}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as U,StructDefinitionCommand as D}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{SendEIP712StructImplemCommand as I,StructImplemType as R}from"../../app-binder/command/SendEIP712StructImplemCommand";import{makeDeviceActionInternalApiMock as _}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as i,StructType as B,TypedDataValueArray as W,TypedDataValueField as C,TypedDataValueRoot as F}from"../../typed-data/model/Types";import{ProvideEIP712ContextTask as m}from"./ProvideEIP712ContextTask";describe("ProvideEIP712ContextTask",()=>{const e=_(),s={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},r={EIP712Domain:{name:new i("string","string",b),chainId:new i("uint256","uint",l(32)),verifyingContract:new i("address","address",b)},PermitSingle:{details:new B("PermitDetails"),spender:new i("address","address",b),sigDeadline:new i("uint256","uint",l(32))},PermitDetails:{token:new i("address","address",b),amount:new i("uint160","uint",l(20)),expiration:new i("uint48","uint",l(6)),nonce:new i("uint48","uint",l(6))}},f=[{path:"",type:"",value:new F("EIP712Domain")},{path:"name",type:"string",value:new C(new TextEncoder().encode("Permit2"))},{path:"chainId",type:"uint256",value:new C(Uint8Array.from([137]))},{path:"verifyingContract",type:"address",value:new C(S("0x000000000022d473030f116ddee9f6b43ac78ba3"))}],x=[{path:"",type:"",value:new F("PermitSingle")},{path:"details.token",type:"address",value:new C(S("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"details.amount",type:"uint160",value:new C(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new C(Uint8Array.from([18]))},{path:"details.nonce",type:"uint48",value:new C(Uint8Array.from([0]))},{path:"spender",type:"address",value:new C(S("0xec7be89e9d109e7e3fec59c222cf297125fefda2"))},{path:"sigDeadline",type:"uint256",value:new C(Uint8Array.from([18]))}],u={type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}},k=new i("address","address",b),P=new i("string","string",b),v=new i("uint256","uint",l(32)),q=new i("uint160","uint",l(20)),E=new i("uint48","uint",l(6)),T=t=>new B(t),y=t=>new U({command:D.Name,name:t}),n=(t,p)=>new U({command:D.Field,name:t,type:p}),h=t=>new I({type:R.ROOT,value:t}),V=t=>new I({type:R.ARRAY,value:t}),d=t=>new I({type:R.FIELD,value:{data:t,isLastChunk:!0}});beforeEach(()=>{vi.resetAllMocks()}),it("Send context with no clear signing context",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:b,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(24),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",P)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",v)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",q)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",E)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",E)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",T("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",v)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(h("EIP712Domain")),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(h("PermitSingle")),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Send context with clear signing",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l(u),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:5}})),e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,t).run(),expect(e.sendCommand.mock.calls).toHaveLength(32),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(y("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(n("name",P)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(n("chainId",v)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(n("verifyingContract",k)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(y("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(n("token",k)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(n("amount",q)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(n("expiration",E)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(n("nonce",E)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(y("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(n("details",T("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(n("spender",k)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(n("sigDeadline",v)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(h("EIP712Domain")),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(d(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(d(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(d(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"})),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(h("PermitSingle")),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(new A({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(new A({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand.mock.calls[24][0]).toStrictEqual(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand.mock.calls[25][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[26][0]).toStrictEqual(new o({type:c.Datetime,discarded:!1,displayName:"Approval expire",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"})),expect(e.sendCommand.mock.calls[27][0]).toStrictEqual(d(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[28][0]).toStrictEqual(d(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[29][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Approve to spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"})),expect(e.sendCommand.mock.calls[30][0]).toStrictEqual(d(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[31][0]).toStrictEqual(d(Uint8Array.from([0,1,18])))}),it("Both tokens unavailable",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l({type:"success",messageInfo:u.messageInfo,filters:u.filters,trustedNamesAddresses:{},tokens:{}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,t).run(),expect(e.sendCommand).not.toHaveBeenCalledWith(new A({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand).not.toHaveBeenCalledWith(new A({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:1,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("First token unavailable",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l({type:"success",messageInfo:u.messageInfo,filters:u.filters,trustedNamesAddresses:{},tokens:{255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new m(e,s,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Second token unavailable",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l({type:"success",messageInfo:u.messageInfo,filters:u.filters,trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new m(e,s,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Filter with trusted name",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l({type:"success",messageInfo:u.messageInfo,filters:{"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002",type:"trusted-name"}},trustedNamesAddresses:{"details.token":"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},tokens:{}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{challenge:"0x42"}})),s.getContext.mockResolvedValue({type:g.TRUSTED_NAME,payload:"0x01020304"}),await new m(e,s,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new O),expect(s.getContext).toHaveBeenCalledWith({type:g.TRUSTED_NAME,chainId:137,address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",types:["contract"],sources:["local","ens"],challenge:"0x42"}),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.TrustedName,discarded:!1,displayName:"Amount allowance",typesAndSourcesPayload:"010203010002",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}))}),it("Filter with trusted name and certificate",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l({type:"success",messageInfo:u.messageInfo,filters:{"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002",type:"trusted-name"}},trustedNamesAddresses:{"details.token":"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},tokens:{}}),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:{challenge:"0x42"}})),s.getContext.mockResolvedValue({type:g.TRUSTED_NAME,certificate:{keyUsageNumber:7,payload:new Uint8Array(3).fill(42)},payload:"0x01020304"}),await new m(e,s,t).run(),expect(e.sendCommand).toHaveBeenCalledWith(new O),expect(s.getContext).toHaveBeenCalledWith({type:g.TRUSTED_NAME,chainId:137,address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",types:["contract"],sources:["local","ens"],challenge:"0x42"}),expect(e.sendCommand).toHaveBeenCalledWith(new H({keyUsage:7,certificate:new Uint8Array(3).fill(42)})),expect(e.sendCommand).toHaveBeenCalledWith(new o({type:c.TrustedName,discarded:!1,displayName:"Amount allowance",typesAndSourcesPayload:"010203010002",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}))}),it("Provide Web3Check",async()=>{const p={web3Check:{type:g.WEB3_CHECK,payload:"0x010203"},types:r,domain:f,message:x,clearSignContext:b,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,p).run(),expect(e.sendCommand).toHaveBeenCalledWith(new N({payload:S("0x0003010203"),isFirstChunk:!0}))}),it("Provide Web3Check and certificate",async()=>{const t={type:g.WEB3_CHECK,certificate:{keyUsageNumber:3,payload:new Uint8Array(3).fill(42)},payload:"0x010203"},p={web3Check:t,types:r,domain:f,message:x,clearSignContext:b,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,p).run(),expect(e.sendCommand).toHaveBeenCalledWith(new H({keyUsage:3,certificate:t.certificate.payload})),expect(e.sendCommand).toHaveBeenCalledWith(new N({payload:S("0x0003010203"),isFirstChunk:!0}))}),it("Error when providing tokens",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l(u),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({error:new w("error")}));const p=new m(e,s,t).run();await expect(p).resolves.toStrictEqual(a({error:new w("error")}))}),it("Error when sending struct definitions",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:l(u),domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:{tokenIndex:5}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new w("error")}));const p=new m(e,s,t).run();await expect(p).resolves.toStrictEqual(a({error:new w("error")}))}),it("Error when sending struct implementations",async()=>{const t={web3Check:null,types:r,domain:f,message:x,clearSignContext:b,domainHash:"0x",messageHash:"0x"};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new w("error")})).mockResolvedValue(a({data:void 0}));const p=new m(e,s,t).run();await expect(p).resolves.toStrictEqual(a({error:new w("error")}))}),it("Send struct array",async()=>{const t={web3Check:null,domainHash:"0x",messageHash:"0x",types:{},domain:[],message:[{path:"spenders",type:"address[]",value:new W(1)},{path:"spenders.[]",type:"address",value:new C(S("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"beneficiaries",type:"address[]",value:new W(0)}],clearSignContext:l({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"sig"},trustedNamesAddresses:{},tokens:{},filters:{"spenders.[]":{displayName:"Spender",path:"spenders.[]",signature:"sig",type:"raw"},"beneficiaries.[]":{displayName:"Beneficiary",path:"beneficiaries.[]",signature:"sig",type:"raw"}}})};e.sendCommand.mockResolvedValue(a({data:void 0})),await new m(e,s,t).run(),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(new o({type:c.Activation})),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(new o({type:c.MessageInfo,displayName:"Permit2",filtersCount:2,signature:"sig"})),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(V(1)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(new o({type:c.Raw,discarded:!1,displayName:"Spender",signature:"sig"})),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(d(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(V(0)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(new o({type:c.DiscardedPath,path:"beneficiaries.[]"})),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(new o({type:c.Raw,discarded:!0,displayName:"Beneficiary",signature:"sig"}))})});
|
|
1
|
+
import{ClearSignContextType as R,TypedDataCalldataParamPresence as P}from"@ledgerhq/context-module";import{CommandResultFactory as a,DeviceModelId as m,hexaStringToBuffer as g,LoadCertificateCommand as L,UnknownDeviceExchangeError as w}from"@ledgerhq/device-management-kit";import{Just as s,Nothing as y}from"purify-ts";import{ProvideProxyInfoCommand as K}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as A}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideWeb3CheckCommand as U}from"../../app-binder/command/ProvideWeb3CheckCommand";import{CalldataParamPresence as T,Eip712FilterType as d,SendEIP712FilteringCommand as n}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as B,StructDefinitionCommand as W}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{SendEIP712StructImplemCommand as q,StructImplemType as V}from"../../app-binder/command/SendEIP712StructImplemCommand";import{makeDeviceActionInternalApiMock as Y}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{PrimitiveType as i,StructType as H,TypedDataValueArray as M,TypedDataValueField as k,TypedDataValueRoot as X}from"../../typed-data/model/Types";import{ProvideEIP712ContextTask as b}from"./ProvideEIP712ContextTask";describe("ProvideEIP712ContextTask",()=>{const e=Y(),l=vi.fn(),r={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn(),getSolanaContext:vi.fn()},x={EIP712Domain:{name:new i("string","string",y),chainId:new i("uint256","uint",s(32)),verifyingContract:new i("address","address",y)},PermitSingle:{details:new H("PermitDetails"),spender:new i("address","address",y),sigDeadline:new i("uint256","uint",s(32))},PermitDetails:{token:new i("address","address",y),amount:new i("uint160","uint",s(20)),expiration:new i("uint48","uint",s(6)),nonce:new i("uint48","uint",s(6))}},u=[{path:"",type:"",value:new X("EIP712Domain")},{path:"name",type:"string",value:new k(new TextEncoder().encode("Permit2"))},{path:"chainId",type:"uint256",value:new k(Uint8Array.from([137]))},{path:"verifyingContract",type:"address",value:new k(g("0x000000000022d473030f116ddee9f6b43ac78ba3"))}],p=[{path:"",type:"",value:new X("PermitSingle")},{path:"details.token",type:"address",value:new k(g("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"details.amount",type:"uint160",value:new k(Uint8Array.from([18]))},{path:"details.expiration",type:"uint48",value:new k(Uint8Array.from([18]))},{path:"details.nonce",type:"uint48",value:new k(Uint8Array.from([0]))},{path:"spender",type:"address",value:new k(g("0xec7be89e9d109e7e3fec59c222cf297125fefda2"))},{path:"sigDeadline",type:"uint256",value:new k(Uint8Array.from([18]))}],C={type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},calldatas:{},proxy:void 0,tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token":{displayName:"Amount allowance",path:"details.token",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}},v=new i("address","address",y),O=new i("string","string",y),E=new i("uint256","uint",s(32)),N=new i("uint160","uint",s(20)),I=new i("uint48","uint",s(6)),F=t=>new H(t),S=t=>new B({command:W.Name,name:t}),c=(t,f)=>new B({command:W.Field,name:t,type:f}),h=t=>new q({type:V.ROOT,value:t}),D=t=>new q({type:V.ARRAY,value:t}),o=t=>new q({type:V.FIELD,value:{data:t,isLastChunk:!0}});beforeEach(()=>{vi.resetAllMocks(),l.mockReturnValue({run:async()=>{}})}),it("Send context with no clear signing context",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:y,calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,t,l).run(),expect(e.sendCommand.mock.calls).toHaveLength(24),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(S("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(c("name",O)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(c("chainId",E)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(c("verifyingContract",v)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(S("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(c("token",v)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(c("amount",N)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(c("expiration",I)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(c("nonce",I)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(S("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(c("details",F("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(c("spender",v)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(c("sigDeadline",E)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(h("EIP712Domain")),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(o(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(o(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(o(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(h("PermitSingle")),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(o(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(o(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(o(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(o(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(o(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(o(Uint8Array.from([0,1,18])))}),it("Send context with clear signing",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s(C),calldatasContexts:{}};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:{tokenIndex:5}})),e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,t,l).run(),expect(e.sendCommand.mock.calls).toHaveLength(32),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(S("EIP712Domain")),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(c("name",O)),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(c("chainId",E)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(c("verifyingContract",v)),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(S("PermitDetails")),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(c("token",v)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(c("amount",N)),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(c("expiration",I)),expect(e.sendCommand.mock.calls[8][0]).toStrictEqual(c("nonce",I)),expect(e.sendCommand.mock.calls[9][0]).toStrictEqual(S("PermitSingle")),expect(e.sendCommand.mock.calls[10][0]).toStrictEqual(c("details",F("PermitDetails"))),expect(e.sendCommand.mock.calls[11][0]).toStrictEqual(c("spender",v)),expect(e.sendCommand.mock.calls[12][0]).toStrictEqual(c("sigDeadline",E)),expect(e.sendCommand.mock.calls[13][0]).toStrictEqual(new n({type:d.Activation})),expect(e.sendCommand.mock.calls[14][0]).toStrictEqual(h("EIP712Domain")),expect(e.sendCommand.mock.calls[15][0]).toStrictEqual(o(Uint8Array.from([0,7,80,101,114,109,105,116,50]))),expect(e.sendCommand.mock.calls[16][0]).toStrictEqual(o(Uint8Array.from([0,1,137]))),expect(e.sendCommand.mock.calls[17][0]).toStrictEqual(o(Uint8Array.from([0,20,0,0,0,0,0,34,212,115,3,15,17,109,222,233,246,180,58,199,139,163]))),expect(e.sendCommand.mock.calls[18][0]).toStrictEqual(new n({type:d.MessageInfo,displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"})),expect(e.sendCommand.mock.calls[19][0]).toStrictEqual(h("PermitSingle")),expect(e.sendCommand.mock.calls[20][0]).toStrictEqual(new A({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand.mock.calls[21][0]).toStrictEqual(new n({type:d.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand.mock.calls[22][0]).toStrictEqual(o(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[23][0]).toStrictEqual(new A({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand.mock.calls[24][0]).toStrictEqual(new n({type:d.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand.mock.calls[25][0]).toStrictEqual(o(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[26][0]).toStrictEqual(new n({type:d.Datetime,discarded:!1,displayName:"Approval expire",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"})),expect(e.sendCommand.mock.calls[27][0]).toStrictEqual(o(Uint8Array.from([0,1,18]))),expect(e.sendCommand.mock.calls[28][0]).toStrictEqual(o(Uint8Array.from([0,1,0]))),expect(e.sendCommand.mock.calls[29][0]).toStrictEqual(new n({type:d.Raw,discarded:!1,displayName:"Approve to spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"})),expect(e.sendCommand.mock.calls[30][0]).toStrictEqual(o(Uint8Array.from([0,20,236,123,232,158,157,16,158,126,63,236,89,194,34,207,41,113,37,254,253,162]))),expect(e.sendCommand.mock.calls[31][0]).toStrictEqual(o(Uint8Array.from([0,1,18])))}),it("Both tokens unavailable",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s({type:"success",messageInfo:C.messageInfo,filters:C.filters,trustedNamesAddresses:{},calldatas:{},proxy:void 0,tokens:{}}),calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,t,l).run(),expect(e.sendCommand).not.toHaveBeenCalledWith(new A({payload:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"})),expect(e.sendCommand).not.toHaveBeenCalledWith(new A({payload:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:1,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Provide calldata filters",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s({type:"success",messageInfo:C.messageInfo,filters:{"details.amount":{displayName:"Value",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:0,type:"calldata-value"},"details.expiration":{displayName:"Callee",path:"details.expiration",signature:"304502201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:0,type:"calldata-callee"},spender:{displayName:"Spender",path:"spender",signature:"304602201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:0,type:"calldata-spender"},"details.token":{displayName:"Chain ID",path:"details.token",signature:"304702201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:0,type:"calldata-chain-id"},"details.nonce":{displayName:"Chain ID",path:"details.nonce",signature:"304802201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:1,type:"calldata-selector"},sigDeadline:{displayName:"Amount",path:"sigDeadline",signature:"304902201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",calldataIndex:1,type:"calldata-amount"}},trustedNamesAddresses:{},calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:P.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:P.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619",selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n}},1:{filter:{calldataIndex:1,displayName:"Transaction",valueFlag:!0,calleeFlag:P.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:P.VerifyingContract,signature:"3045932100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:4661,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619",selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4300000000000000n}}},proxy:void 0,tokens:{}}),calldatasContexts:{0:[]}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,t,l).run(),expect(l).toHaveBeenCalledTimes(1),expect(l).toHaveBeenCalledWith({contexts:[],derivationPath:"44'/60'/0'/0/0"}),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataInfo,discarded:!1,calldataIndex:0,valueFlag:!0,calleeFlag:T.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:T.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataValue,discarded:!1,calldataIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataCallee,discarded:!1,calldataIndex:0,signature:"304502201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataSpender,discarded:!1,calldataIndex:0,signature:"304602201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataChainId,discarded:!1,calldataIndex:0,signature:"304702201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataInfo,discarded:!1,calldataIndex:1,valueFlag:!0,calleeFlag:T.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:T.VerifyingContract,signature:"3045932100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataSelector,discarded:!1,calldataIndex:1,signature:"304802201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.CalldataAmount,discarded:!1,calldataIndex:1,signature:"304902201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("First token unavailable",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s({type:"success",messageInfo:C.messageInfo,filters:C.filters,trustedNamesAddresses:{},calldatas:{},proxy:void 0,tokens:{255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"}}),calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new b(e,r,t,l).run(),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Token,discarded:!1,tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Second token unavailable",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s({type:"success",messageInfo:C.messageInfo,filters:C.filters,trustedNamesAddresses:{},calldatas:{},proxy:void 0,tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"}}),calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new b(e,r,t,l).run(),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Token,discarded:!1,tokenIndex:4,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"})),expect(e.sendCommand).toHaveBeenCalledWith(new n({type:d.Amount,discarded:!1,displayName:"Amount allowance",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}))}),it("Provide proxy",async()=>{const t={type:R.PROXY_INFO,payload:"0x010203"},f={...C,proxy:t},_={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s(f),calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:{tokenIndex:4}})),await new b(e,r,_,l).run(),expect(e.sendCommand).toHaveBeenCalledWith(new K({data:g("0x0003010203"),isFirstChunk:!0}))}),it("Provide Web3Check",async()=>{const t={type:R.WEB3_CHECK,payload:"0x010203"},f={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:t,types:x,domain:u,message:p,clearSignContext:y,calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,f,l).run(),expect(e.sendCommand).toHaveBeenCalledWith(new U({payload:g("0x0003010203"),isFirstChunk:!0}))}),it("Provide Web3Check and certificate",async()=>{const t={type:R.WEB3_CHECK,certificate:{keyUsageNumber:3,payload:new Uint8Array(3).fill(42)},payload:"0x010203"},f={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:t,types:x,domain:u,message:p,clearSignContext:y,calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,f,l).run(),expect(e.sendCommand).toHaveBeenCalledWith(new L({keyUsage:3,certificate:t.certificate.payload})),expect(e.sendCommand).toHaveBeenCalledWith(new U({payload:g("0x0003010203"),isFirstChunk:!0}))}),it("Error when providing tokens",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s(C),calldatasContexts:{}};e.sendCommand.mockResolvedValueOnce(a({error:new w("error")}));const f=new b(e,r,t,l).run();await expect(f).resolves.toStrictEqual(a({error:new w("error")}))}),it("Error when sending struct definitions",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:s(C),calldatasContexts:{}};e.sendCommand.mockResolvedValueOnce(a({data:{tokenIndex:4}})).mockResolvedValueOnce(a({data:{tokenIndex:5}})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new w("error")}));const f=new b(e,r,t,l).run();await expect(f).resolves.toStrictEqual(a({error:new w("error")}))}),it("Error when sending struct implementations",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:x,domain:u,message:p,clearSignContext:y,calldatasContexts:{}};e.sendCommand.mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({data:void 0})).mockResolvedValueOnce(a({error:new w("error")})).mockResolvedValue(a({data:void 0}));const f=new b(e,r,t,l).run();await expect(f).resolves.toStrictEqual(a({error:new w("error")}))}),it("Send struct array",async()=>{const t={deviceModelId:m.STAX,derivationPath:"44'/60'/0'/0/0",web3Check:null,types:{},domain:[],message:[{path:"spenders",type:"address[]",value:new M(1)},{path:"spenders.[]",type:"address",value:new k(g("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"))},{path:"beneficiaries",type:"address[]",value:new M(0)}],clearSignContext:s({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"sig"},trustedNamesAddresses:{},calldatas:{},proxy:void 0,tokens:{},filters:{"spenders.[]":{displayName:"Spender",path:"spenders.[]",signature:"sig",type:"raw"},"beneficiaries.[]":{displayName:"Beneficiary",path:"beneficiaries.[]",signature:"sig",type:"raw"}}}),calldatasContexts:{}};e.sendCommand.mockResolvedValue(a({data:void 0})),await new b(e,r,t,l).run(),expect(e.sendCommand.mock.calls[0][0]).toStrictEqual(new n({type:d.Activation})),expect(e.sendCommand.mock.calls[1][0]).toStrictEqual(new n({type:d.MessageInfo,displayName:"Permit2",filtersCount:2,signature:"sig"})),expect(e.sendCommand.mock.calls[2][0]).toStrictEqual(D(1)),expect(e.sendCommand.mock.calls[3][0]).toStrictEqual(new n({type:d.Raw,discarded:!1,displayName:"Spender",signature:"sig"})),expect(e.sendCommand.mock.calls[4][0]).toStrictEqual(o(Uint8Array.from([0,20,124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25]))),expect(e.sendCommand.mock.calls[5][0]).toStrictEqual(D(0)),expect(e.sendCommand.mock.calls[6][0]).toStrictEqual(new n({type:d.DiscardedPath,path:"beneficiaries.[]"})),expect(e.sendCommand.mock.calls[7][0]).toStrictEqual(new n({type:d.Raw,discarded:!0,displayName:"Beneficiary",signature:"sig"}))})});
|
|
2
2
|
//# sourceMappingURL=ProvideEIP712ContextTask.test.js.map
|