@ledgerhq/device-signer-kit-ethereum 0.0.0-multisig-20250822145545 → 0.0.0-multisig-20250910160951
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/lib/cjs/api/SignerEthBuilder.test.js +1 -1
- package/lib/cjs/api/SignerEthBuilder.test.js.map +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.js.map +2 -2
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
- 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/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/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/task/BuildBaseContexts.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +2 -2
- 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 +1 -1
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ParseNestedTransactionTask.js.map +2 -2
- 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/ProvideContextsTask.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js.map +3 -3
- 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/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/esm/api/SignerEthBuilder.test.js +1 -1
- package/lib/esm/api/SignerEthBuilder.test.js.map +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
- package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.js.map +2 -2
- package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
- 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/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/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/task/BuildBaseContexts.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +2 -2
- 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 +1 -1
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.js.map +2 -2
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ParseNestedTransactionTask.js.map +2 -2
- 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/ProvideContextsTask.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideContextsTask.js.map +3 -3
- package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js.map +3 -3
- 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/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/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +4 -0
- package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
- 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/SendEIP712FilteringCommand.d.ts +29 -1
- package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
- 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 +4 -0
- package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildBaseContexts.d.ts.map +1 -1
- 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 +2 -1
- package/lib/types/internal/app-binder/task/BuildFullContextsTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts +10 -2
- package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ParseNestedTransactionTask.d.ts.map +1 -1
- 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/ProvideContextsTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +12 -2
- package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts +1 -0
- package/lib/types/internal/app-binder/task/SendPayloadInChunksTask.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/ProvideEIP712ContextTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { GetChallengeCommand } from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\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 {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const contextModuleMock = {\n getContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Filter with trusted name\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Filter with trusted name and certificate\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n type: \"trusted-name\",\n },\n },\n trustedNamesAddresses: {\n \"details.token\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n }),\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { challenge: \"0x42\" } }),\n );\n contextModuleMock.getContext.mockResolvedValue({\n type: ClearSignContextType.TRUSTED_NAME,\n certificate: {\n keyUsageNumber: 7,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x01020304\",\n });\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(new GetChallengeCommand());\n expect(contextModuleMock.getContext).toHaveBeenCalledWith({\n type: ClearSignContextType.TRUSTED_NAME,\n chainId: 137,\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n challenge: \"0x42\",\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 7,\n certificate: new Uint8Array(3).fill(42),\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.TrustedName,\n discarded: false,\n displayName: \"Amount allowance\",\n typesAndSourcesPayload: \"010203010002\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(apiMock, contextModuleMock, args).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "
|
|
4
|
+
"sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n TypedDataCalldataParamPresence,\n type TypedDataClearSignContextSuccess,\n} from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n hexaStringToBuffer,\n LoadCertificateCommand,\n UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\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 {\n SendEIP712StructImplemCommand,\n StructImplemType,\n} from \"@internal/app-binder/command/SendEIP712StructImplemCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport {\n type FieldType,\n PrimitiveType,\n StructType,\n TypedDataValueArray,\n TypedDataValueField,\n TypedDataValueRoot,\n} from \"@internal/typed-data/model/Types\";\n\nimport {\n ProvideEIP712ContextTask,\n type ProvideEIP712ContextTaskArgs,\n} from \"./ProvideEIP712ContextTask\";\n\ndescribe(\"ProvideEIP712ContextTask\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const provideContextFactoryMock = vi.fn();\n const contextModuleMock = {\n getFieldContext: vi.fn(),\n getContexts: vi.fn(),\n getTypedDataFilters: vi.fn(),\n getWeb3Checks: vi.fn(),\n getSolanaContext: vi.fn(),\n };\n\n const TEST_TYPES = {\n EIP712Domain: {\n name: new PrimitiveType(\"string\", \"string\", Nothing),\n chainId: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n verifyingContract: new PrimitiveType(\"address\", \"address\", Nothing),\n },\n PermitSingle: {\n details: new StructType(\"PermitDetails\"),\n spender: new PrimitiveType(\"address\", \"address\", Nothing),\n sigDeadline: new PrimitiveType(\"uint256\", \"uint\", Just(32)),\n },\n PermitDetails: {\n token: new PrimitiveType(\"address\", \"address\", Nothing),\n amount: new PrimitiveType(\"uint160\", \"uint\", Just(20)),\n expiration: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n nonce: new PrimitiveType(\"uint48\", \"uint\", Just(6)),\n },\n };\n const TEST_DOMAIN_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"EIP712Domain\"),\n },\n {\n path: \"name\",\n type: \"string\",\n value: new TypedDataValueField(new TextEncoder().encode(\"Permit2\")),\n },\n {\n path: \"chainId\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([137])),\n },\n {\n path: \"verifyingContract\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x000000000022d473030f116ddee9f6b43ac78ba3\")!,\n ),\n },\n ];\n const TEST_MESSAGE_VALUES = [\n {\n path: \"\",\n type: \"\",\n value: new TypedDataValueRoot(\"PermitSingle\"),\n },\n {\n path: \"details.token\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n {\n path: \"details.amount\",\n type: \"uint160\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.expiration\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n {\n path: \"details.nonce\",\n type: \"uint48\",\n value: new TypedDataValueField(Uint8Array.from([0x00])),\n },\n {\n path: \"spender\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0xec7be89e9d109e7e3fec59c222cf297125fefda2\")!,\n ),\n },\n {\n path: \"sigDeadline\",\n type: \"uint256\",\n value: new TypedDataValueField(Uint8Array.from([0x12])),\n },\n ];\n const TEST_CLEAR_SIGN_CONTEXT: TypedDataClearSignContextSuccess = {\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n calldatas: {},\n proxy: undefined,\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 255,\n type: \"amount\",\n },\n \"details.expiration\": {\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n type: \"datetime\",\n },\n \"details.token\": {\n displayName: \"Amount allowance\",\n path: \"details.token\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n spender: {\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n type: \"raw\",\n },\n },\n };\n\n const ADDRESS = new PrimitiveType(\"address\", \"address\", Nothing);\n const STRING = new PrimitiveType(\"string\", \"string\", Nothing);\n const UINT256 = new PrimitiveType(\"uint256\", \"uint\", Just(32));\n const UINT160 = new PrimitiveType(\"uint160\", \"uint\", Just(20));\n const UINT48 = new PrimitiveType(\"uint48\", \"uint\", Just(6));\n const CUSTOM = (name: string) => new StructType(name);\n\n const sendStructDefName = (name: string) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Name,\n name,\n });\n const sendStructDefField = (name: string, type: FieldType) =>\n new SendEIP712StructDefinitionCommand({\n command: StructDefinitionCommand.Field,\n name,\n type,\n });\n const sendStructImplRoot = (value: string) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ROOT,\n value,\n });\n const sendStructImplArray = (value: number) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.ARRAY,\n value,\n });\n const sendStructImplField = (data: Uint8Array) =>\n new SendEIP712StructImplemCommand({\n type: StructImplemType.FIELD,\n value: {\n data,\n isLastChunk: true,\n },\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n provideContextFactoryMock.mockReturnValue({\n run: async () => undefined,\n });\n });\n\n it(\"Send context with no clear signing context\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(24);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message values\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Send context with clear signing\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n calldatasContexts: {},\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } })) // First token provided\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } })); // Second token provided\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand.mock.calls).toHaveLength(32);\n // Send Struct definitions\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n sendStructDefName(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n sendStructDefField(\"name\", STRING),\n );\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructDefField(\"chainId\", UINT256),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n sendStructDefField(\"verifyingContract\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructDefName(\"PermitDetails\"),\n );\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructDefField(\"token\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n sendStructDefField(\"amount\", UINT160),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n sendStructDefField(\"expiration\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[8]![0]).toStrictEqual(\n sendStructDefField(\"nonce\", UINT48),\n );\n expect(apiMock.sendCommand.mock.calls[9]![0]).toStrictEqual(\n sendStructDefName(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[10]![0]).toStrictEqual(\n sendStructDefField(\"details\", CUSTOM(\"PermitDetails\")),\n );\n expect(apiMock.sendCommand.mock.calls[11]![0]).toStrictEqual(\n sendStructDefField(\"spender\", ADDRESS),\n );\n expect(apiMock.sendCommand.mock.calls[12]![0]).toStrictEqual(\n sendStructDefField(\"sigDeadline\", UINT256),\n );\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[13]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the domain values\n expect(apiMock.sendCommand.mock.calls[14]![0]).toStrictEqual(\n sendStructImplRoot(\"EIP712Domain\"),\n );\n expect(apiMock.sendCommand.mock.calls[15]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([0x00, 0x07, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x32]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[16]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x89])),\n );\n expect(apiMock.sendCommand.mock.calls[17]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xd4, 0x73, 0x03,\n 0x0f, 0x11, 0x6d, 0xde, 0xe9, 0xf6, 0xb4, 0x3a, 0xc7, 0x8b, 0xa3,\n ]),\n ),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[18]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n }),\n );\n // Send the message values with corresponding filters\n expect(apiMock.sendCommand.mock.calls[19]![0]).toStrictEqual(\n sendStructImplRoot(\"PermitSingle\"),\n );\n expect(apiMock.sendCommand.mock.calls[20]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[21]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[22]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[23]![0]).toStrictEqual(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[24]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[25]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[26]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Datetime,\n discarded: false,\n displayName: \"Approval expire\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[27]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n expect(apiMock.sendCommand.mock.calls[28]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x00])),\n );\n expect(apiMock.sendCommand.mock.calls[29]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Approve to spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[30]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0xec, 0x7b, 0xe8, 0x9e, 0x9d, 0x10, 0x9e, 0x7e, 0x3f,\n 0xec, 0x59, 0xc2, 0x22, 0xcf, 0x29, 0x71, 0x25, 0xfe, 0xfd, 0xa2,\n ]),\n ),\n );\n expect(apiMock.sendCommand.mock.calls[31]![0]).toStrictEqual(\n sendStructImplField(Uint8Array.from([0x00, 0x01, 0x12])),\n );\n });\n\n it(\"Both tokens unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n calldatas: {},\n proxy: undefined,\n tokens: {},\n }),\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n }),\n );\n expect(apiMock.sendCommand).not.toHaveBeenCalledWith(\n new ProvideTokenInformationCommand({\n payload: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 1,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Provide calldata filters\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: {\n \"details.amount\": {\n displayName: \"Value\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 0,\n type: \"calldata-value\",\n },\n \"details.expiration\": {\n displayName: \"Callee\",\n path: \"details.expiration\",\n signature:\n \"304502201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 0,\n type: \"calldata-callee\",\n },\n spender: {\n displayName: \"Spender\",\n path: \"spender\",\n signature:\n \"304602201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 0,\n type: \"calldata-spender\",\n },\n \"details.token\": {\n displayName: \"Chain ID\",\n path: \"details.token\",\n signature:\n \"304702201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 0,\n type: \"calldata-chain-id\",\n },\n \"details.nonce\": {\n displayName: \"Chain ID\",\n path: \"details.nonce\",\n signature:\n \"304802201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 1,\n type: \"calldata-selector\",\n },\n sigDeadline: {\n displayName: \"Amount\",\n path: \"sigDeadline\",\n signature:\n \"304902201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n calldataIndex: 1,\n type: \"calldata-amount\",\n },\n },\n trustedNamesAddresses: {},\n calldatas: {\n 0: {\n filter: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 0x1234,\n data: \"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99\",\n from: \"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n selector: \"0x778899aa\",\n to: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n value: 4200000000000000n,\n },\n },\n 1: {\n filter: {\n calldataIndex: 1,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045932100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 0x1235,\n data: \"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99\",\n from: \"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n selector: \"0x778899aa\",\n to: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n value: 4300000000000000n,\n },\n },\n },\n proxy: undefined,\n tokens: {},\n }),\n calldatasContexts: {\n 0: [],\n },\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(provideContextFactoryMock).toHaveBeenCalledTimes(1);\n expect(provideContextFactoryMock).toHaveBeenCalledWith(apiMock, {\n contexts: [],\n derivationPath: \"44'/60'/0'/0/0\",\n serializedTransaction: new Uint8Array(),\n });\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataInfo,\n discarded: false,\n calldataIndex: 0,\n valueFlag: true,\n calleeFlag: CalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: CalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataValue,\n discarded: false,\n calldataIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataCallee,\n discarded: false,\n calldataIndex: 0,\n signature:\n \"304502201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataSpender,\n discarded: false,\n calldataIndex: 0,\n signature:\n \"304602201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataChainId,\n discarded: false,\n calldataIndex: 0,\n signature:\n \"304702201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataInfo,\n discarded: false,\n calldataIndex: 1,\n valueFlag: true,\n calleeFlag: CalldataParamPresence.Present,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: CalldataParamPresence.VerifyingContract,\n signature:\n \"3045932100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataSelector,\n discarded: false,\n calldataIndex: 1,\n signature:\n \"304802201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.CalldataAmount,\n discarded: false,\n calldataIndex: 1,\n signature:\n \"304902201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"First token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n calldatas: {},\n proxy: undefined,\n tokens: { 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\" },\n }),\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Second token unavailable\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just({\n type: \"success\",\n messageInfo: TEST_CLEAR_SIGN_CONTEXT.messageInfo,\n filters: TEST_CLEAR_SIGN_CONTEXT.filters,\n trustedNamesAddresses: {},\n calldatas: {},\n proxy: undefined,\n tokens: { 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\" },\n }),\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Token,\n discarded: false,\n tokenIndex: 4,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Amount,\n discarded: false,\n displayName: \"Amount allowance\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n }),\n );\n });\n\n it(\"Provide proxy\", async () => {\n // GIVEN\n const proxy: ClearSignContextSuccess<ClearSignContextType.PROXY_DELEGATE_CALL> =\n {\n type: ClearSignContextType.PROXY_DELEGATE_CALL,\n payload: \"0x010203\",\n };\n const clearSignContext: TypedDataClearSignContextSuccess = {\n ...TEST_CLEAR_SIGN_CONTEXT,\n proxy,\n };\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(clearSignContext),\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: { tokenIndex: 4 } }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideProxyInfoCommand({\n data: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Provide Web3Check and certificate\", async () => {\n // GIVEN\n const web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> =\n {\n type: ClearSignContextType.WEB3_CHECK,\n certificate: {\n keyUsageNumber: 3,\n payload: new Uint8Array(3).fill(42),\n },\n payload: \"0x010203\",\n };\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n };\n\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new LoadCertificateCommand({\n keyUsage: 3,\n certificate: web3Check.certificate!.payload,\n }),\n );\n expect(apiMock.sendCommand).toHaveBeenCalledWith(\n new ProvideWeb3CheckCommand({\n payload: hexaStringToBuffer(\"0x0003010203\")!,\n isFirstChunk: true,\n }),\n );\n });\n\n it(\"Error when providing tokens\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n calldatasContexts: {},\n };\n apiMock.sendCommand.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n });\n\n it(\"Error when sending struct definitions\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Just(TEST_CLEAR_SIGN_CONTEXT),\n calldatasContexts: {},\n };\n apiMock.sendCommand\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 4 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: { tokenIndex: 5 } }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n );\n // WHEN\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Error when sending struct implementations\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: TEST_TYPES,\n domain: TEST_DOMAIN_VALUES,\n message: TEST_MESSAGE_VALUES,\n clearSignContext: Nothing,\n calldatasContexts: {},\n };\n // WHEN\n apiMock.sendCommand\n // Struct definitions\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n .mockResolvedValueOnce(CommandResultFactory({ data: undefined }))\n // Struct implementations\n .mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"error\"),\n }),\n )\n .mockResolvedValue(CommandResultFactory({ data: undefined }));\n const promise = new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n await expect(promise).resolves.toStrictEqual(\n CommandResultFactory({ error: new UnknownDeviceExchangeError(\"error\") }),\n );\n });\n\n it(\"Send struct array\", async () => {\n // GIVEN\n const args: ProvideEIP712ContextTaskArgs = {\n derivationPath: \"44'/60'/0'/0/0\",\n web3Check: null,\n types: {},\n domain: [],\n message: [\n // Array containing an element\n {\n path: \"spenders\",\n type: \"address[]\",\n value: new TypedDataValueArray(1),\n },\n {\n path: \"spenders.[]\",\n type: \"address\",\n value: new TypedDataValueField(\n hexaStringToBuffer(\"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\")!,\n ),\n },\n // Empty array\n {\n path: \"beneficiaries\",\n type: \"address[]\",\n value: new TypedDataValueArray(0),\n },\n ],\n clearSignContext: Just({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n },\n trustedNamesAddresses: {},\n calldatas: {},\n proxy: undefined,\n tokens: {},\n filters: {\n \"spenders.[]\": {\n displayName: \"Spender\",\n path: \"spenders.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n \"beneficiaries.[]\": {\n displayName: \"Beneficiary\",\n path: \"beneficiaries.[]\",\n signature: \"sig\",\n type: \"raw\",\n },\n },\n }),\n calldatasContexts: {},\n };\n // WHEN\n apiMock.sendCommand.mockResolvedValue(\n CommandResultFactory({ data: undefined }),\n );\n await new ProvideEIP712ContextTask(\n apiMock,\n contextModuleMock,\n args,\n provideContextFactoryMock,\n ).run();\n\n // THEN\n // Activate the filtering\n expect(apiMock.sendCommand.mock.calls[0]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({ type: Eip712FilterType.Activation }),\n );\n // Send the message information filter\n expect(apiMock.sendCommand.mock.calls[1]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.MessageInfo,\n displayName: \"Permit2\",\n filtersCount: 2,\n signature: \"sig\",\n }),\n );\n // Send first array containing 1 element\n expect(apiMock.sendCommand.mock.calls[2]![0]).toStrictEqual(\n sendStructImplArray(1),\n );\n expect(apiMock.sendCommand.mock.calls[3]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: false,\n displayName: \"Spender\",\n signature: \"sig\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[4]![0]).toStrictEqual(\n sendStructImplField(\n Uint8Array.from([\n 0x00, 0x14, 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e,\n 0x62, 0xac, 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n ),\n );\n // Send second empty array, with discarded filter\n expect(apiMock.sendCommand.mock.calls[5]![0]).toStrictEqual(\n sendStructImplArray(0),\n );\n expect(apiMock.sendCommand.mock.calls[6]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.DiscardedPath,\n path: \"beneficiaries.[]\",\n }),\n );\n expect(apiMock.sendCommand.mock.calls[7]![0]).toStrictEqual(\n new SendEIP712FilteringCommand({\n type: Eip712FilterType.Raw,\n discarded: true,\n displayName: \"Beneficiary\",\n signature: \"sig\",\n }),\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_context_module", "import_device_management_kit", "import_purify_ts", "import_ProvideProxyInfoCommand", "import_ProvideTokenInformationCommand", "import_ProvideWeb3CheckCommand", "import_SendEIP712FilteringCommand", "import_SendEIP712StructDefinitionCommand", "import_SendEIP712StructImplemCommand", "import_makeInternalApi", "import_Types", "import_ProvideEIP712ContextTask", "apiMock", "provideContextFactoryMock", "contextModuleMock", "TEST_TYPES", "TEST_DOMAIN_VALUES", "TEST_MESSAGE_VALUES", "TEST_CLEAR_SIGN_CONTEXT", "ADDRESS", "STRING", "UINT256", "UINT160", "UINT48", "CUSTOM", "name", "sendStructDefName", "sendStructDefField", "type", "sendStructImplRoot", "value", "sendStructImplArray", "sendStructImplField", "data", "args", "proxy", "clearSignContext", "web3Check", "promise"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var s=Object.defineProperty;var
|
|
1
|
+
"use strict";var s=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var p=(r,a)=>{for(var n in a)s(r,n,{get:a[n],enumerable:!0})},u=(r,a,n,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let e of i(a))!y.call(r,e)&&e!==n&&s(r,e,{get:()=>a[e],enumerable:!(o=l(a,e))||o.enumerable});return r};var h=r=>u(s({},"__esModule",{value:!0}),r);var C={};p(C,{SendPayloadInChunksTask:()=>c});module.exports=h(C);var t=require("@ledgerhq/device-management-kit"),d=require("../../shared/utils/PayloadUtils"),m=require("./SendCommandInChunksTask");class c{constructor(a,n){this.api=a;this.args=n}async run(){const{payload:a,withPayloadLength:n=!0}=this.args;let o=null;return n?o=d.PayloadUtils.getBufferFromPayload(a):o=(0,t.hexaStringToBuffer)(a),o?new m.SendCommandInChunksTask(this.api,{data:o,commandFactory:this.args.commandFactory}).run():(0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")})}}0&&(module.exports={SendPayloadInChunksTask});
|
|
2
2
|
//# sourceMappingURL=SendPayloadInChunksTask.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendPayloadInChunksTask.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { PayloadUtils } from \"@internal/shared/utils/PayloadUtils\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\n\nexport type SendPayloadInChunksTaskArgs<T> = {\n payload: string;\n commandFactory: SendCommandInChunksTaskArgs<T>[\"commandFactory\"];\n};\n\nexport class SendPayloadInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendPayloadInChunksTaskArgs<T>,\n ) {}\n async run(): Promise<CommandResult<T, EthErrorCodes>> {\n const data = PayloadUtils.getBufferFromPayload(
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,
|
|
6
|
-
"names": ["SendPayloadInChunksTask_exports", "__export", "SendPayloadInChunksTask", "__toCommonJS", "import_device_management_kit", "import_PayloadUtils", "import_SendCommandInChunksTask", "api", "args", "data"]
|
|
4
|
+
"sourcesContent": ["import {\n type CommandResult,\n CommandResultFactory,\n hexaStringToBuffer,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { PayloadUtils } from \"@internal/shared/utils/PayloadUtils\";\n\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\n\nexport type SendPayloadInChunksTaskArgs<T> = {\n payload: string;\n commandFactory: SendCommandInChunksTaskArgs<T>[\"commandFactory\"];\n withPayloadLength?: boolean;\n};\n\nexport class SendPayloadInChunksTask<T> {\n constructor(\n private api: InternalApi,\n private args: SendPayloadInChunksTaskArgs<T>,\n ) {}\n async run(): Promise<CommandResult<T, EthErrorCodes>> {\n const { payload, withPayloadLength = true } = this.args;\n\n let data: Uint8Array | null = null;\n if (withPayloadLength) {\n data = PayloadUtils.getBufferFromPayload(payload);\n } else {\n data = hexaStringToBuffer(payload);\n }\n\n if (!data) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n });\n }\n\n return new SendCommandInChunksTask(this.api, {\n data,\n commandFactory: this.args.commandFactory,\n }).run();\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CAGPC,EAA6B,+CAE7BC,EAGO,qCAQA,MAAMJ,CAA2B,CACtC,YACUK,EACAC,EACR,CAFQ,SAAAD,EACA,UAAAC,CACP,CACH,MAAM,KAAgD,CACpD,KAAM,CAAE,QAAAC,EAAS,kBAAAC,EAAoB,EAAK,EAAI,KAAK,KAEnD,IAAIC,EAA0B,KAO9B,OANID,EACFC,EAAO,eAAa,qBAAqBF,CAAO,EAEhDE,KAAO,sBAAmBF,CAAO,EAG9BE,EAME,IAAI,0BAAwB,KAAK,IAAK,CAC3C,KAAAA,EACA,eAAgB,KAAK,KAAK,cAC5B,CAAC,EAAE,IAAI,KARE,wBAAqB,CAC1B,MAAO,IAAI,yBAAuB,iBAAiB,CACrD,CAAC,CAOL,CACF",
|
|
6
|
+
"names": ["SendPayloadInChunksTask_exports", "__export", "SendPayloadInChunksTask", "__toCommonJS", "import_device_management_kit", "import_PayloadUtils", "import_SendCommandInChunksTask", "api", "args", "payload", "withPayloadLength", "data"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),n=require("./SendCommandInChunksTask"),o=require("./SendPayloadInChunksTask");vi.mock("./SendCommandInChunksTask");describe("SendPayloadInChunksTask",()=>{describe("run",()=>{beforeAll(()=>{vi.resetAllMocks()}),it("should return a CommandResult",async()=>{const e="0x1234";vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn()}).run();expect(a).toEqual((0,t.CommandResultFactory)({data:"0x5678"}))}),it("should return an error CommandResult",async()=>{const e="invalid-payload",a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn()}).run();expect(a).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")}))}),it("should use PayloadUtils.getBufferFromPayload when withPayloadLength is true",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a,withPayloadLength:!0}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([0,3,1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should use hexaStringToBuffer when withPayloadLength is false",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a,withPayloadLength:!1}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should use PayloadUtils.getBufferFromPayload when withPayloadLength is undefined (default)",async()=>{const e="010203",a=vi.fn();vi.spyOn(n.SendCommandInChunksTask.prototype,"run").mockResolvedValue((0,t.CommandResultFactory)({data:"0x5678"}));const r=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:a}).run();expect(r).toEqual((0,t.CommandResultFactory)({data:"0x5678"})),expect(n.SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();const d=new Uint8Array([0,3,1,2,3]);expect(n.SendCommandInChunksTask).toHaveBeenCalledWith(expect.anything(),expect.objectContaining({data:d,commandFactory:a}))}),it("should return an error CommandResult when withPayloadLength is true and payload is invalid",async()=>{const e="invalid-payload",a=await new o.SendPayloadInChunksTask({},{payload:e,commandFactory:vi.fn(),withPayloadLength:!0}).run();expect(a).toEqual((0,t.CommandResultFactory)({error:new t.InvalidStatusWordError("Invalid payload")}))})})});
|
|
2
2
|
//# sourceMappingURL=SendPayloadInChunksTask.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/task/SendPayloadInChunksTask.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\n// mock SendCommandInChunksTask\nvi.mock(\"./SendCommandInChunksTask\");\n\ndescribe(\"SendPayloadInChunksTask\", () => {\n describe(\"run\", () => {\n beforeAll(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a CommandResult\", async () => {\n // GIVEN\n const payload = \"0x1234\";\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n });\n\n it(\"should return an error CommandResult\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAIO,2CAEPC,EAAwC,qCACxCC,EAAwC,qCAGxC,GAAG,KAAK,2BAA2B,EAEnC,SAAS,0BAA2B,IAAM,CACxC,SAAS,MAAO,IAAM,CACpB,UAAU,IAAM,CACd,GAAG,cAAc,CACnB,CAAC,EAED,GAAG,gCAAiC,SAAY,CAE9C,MAAMC,EAAU,SAChB,GAAG,MAAM,0BAAwB,UAAW,KAAK,EAAE,qBACjD,wBAAqB,CAAE,KAAM,QAAS,CAAC,CACzC,EAGA,MAAMC,EAAS,MAAM,IAAI,0BAAwB,CAAC,EAAkB,CAClE,QAAAD,EACA,eAAgB,GAAG,GAAG,CACxB,CAAC,EAAE,IAAI,EAGP,OAAOC,CAAM,EAAE,WAAQ,wBAAqB,CAAE,KAAM,QAAS,CAAC,CAAC,CACjE,CAAC,EAED,GAAG,uCAAwC,SAAY,CAErD,MAAMD,EAAU,kBAGVC,EAAS,MAAM,IAAI,0BAAwB,CAAC,EAAkB,CAClE,QAAAD,EACA,eAAgB,GAAG,GAAG,CACxB,CAAC,EAAE,IAAI,EAGP,OAAOC,CAAM,EAAE,WACb,wBAAqB,CACnB,MAAO,IAAI,yBAAuB,iBAAiB,CACrD,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
-
"names": ["import_device_management_kit", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "payload", "result"]
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SendCommandInChunksTask } from \"./SendCommandInChunksTask\";\nimport { SendPayloadInChunksTask } from \"./SendPayloadInChunksTask\";\n\n// mock SendCommandInChunksTask\nvi.mock(\"./SendCommandInChunksTask\");\n\ndescribe(\"SendPayloadInChunksTask\", () => {\n describe(\"run\", () => {\n beforeAll(() => {\n vi.resetAllMocks();\n });\n\n it(\"should return a CommandResult\", async () => {\n // GIVEN\n const payload = \"0x1234\";\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n });\n\n it(\"should return an error CommandResult\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n\n it(\"should use PayloadUtils.getBufferFromPayload when withPayloadLength is true\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n withPayloadLength: true,\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x00, 0x03, 0x01, 0x02, 0x03] with length prefix\n const expectedData = new Uint8Array([0x00, 0x03, 0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should use hexaStringToBuffer when withPayloadLength is false\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n withPayloadLength: false,\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x01, 0x02, 0x03] without length prefix\n const expectedData = new Uint8Array([0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should use PayloadUtils.getBufferFromPayload when withPayloadLength is undefined (default)\", async () => {\n // GIVEN\n const payload = \"010203\";\n const mockCommandFactory = vi.fn();\n vi.spyOn(SendCommandInChunksTask.prototype, \"run\").mockResolvedValue(\n CommandResultFactory({ data: \"0x5678\" }),\n );\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: mockCommandFactory,\n // withPayloadLength is undefined (default behavior)\n }).run();\n\n // THEN\n expect(result).toEqual(CommandResultFactory({ data: \"0x5678\" }));\n expect(SendCommandInChunksTask.prototype.run).toHaveBeenCalledWith();\n // Verify that SendCommandInChunksTask was called with the correct data\n // The payload \"010203\" should be converted to [0x00, 0x03, 0x01, 0x02, 0x03] with length prefix\n const expectedData = new Uint8Array([0x00, 0x03, 0x01, 0x02, 0x03]);\n expect(SendCommandInChunksTask).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n data: expectedData,\n commandFactory: mockCommandFactory,\n }),\n );\n });\n\n it(\"should return an error CommandResult when withPayloadLength is true and payload is invalid\", async () => {\n // GIVEN\n const payload = \"invalid-payload\";\n\n // WHEN\n const result = await new SendPayloadInChunksTask({} as InternalApi, {\n payload,\n commandFactory: vi.fn(),\n withPayloadLength: true,\n }).run();\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid payload\"),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_SendCommandInChunksTask", "import_SendPayloadInChunksTask", "payload", "result", "mockCommandFactory", "expectedData"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{SignerEthBuilder as n}from"./SignerEthBuilder";import{DefaultSignerEth as c}from"../internal/DefaultSignerEth";import{externalTypes as d}from"../internal/externalTypes";describe("SignerEthBuilder",()=>{const i={dmk:{},sessionId:"",originToken:"test"};test("should be an instance of SignerEth",()=>{const t=new n(i);t.build(),expect(t).toBeInstanceOf(n)}),test("should instanciate with default context module",()=>{const o=new n(i).build(),e=o._container.get(d.ContextModule);expect(o).toBeInstanceOf(c),expect(e).toBeDefined(),expect(e._loaders).toHaveLength(
|
|
1
|
+
import{SignerEthBuilder as n}from"./SignerEthBuilder";import{DefaultSignerEth as c}from"../internal/DefaultSignerEth";import{externalTypes as d}from"../internal/externalTypes";describe("SignerEthBuilder",()=>{const i={dmk:{},sessionId:"",originToken:"test"};test("should be an instance of SignerEth",()=>{const t=new n(i);t.build(),expect(t).toBeInstanceOf(n)}),test("should instanciate with default context module",()=>{const o=new n(i).build(),e=o._container.get(d.ContextModule);expect(o).toBeInstanceOf(c),expect(e).toBeDefined(),expect(e._loaders).toHaveLength(7),expect(e._typedDataLoader).toBeDefined(),expect(e._web3CheckLoader).toBeDefined()}),test("should instanciate with custom context module",()=>{const t=new n(i),o={},e=t.withContextModule(o).build();expect(e).toBeInstanceOf(c),expect(e._container.get(d.ContextModule)).toBe(o)})});
|
|
2
2
|
//# sourceMappingURL=SignerEthBuilder.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/SignerEthBuilder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport { SignerEthBuilder } from \"@api/SignerEthBuilder\";\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\ndescribe(\"SignerEthBuilder\", () => {\n const dmk: DeviceManagementKit = {} as DeviceManagementKit;\n const defaultConstructorArgs = { dmk, sessionId: \"\", originToken: \"test\" };\n\n test(\"should be an instance of SignerEth\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n builder.build();\n\n // THEN\n expect(builder).toBeInstanceOf(SignerEthBuilder);\n });\n\n test(\"should instanciate with default context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n const signer = builder.build();\n const contextModule = signer[\"_container\"].get<ContextModule>(\n externalTypes.ContextModule,\n );\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(contextModule).toBeDefined();\n // @ts-expect-error - private property\n expect(contextModule._loaders).toHaveLength(
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport { SignerEthBuilder } from \"@api/SignerEthBuilder\";\nimport { DefaultSignerEth } from \"@internal/DefaultSignerEth\";\nimport { externalTypes } from \"@internal/externalTypes\";\n\ndescribe(\"SignerEthBuilder\", () => {\n const dmk: DeviceManagementKit = {} as DeviceManagementKit;\n const defaultConstructorArgs = { dmk, sessionId: \"\", originToken: \"test\" };\n\n test(\"should be an instance of SignerEth\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n builder.build();\n\n // THEN\n expect(builder).toBeInstanceOf(SignerEthBuilder);\n });\n\n test(\"should instanciate with default context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n\n // WHEN\n const signer = builder.build();\n const contextModule = signer[\"_container\"].get<ContextModule>(\n externalTypes.ContextModule,\n );\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(contextModule).toBeDefined();\n // @ts-expect-error - private property\n expect(contextModule._loaders).toHaveLength(7);\n // @ts-expect-error - private property\n expect(contextModule._typedDataLoader).toBeDefined();\n // @ts-expect-error - private property\n expect(contextModule._web3CheckLoader).toBeDefined();\n });\n\n test(\"should instanciate with custom context module\", () => {\n // GIVEN\n const builder = new SignerEthBuilder(defaultConstructorArgs);\n const contextModule = {} as ContextModule;\n\n // WHEN\n const signer = builder.withContextModule(contextModule).build();\n\n // THEN\n expect(signer).toBeInstanceOf(DefaultSignerEth);\n expect(\n signer[\"_container\"].get<ContextModule>(externalTypes.ContextModule),\n ).toBe(contextModule);\n });\n});\n"],
|
|
5
5
|
"mappings": "AAGA,OAAS,oBAAAA,MAAwB,wBACjC,OAAS,oBAAAC,MAAwB,6BACjC,OAAS,iBAAAC,MAAqB,0BAE9B,SAAS,mBAAoB,IAAM,CAEjC,MAAMC,EAAyB,CAAE,IADA,CAAC,EACI,UAAW,GAAI,YAAa,MAAO,EAEzE,KAAK,qCAAsC,IAAM,CAE/C,MAAMC,EAAU,IAAIJ,EAAiBG,CAAsB,EAG3DC,EAAQ,MAAM,EAGd,OAAOA,CAAO,EAAE,eAAeJ,CAAgB,CACjD,CAAC,EAED,KAAK,iDAAkD,IAAM,CAK3D,MAAMK,EAHU,IAAIL,EAAiBG,CAAsB,EAGpC,MAAM,EACvBG,EAAgBD,EAAO,WAAc,IACzCH,EAAc,aAChB,EAGA,OAAOG,CAAM,EAAE,eAAeJ,CAAgB,EAC9C,OAAOK,CAAa,EAAE,YAAY,EAElC,OAAOA,EAAc,QAAQ,EAAE,aAAa,CAAC,EAE7C,OAAOA,EAAc,gBAAgB,EAAE,YAAY,EAEnD,OAAOA,EAAc,gBAAgB,EAAE,YAAY,CACrD,CAAC,EAED,KAAK,gDAAiD,IAAM,CAE1D,MAAMF,EAAU,IAAIJ,EAAiBG,CAAsB,EACrDG,EAAgB,CAAC,EAGjBD,EAASD,EAAQ,kBAAkBE,CAAa,EAAE,MAAM,EAG9D,OAAOD,CAAM,EAAE,eAAeJ,CAAgB,EAC9C,OACEI,EAAO,WAAc,IAAmBH,EAAc,aAAa,CACrE,EAAE,KAAKI,CAAa,CACtB,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["SignerEthBuilder", "DefaultSignerEth", "externalTypes", "defaultConstructorArgs", "builder", "signer", "contextModule"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var r=(e=>(e.OPEN_APP="signer.eth.steps.openApp",e.GET_APP_CONFIG="signer.eth.steps.getAppConfig",e.WEB3_CHECKS_OPT_IN="signer.eth.steps.web3ChecksOptIn",e.WEB3_CHECKS_OPT_IN_RESULT="signer.eth.steps.web3ChecksOptInResult",e.BUILD_CONTEXT="signer.eth.steps.buildContext",e.PROVIDE_CONTEXT="signer.eth.steps.provideContext",e.PROVIDE_GENERIC_CONTEXT="signer.eth.steps.provideGenericContext",e.SIGN_TYPED_DATA="signer.eth.steps.signTypedData",e.SIGN_TYPED_DATA_LEGACY="signer.eth.steps.signTypedDataLegacy",e))(r||{});export{r as SignTypedDataDAStateStep};
|
|
2
2
|
//# sourceMappingURL=SignTypedDataDeviceActionTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/app-binder/SignTypedDataDeviceActionTypes.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport type { ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport enum SignTypedDataDAStateStep {\n OPEN_APP = \"signer.eth.steps.openApp\",\n GET_APP_CONFIG = \"signer.eth.steps.getAppConfig\",\n WEB3_CHECKS_OPT_IN = \"signer.eth.steps.web3ChecksOptIn\",\n WEB3_CHECKS_OPT_IN_RESULT = \"signer.eth.steps.web3ChecksOptInResult\",\n BUILD_CONTEXT = \"signer.eth.steps.buildContext\",\n PROVIDE_CONTEXT = \"signer.eth.steps.provideContext\",\n PROVIDE_GENERIC_CONTEXT = \"signer.eth.steps.provideGenericContext\",\n SIGN_TYPED_DATA = \"signer.eth.steps.signTypedData\",\n SIGN_TYPED_DATA_LEGACY = \"signer.eth.steps.signTypedDataLegacy\",\n}\n\nexport type SignTypedDataDAOutput = Signature;\n\nexport type SignTypedDataDAInput = {\n readonly derivationPath: string;\n readonly data: TypedData;\n readonly parser: TypedDataParserService;\n readonly contextModule: ContextModule;\n readonly skipOpenApp: boolean;\n};\n\nexport type SignTypedDataDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTypedDataDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTypedData;\n\nexport type SignTypedDataDAIntermediateValue =\n | {\n requiredUserInteraction: SignTypedDataDARequiredInteraction;\n step: Exclude<\n SignTypedDataDAStateStep,\n SignTypedDataDAStateStep.WEB3_CHECKS_OPT_IN_RESULT\n >;\n }\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: SignTypedDataDAStateStep.WEB3_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTypedDataDAState = DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n\nexport type SignTypedDataDAInternalState = {\n readonly error: SignTypedDataDAError | null;\n readonly appConfig: GetConfigCommandResponse | null;\n readonly typedDataContext: ProvideEIP712ContextTaskArgs | null;\n readonly signature: Signature | null;\n};\n\nexport type SignTypedDataDAReturnType = ExecuteDeviceActionReturnType<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport type { ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport enum SignTypedDataDAStateStep {\n OPEN_APP = \"signer.eth.steps.openApp\",\n GET_APP_CONFIG = \"signer.eth.steps.getAppConfig\",\n WEB3_CHECKS_OPT_IN = \"signer.eth.steps.web3ChecksOptIn\",\n WEB3_CHECKS_OPT_IN_RESULT = \"signer.eth.steps.web3ChecksOptInResult\",\n BUILD_CONTEXT = \"signer.eth.steps.buildContext\",\n PROVIDE_CONTEXT = \"signer.eth.steps.provideContext\",\n PROVIDE_GENERIC_CONTEXT = \"signer.eth.steps.provideGenericContext\",\n SIGN_TYPED_DATA = \"signer.eth.steps.signTypedData\",\n SIGN_TYPED_DATA_LEGACY = \"signer.eth.steps.signTypedDataLegacy\",\n}\n\nexport type SignTypedDataDAOutput = Signature;\n\nexport type SignTypedDataDAInput = {\n readonly derivationPath: string;\n readonly data: TypedData;\n readonly parser: TypedDataParserService;\n readonly transactionMapper: TransactionMapperService;\n readonly transactionParser: TransactionParserService;\n readonly contextModule: ContextModule;\n readonly skipOpenApp: boolean;\n};\n\nexport type SignTypedDataDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTypedDataDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTypedData;\n\nexport type SignTypedDataDAIntermediateValue =\n | {\n requiredUserInteraction: SignTypedDataDARequiredInteraction;\n step: Exclude<\n SignTypedDataDAStateStep,\n SignTypedDataDAStateStep.WEB3_CHECKS_OPT_IN_RESULT\n >;\n }\n | {\n requiredUserInteraction: UserInteractionRequired.None;\n step: SignTypedDataDAStateStep.WEB3_CHECKS_OPT_IN_RESULT;\n result: boolean;\n };\n\nexport type SignTypedDataDAState = DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n\nexport type SignTypedDataDAInternalState = {\n readonly error: SignTypedDataDAError | null;\n readonly appConfig: GetConfigCommandResponse | null;\n readonly typedDataContext: ProvideEIP712ContextTaskArgs | null;\n readonly signature: Signature | null;\n};\n\nexport type SignTypedDataDAReturnType = ExecuteDeviceActionReturnType<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "AAmBO,IAAKA,OACVA,EAAA,SAAW,2BACXA,EAAA,eAAiB,gCACjBA,EAAA,mBAAqB,mCACrBA,EAAA,0BAA4B,yCAC5BA,EAAA,cAAgB,gCAChBA,EAAA,gBAAkB,kCAClBA,EAAA,wBAA0B,yCAC1BA,EAAA,gBAAkB,iCAClBA,EAAA,uBAAyB,uCATfA,OAAA",
|
|
6
6
|
"names": ["SignTypedDataDAStateStep"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var D=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=(o,e,t,n)=>{for(var i=n>1?void 0:n?y(e,t):e,s=o.length-1,d;s>=0;s--)(d=o[s])&&(i=(n?d(e,t,i):d(i))||i);return n&&i&&D(e,t,i),i},r=(o,e)=>(t,n)=>e(t,n,o);import{CallTaskInAppDeviceAction as A,SendCommandInAppDeviceAction as T}from"@ledgerhq/device-management-kit";import{UserInteractionRequired as p}from"@ledgerhq/device-management-kit";import{inject as a,injectable as h}from"inversify";import{SignTypedDataDeviceAction as g}from"../app-binder/device-action/SignTypedData/SignTypedDataDeviceAction";import{SendSignPersonalMessageTask as l}from"../app-binder/task/SendSignPersonalMessageTask";import{externalTypes as m}from"../externalTypes";import{transactionTypes as v}from"../transaction/di/transactionTypes";import{GetAddressCommand as S}from"./command/GetAddressCommand";import{SignTransactionDeviceAction as f}from"./device-action/SignTransaction/SignTransactionDeviceAction";import{SendSignAuthorizationDelegationTask as k}from"./task/SendSignAuthorizationDelegationTask";let c=class{constructor(e,t,n,i,s){this.dmk=e;this.contextModule=t;this.mapper=n;this.parser=i;this.sessionId=s}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new T({input:{command:new S(e),appName:"Ethereum",requiredUserInteraction:e.checkOnDevice?p.VerifyAddress:p.None,skipOpenApp:e.skipOpenApp}})})}signPersonalMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{task:async t=>new l(t,e).run(),appName:"Ethereum",requiredUserInteraction:p.SignPersonalMessage,skipOpenApp:e.skipOpenApp}})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new f({input:{derivationPath:e.derivationPath,transaction:e.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,options:e.options??{}}})})}signTypedData(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new g({input:{derivationPath:e.derivationPath,data:e.data,parser:e.parser,contextModule:this.contextModule,skipOpenApp:e.skipOpenApp}})})}signDelegationAuthorization(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{task:async t=>new k(t,e).run(),appName:"Ethereum",requiredUserInteraction:p.SignDelegationAuthorization,skipOpenApp:!1}})})}};c=u([h(),r(0,a(m.Dmk)),r(1,a(m.ContextModule)),r(2,a(v.TransactionMapperService)),r(3,a(v.TransactionParserService)),r(4,a(m.SessionId))],c);export{c as EthAppBinder};
|
|
1
|
+
var D=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var u=(o,e,t,n)=>{for(var i=n>1?void 0:n?y(e,t):e,s=o.length-1,d;s>=0;s--)(d=o[s])&&(i=(n?d(e,t,i):d(i))||i);return n&&i&&D(e,t,i),i},r=(o,e)=>(t,n)=>e(t,n,o);import{CallTaskInAppDeviceAction as A,SendCommandInAppDeviceAction as T}from"@ledgerhq/device-management-kit";import{UserInteractionRequired as p}from"@ledgerhq/device-management-kit";import{inject as a,injectable as h}from"inversify";import{SignTypedDataDeviceAction as g}from"../app-binder/device-action/SignTypedData/SignTypedDataDeviceAction";import{SendSignPersonalMessageTask as l}from"../app-binder/task/SendSignPersonalMessageTask";import{externalTypes as m}from"../externalTypes";import{transactionTypes as v}from"../transaction/di/transactionTypes";import{GetAddressCommand as S}from"./command/GetAddressCommand";import{SignTransactionDeviceAction as f}from"./device-action/SignTransaction/SignTransactionDeviceAction";import{SendSignAuthorizationDelegationTask as k}from"./task/SendSignAuthorizationDelegationTask";let c=class{constructor(e,t,n,i,s){this.dmk=e;this.contextModule=t;this.mapper=n;this.parser=i;this.sessionId=s}getAddress(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new T({input:{command:new S(e),appName:"Ethereum",requiredUserInteraction:e.checkOnDevice?p.VerifyAddress:p.None,skipOpenApp:e.skipOpenApp}})})}signPersonalMessage(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{task:async t=>new l(t,e).run(),appName:"Ethereum",requiredUserInteraction:p.SignPersonalMessage,skipOpenApp:e.skipOpenApp}})})}signTransaction(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new f({input:{derivationPath:e.derivationPath,transaction:e.transaction,mapper:this.mapper,parser:this.parser,contextModule:this.contextModule,options:e.options??{}}})})}signTypedData(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new g({input:{derivationPath:e.derivationPath,data:e.data,parser:e.parser,transactionMapper:this.mapper,transactionParser:this.parser,contextModule:this.contextModule,skipOpenApp:e.skipOpenApp}})})}signDelegationAuthorization(e){return this.dmk.executeDeviceAction({sessionId:this.sessionId,deviceAction:new A({input:{task:async t=>new k(t,e).run(),appName:"Ethereum",requiredUserInteraction:p.SignDelegationAuthorization,skipOpenApp:!1}})})}};c=u([h(),r(0,a(m.Dmk)),r(1,a(m.ContextModule)),r(2,a(v.TransactionMapperService)),r(3,a(v.TransactionParserService)),r(4,a(m.SessionId))],c);export{c as EthAppBinder};
|
|
2
2
|
//# sourceMappingURL=EthAppBinder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/EthAppBinder.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CallTaskInAppDeviceAction,\n SendCommandInAppDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { SendSignPersonalMessageTask } from \"@internal/app-binder/task/SendSignPersonalMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { GetAddressCommand } from \"./command/GetAddressCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { SendSignAuthorizationDelegationTask } from \"./task/SendSignAuthorizationDelegationTask\";\n\n@injectable()\nexport class EthAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(transactionTypes.TransactionMapperService)\n private mapper: TransactionMapperService,\n @inject(transactionTypes.TransactionParserService)\n private parser: TransactionParserService,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n returnChainCode: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(args),\n appName: \"Ethereum\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignPersonalMessageTask(internalApi, args).run(),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n options?: TransactionOptions;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n mapper: this.mapper,\n parser: this.parser,\n contextModule: this.contextModule,\n options: args.options ?? {},\n },\n }),\n });\n }\n\n signTypedData(args: {\n derivationPath: string;\n parser: TypedDataParserService;\n data: TypedData;\n skipOpenApp: boolean;\n }): SignTypedDataDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTypedDataDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n data: args.data,\n parser: args.parser,\n contextModule: this.contextModule,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signDelegationAuthorization(args: {\n derivationPath: string;\n chainId: number;\n address: string;\n nonce: number;\n }): SignDelegationAuthorizationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignAuthorizationDelegationTask(internalApi, args).run(),\n appName: \"Ethereum\",\n requiredUserInteraction:\n UserInteractionRequired.SignDelegationAuthorization,\n skipOpenApp: false,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "iOAKA,OACE,6BAAAA,EACA,gCAAAC,MACK,kCACP,OAAS,2BAAAC,MAA+B,kCACxC,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YASnC,OAAS,6BAAAC,MAAiC,6EAC1C,OAAS,+BAAAC,MAAmC,wDAC5C,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,oBAAAC,MAAwB,4CAKjC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,+BAAAC,MAAmC,8DAC5C,OAAS,uCAAAC,MAA2C,6CAG7C,IAAMC,EAAN,KAAmB,CACxB,YACqCC,EACUC,EAErCC,EAEAC,EACiCC,EACzC,CAPmC,SAAAJ,EACU,mBAAAC,EAErC,YAAAC,EAEA,YAAAC,EACiC,eAAAC,CACxC,CAEH,WAAWC,EAKgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EAAkBF,CAAI,EACnC,QAAS,WACT,wBAAyBA,EAAK,cAC1BG,EAAwB,cACxBA,EAAwB,KAC5B,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,oBAAoBA,EAIgB,CAClC,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAIC,EAA4BD,EAAaL,CAAI,EAAE,IAAI,EACzD,QAAS,WACT,wBAAyBG,EAAwB,oBACjD,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIO,EAA4B,CAC5C,MAAO,CACL,eAAgBP,EAAK,eACrB,YAAaA,EAAK,YAClB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,cAAe,KAAK,cACpB,QAASA,EAAK,SAAW,CAAC,CAC5B,CACF,CAAC,CACH,CAAC,CACH,CAEA,cAAcA,EAKgB,CAC5B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIQ,EAA0B,CAC1C,MAAO,CACL,eAAgBR,EAAK,eACrB,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,cAAe,KAAK,cACpB,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,4BAA4BA,EAKgB,CAC1C,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAII,EAAoCJ,EAAaL,CAAI,EAAE,IAAI,EACjE,QAAS,WACT,wBACEG,EAAwB,4BAC1B,YAAa,EACf,CACF,CAAC,CACH,CAAC,CACH,CACF,
|
|
4
|
+
"sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CallTaskInAppDeviceAction,\n SendCommandInAppDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { type GetAddressDAReturnType } from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport { SignDelegationAuthorizationDAReturnType } from \"@api/app-binder/SignDelegationAuthorizationTypes\";\nimport { type SignPersonalMessageDAReturnType } from \"@api/app-binder/SignPersonalMessageDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type SignTypedDataDAReturnType } from \"@api/app-binder/SignTypedDataDeviceActionTypes\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { SignTypedDataDeviceAction } from \"@internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction\";\nimport { SendSignPersonalMessageTask } from \"@internal/app-binder/task/SendSignPersonalMessageTask\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { transactionTypes } from \"@internal/transaction/di/transactionTypes\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nimport { GetAddressCommand } from \"./command/GetAddressCommand\";\nimport { SignTransactionDeviceAction } from \"./device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { SendSignAuthorizationDelegationTask } from \"./task/SendSignAuthorizationDelegationTask\";\n\n@injectable()\nexport class EthAppBinder {\n constructor(\n @inject(externalTypes.Dmk) private dmk: DeviceManagementKit,\n @inject(externalTypes.ContextModule) private contextModule: ContextModule,\n @inject(transactionTypes.TransactionMapperService)\n private mapper: TransactionMapperService,\n @inject(transactionTypes.TransactionParserService)\n private parser: TransactionParserService,\n @inject(externalTypes.SessionId) private sessionId: DeviceSessionId,\n ) {}\n\n getAddress(args: {\n derivationPath: string;\n checkOnDevice: boolean;\n returnChainCode: boolean;\n skipOpenApp: boolean;\n }): GetAddressDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand(args),\n appName: \"Ethereum\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signPersonalMessage(args: {\n derivationPath: string;\n message: string | Uint8Array;\n skipOpenApp: boolean;\n }): SignPersonalMessageDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignPersonalMessageTask(internalApi, args).run(),\n appName: \"Ethereum\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signTransaction(args: {\n derivationPath: string;\n transaction: Uint8Array;\n options?: TransactionOptions;\n }): SignTransactionDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n transaction: args.transaction,\n mapper: this.mapper,\n parser: this.parser,\n contextModule: this.contextModule,\n options: args.options ?? {},\n },\n }),\n });\n }\n\n signTypedData(args: {\n derivationPath: string;\n parser: TypedDataParserService;\n data: TypedData;\n skipOpenApp: boolean;\n }): SignTypedDataDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new SignTypedDataDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n data: args.data,\n parser: args.parser,\n transactionMapper: this.mapper,\n transactionParser: this.parser,\n contextModule: this.contextModule,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signDelegationAuthorization(args: {\n derivationPath: string;\n chainId: number;\n address: string;\n nonce: number;\n }): SignDelegationAuthorizationDAReturnType {\n return this.dmk.executeDeviceAction({\n sessionId: this.sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignAuthorizationDelegationTask(internalApi, args).run(),\n appName: \"Ethereum\",\n requiredUserInteraction:\n UserInteractionRequired.SignDelegationAuthorization,\n skipOpenApp: false,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAKA,OACE,6BAAAA,EACA,gCAAAC,MACK,kCACP,OAAS,2BAAAC,MAA+B,kCACxC,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YASnC,OAAS,6BAAAC,MAAiC,6EAC1C,OAAS,+BAAAC,MAAmC,wDAC5C,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,oBAAAC,MAAwB,4CAKjC,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,+BAAAC,MAAmC,8DAC5C,OAAS,uCAAAC,MAA2C,6CAG7C,IAAMC,EAAN,KAAmB,CACxB,YACqCC,EACUC,EAErCC,EAEAC,EACiCC,EACzC,CAPmC,SAAAJ,EACU,mBAAAC,EAErC,YAAAC,EAEA,YAAAC,EACiC,eAAAC,CACxC,CAEH,WAAWC,EAKgB,CACzB,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EAAkBF,CAAI,EACnC,QAAS,WACT,wBAAyBA,EAAK,cAC1BG,EAAwB,cACxBA,EAAwB,KAC5B,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,oBAAoBA,EAIgB,CAClC,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAIC,EAA4BD,EAAaL,CAAI,EAAE,IAAI,EACzD,QAAS,WACT,wBAAyBG,EAAwB,oBACjD,YAAaH,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIO,EAA4B,CAC5C,MAAO,CACL,eAAgBP,EAAK,eACrB,YAAaA,EAAK,YAClB,OAAQ,KAAK,OACb,OAAQ,KAAK,OACb,cAAe,KAAK,cACpB,QAASA,EAAK,SAAW,CAAC,CAC5B,CACF,CAAC,CACH,CAAC,CACH,CAEA,cAAcA,EAKgB,CAC5B,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAIQ,EAA0B,CAC1C,MAAO,CACL,eAAgBR,EAAK,eACrB,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,kBAAmB,KAAK,OACxB,kBAAmB,KAAK,OACxB,cAAe,KAAK,cACpB,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,4BAA4BA,EAKgB,CAC1C,OAAO,KAAK,IAAI,oBAAoB,CAClC,UAAW,KAAK,UAChB,aAAc,IAAII,EAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAII,EAAoCJ,EAAaL,CAAI,EAAE,IAAI,EACjE,QAAS,WACT,wBACEG,EAAwB,4BAC1B,YAAa,EACf,CACF,CAAC,CACH,CAAC,CACH,CACF,EAjHaT,EAANgB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GACxBF,EAAA,EAAAC,EAAOC,EAAc,aAAa,GAClCF,EAAA,EAAAC,EAAOE,EAAiB,wBAAwB,GAEhDH,EAAA,EAAAC,EAAOE,EAAiB,wBAAwB,GAEhDH,EAAA,EAAAC,EAAOC,EAAc,SAAS,IARtBpB",
|
|
6
6
|
"names": ["CallTaskInAppDeviceAction", "SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "SignTypedDataDeviceAction", "SendSignPersonalMessageTask", "externalTypes", "transactionTypes", "GetAddressCommand", "SignTransactionDeviceAction", "SendSignAuthorizationDelegationTask", "EthAppBinder", "dmk", "contextModule", "mapper", "parser", "sessionId", "args", "SendCommandInAppDeviceAction", "GetAddressCommand", "UserInteractionRequired", "CallTaskInAppDeviceAction", "internalApi", "SendSignPersonalMessageTask", "SignTransactionDeviceAction", "SignTypedDataDeviceAction", "SendSignAuthorizationDelegationTask", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes", "transactionTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{hexaStringToBuffer as v}from"@ledgerhq/device-management-kit";import{DeviceActionStatus as c}from"@ledgerhq/device-management-kit";import{SendCommandInAppDeviceAction as S}from"@ledgerhq/device-management-kit";import{UserInteractionRequired as h}from"@ledgerhq/device-management-kit";import{Transaction as y}from"ethers";import{from as m}from"rxjs";import{GetAddressCommand as f}from"./command/GetAddressCommand";import{EthAppBinder as A}from"./EthAppBinder";describe("EthAppBinder",()=>{const r={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},d={
|
|
1
|
+
import{hexaStringToBuffer as v}from"@ledgerhq/device-management-kit";import{DeviceActionStatus as c}from"@ledgerhq/device-management-kit";import{SendCommandInAppDeviceAction as S}from"@ledgerhq/device-management-kit";import{UserInteractionRequired as h}from"@ledgerhq/device-management-kit";import{Transaction as y}from"ethers";import{from as m}from"rxjs";import{GetAddressCommand as f}from"./command/GetAddressCommand";import{EthAppBinder as A}from"./EthAppBinder";describe("EthAppBinder",()=>{const r={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},d={getFieldContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn(),getSolanaContext:vi.fn()},D={mapTransactionToSubset:vi.fn()},l={extractValue:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),describe("getAddress",()=>{it("should return the address, publicKey, and chainCode",()=>new Promise((i,a)=>{const e="0xF7C69BedB292Dd3fC2cA4103989B5BD705164c43",s="04e3785ca";vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:{address:e,publicKey:s,chainCode:void 0}}]),cancel:vi.fn()});const p=new A(r,d,D,l,"sessionId"),{observable:o}=p.getAddress({derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1}),t=[];o.subscribe({next:n=>{t.push(n)},error:n=>{a(n)},complete:()=>{try{expect(t).toEqual([{status:c.Completed,output:{address:e,publicKey:s,chainCode:void 0}}]),i()}catch(n){a(n)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const i={derivationPath:"44'/60'/3'/2/1",checkOnDevice:!1,returnChainCode:!1,skipOpenApp:!1};test("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const e={...i,checkOnDevice:!0};new A(r,d,D,l,"sessionId").getAddress(e),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new S({input:{command:new f(e),appName:"Ethereum",requiredUserInteraction:h.VerifyAddress,skipOpenApp:!1}})})}),test("when checkOnDevice is false: UserInteractionRequired.None",()=>{const e={...i,checkOnDevice:!1};new A(r,d,D,l,"sessionId").getAddress(e),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new S({input:{command:new f(e),appName:"Ethereum",requiredUserInteraction:h.None,skipOpenApp:!1}})})})})}),describe("signTransaction",()=>{it("should return the signature",()=>new Promise((i,a)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=v(y.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized),u={};vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:e}]),cancel:vi.fn()});const p=new A(r,d,D,l,"sessionId"),{observable:o}=p.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:s,options:u}),t=[];o.subscribe({next:n=>{t.push(n)},error:n=>{a(n)},complete:()=>{try{expect(t).toEqual([{status:c.Completed,output:e}]),i()}catch(n){a(n)}}})})),it("should return the signature without options",()=>new Promise((i,a)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=v(y.from({to:"0x1234567890123456789012345678901234567890",value:0n}).unsignedSerialized);vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:e}]),cancel:vi.fn()});const u=new A(r,d,D,l,"sessionId"),{observable:p}=u.signTransaction({derivationPath:"44'/60'/3'/2/1",transaction:s,options:void 0}),o=[];p.subscribe({next:t=>{o.push(t)},error:t=>{a(t)},complete:()=>{try{expect(o).toEqual([{status:c.Completed,output:e}]),i()}catch(t){a(t)}}})}))}),describe("signMessage",()=>{it("should return the signature",()=>new Promise((i,a)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s="Hello, World!";vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:e}]),cancel:vi.fn()});const u=new A(r,d,D,l,"sessionId"),{observable:p}=u.signPersonalMessage({derivationPath:"44'/60'/3'/2/1",message:s,skipOpenApp:!1}),o=[];p.subscribe({next:t=>{o.push(t)},error:t=>{a(t)},complete:()=>{try{expect(o).toEqual([{status:c.Completed,output:e}]),i()}catch(t){a(t)}}})}))}),describe("signDelegationAuthorization",()=>{it("should return the signature",()=>new Promise((i,a)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s=2,u=42,p="0xaddress";vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:e}]),cancel:vi.fn()});const o=new A(r,d,D,l,"sessionId"),{observable:t}=o.signDelegationAuthorization({derivationPath:"44'/60'/3'/2/1",chainId:s,address:p,nonce:u}),n=[];t.subscribe({next:g=>{n.push(g)},error:g=>{a(g)},complete:()=>{try{expect(n).toEqual([{status:c.Completed,output:e}]),i()}catch(g){a(g)}}})}))}),describe("signTypedData",()=>{it("should return the signature",()=>new Promise((i,a)=>{const e={r:"0xDEAD",s:"0xBEEF",v:0},s={domain:{},types:{},primaryType:"test",message:{}},u={parse:vi.fn()};vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:m([{status:c.Completed,output:e}]),cancel:vi.fn()});const p=new A(r,d,D,l,"sessionId"),{observable:o}=p.signTypedData({derivationPath:"44'/60'/3'/2/1",parser:u,data:s,skipOpenApp:!1}),t=[];o.subscribe({next:n=>{t.push(n)},error:n=>{a(n)},complete:()=>{try{expect(t).toEqual([{status:c.Completed,output:e}]),i()}catch(n){a(n)}}})}))})});
|
|
2
2
|
//# sourceMappingURL=EthAppBinder.test.js.map
|