@@ -8,7 +8,7 @@ import {TheCompact} from '@uniswap/the-compact/TheCompact.sol';
8
8
import {ITheCompact} from '@uniswap/the-compact/interfaces/ITheCompact.sol ' ;
9
9
10
10
import {IdLib} from '@uniswap/the-compact/lib/IdLib.sol ' ;
11
- import {ClaimWithWitness } from '@uniswap/the-compact/types/Claims.sol ' ;
11
+ import {QualifiedClaimWithWitness } from '@uniswap/the-compact/types/Claims.sol ' ;
12
12
13
13
import {COMPACT_TYPEHASH, Compact} from '@uniswap/the-compact/types/EIP712Types.sol ' ;
14
14
import {ForcedWithdrawalStatus} from '@uniswap/the-compact/types/ForcedWithdrawalStatus.sol ' ;
@@ -251,9 +251,7 @@ abstract contract GaslessCrossChainOrderData is CompactData {
251
251
baselinePriorityFee: mandate_.baselinePriorityFee,
252
252
scalingFactor: mandate_.scalingFactor,
253
253
decayCurve: mandate_.decayCurve,
254
- salt: mandate_.salt,
255
- targetBlock: defaultTargetBlock,
256
- maximumBlocksAfterTarget: defaultMaximumBlocksAfterTarget
254
+ salt: mandate_.salt
257
255
})
258
256
)
259
257
});
@@ -289,9 +287,7 @@ abstract contract GaslessCrossChainOrderData is CompactData {
289
287
baselinePriorityFee: mandate_.baselinePriorityFee,
290
288
scalingFactor: mandate_.scalingFactor,
291
289
decayCurve: mandate_.decayCurve,
292
- salt: mandate_.salt,
293
- targetBlock: defaultTargetBlock,
294
- maximumBlocksAfterTarget: defaultMaximumBlocksAfterTarget
290
+ salt: mandate_.salt
295
291
})
296
292
)
297
293
});
@@ -533,7 +529,7 @@ contract ERC7683Allocator_openFor is GaslessCrossChainOrderData {
533
529
fillInstructions[0 ] = IOriginSettler.FillInstruction ({
534
530
destinationChainId: defaultOutputChainId,
535
531
destinationSettler: bytes32 (uint256 (uint160 (tribunal))),
536
- originData: abi.encode (claim, _getMandate (), defaultTargetBlock, defaultMaximumBlocksAfterTarget )
532
+ originData: abi.encode (claim, _getMandate (), uint256 ( 0 ), uint256 ( 0 ) )
537
533
});
538
534
539
535
IOriginSettler.ResolvedCrossChainOrder memory resolvedCrossChainOrder = IOriginSettler.ResolvedCrossChainOrder ({
@@ -588,7 +584,7 @@ contract ERC7683Allocator_openFor is GaslessCrossChainOrderData {
588
584
fillInstructions[0 ] = IOriginSettler.FillInstruction ({
589
585
destinationChainId: defaultOutputChainId,
590
586
destinationSettler: bytes32 (uint256 (uint160 (tribunal))),
591
- originData: abi.encode (claim, _getMandate (), defaultTargetBlock, defaultMaximumBlocksAfterTarget )
587
+ originData: abi.encode (claim, _getMandate (), uint256 ( 0 ), uint256 ( 0 ) )
592
588
});
593
589
594
590
IOriginSettler.ResolvedCrossChainOrder memory resolvedCrossChainOrder = IOriginSettler.ResolvedCrossChainOrder ({
@@ -769,7 +765,11 @@ contract ERC7683Allocator_open is OnChainCrossChainOrderData {
769
765
}
770
766
}
771
767
772
- contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData {
768
+ contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData , GaslessCrossChainOrderData {
769
+ function setUp () public override (OnChainCrossChainOrderData, GaslessCrossChainOrderData) {
770
+ super .setUp ();
771
+ }
772
+
773
773
function test_revert_InvalidLock () public {
774
774
// Deposit tokens
775
775
vm.startPrank (user);
@@ -796,14 +796,16 @@ contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData {
796
796
// we do NOT open the order or lock the tokens
797
797
798
798
// claim should be fail, because we mess with the nonce
799
- ClaimWithWitness memory claim = ClaimWithWitness ({
799
+ QualifiedClaimWithWitness memory claim = QualifiedClaimWithWitness ({
800
800
allocatorSignature: '' ,
801
801
sponsorSignature: '' ,
802
802
sponsor: user,
803
803
nonce: defaultNonce,
804
804
expires: compact_.expires,
805
805
witness: keccak256 (abi.encode (keccak256 (bytes (mandateTypeString)), mandate_)),
806
806
witnessTypestring: witnessTypeString,
807
+ qualificationTypehash: erc7683Allocator.QUALIFICATION_TYPEHASH (),
808
+ qualificationPayload: abi.encode (defaultTargetBlock, defaultMaximumBlocksAfterTarget),
807
809
id: usdcId,
808
810
allocatedAmount: defaultAmount,
809
811
claimant: filler,
@@ -817,7 +819,7 @@ contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData {
817
819
vm.assertEq (compactContract.balanceOf (filler, usdcId), 0 );
818
820
}
819
821
820
- function test_isValidSignature_successful () public {
822
+ function test_isValidSignature_successful_open () public {
821
823
// Deposit tokens
822
824
vm.startPrank (user);
823
825
usdc.mint (user, defaultAmount);
@@ -844,7 +846,71 @@ contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData {
844
846
vm.stopPrank ();
845
847
846
848
// claim should be successful
847
- ClaimWithWitness memory claim = ClaimWithWitness ({
849
+ QualifiedClaimWithWitness memory claim = QualifiedClaimWithWitness ({
850
+ allocatorSignature: '' ,
851
+ sponsorSignature: '' ,
852
+ sponsor: user,
853
+ nonce: defaultNonce,
854
+ expires: compact_.expires,
855
+ witness: keccak256 (
856
+ abi.encode (
857
+ keccak256 (bytes (mandateTypeString)),
858
+ defaultOutputChainId,
859
+ tribunal,
860
+ mandate_.recipient,
861
+ mandate_.expires,
862
+ mandate_.token,
863
+ mandate_.minimumAmount,
864
+ mandate_.baselinePriorityFee,
865
+ mandate_.scalingFactor,
866
+ keccak256 (abi.encodePacked (mandate_.decayCurve)),
867
+ mandate_.salt
868
+ )
869
+ ),
870
+ witnessTypestring: witnessTypeString,
871
+ qualificationTypehash: erc7683Allocator.QUALIFICATION_TYPEHASH (),
872
+ qualificationPayload: abi.encode (defaultTargetBlock, defaultMaximumBlocksAfterTarget),
873
+ id: usdcId,
874
+ allocatedAmount: defaultAmount,
875
+ claimant: filler,
876
+ amount: defaultAmount
877
+ });
878
+ vm.prank (arbiter);
879
+ compactContract.claim (claim);
880
+
881
+ vm.assertEq (compactContract.balanceOf (user, usdcId), 0 );
882
+ vm.assertEq (compactContract.balanceOf (filler, usdcId), defaultAmount);
883
+ }
884
+
885
+ function test_isValidSignature_successful_openFor () public {
886
+ // Deposit tokens
887
+ vm.startPrank (user);
888
+ usdc.mint (user, defaultAmount);
889
+ usdc.approve (address (compactContract), defaultAmount);
890
+ compactContract.deposit (
891
+ address (usdc), address (erc7683Allocator), defaultResetPeriod, defaultScope, defaultAmount, user
892
+ );
893
+
894
+ // register a claim
895
+ Compact memory compact_ = _getCompact ();
896
+ Mandate memory mandate_ = _getMandate ();
897
+
898
+ bytes32 claimHash = _hashCompact (compact_, mandate_);
899
+ bytes32 typeHash = _getTypeHash ();
900
+ compactContract.register (claimHash, typeHash, defaultResetPeriodTimestamp);
901
+
902
+ address filler = makeAddr ('filler ' );
903
+ vm.assertEq (compactContract.balanceOf (user, usdcId), defaultAmount);
904
+ vm.assertEq (compactContract.balanceOf (filler, usdcId), 0 );
905
+
906
+ // we open the order and lock the tokens
907
+ (IOriginSettler.GaslessCrossChainOrder memory gaslessCrossChainOrder_ , bytes memory sponsorSignature ) =
908
+ _getGaslessCrossChainOrder ();
909
+ erc7683Allocator.openFor (gaslessCrossChainOrder_, sponsorSignature, '' );
910
+ vm.stopPrank ();
911
+
912
+ // claim should be successful
913
+ QualifiedClaimWithWitness memory claim = QualifiedClaimWithWitness ({
848
914
allocatorSignature: '' ,
849
915
sponsorSignature: '' ,
850
916
sponsor: user,
@@ -866,6 +932,8 @@ contract ERC7683Allocator_isValidSignature is OnChainCrossChainOrderData {
866
932
)
867
933
),
868
934
witnessTypestring: witnessTypeString,
935
+ qualificationTypehash: erc7683Allocator.QUALIFICATION_TYPEHASH (),
936
+ qualificationPayload: abi.encode (uint256 (0 ), uint256 (0 )),
869
937
id: usdcId,
870
938
allocatedAmount: defaultAmount,
871
939
claimant: filler,
@@ -914,7 +982,7 @@ contract ERC7683Allocator_resolveFor is GaslessCrossChainOrderData {
914
982
fillInstructions[0 ] = IOriginSettler.FillInstruction ({
915
983
destinationChainId: defaultOutputChainId,
916
984
destinationSettler: bytes32 (uint256 (uint160 (tribunal))),
917
- originData: abi.encode (claim, _getMandate (), defaultTargetBlock, defaultMaximumBlocksAfterTarget )
985
+ originData: abi.encode (claim, _getMandate (), uint256 ( 0 ), uint256 ( 0 ) )
918
986
});
919
987
920
988
IOriginSettler.ResolvedCrossChainOrder memory resolvedCrossChainOrder = IOriginSettler.ResolvedCrossChainOrder ({
0 commit comments