@ledgerhq/context-module 0.0.0-develop-20260125001208 → 0.0.0-develop-20260127001144

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.
Files changed (90) hide show
  1. package/lib/cjs/package.json +1 -1
  2. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  3. package/lib/cjs/src/ContextModuleBuilder.js.map +3 -3
  4. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.test.js.map +2 -2
  6. package/lib/cjs/src/DefaultContextModule.test.js +1 -1
  7. package/lib/cjs/src/DefaultContextModule.test.js.map +3 -3
  8. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js +1 -1
  9. package/lib/cjs/src/calldata/domain/CalldataContextLoader.test.js.map +3 -3
  10. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js.map +1 -1
  11. package/lib/cjs/src/di.js +1 -1
  12. package/lib/cjs/src/di.js.map +2 -2
  13. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
  14. package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +3 -3
  15. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  16. package/lib/cjs/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  17. package/lib/cjs/src/nft/domain/NftContextLoader.test.js +1 -1
  18. package/lib/cjs/src/nft/domain/NftContextLoader.test.js.map +3 -3
  19. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  20. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  21. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  22. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  23. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  24. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +3 -3
  25. package/lib/cjs/src/token/domain/TokenContextLoader.test.js +1 -1
  26. package/lib/cjs/src/token/domain/TokenContextLoader.test.js.map +3 -3
  27. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js +1 -1
  28. package/lib/cjs/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +3 -3
  29. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +1 -1
  30. package/lib/cjs/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +3 -3
  31. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  32. package/lib/cjs/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  33. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  34. package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  35. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  36. package/lib/cjs/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  37. package/lib/esm/package.json +1 -1
  38. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  39. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  40. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  41. package/lib/esm/src/ContextModuleBuilder.test.js.map +2 -2
  42. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  43. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  44. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js +1 -1
  45. package/lib/esm/src/calldata/domain/CalldataContextLoader.test.js.map +3 -3
  46. package/lib/esm/src/di.js +1 -1
  47. package/lib/esm/src/di.js.map +2 -2
  48. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
  49. package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +3 -3
  50. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js +1 -1
  51. package/lib/esm/src/external-plugin/domain/ExternalPluginContextLoader.test.js.map +3 -3
  52. package/lib/esm/src/nft/domain/NftContextLoader.test.js +1 -1
  53. package/lib/esm/src/nft/domain/NftContextLoader.test.js.map +3 -3
  54. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  55. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  56. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  57. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  58. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  59. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +3 -3
  60. package/lib/esm/src/token/domain/TokenContextLoader.test.js +1 -1
  61. package/lib/esm/src/token/domain/TokenContextLoader.test.js.map +3 -3
  62. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js +1 -1
  63. package/lib/esm/src/transaction-check/domain/TransactionCheckContextLoader.test.js.map +3 -3
  64. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js +1 -1
  65. package/lib/esm/src/transaction-check/domain/TypedDataCheckContextLoader.test.js.map +3 -3
  66. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  67. package/lib/esm/src/trusted-name/domain/TrustedNameContextLoader.test.js.map +3 -3
  68. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
  69. package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
  70. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js +1 -1
  71. package/lib/esm/src/uniswap/domain/UniswapContextLoader.test.js.map +3 -3
  72. package/lib/types/src/ContextModuleBuilder.d.ts +2 -3
  73. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  74. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts +1 -1
  75. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts.map +1 -1
  76. package/lib/types/src/di.d.ts.map +1 -1
  77. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  78. package/package.json +6 -6
  79. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.js +0 -2
  80. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.js.map +0 -7
  81. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.test.js +0 -2
  82. package/lib/cjs/src/shared/utils/NullLoggerPublisherService.test.js.map +0 -7
  83. package/lib/esm/src/shared/utils/NullLoggerPublisherService.js +0 -2
  84. package/lib/esm/src/shared/utils/NullLoggerPublisherService.js.map +0 -7
  85. package/lib/esm/src/shared/utils/NullLoggerPublisherService.test.js +0 -2
  86. package/lib/esm/src/shared/utils/NullLoggerPublisherService.test.js.map +0 -7
  87. package/lib/types/src/shared/utils/NullLoggerPublisherService.d.ts +0 -3
  88. package/lib/types/src/shared/utils/NullLoggerPublisherService.d.ts.map +0 -1
  89. package/lib/types/src/shared/utils/NullLoggerPublisherService.test.d.ts +0 -2
  90. package/lib/types/src/shared/utils/NullLoggerPublisherService.test.d.ts.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";var c=require("@ledgerhq/device-management-kit"),d=require("purify-ts"),i=require("../../shared/model/ClearSignContext"),s=require("../../shared/model/TypedDataClearSignContext"),x=require("../../shared/utils/NullLoggerPublisherService"),m=require("../../typed-data/domain/DefaultTypedDataContextLoader");describe("TypedDataContextLoader",()=>{const o=vi.fn(),r=vi.fn(),t=vi.fn(),l={getTokenInfosPayload:vi.fn()},y={getTypedDataFilters:t},g={getProxyImplementationAddress:o},v={loadCertificate:r},f=new m.DefaultTypedDataContextLoader(y,l,g,v,x.NullLoggerPublisherService),n={PermitSingle:[{name:"details",type:"PermitDetails"},{name:"spender",type:"address"},{name:"sigDeadline",type:"uint256"}],PermitDetails:[{type:"address[]",name:"token"},{name:"amount",type:"uint160"},{name:"expiration",type:"uint48"},{name:"nonce",type:"uint48"}],EIP712Domain:[{name:"name",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}]},b=[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"details.amount",value:Uint8Array.from([18])},{path:"spender",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([18])}],p={SafeTx:[{name:"to",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"},{name:"selector",type:"bytes"},{name:"chainId",type:"uint256"},{name:"operation",type:"uint8"}],EIP712Domain:[{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}]},u=[{path:"to",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"spender",value:Uint8Array.from([140,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"value",value:Uint8Array.from([14,235,224,180,14,128,0])},{path:"data",value:Uint8Array.from([106,118,18,2,0,0,0,0,0,0,0,0,0,0,0,0,35,248,171,252,40,36,195,151,204,179,218,137,174,119,41,132,16,125,219,153])},{path:"selector",value:Uint8Array.from([119,136,153,170])},{path:"chainId",value:Uint8Array.from([18,52])},{path:"operation",value:Uint8Array.from([1])}];beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(l,"getTokenInfosPayload").mockImplementation(({address:a})=>Promise.resolve((0,d.Right)(`payload-${a}`))),o.mockResolvedValue((0,d.Left)(new Error("No proxy")))}),describe("load function",()=>{it("success with referenced token",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"},{type:"amount",displayName:"Amount allowance",path:"details.amount",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"},{type:"raw",displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"},{type:"datetime",displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"}]})));const e=await f.load(a);expect(t).toHaveBeenCalledWith(expect.objectContaining({address:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:0,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}})}),it("success with referenced token verifying contract",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"},{type:"amount",displayName:"Amount allowance",path:"details.amount",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"}}})}),it("success with calldata",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:p,challenge:"1234",fieldsValues:u,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},calldatasInfos:{0:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"}},filters:[{type:"raw",displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b"},{type:"calldata-value",displayName:"Transaction",path:"data",calldataIndex:0,signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a"},{type:"calldata-callee",displayName:"Transaction",path:"to",calldataIndex:0,signature:"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8"},{type:"calldata-amount",displayName:"Transaction",path:"value",calldataIndex:0,signature:"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-chain-id",displayName:"Transaction",path:"chainId",calldataIndex:0,signature:"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-selector",displayName:"Transaction",path:"selector",calldataIndex:0,signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-spender",displayName:"Transaction",path:"spender",calldataIndex:0,signature:"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},trustedNamesAddresses:{},tokens:{},calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619",selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n}}},proxy:void 0,filters:{data:{displayName:"Transaction",path:"data",signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a",calldataIndex:0,type:"calldata-value"},operation:{displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b",type:"raw"},to:{displayName:"Transaction",path:"to",signature:"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8",calldataIndex:0,type:"calldata-callee"},value:{displayName:"Transaction",path:"value",signature:"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-amount"},chainId:{displayName:"Transaction",path:"chainId",signature:"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-chain-id"},selector:{displayName:"Transaction",path:"selector",signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-selector"},spender:{displayName:"Transaction",path:"spender",signature:"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-spender"}}})}),it("success with several calldatas",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:p,challenge:"1234",fieldsValues:u,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},calldatasInfos:{0:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},1:{calldataIndex:1,displayName:"Transaction 2",valueFlag:!1,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!0,selectorFlag:!0,amountFlag:!1,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"}},filters:[{type:"raw",displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b"},{type:"calldata-value",displayName:"Transaction",path:"data",calldataIndex:0,signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a"},{type:"calldata-selector",displayName:"Transaction",path:"selector",calldataIndex:1,signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},trustedNamesAddresses:{},tokens:{},calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:1,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x000000000022d473030f116ddee9f6b43ac78ba3",selector:"0x6a761202",to:"0x000000000022d473030f116ddee9f6b43ac78ba3",value:void 0}},1:{filter:{calldataIndex:1,displayName:"Transaction 2",valueFlag:!1,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!0,selectorFlag:!0,amountFlag:!1,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:1,data:"0x",from:"0x000000000022d473030f116ddee9f6b43ac78ba3",selector:"0x778899aa",to:"0x000000000022d473030f116ddee9f6b43ac78ba3",value:void 0}}},proxy:void 0,filters:{data:{displayName:"Transaction",path:"data",signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a",calldataIndex:0,type:"calldata-value"},selector:{displayName:"Transaction",path:"selector",signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:1,type:"calldata-selector"},operation:{displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b",type:"raw"}}})}),it("success with proxy",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};o.mockResolvedValueOnce((0,d.Right)({implementationAddress:"0x987654321fedcba0",signedDescriptor:"0x123456789abcdef0",keyId:"testKeyId",KeyUsage:"testKeyUsage"})),r.mockResolvedValue(void 0),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[]})));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(t).toHaveBeenLastCalledWith(expect.objectContaining({address:"0x987654321fedcba0",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:{type:i.ClearSignContextType.PROXY_INFO,payload:"0x123456789abcdef0",certificate:void 0},filters:{}})}),it("success with proxy and certificate",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};o.mockResolvedValueOnce((0,d.Right)({implementationAddress:"0x987654321fedcba0",signedDescriptor:"0x123456789abcdef0",keyId:"testKeyId",KeyUsage:"testKeyUsage"})),r.mockResolvedValueOnce({keyUsageNumber:1,payload:new Uint8Array([1,2,3,4])}).mockResolvedValueOnce({keyUsageNumber:2,payload:new Uint8Array([1,2,3,4])}),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[]})));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(t).toHaveBeenLastCalledWith(expect.objectContaining({address:"0x987654321fedcba0",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:{type:i.ClearSignContextType.PROXY_INFO,payload:"0x123456789abcdef0",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3,4])}},certificate:{keyUsageNumber:2,payload:new Uint8Array([1,2,3,4])},filters:{}})}),it("should return an error if filters are unavailable",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error"))));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(1),expect(e).toEqual({type:"error",error:new Error("error")})}),it("should return an error if filters are unavailable in the proxy",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};o.mockResolvedValueOnce((0,d.Right)({delegateAddresses:["0x987654321fedcba0"],signedDescriptor:"0x123456789abcdef0"})),r.mockResolvedValue(void 0),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error"))));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(e).toEqual({type:"error",error:new Error("error")})}),it("success with a trusted name",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"trusted-name",displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{"details.token.[]":"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},tokens:{},calldatas:{},filters:{"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002",type:"trusted-name"}}})}),it("success with unavailable tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]}))),vi.spyOn(l,"getTokenInfosPayload").mockImplementation(()=>Promise.resolve((0,d.Left)(new Error("token error"))));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},filters:{"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"}}})}),it("success with several identic tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},...b],deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]}))),vi.spyOn(l,"getTokenInfosPayload").mockImplementation(()=>Promise.resolve((0,d.Left)(new Error("token error"))));const e=await f.load(a);expect(l.getTokenInfosPayload).toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",chainId:1}),expect(e.type).toEqual("success")}),it("success with several different tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,255])},...b],deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]})));const e=await f.load(a);expect(l.getTokenInfosPayload).not.toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f6ff",chainId:1}),expect(l.getTokenInfosPayload).not.toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",chainId:1}),expect(e.type).toEqual("success")}),it("should ignore the token if value is not found",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.badtoken",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]})));const e=await f.load(a);expect(e.type).toEqual("success"),e.type==="success"&&(expect(e.filters["details.badtoken"]?.displayName).toEqual("Amount allowance"),expect(e.tokens).toEqual({}))})})});
1
+ "use strict";var c=require("@ledgerhq/device-management-kit"),d=require("purify-ts"),i=require("../../shared/model/ClearSignContext"),s=require("../../shared/model/TypedDataClearSignContext"),x=require("../../typed-data/domain/DefaultTypedDataContextLoader");const v=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("TypedDataContextLoader",()=>{const l=vi.fn(),r=vi.fn(),t=vi.fn(),o={getTokenInfosPayload:vi.fn()},m={getTypedDataFilters:t},y={getProxyImplementationAddress:l},g={loadCertificate:r},f=new x.DefaultTypedDataContextLoader(m,o,y,g,v),n={PermitSingle:[{name:"details",type:"PermitDetails"},{name:"spender",type:"address"},{name:"sigDeadline",type:"uint256"}],PermitDetails:[{type:"address[]",name:"token"},{name:"amount",type:"uint160"},{name:"expiration",type:"uint48"},{name:"nonce",type:"uint48"}],EIP712Domain:[{name:"name",type:"string"},{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}]},b=[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"details.amount",value:Uint8Array.from([18])},{path:"spender",value:Uint8Array.from([18])},{path:"details.expiration",value:Uint8Array.from([18])}],p={SafeTx:[{name:"to",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"data",type:"bytes"},{name:"selector",type:"bytes"},{name:"chainId",type:"uint256"},{name:"operation",type:"uint8"}],EIP712Domain:[{name:"chainId",type:"uint256"},{name:"verifyingContract",type:"address"}]},u=[{path:"to",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"spender",value:Uint8Array.from([140,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},{path:"value",value:Uint8Array.from([14,235,224,180,14,128,0])},{path:"data",value:Uint8Array.from([106,118,18,2,0,0,0,0,0,0,0,0,0,0,0,0,35,248,171,252,40,36,195,151,204,179,218,137,174,119,41,132,16,125,219,153])},{path:"selector",value:Uint8Array.from([119,136,153,170])},{path:"chainId",value:Uint8Array.from([18,52])},{path:"operation",value:Uint8Array.from([1])}];beforeEach(()=>{vi.clearAllMocks(),vi.spyOn(o,"getTokenInfosPayload").mockImplementation(({address:a})=>Promise.resolve((0,d.Right)(`payload-${a}`))),l.mockResolvedValue((0,d.Left)(new Error("No proxy")))}),describe("load function",()=>{it("success with referenced token",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"},{type:"amount",displayName:"Amount allowance",path:"details.amount",tokenIndex:0,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"},{type:"raw",displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb"},{type:"datetime",displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b"}]})));const e=await f.load(a);expect(t).toHaveBeenCalledWith(expect.objectContaining({address:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:4,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:0,type:"amount"},"details.expiration":{displayName:"Approval expire",path:"details.expiration",signature:"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b",type:"datetime"},"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"},spender:{displayName:"Approve to spender",path:"spender",signature:"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb",type:"raw"}}})}),it("success with referenced token verifying contract",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"},{type:"amount",displayName:"Amount allowance",path:"details.amount",tokenIndex:255,signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{0:"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",255:"payload-0x000000000022d473030f116ddee9f6b43ac78ba3"},calldatas:{},proxy:void 0,filters:{"details.amount":{displayName:"Amount allowance",path:"details.amount",signature:"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3",tokenIndex:255,type:"amount"},"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"}}})}),it("success with calldata",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:p,challenge:"1234",fieldsValues:u,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},calldatasInfos:{0:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"}},filters:[{type:"raw",displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b"},{type:"calldata-value",displayName:"Transaction",path:"data",calldataIndex:0,signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a"},{type:"calldata-callee",displayName:"Transaction",path:"to",calldataIndex:0,signature:"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8"},{type:"calldata-amount",displayName:"Transaction",path:"value",calldataIndex:0,signature:"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-chain-id",displayName:"Transaction",path:"chainId",calldataIndex:0,signature:"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-selector",displayName:"Transaction",path:"selector",calldataIndex:0,signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"},{type:"calldata-spender",displayName:"Transaction",path:"spender",calldataIndex:0,signature:"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},trustedNamesAddresses:{},tokens:{},calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.Present,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.Present,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:4660,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x8ceb23fd6bc0add59e62ac25578270cff1b9f619",selector:"0x778899aa",to:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",value:4200000000000000n}}},proxy:void 0,filters:{data:{displayName:"Transaction",path:"data",signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a",calldataIndex:0,type:"calldata-value"},operation:{displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b",type:"raw"},to:{displayName:"Transaction",path:"to",signature:"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8",calldataIndex:0,type:"calldata-callee"},value:{displayName:"Transaction",path:"value",signature:"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-amount"},chainId:{displayName:"Transaction",path:"chainId",signature:"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-chain-id"},selector:{displayName:"Transaction",path:"selector",signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-selector"},spender:{displayName:"Transaction",path:"spender",signature:"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:0,type:"calldata-spender"}}})}),it("success with several calldatas",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:p,challenge:"1234",fieldsValues:u,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},calldatasInfos:{0:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},1:{calldataIndex:1,displayName:"Transaction 2",valueFlag:!1,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!0,selectorFlag:!0,amountFlag:!1,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"}},filters:[{type:"raw",displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b"},{type:"calldata-value",displayName:"Transaction",path:"data",calldataIndex:0,signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a"},{type:"calldata-selector",displayName:"Transaction",path:"selector",calldataIndex:1,signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Multisig transaction",filtersCount:4,signature:"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4"},trustedNamesAddresses:{},tokens:{},calldatas:{0:{filter:{calldataIndex:0,displayName:"Transaction",valueFlag:!0,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!1,selectorFlag:!1,amountFlag:!0,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:1,data:"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99",from:"0x000000000022d473030f116ddee9f6b43ac78ba3",selector:"0x6a761202",to:"0x000000000022d473030f116ddee9f6b43ac78ba3",value:void 0}},1:{filter:{calldataIndex:1,displayName:"Transaction 2",valueFlag:!1,calleeFlag:s.TypedDataCalldataParamPresence.VerifyingContract,chainIdFlag:!0,selectorFlag:!0,amountFlag:!1,spenderFlag:s.TypedDataCalldataParamPresence.VerifyingContract,signature:"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e"},subset:{chainId:1,data:"0x",from:"0x000000000022d473030f116ddee9f6b43ac78ba3",selector:"0x778899aa",to:"0x000000000022d473030f116ddee9f6b43ac78ba3",value:void 0}}},proxy:void 0,filters:{data:{displayName:"Transaction",path:"data",signature:"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a",calldataIndex:0,type:"calldata-value"},selector:{displayName:"Transaction",path:"selector",signature:"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f",calldataIndex:1,type:"calldata-selector"},operation:{displayName:"Operation type",path:"operation",signature:"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b",type:"raw"}}})}),it("success with proxy",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};l.mockResolvedValueOnce((0,d.Right)({implementationAddress:"0x987654321fedcba0",signedDescriptor:"0x123456789abcdef0",keyId:"testKeyId",KeyUsage:"testKeyUsage"})),r.mockResolvedValue(void 0),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[]})));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(t).toHaveBeenLastCalledWith(expect.objectContaining({address:"0x987654321fedcba0",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:{type:i.ClearSignContextType.PROXY_INFO,payload:"0x123456789abcdef0",certificate:void 0},filters:{}})}),it("success with proxy and certificate",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};l.mockResolvedValueOnce((0,d.Right)({implementationAddress:"0x987654321fedcba0",signedDescriptor:"0x123456789abcdef0",keyId:"testKeyId",KeyUsage:"testKeyUsage"})),r.mockResolvedValueOnce({keyUsageNumber:1,payload:new Uint8Array([1,2,3,4])}).mockResolvedValueOnce({keyUsageNumber:2,payload:new Uint8Array([1,2,3,4])}),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[]})));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(t).toHaveBeenLastCalledWith(expect.objectContaining({address:"0x987654321fedcba0",chainId:1})),expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},proxy:{type:i.ClearSignContextType.PROXY_INFO,payload:"0x123456789abcdef0",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3,4])}},certificate:{keyUsageNumber:2,payload:new Uint8Array([1,2,3,4])},filters:{}})}),it("should return an error if filters are unavailable",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error"))));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(1),expect(e).toEqual({type:"error",error:new Error("error")})}),it("should return an error if filters are unavailable in the proxy",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};l.mockResolvedValueOnce((0,d.Right)({delegateAddresses:["0x987654321fedcba0"],signedDescriptor:"0x123456789abcdef0"})),r.mockResolvedValue(void 0),t.mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error")))).mockResolvedValueOnce(Promise.resolve((0,d.Left)(new Error("error"))));const e=await f.load(a);expect(t).toHaveBeenCalledTimes(2),expect(e).toEqual({type:"error",error:new Error("error")})}),it("success with a trusted name",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"trusted-name",displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002"}]})));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{"details.token.[]":"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"},tokens:{},calldatas:{},filters:{"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",types:["contract"],sources:["local","ens"],typesAndSourcesPayload:"010203010002",type:"trusted-name"}}})}),it("success with unavailable tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]}))),vi.spyOn(o,"getTokenInfosPayload").mockImplementation(()=>Promise.resolve((0,d.Left)(new Error("token error"))));const e=await f.load(a);expect(e).toEqual({type:"success",messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},trustedNamesAddresses:{},tokens:{},calldatas:{},filters:{"details.token.[]":{displayName:"Amount allowance",path:"details.token.[]",signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733",tokenIndex:0,type:"token"}}})}),it("success with several identic tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,25])},...b],deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]}))),vi.spyOn(o,"getTokenInfosPayload").mockImplementation(()=>Promise.resolve((0,d.Left)(new Error("token error"))));const e=await f.load(a);expect(o.getTokenInfosPayload).toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",chainId:1}),expect(e.type).toEqual("success")}),it("success with several different tokens",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:[{path:"details.token.[]",value:Uint8Array.from([124,235,35,253,107,192,173,213,158,98,172,37,87,130,112,207,241,185,246,255])},...b],deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.token.[]",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]})));const e=await f.load(a);expect(o.getTokenInfosPayload).not.toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f6ff",chainId:1}),expect(o.getTokenInfosPayload).not.toHaveBeenCalledWith({address:"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",chainId:1}),expect(e.type).toEqual("success")}),it("should ignore the token if value is not found",async()=>{const a={verifyingContract:"0x000000000022d473030f116ddee9f6b43ac78ba3",chainId:1,version:"v2",schema:n,challenge:"1234",fieldsValues:b,deviceModelId:c.DeviceModelId.STAX};t.mockResolvedValueOnce(Promise.resolve((0,d.Right)({messageInfo:{displayName:"Permit2",filtersCount:2,signature:"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3"},calldatasInfos:{},filters:[{type:"token",displayName:"Amount allowance",path:"details.badtoken",tokenIndex:0,signature:"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733"}]})));const e=await f.load(a);expect(e.type).toEqual("success"),e.type==="success"&&(expect(e.filters["details.badtoken"]?.displayName).toEqual("Amount allowance"),expect(e.tokens).toEqual({}))})})});
2
2
  //# sourceMappingURL=DefaultTypedDataContextLoader.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/typed-data/domain/DefaultTypedDataContextLoader.test.ts"],
4
- "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { TypedDataCalldataParamPresence } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport { NullLoggerPublisherService } from \"@/shared/utils/NullLoggerPublisherService\";\nimport type { TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport type { TypedDataDataSource } from \"@/typed-data/data/TypedDataDataSource\";\nimport { DefaultTypedDataContextLoader } from \"@/typed-data/domain/DefaultTypedDataContextLoader\";\n\ndescribe(\"TypedDataContextLoader\", () => {\n const getProxyImplementationAddressMock = vi.fn();\n const loadCertificateMock = vi.fn();\n const getTypedDataFiltersMock = vi.fn();\n const mockTokenDataSource: TokenDataSource = {\n getTokenInfosPayload: vi.fn(),\n };\n const mockTypedDataDataSource: TypedDataDataSource = {\n getTypedDataFilters: getTypedDataFiltersMock,\n };\n const mockProxyDatasource: ProxyDataSource = {\n getProxyImplementationAddress: getProxyImplementationAddressMock,\n };\n const mockCertificateLoader: PkiCertificateLoader = {\n loadCertificate: loadCertificateMock,\n };\n const loader = new DefaultTypedDataContextLoader(\n mockTypedDataDataSource,\n mockTokenDataSource,\n mockProxyDatasource,\n mockCertificateLoader,\n NullLoggerPublisherService,\n );\n\n const TEST_TYPES = {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n {\n type: \"address[]\",\n name: \"token\",\n },\n {\n name: \"amount\",\n type: \"uint160\",\n },\n {\n name: \"expiration\",\n type: \"uint48\",\n },\n {\n name: \"nonce\",\n type: \"uint48\",\n },\n ],\n EIP712Domain: [\n {\n name: \"name\",\n type: \"string\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n const TEST_VALUES = [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"spender\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x12]),\n },\n ];\n\n const TEST_TYPES_CALLDATA = {\n SafeTx: [\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n },\n {\n name: \"selector\",\n type: \"bytes\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"operation\",\n type: \"uint8\",\n },\n ],\n EIP712Domain: [\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n const TEST_VALUES_CALLDATA = [\n {\n path: \"to\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"spender\",\n value: Uint8Array.from([\n 0x8c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"value\",\n value: Uint8Array.from([0x0e, 0xeb, 0xe0, 0xb4, 0x0e, 0x80, 0x00]),\n },\n {\n path: \"data\",\n value: Uint8Array.from([\n 0x6a, 0x76, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x23, 0xf8, 0xab, 0xfc, 0x28, 0x24, 0xc3, 0x97,\n 0xcc, 0xb3, 0xda, 0x89, 0xae, 0x77, 0x29, 0x84, 0x10, 0x7d, 0xdb, 0x99,\n ]),\n },\n {\n path: \"selector\",\n value: Uint8Array.from([0x77, 0x88, 0x99, 0xaa]),\n },\n {\n path: \"chainId\",\n value: Uint8Array.from([0x12, 0x34]),\n },\n {\n path: \"operation\",\n value: Uint8Array.from([0x1]),\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n ({ address }) => Promise.resolve(Right(`payload-${address}`)),\n );\n getProxyImplementationAddressMock.mockResolvedValue(\n Left(new Error(\"No proxy\")),\n );\n });\n\n describe(\"load function\", () => {\n it(\"success with referenced token\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n },\n {\n type: \"datetime\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledWith(\n expect.objectContaining({\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\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 },\n calldatas: {},\n proxy: undefined,\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 0,\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\n it(\"success with referenced token verifying contract\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n calldatas: {},\n proxy: undefined,\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.token.[]\": {\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n },\n });\n });\n\n it(\"success with calldata\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES_CALLDATA,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES_CALLDATA,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\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.Present,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-callee\",\n displayName: \"Transaction\",\n path: \"to\",\n calldataIndex: 0,\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n {\n type: \"calldata-amount\",\n displayName: \"Transaction\",\n path: \"value\",\n calldataIndex: 0,\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-chain-id\",\n displayName: \"Transaction\",\n path: \"chainId\",\n calldataIndex: 0,\n signature:\n \"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-selector\",\n displayName: \"Transaction\",\n path: \"selector\",\n calldataIndex: 0,\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-spender\",\n displayName: \"Transaction\",\n path: \"spender\",\n calldataIndex: 0,\n signature:\n \"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n trustedNamesAddresses: {},\n tokens: {},\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.Present,\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 },\n proxy: undefined,\n filters: {\n data: {\n displayName: \"Transaction\",\n path: \"data\",\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n calldataIndex: 0,\n type: \"calldata-value\",\n },\n operation: {\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n type: \"raw\",\n },\n to: {\n displayName: \"Transaction\",\n path: \"to\",\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n calldataIndex: 0,\n type: \"calldata-callee\",\n },\n value: {\n displayName: \"Transaction\",\n path: \"value\",\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-amount\",\n },\n chainId: {\n displayName: \"Transaction\",\n path: \"chainId\",\n signature:\n \"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-chain-id\",\n },\n selector: {\n displayName: \"Transaction\",\n path: \"selector\",\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-selector\",\n },\n spender: {\n displayName: \"Transaction\",\n path: \"spender\",\n signature:\n \"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-spender\",\n },\n },\n });\n });\n\n it(\"success with several calldatas\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES_CALLDATA,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES_CALLDATA,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n 1: {\n calldataIndex: 1,\n displayName: \"Transaction 2\",\n valueFlag: false,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: true,\n selectorFlag: true,\n amountFlag: false,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-selector\",\n displayName: \"Transaction\",\n path: \"selector\",\n calldataIndex: 1,\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {\n 0: {\n filter: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 1,\n data: \"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99\",\n from: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n selector: \"0x6a761202\",\n to: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n value: undefined,\n },\n },\n 1: {\n filter: {\n calldataIndex: 1,\n displayName: \"Transaction 2\",\n valueFlag: false,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: true,\n selectorFlag: true,\n amountFlag: false,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 1,\n data: \"0x\",\n from: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n selector: \"0x778899aa\",\n to: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n value: undefined,\n },\n },\n },\n proxy: undefined,\n filters: {\n data: {\n displayName: \"Transaction\",\n path: \"data\",\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n calldataIndex: 0,\n type: \"calldata-value\",\n },\n selector: {\n displayName: \"Transaction\",\n path: \"selector\",\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 1,\n type: \"calldata-selector\",\n },\n operation: {\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n type: \"raw\",\n },\n },\n });\n });\n\n it(\"success with proxy\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n implementationAddress: \"0x987654321fedcba0\",\n signedDescriptor: \"0x123456789abcdef0\",\n keyId: \"testKeyId\",\n KeyUsage: \"testKeyUsage\",\n }),\n );\n loadCertificateMock.mockResolvedValue(undefined);\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(getTypedDataFiltersMock).toHaveBeenLastCalledWith(\n expect.objectContaining({\n address: \"0x987654321fedcba0\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n proxy: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x123456789abcdef0\",\n certificate: undefined,\n },\n filters: {},\n });\n });\n\n it(\"success with proxy and certificate\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n implementationAddress: \"0x987654321fedcba0\",\n signedDescriptor: \"0x123456789abcdef0\",\n keyId: \"testKeyId\",\n KeyUsage: \"testKeyUsage\",\n }),\n );\n loadCertificateMock\n .mockResolvedValueOnce({\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3, 4]),\n })\n .mockResolvedValueOnce({\n keyUsageNumber: 2,\n payload: new Uint8Array([1, 2, 3, 4]),\n });\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(getTypedDataFiltersMock).toHaveBeenLastCalledWith(\n expect.objectContaining({\n address: \"0x987654321fedcba0\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n proxy: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x123456789abcdef0\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3, 4]),\n },\n },\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([1, 2, 3, 4]),\n },\n filters: {},\n });\n });\n\n it(\"should return an error if filters are unavailable\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(Left(new Error(\"error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(1);\n expect(result).toEqual({\n type: \"error\",\n error: new Error(\"error\"),\n });\n });\n\n it(\"should return an error if filters are unavailable in the proxy\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n delegateAddresses: [\"0x987654321fedcba0\"],\n signedDescriptor: \"0x123456789abcdef0\",\n }),\n );\n loadCertificateMock.mockResolvedValue(undefined);\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))));\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(result).toEqual({\n type: \"error\",\n error: new Error(\"error\"),\n });\n });\n\n it(\"success with a trusted name\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"trusted-name\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {\n \"details.token.[]\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n calldatas: {},\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 });\n });\n\n it(\"success with unavailable tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n () => Promise.resolve(Left(new Error(\"token error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n filters: {\n \"details.token.[]\": {\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n },\n });\n });\n\n it(\"success with several identic tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac,\n 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n ...TEST_VALUES,\n ],\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n () => Promise.resolve(Left(new Error(\"token error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n chainId: 1,\n });\n expect(result.type).toEqual(\"success\");\n });\n\n it(\"success with several different tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac,\n 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0xff,\n ]),\n },\n ...TEST_VALUES,\n ],\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).not.toHaveBeenCalledWith(\n { address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f6ff\", chainId: 1 },\n );\n expect(mockTokenDataSource.getTokenInfosPayload).not.toHaveBeenCalledWith(\n { address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\", chainId: 1 },\n );\n expect(result.type).toEqual(\"success\");\n });\n\n it(\"should ignore the token if value is not found\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.badtoken\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result.type).toEqual(\"success\");\n if (result.type === \"success\") {\n expect(result.filters[\"details.badtoken\"]?.[\"displayName\"]).toEqual(\n \"Amount allowance\",\n );\n expect(result.tokens).toEqual({});\n }\n });\n });\n});\n"],
5
- "mappings": "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ACJ,EACA,CACE,KAAM,kBACN,YAAa,cACb,KAAM,QACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,oBACN,YAAa,cACb,KAAM,UACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,oBACN,YAAa,cACb,KAAM,WACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,mBACN,YAAa,cACb,KAAM,UACN,cAAe,EACf,UACE,8IACJ,CACF,CACF,CAAC,CACH,CACF,EAGA,MAAMY,EAAS,MAAMP,EAAO,KAAKM,CAAG,EAGpC,OAAOC,CAAM,EAAE,QAAQ,CACrB,KAAM,UACN,YAAa,CACX,YAAa,uBACb,aAAc,EACd,UACE,8IACJ,EACA,sBAAuB,CAAC,EACxB,OAAQ,CAAC,EACT,UAAW,CACT,EAAG,CACD,OAAQ,CACN,cAAe,EACf,YAAa,cACb,UAAW,GACX,WAAY,iCAA+B,QAC3C,YAAa,GACb,aAAc,GACd,WAAY,GACZ,YAAa,iCAA+B,QAC5C,UACE,gJACJ,EACA,OAAQ,CACN,QAAS,KACT,KAAM,6EACN,KAAM,6CACN,SAAU,aACV,GAAI,6CACJ,MAAO,iBACT,CACF,CACF,EACA,MAAO,OACP,QAAS,CACP,KAAM,CACJ,YAAa,cACb,KAAM,OACN,UACE,+IACF,cAAe,EACf,KAAM,gBACR,EACA,UAAW,CACT,YAAa,iBACb,KAAM,YACN,UACE,iJACF,KAAM,KACR,EACA,GAAI,CACF,YAAa,cACb,KAAM,KACN,UACE,+IACF,cAAe,EACf,KAAM,iBACR,EACA,MAAO,CACL,YAAa,cACb,KAAM,QACN,UACE,+IACF,cAAe,EACf,KAAM,iBACR,EACA,QAAS,CACP,YAAa,cACb,KAAM,UACN,UACE,+IACF,cAAe,EACf,KAAM,mBACR,EACA,SAAU,CACR,YAAa,cACb,KAAM,WACN,UACE,+IACF,cAAe,EACf,KAAM,mBACR,EACA,QAAS,CACP,YAAa,cACb,KAAM,UACN,UACE,+IACF,cAAe,EACf,KAAM,kBACR,CACF,CACF,CAAC,CACH,CAAC,EAED,GAAG,iCAAkC,SAAY,CAE/C,MAAM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",
6
- "names": ["import_device_management_kit", "import_purify_ts", "import_ClearSignContext", "import_TypedDataClearSignContext", "import_NullLoggerPublisherService", "import_DefaultTypedDataContextLoader", "getProxyImplementationAddressMock", "loadCertificateMock", "getTypedDataFiltersMock", "mockTokenDataSource", "mockTypedDataDataSource", "mockProxyDatasource", "mockCertificateLoader", "loader", "TEST_TYPES", "TEST_VALUES", "TEST_TYPES_CALLDATA", "TEST_VALUES_CALLDATA", "address", "ctx", "result"]
4
+ "sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport type { ProxyDataSource } from \"@/proxy/data/ProxyDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { TypedDataCalldataParamPresence } from \"@/shared/model/TypedDataClearSignContext\";\nimport type { TypedDataContext } from \"@/shared/model/TypedDataContext\";\nimport type { TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport type { TypedDataDataSource } from \"@/typed-data/data/TypedDataDataSource\";\nimport { DefaultTypedDataContextLoader } from \"@/typed-data/domain/DefaultTypedDataContextLoader\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"TypedDataContextLoader\", () => {\n const getProxyImplementationAddressMock = vi.fn();\n const loadCertificateMock = vi.fn();\n const getTypedDataFiltersMock = vi.fn();\n const mockTokenDataSource: TokenDataSource = {\n getTokenInfosPayload: vi.fn(),\n };\n const mockTypedDataDataSource: TypedDataDataSource = {\n getTypedDataFilters: getTypedDataFiltersMock,\n };\n const mockProxyDatasource: ProxyDataSource = {\n getProxyImplementationAddress: getProxyImplementationAddressMock,\n };\n const mockCertificateLoader: PkiCertificateLoader = {\n loadCertificate: loadCertificateMock,\n };\n const loader = new DefaultTypedDataContextLoader(\n mockTypedDataDataSource,\n mockTokenDataSource,\n mockProxyDatasource,\n mockCertificateLoader,\n mockLoggerFactory,\n );\n\n const TEST_TYPES = {\n PermitSingle: [\n {\n name: \"details\",\n type: \"PermitDetails\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"sigDeadline\",\n type: \"uint256\",\n },\n ],\n PermitDetails: [\n {\n type: \"address[]\",\n name: \"token\",\n },\n {\n name: \"amount\",\n type: \"uint160\",\n },\n {\n name: \"expiration\",\n type: \"uint48\",\n },\n {\n name: \"nonce\",\n type: \"uint48\",\n },\n ],\n EIP712Domain: [\n {\n name: \"name\",\n type: \"string\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n const TEST_VALUES = [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"details.amount\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"spender\",\n value: Uint8Array.from([0x12]),\n },\n {\n path: \"details.expiration\",\n value: Uint8Array.from([0x12]),\n },\n ];\n\n const TEST_TYPES_CALLDATA = {\n SafeTx: [\n {\n name: \"to\",\n type: \"address\",\n },\n {\n name: \"spender\",\n type: \"address\",\n },\n {\n name: \"value\",\n type: \"uint256\",\n },\n {\n name: \"data\",\n type: \"bytes\",\n },\n {\n name: \"selector\",\n type: \"bytes\",\n },\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"operation\",\n type: \"uint8\",\n },\n ],\n EIP712Domain: [\n {\n name: \"chainId\",\n type: \"uint256\",\n },\n {\n name: \"verifyingContract\",\n type: \"address\",\n },\n ],\n };\n const TEST_VALUES_CALLDATA = [\n {\n path: \"to\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"spender\",\n value: Uint8Array.from([\n 0x8c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac, 0x25,\n 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n {\n path: \"value\",\n value: Uint8Array.from([0x0e, 0xeb, 0xe0, 0xb4, 0x0e, 0x80, 0x00]),\n },\n {\n path: \"data\",\n value: Uint8Array.from([\n 0x6a, 0x76, 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x23, 0xf8, 0xab, 0xfc, 0x28, 0x24, 0xc3, 0x97,\n 0xcc, 0xb3, 0xda, 0x89, 0xae, 0x77, 0x29, 0x84, 0x10, 0x7d, 0xdb, 0x99,\n ]),\n },\n {\n path: \"selector\",\n value: Uint8Array.from([0x77, 0x88, 0x99, 0xaa]),\n },\n {\n path: \"chainId\",\n value: Uint8Array.from([0x12, 0x34]),\n },\n {\n path: \"operation\",\n value: Uint8Array.from([0x1]),\n },\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n ({ address }) => Promise.resolve(Right(`payload-${address}`)),\n );\n getProxyImplementationAddressMock.mockResolvedValue(\n Left(new Error(\"No proxy\")),\n );\n });\n\n describe(\"load function\", () => {\n it(\"success with referenced token\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 4,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 0,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n },\n {\n type: \"raw\",\n displayName: \"Approve to spender\",\n path: \"spender\",\n signature:\n \"3044022033e5713d9cb9bc375b56a9fb53b736c81ea3c4ac5cfb2d3ca7f8b8f0558fe2430220543ca4fef6d6f725f29e343f167fe9dd582aa856ecb5797259050eb990a1befb\",\n },\n {\n type: \"datetime\",\n displayName: \"Approval expire\",\n path: \"details.expiration\",\n signature:\n \"3044022056b3381e4540629ad73bc434ec49d80523234b82f62340fbb77157fb0eb21a680220459fe9cf6ca309f9c7dfc6d4711fea1848dba661563c57f77b3c2dc480b3a63b\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledWith(\n expect.objectContaining({\n address: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\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 },\n calldatas: {},\n proxy: undefined,\n filters: {\n \"details.amount\": {\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n tokenIndex: 0,\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\n it(\"success with referenced token verifying contract\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n {\n type: \"amount\",\n displayName: \"Amount allowance\",\n path: \"details.amount\",\n tokenIndex: 255,\n signature:\n \"304402201a46e6b4ef89eaf9fcf4945d053bfc5616a826400fd758312fbbe976bafc07ec022025a9b408722baf983ee053f90179c75b0c55bb0668f437d55493e36069bbd5a3\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {\n 0: \"payload-0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n 255: \"payload-0x000000000022d473030f116ddee9f6b43ac78ba3\",\n },\n calldatas: {},\n proxy: undefined,\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.token.[]\": {\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n },\n });\n });\n\n it(\"success with calldata\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES_CALLDATA,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES_CALLDATA,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\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.Present,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-callee\",\n displayName: \"Transaction\",\n path: \"to\",\n calldataIndex: 0,\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n },\n {\n type: \"calldata-amount\",\n displayName: \"Transaction\",\n path: \"value\",\n calldataIndex: 0,\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-chain-id\",\n displayName: \"Transaction\",\n path: \"chainId\",\n calldataIndex: 0,\n signature:\n \"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-selector\",\n displayName: \"Transaction\",\n path: \"selector\",\n calldataIndex: 0,\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n {\n type: \"calldata-spender\",\n displayName: \"Transaction\",\n path: \"spender\",\n calldataIndex: 0,\n signature:\n \"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n trustedNamesAddresses: {},\n tokens: {},\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.Present,\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 },\n proxy: undefined,\n filters: {\n data: {\n displayName: \"Transaction\",\n path: \"data\",\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n calldataIndex: 0,\n type: \"calldata-value\",\n },\n operation: {\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n type: \"raw\",\n },\n to: {\n displayName: \"Transaction\",\n path: \"to\",\n signature:\n \"30440220796cc549e363c5bc9f9d5bda894cf4cda11f157519f673d2b4a8b3ce716a8fba0220663c888d764084072856fe654ff425bffe671c2550068c64be9eddd6c84178b8\",\n calldataIndex: 0,\n type: \"calldata-callee\",\n },\n value: {\n displayName: \"Transaction\",\n path: \"value\",\n signature:\n \"3044022021601a55098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-amount\",\n },\n chainId: {\n displayName: \"Transaction\",\n path: \"chainId\",\n signature:\n \"3044022021601a56098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-chain-id\",\n },\n selector: {\n displayName: \"Transaction\",\n path: \"selector\",\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-selector\",\n },\n spender: {\n displayName: \"Transaction\",\n path: \"spender\",\n signature:\n \"3044022021601a58098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 0,\n type: \"calldata-spender\",\n },\n },\n });\n });\n\n it(\"success with several calldatas\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES_CALLDATA,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES_CALLDATA,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n calldatasInfos: {\n 0: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n 1: {\n calldataIndex: 1,\n displayName: \"Transaction 2\",\n valueFlag: false,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: true,\n selectorFlag: true,\n amountFlag: false,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n },\n filters: [\n {\n type: \"raw\",\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n },\n {\n type: \"calldata-value\",\n displayName: \"Transaction\",\n path: \"data\",\n calldataIndex: 0,\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n },\n {\n type: \"calldata-selector\",\n displayName: \"Transaction\",\n path: \"selector\",\n calldataIndex: 1,\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Multisig transaction\",\n filtersCount: 4,\n signature:\n \"304402206553ac5a2ce6bb17b94f3ec559fb037af0b742d62c001d8938aad709accd71ed022075ce87c3eb65e605f0ce0b2bc4bf960498bacf109a499807d1a7906d9c78c9c4\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {\n 0: {\n filter: {\n calldataIndex: 0,\n displayName: \"Transaction\",\n valueFlag: true,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: false,\n selectorFlag: false,\n amountFlag: true,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3045022100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 1,\n data: \"0x6a76120200000000000000000000000023f8abfc2824c397ccb3da89ae772984107ddb99\",\n from: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n selector: \"0x6a761202\",\n to: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n value: undefined,\n },\n },\n 1: {\n filter: {\n calldataIndex: 1,\n displayName: \"Transaction 2\",\n valueFlag: false,\n calleeFlag: TypedDataCalldataParamPresence.VerifyingContract,\n chainIdFlag: true,\n selectorFlag: true,\n amountFlag: false,\n spenderFlag: TypedDataCalldataParamPresence.VerifyingContract,\n signature:\n \"3056122100d8496ab69152efeef6a923a3ebd225334ad65dcb985814994243be7bc09bf27e02206314835816908dd6d51d3cbb0f9465d91d7ddc9104b34dd6c4247f65c551836e\",\n },\n subset: {\n chainId: 1,\n data: \"0x\",\n from: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n selector: \"0x778899aa\",\n to: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n value: undefined,\n },\n },\n },\n proxy: undefined,\n filters: {\n data: {\n displayName: \"Transaction\",\n path: \"data\",\n signature:\n \"3044022031a3398014238d098643893885e4b8c2152a56b01c34516edda1065df62258d1022057f094a83e938be32ca70d73616af8c57cdb8846a7a71b21be5504fa74cfc53a\",\n calldataIndex: 0,\n type: \"calldata-value\",\n },\n selector: {\n displayName: \"Transaction\",\n path: \"selector\",\n signature:\n \"3044022021601a57098d35e5e78cbe3e76e519b1e626b903859d07982260fcf789abb52902204cd67475175f3b3a13a34156ef5edd5f711c890e1b9886b099a5480ff18a4d5f\",\n calldataIndex: 1,\n type: \"calldata-selector\",\n },\n operation: {\n displayName: \"Operation type\",\n path: \"operation\",\n signature:\n \"3045022100fb9f3e7bab8ac0cd9a5722389a19d1ebdd39d7a6da6e374724a46eebee6896bc022070e991bb022111ed448540511b7fa4f70d5e92b0a3866d75cfc9d3cf1cf75d9b\",\n type: \"raw\",\n },\n },\n });\n });\n\n it(\"success with proxy\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n implementationAddress: \"0x987654321fedcba0\",\n signedDescriptor: \"0x123456789abcdef0\",\n keyId: \"testKeyId\",\n KeyUsage: \"testKeyUsage\",\n }),\n );\n loadCertificateMock.mockResolvedValue(undefined);\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(getTypedDataFiltersMock).toHaveBeenLastCalledWith(\n expect.objectContaining({\n address: \"0x987654321fedcba0\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n proxy: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x123456789abcdef0\",\n certificate: undefined,\n },\n filters: {},\n });\n });\n\n it(\"success with proxy and certificate\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n implementationAddress: \"0x987654321fedcba0\",\n signedDescriptor: \"0x123456789abcdef0\",\n keyId: \"testKeyId\",\n KeyUsage: \"testKeyUsage\",\n }),\n );\n loadCertificateMock\n .mockResolvedValueOnce({\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3, 4]),\n })\n .mockResolvedValueOnce({\n keyUsageNumber: 2,\n payload: new Uint8Array([1, 2, 3, 4]),\n });\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(getTypedDataFiltersMock).toHaveBeenLastCalledWith(\n expect.objectContaining({\n address: \"0x987654321fedcba0\",\n chainId: 1,\n }),\n );\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n proxy: {\n type: ClearSignContextType.PROXY_INFO,\n payload: \"0x123456789abcdef0\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3, 4]),\n },\n },\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([1, 2, 3, 4]),\n },\n filters: {},\n });\n });\n\n it(\"should return an error if filters are unavailable\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(Left(new Error(\"error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(1);\n expect(result).toEqual({\n type: \"error\",\n error: new Error(\"error\"),\n });\n });\n\n it(\"should return an error if filters are unavailable in the proxy\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getProxyImplementationAddressMock.mockResolvedValueOnce(\n Right({\n delegateAddresses: [\"0x987654321fedcba0\"],\n signedDescriptor: \"0x123456789abcdef0\",\n }),\n );\n loadCertificateMock.mockResolvedValue(undefined);\n getTypedDataFiltersMock\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))))\n .mockResolvedValueOnce(Promise.resolve(Left(new Error(\"error\"))));\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(getTypedDataFiltersMock).toHaveBeenCalledTimes(2);\n expect(result).toEqual({\n type: \"error\",\n error: new Error(\"error\"),\n });\n });\n\n it(\"success with a trusted name\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"trusted-name\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n types: [\"contract\"],\n sources: [\"local\", \"ens\"],\n typesAndSourcesPayload: \"010203010002\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {\n \"details.token.[]\": \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n },\n tokens: {},\n calldatas: {},\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 });\n });\n\n it(\"success with unavailable tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n () => Promise.resolve(Left(new Error(\"token error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result).toEqual({\n type: \"success\",\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n trustedNamesAddresses: {},\n tokens: {},\n calldatas: {},\n filters: {\n \"details.token.[]\": {\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n tokenIndex: 0,\n type: \"token\",\n },\n },\n });\n });\n\n it(\"success with several identic tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac,\n 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0x19,\n ]),\n },\n ...TEST_VALUES,\n ],\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockImplementation(\n () => Promise.resolve(Left(new Error(\"token error\"))),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\",\n chainId: 1,\n });\n expect(result.type).toEqual(\"success\");\n });\n\n it(\"success with several different tokens\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: [\n {\n path: \"details.token.[]\",\n value: Uint8Array.from([\n 0x7c, 0xeb, 0x23, 0xfd, 0x6b, 0xc0, 0xad, 0xd5, 0x9e, 0x62, 0xac,\n 0x25, 0x57, 0x82, 0x70, 0xcf, 0xf1, 0xb9, 0xf6, 0xff,\n ]),\n },\n ...TEST_VALUES,\n ],\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.token.[]\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).not.toHaveBeenCalledWith(\n { address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f6ff\", chainId: 1 },\n );\n expect(mockTokenDataSource.getTokenInfosPayload).not.toHaveBeenCalledWith(\n { address: \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\", chainId: 1 },\n );\n expect(result.type).toEqual(\"success\");\n });\n\n it(\"should ignore the token if value is not found\", async () => {\n // GIVEN\n const ctx = {\n verifyingContract: \"0x000000000022d473030f116ddee9f6b43ac78ba3\",\n chainId: 1,\n version: \"v2\",\n schema: TEST_TYPES,\n challenge: \"1234\",\n fieldsValues: TEST_VALUES,\n deviceModelId: DeviceModelId.STAX,\n } as TypedDataContext;\n getTypedDataFiltersMock.mockResolvedValueOnce(\n Promise.resolve(\n Right({\n messageInfo: {\n displayName: \"Permit2\",\n filtersCount: 2,\n signature:\n \"3045022100e3c597d13d28a87a88b0239404c668373cf5063362f2a81d09eed4582941dfe802207669aabb504fd5b95b2734057f6b8bbf51f14a69a5f9bdf658a5952cefbf44d3\",\n },\n calldatasInfos: {},\n filters: [\n {\n type: \"token\",\n displayName: \"Amount allowance\",\n path: \"details.badtoken\",\n tokenIndex: 0,\n signature:\n \"3044022075103b38995e031d1ebbfe38ac6603bec32854b5146a664e49b4cc4f460c1da6022029f4b0fd1f3b7995ffff1627d4b57f27888a2dcc9b3a4e85c37c67571092c733\",\n },\n ],\n }),\n ),\n );\n\n // WHEN\n const result = await loader.load(ctx);\n\n // THEN\n expect(result.type).toEqual(\"success\");\n if (result.type === \"success\") {\n expect(result.filters[\"details.badtoken\"]?.[\"displayName\"]).toEqual(\n \"Amount allowance\",\n );\n expect(result.tokens).toEqual({});\n }\n });\n });\n});\n"],
5
+ "mappings": "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KAAM,iBACN,YAAa,cACb,KAAM,OACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,kBACN,YAAa,cACb,KAAM,KACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,kBACN,YAAa,cACb,KAAM,QACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,oBACN,YAAa,cACb,KAAM,UACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,oBACN,YAAa,cACb,KAAM,WACN,cAAe,EACf,UACE,8IACJ,EACA,CACE,KAAM,mBACN,YAAa,cACb,KAAM,UACN,cAAe,EACf,UACE,8IACJ,CACF,CACF,CAAC,CACH,CACF,EAGA,MAAMY,EAAS,MAAMP,EAAO,KAAKM,CAAG,EAGpC,OAAOC,CAAM,EAAE,QAAQ,CACrB,KAAM,UACN,YAAa,CACX,YAAa,uBACb,aAAc,EACd,UACE,8IACJ,EACA,sBAAuB,CAAC,EACxB,OAAQ,CAAC,EACT,UAAW,CACT,EAAG,CACD,OAAQ,CACN,cAAe,EACf,YAAa,cACb,UAAW,GACX,WAAY,iCAA+B,QAC3C,YAAa,GACb,aAAc,GACd,WAAY,GACZ,YAAa,iCAA+B,QAC5C,UACE,gJACJ,EACA,OAAQ,CACN,QAAS,KACT,KAAM,6EACN,KAAM,6CACN,SAAU,aACV,GAAI,6CACJ,MAAO,iBACT,CACF,CACF,EACA,MAAO,OACP,QAAS,CACP,KAAM,CACJ,YAAa,cACb,KAAM,OACN,UACE,+IACF,cAAe,EACf,KAAM,gBACR,EACA,UAAW,CACT,YAAa,iBACb,KAAM,YACN,UACE,iJACF,KAAM,KACR,EACA,GAAI,CACF,YAAa,cACb,KAAM,KACN,UACE,+IACF,cAAe,EACf,KAAM,iBACR,EACA,MAAO,CACL,YAAa,cACb,KAAM,QACN,UACE,+IACF,cAAe,EACf,KAAM,iBACR,EACA,QAAS,CACP,YAAa,cACb,KAAM,UACN,UACE,+IACF,cAAe,EACf,KAAM,mBACR,EACA,SAAU,CACR,YAAa,cACb,KAAM,WACN,UACE,+IACF,cAAe,EACf,KAAM,mBACR,EACA,QAAS,CACP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",
6
+ "names": ["import_device_management_kit", "import_purify_ts", "import_ClearSignContext", "import_TypedDataClearSignContext", "import_DefaultTypedDataContextLoader", "mockLoggerFactory", "getProxyImplementationAddressMock", "loadCertificateMock", "getTypedDataFiltersMock", "mockTokenDataSource", "mockTypedDataDataSource", "mockProxyDatasource", "mockCertificateLoader", "loader", "TEST_TYPES", "TEST_VALUES", "TEST_TYPES_CALLDATA", "TEST_VALUES_CALLDATA", "address", "ctx", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=require("ethers"),r=require("purify-ts"),l=require("../../shared/model/ClearSignContext"),p=require("../../shared/utils/NullLoggerPublisherService"),a=require("../../uniswap/constants/uniswap"),x=require("../../uniswap/data/DefaultCommandDecoderDataSource"),u=require("../../uniswap/data/EthersAbiDecoderDataSource"),f=require("./UniswapContextLoader");describe("UniswapContextLoader",()=>{const o={decode:vi.fn()},t={getTokenInfosPayload:vi.fn()};let c;describe("canHandle function",()=>{beforeEach(()=>{c=new f.UniswapContextLoader(new x.DefaultCommandDecoderDataSource(new u.EthersAbiDecoderDataSource),t,p.NullLoggerPublisherService)});const e={data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b",selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};it("should return true for valid input",()=>{expect(c.canHandle(e,[l.ClearSignContextType.TOKEN])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(c.canHandle(e,[l.ClearSignContextType.NFT])).toBe(!1),expect(c.canHandle(e,[l.ClearSignContextType.EXTERNAL_PLUGIN])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"],[{...e,data:void 0},"missing data"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"],[{...e,data:"invalid-hex"},"invalid data hex"],[{...e,data:"0x"},"empty data hex"],[{...e,selector:"invalid-hex"},"invalid selector hex"],[{...e,selector:"0x"},"empty selector hex"],[{...e,selector:"not-hex-at-all"},"non-hex selector"],[{...e,selector:0},"different selector"],[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"]])("should return false for %s",(n,d)=>{expect(c.canHandle(n,[l.ClearSignContextType.TOKEN])).toBe(!1)})}),describe("load",()=>{describe("with tokenDataSourceMock",()=>{beforeEach(()=>{vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve((0,r.Right)(`payload-${e}`))),c=new f.UniswapContextLoader(new x.DefaultCommandDecoderDataSource(new u.EthersAbiDecoderDataSource),t,p.NullLoggerPublisherService)}),it("should return an empty array if the selector is not UNISWAP_EXECUTE_SELECTOR",async()=>{const e={selector:"0x00000000",data:"0x00000000",chainId:1},n=await c.load(e);expect(n).toEqual([])}),it("should return the decoded contexts",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b000000000000000000000000000000000000000000000000000000000000000300060c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000a18f07d736b90be5500000000000000000000000000000000000000000000000000000000b0b8122abd8412900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bb9f599ce614feb2e1bbe58f180f370d05b39344e002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000017cc6042605381c158d2adab487434bde79aa61c000000000000000000000000000000000000000000000000000000000000005b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000b0b8122abd84129c001a053efc49d03b694742500f49aa09df2360bd7e297fa730c745e0d4320b42fc33fa01ca1c85a46c561f624830fffbae2441ba0f2d54eb5b0f17e0e3561d10db0b7ee",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([{type:"token",payload:"payload-0xb9f599ce614feb2e1bbe58f180f370d05b39344e"},{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}])}),it("should return the decoded contexts with a permit",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000030a010c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000016000000000000000000000000055747be9f9f5beb232ad59fe7af013b81d95fd5e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066c32b0d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b00000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000410d756f55acf289e9754faf91bba0a704b5c7c0aa4b1dfd551115ccbe4c7f290234e1a14265e1da0bc872a23627d997fe37a689c290d519f7b8c9bdde1b79108e1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000030ba49cbff5a00000000000000000000000000000000000000000000000089677c957272141800000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200271055747be9f9f5beb232ad59fe7af013b81d95fd5e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000030ba49cbff5a000c001a0e406d9c91c8b46d959fcd31a28518a77bb248ebb316c5fab7b98335cce922f2aa0462cb970c32a8dbfe71c57b888c43b9ed04fce41d169dbfcc745445587adb771",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"},{type:"token",payload:"payload-0x55747be9f9f5beb232ad59fe7af013b81d95fd5e"}])}),it("should return an empty array if the transaction is not supported",async()=>{const e={};vi.spyOn(o,"decode").mockReturnValue([]);const n=await c.load(e);expect(n).toEqual([])}),it("should return an empty array if a command is not supported",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4bef600000000000000000000000000000000000000000000000000000000000000050b0105040c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000078e6708e70aed0f000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000059a16770000000000000000000000000000000000000000000000000078e6708e70aed0f00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c4700000000000000000000000000000000000000000000000000000000003938700000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000059682f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006f939b43d65be049b7533907db08e80ba6969f4500000000000000000000000000000000000000000000000000000000000000000cc080a07c86dd5813ec1f3725c402f8bea6105546d1093c59676023b971f1d83f61bd4ea02a353bf3028cabcbe68c5dc8906752bafe55afc86b6344edb3ffd8a3650332e8",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([])})}),describe("with mocked ethers parseTransaction",()=>{beforeEach(()=>{vi.resetAllMocks(),c=new f.UniswapContextLoader(o,t,p.NullLoggerPublisherService)}),it("should return an array with contexts if 2 chain swaps are supported",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x04","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x04",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x03",chainId:66}),expect(d).toEqual([{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x04"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an array with contexts if 1 chain swap with a non swap command",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0b0004",["0x0001","0x0002","0x0003"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01"]).mockReturnValueOnce(["0x02","0x03"]).mockReturnValueOnce(["0x04"]),vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.WRAP_ETH,"0x0001",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x04",chainId:66}),expect(d).toEqual([{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"},{type:"token",payload:"payload-0x04"}])}),it("should return an array with contexts if one token is not found",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(t,"getTokenInfosPayload").mockResolvedValueOnce((0,r.Left)("error")).mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(d).toEqual([{type:"error",error:"error"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an empty array if the if 2 chain swaps are not supported",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]),vi.spyOn(o,"decode").mockReturnValueOnce(["0x03","0x04"]);const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])}),it("should return an empty array if no command are returned from parseTransaction",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:[""]});const n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if no inputs are returned from parseTransaction",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x08",[]]}),vi.spyOn(o,"decode").mockReturnValue([]);const n=await c.load(e);expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if parseTransaction throws an error",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockImplementation(()=>{throw new Error});const n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if the swap is with multiple pool versions",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x080900",["0x00","0x01","0x02"]]}),vi.spyOn(o,"decode").mockReturnValue(["0x01","0x02"]);const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x00",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x01",66),expect(o.decode).toHaveBeenNthCalledWith(3,a.UniswapSupportedCommand.V3_SWAP_EXACT_IN,"0x02",66),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])}),it("should return an empty array if the selector is not supported",async()=>{const e={data:"0x00000000",chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if the length of the commands and inputs are different",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001"]]});const d=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])})})})});
1
+ "use strict";var s=require("ethers"),r=require("purify-ts"),p=require("../../shared/model/ClearSignContext"),a=require("../../uniswap/constants/uniswap"),x=require("../../uniswap/data/DefaultCommandDecoderDataSource"),u=require("../../uniswap/data/EthersAbiDecoderDataSource"),l=require("./UniswapContextLoader");const f=()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]});describe("UniswapContextLoader",()=>{const o={decode:vi.fn()},t={getTokenInfosPayload:vi.fn()};let c;describe("canHandle function",()=>{beforeEach(()=>{c=new l.UniswapContextLoader(new x.DefaultCommandDecoderDataSource(new u.EthersAbiDecoderDataSource),t,f)});const e={data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b",selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};it("should return true for valid input",()=>{expect(c.canHandle(e,[p.ClearSignContextType.TOKEN])).toBe(!0)}),it("should return false for invalid expected type",()=>{expect(c.canHandle(e,[p.ClearSignContextType.NFT])).toBe(!1),expect(c.canHandle(e,[p.ClearSignContextType.EXTERNAL_PLUGIN])).toBe(!1)}),it.each([[null,"null input"],[void 0,"undefined input"],[{},"empty object"],["string","string input"],[123,"number input"],[{...e,data:void 0},"missing data"],[{...e,selector:void 0},"missing selector"],[{...e,chainId:void 0},"missing chainId"],[{...e,data:"invalid-hex"},"invalid data hex"],[{...e,data:"0x"},"empty data hex"],[{...e,selector:"invalid-hex"},"invalid selector hex"],[{...e,selector:"0x"},"empty selector hex"],[{...e,selector:"not-hex-at-all"},"non-hex selector"],[{...e,selector:0},"different selector"],[{...e,chainId:"1"},"string chainId"],[{...e,chainId:null},"null chainId"]])("should return false for %s",(n,d)=>{expect(c.canHandle(n,[p.ClearSignContextType.TOKEN])).toBe(!1)})}),describe("load",()=>{describe("with tokenDataSourceMock",()=>{beforeEach(()=>{vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:e})=>Promise.resolve((0,r.Right)(`payload-${e}`))),c=new l.UniswapContextLoader(new x.DefaultCommandDecoderDataSource(new u.EthersAbiDecoderDataSource),t,f)}),it("should return an empty array if the selector is not UNISWAP_EXECUTE_SELECTOR",async()=>{const e={selector:"0x00000000",data:"0x00000000",chainId:1},n=await c.load(e);expect(n).toEqual([])}),it("should return the decoded contexts",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4855b000000000000000000000000000000000000000000000000000000000000000300060c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000a18f07d736b90be5500000000000000000000000000000000000000000000000000000000b0b8122abd8412900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bb9f599ce614feb2e1bbe58f180f370d05b39344e002710c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000017cc6042605381c158d2adab487434bde79aa61c000000000000000000000000000000000000000000000000000000000000005b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000b0b8122abd84129c001a053efc49d03b694742500f49aa09df2360bd7e297fa730c745e0d4320b42fc33fa01ca1c85a46c561f624830fffbae2441ba0f2d54eb5b0f17e0e3561d10db0b7ee",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([{type:"token",payload:"payload-0xb9f599ce614feb2e1bbe58f180f370d05b39344e"},{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}])}),it("should return the decoded contexts with a permit",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000030a010c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000016000000000000000000000000055747be9f9f5beb232ad59fe7af013b81d95fd5e000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066c32b0d0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b00000000000000000000000000000000000000000000000000000000669b9ec100000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000410d756f55acf289e9754faf91bba0a704b5c7c0aa4b1dfd551115ccbe4c7f290234e1a14265e1da0bc872a23627d997fe37a689c290d519f7b8c9bdde1b79108e1b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000030ba49cbff5a00000000000000000000000000000000000000000000000089677c957272141800000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc200271055747be9f9f5beb232ad59fe7af013b81d95fd5e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000030ba49cbff5a000c001a0e406d9c91c8b46d959fcd31a28518a77bb248ebb316c5fab7b98335cce922f2aa0462cb970c32a8dbfe71c57b888c43b9ed04fce41d169dbfcc745445587adb771",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([{type:"token",payload:"payload-0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"},{type:"token",payload:"payload-0x55747be9f9f5beb232ad59fe7af013b81d95fd5e"}])}),it("should return an empty array if the transaction is not supported",async()=>{const e={};vi.spyOn(o,"decode").mockReturnValue([]);const n=await c.load(e);expect(n).toEqual([])}),it("should return an empty array if a command is not supported",async()=>{const e={chainId:1,data:"0x3593564c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000067a4bef600000000000000000000000000000000000000000000000000000000000000050b0105040c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000078e6708e70aed0f000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000059a16770000000000000000000000000000000000000000000000000078e6708e70aed0f00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f4c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000027213e28d7fda5c57fe9e5dd923818dbccf71c4700000000000000000000000000000000000000000000000000000000003938700000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000006f939b43d65be049b7533907db08e80ba6969f450000000000000000000000000000000000000000000000000000000059682f0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000006f939b43d65be049b7533907db08e80ba6969f4500000000000000000000000000000000000000000000000000000000000000000cc080a07c86dd5813ec1f3725c402f8bea6105546d1093c59676023b971f1d83f61bd4ea02a353bf3028cabcbe68c5dc8906752bafe55afc86b6344edb3ffd8a3650332e8",selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(n).toEqual([])})}),describe("with mocked ethers parseTransaction",()=>{beforeEach(()=>{vi.resetAllMocks(),c=new l.UniswapContextLoader(o,t,f)}),it("should return an array with contexts if 2 chain swaps are supported",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x04","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x04",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x03",chainId:66}),expect(d).toEqual([{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x04"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an array with contexts if 1 chain swap with a non swap command",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0b0004",["0x0001","0x0002","0x0003"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01"]).mockReturnValueOnce(["0x02","0x03"]).mockReturnValueOnce(["0x04"]),vi.spyOn(t,"getTokenInfosPayload").mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.WRAP_ETH,"0x0001",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(4,{address:"0x04",chainId:66}),expect(d).toEqual([{type:"token",payload:"payload-0x01"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"},{type:"token",payload:"payload-0x04"}])}),it("should return an array with contexts if one token is not found",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]).mockReturnValueOnce(["0x02","0x03"]),vi.spyOn(t,"getTokenInfosPayload").mockResolvedValueOnce((0,r.Left)("error")).mockImplementation(({address:i})=>Promise.resolve((0,r.Right)(`payload-${i}`)));const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(1,{address:"0x01",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(2,{address:"0x02",chainId:66}),expect(t.getTokenInfosPayload).toHaveBeenNthCalledWith(3,{address:"0x03",chainId:66}),expect(d).toEqual([{type:"error",error:"error"},{type:"token",payload:"payload-0x02"},{type:"token",payload:"payload-0x03"}])}),it("should return an empty array if the if 2 chain swaps are not supported",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001","0x0002"]]}),vi.spyOn(o,"decode").mockReturnValueOnce(["0x01","0x02"]),vi.spyOn(o,"decode").mockReturnValueOnce(["0x03","0x04"]);const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x0001",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x0002",66),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])}),it("should return an empty array if no command are returned from parseTransaction",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:[""]});const n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if no inputs are returned from parseTransaction",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x08",[]]}),vi.spyOn(o,"decode").mockReturnValue([]);const n=await c.load(e);expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if parseTransaction throws an error",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,selector:a.UNISWAP_EXECUTE_SELECTOR,chainId:1};vi.spyOn(s.Interface.prototype,"parseTransaction").mockImplementation(()=>{throw new Error});const n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if the swap is with multiple pool versions",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x080900",["0x00","0x01","0x02"]]}),vi.spyOn(o,"decode").mockReturnValue(["0x01","0x02"]);const d=await c.load(e);expect(o.decode).toHaveBeenNthCalledWith(1,a.UniswapSupportedCommand.V2_SWAP_EXACT_IN,"0x00",66),expect(o.decode).toHaveBeenNthCalledWith(2,a.UniswapSupportedCommand.V2_SWAP_EXACT_OUT,"0x01",66),expect(o.decode).toHaveBeenNthCalledWith(3,a.UniswapSupportedCommand.V3_SWAP_EXACT_IN,"0x02",66),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])}),it("should return an empty array if the selector is not supported",async()=>{const e={data:"0x00000000",chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR},n=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(n).toEqual([])}),it("should return an empty array if the length of the commands and inputs are different",async()=>{const e={data:a.UNISWAP_EXECUTE_SELECTOR,chainId:66,selector:a.UNISWAP_EXECUTE_SELECTOR};vi.spyOn(s.Interface.prototype,"parseTransaction").mockReturnValue({args:["0x0809",["0x0001"]]});const d=await c.load(e);expect(o.decode).not.toHaveBeenCalled(),expect(t.getTokenInfosPayload).not.toHaveBeenCalled(),expect(d).toEqual([])})})})});
2
2
  //# sourceMappingURL=UniswapContextLoader.test.js.map