@@ -27,6 +27,7 @@ import {
27
27
SubscribeAsyncParams ,
28
28
TransferResult ,
29
29
TxParams ,
30
+ ErrorCode ,
30
31
} from '../../../types' ;
31
32
import {
32
33
bigNumberToDate ,
@@ -353,8 +354,12 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
353
354
* unpause the module
354
355
*/
355
356
public unpause = async ( params : TxParams ) => {
356
- assert . assert ( await this . paused ( ) , 'Controller not currently paused' ) ;
357
- assert . assert ( await this . isCallerTheSecurityTokenOwner ( params . txData ) , 'Sender is not owner' ) ;
357
+ assert . assert ( await this . paused ( ) , ErrorCode . ContractPaused , 'Controller not currently paused' ) ;
358
+ assert . assert (
359
+ await this . isCallerTheSecurityTokenOwner ( params . txData ) ,
360
+ ErrorCode . Unauthorized ,
361
+ 'Sender is not owner' ,
362
+ ) ;
358
363
return ( await this . contract ) . unpause . sendTransactionAsync ( params . txData , params . safetyFactor ) ;
359
364
} ;
360
365
@@ -369,16 +374,20 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
369
374
* pause the module
370
375
*/
371
376
public pause = async ( params : TxParams ) => {
372
- assert . assert ( ! ( await this . paused ( ) ) , 'Controller currently paused' ) ;
373
- assert . assert ( await this . isCallerTheSecurityTokenOwner ( params . txData ) , 'Sender is not owner' ) ;
377
+ assert . assert ( ! ( await this . paused ( ) ) , ErrorCode . PreconditionRequired , 'Controller currently paused' ) ;
378
+ assert . assert (
379
+ await this . isCallerTheSecurityTokenOwner ( params . txData ) ,
380
+ ErrorCode . Unauthorized ,
381
+ 'Sender is not owner' ,
382
+ ) ;
374
383
return ( await this . contract ) . pause . sendTransactionAsync ( params . txData , params . safetyFactor ) ;
375
384
} ;
376
385
377
386
/**
378
387
* mapping used to store the lockup details corresponds to lockup name
379
388
*/
380
389
public lockups = async ( params : LockupsParams ) : Promise < LockUp > => {
381
- assert . assert ( params . lockupName . length > 0 , 'LockUp Details must not be an empty string' ) ;
390
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'LockUp Details must not be an empty string' ) ;
382
391
const result = await ( await this . contract ) . lockups . callAsync ( stringToBytes32 ( params . lockupName ) ) ;
383
392
const decimals = await ( await this . securityTokenContract ( ) ) . decimals . callAsync ( ) ;
384
393
return {
@@ -393,7 +402,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
393
402
* Get a specific element in a user's lockups array given the user's address and the element index
394
403
*/
395
404
public getLockUp = async ( params : LockupsParams ) : Promise < LockUpWithAmount > => {
396
- assert . assert ( params . lockupName . length > 0 , 'LockUp Details must not be an empty string' ) ;
405
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'LockUp Details must not be an empty string' ) ;
397
406
const result = await ( await this . contract ) . getLockUp . callAsync ( stringToBytes32 ( params . lockupName ) ) ;
398
407
const decimals = await ( await this . securityTokenContract ( ) ) . decimals . callAsync ( ) ;
399
408
return {
@@ -430,7 +439,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
430
439
* @return address List of users associated with the given lockup name
431
440
*/
432
441
public getListOfAddresses = async ( params : LockupsParams ) : Promise < string [ ] > => {
433
- assert . assert ( params . lockupName . length > 0 , 'LockUp name must not be an empty string' ) ;
442
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'LockUp name must not be an empty string' ) ;
434
443
return ( await this . contract ) . getListOfAddresses . callAsync ( stringToBytes32 ( params . lockupName ) ) ;
435
444
} ;
436
445
@@ -510,7 +519,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
510
519
* Use to add the new lockup type
511
520
*/
512
521
public addNewLockUpType = async ( params : LockUpTypeParams ) => {
513
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
522
+ assert . assert (
523
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
524
+ ErrorCode . Unauthorized ,
525
+ 'Caller is not allowed' ,
526
+ ) ;
514
527
await this . checkAddNewLockUpType ( params ) ;
515
528
const decimals = await ( await this . securityTokenContract ( ) ) . decimals . callAsync ( ) ;
516
529
return ( await this . contract ) . addNewLockUpType . sendTransactionAsync (
@@ -528,7 +541,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
528
541
* Use to add multiple new lockup types
529
542
*/
530
543
public addNewLockUpTypeMulti = async ( params : LockUpTypeMultiParams ) => {
531
- assert . assert ( params . lockupAmounts . length > 0 , 'Empty lockup information' ) ;
544
+ assert . assert ( params . lockupAmounts . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
532
545
assert . areValidArrayLengths (
533
546
[
534
547
params . lockupAmounts ,
@@ -539,7 +552,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
539
552
] ,
540
553
'Argument arrays length mismatch' ,
541
554
) ;
542
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
555
+ assert . assert (
556
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
557
+ ErrorCode . Unauthorized ,
558
+ 'Caller is not allowed' ,
559
+ ) ;
543
560
const results = [ ] ;
544
561
for ( let i = 0 ; i < params . lockupNames . length ; i += 1 ) {
545
562
results . push (
@@ -569,7 +586,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
569
586
* Add a lockup to a specific user
570
587
*/
571
588
public addLockUpByName = async ( params : LockUpByNameParams ) => {
572
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
589
+ assert . assert (
590
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
591
+ ErrorCode . Unauthorized ,
592
+ 'Caller is not allowed' ,
593
+ ) ;
573
594
await this . checkAddLockUpByName ( params ) ;
574
595
return ( await this . contract ) . addLockUpByName . sendTransactionAsync (
575
596
params . userAddress ,
@@ -583,9 +604,13 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
583
604
* Add multiple lockups to multiple users
584
605
*/
585
606
public addLockUpByNameMulti = async ( params : LockUpByNameMultiParams ) => {
586
- assert . assert ( params . lockupNames . length > 0 , 'Empty lockup information' ) ;
607
+ assert . assert ( params . lockupNames . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
587
608
assert . areValidArrayLengths ( [ params . userAddresses , params . lockupNames ] , 'Argument arrays length mismatch' ) ;
588
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
609
+ assert . assert (
610
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
611
+ ErrorCode . Unauthorized ,
612
+ 'Caller is not allowed' ,
613
+ ) ;
589
614
const results = [ ] ;
590
615
for ( let i = 0 ; i < params . lockupNames . length ; i += 1 ) {
591
616
results . push (
@@ -608,7 +633,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
608
633
* Lets the admin create a volume restriction lockup for a given address.
609
634
*/
610
635
public addNewLockUpToUser = async ( params : AddNewLockUpToUserParams ) => {
611
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
636
+ assert . assert (
637
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
638
+ ErrorCode . Unauthorized ,
639
+ 'Caller is not allowed' ,
640
+ ) ;
612
641
assert . isNonZeroETHAddressHex ( 'User Address' , params . userAddress ) ;
613
642
// CheckAddNewLockUpType only because no point checking a user that can't be added to lockup
614
643
await this . checkAddNewLockUpType ( params ) ;
@@ -629,11 +658,15 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
629
658
* Lets the admin create multiple volume restriction lockups for multiple given addresses.
630
659
*/
631
660
public addNewLockUpToUserMulti = async ( params : AddNewLockUpToUserMultiParams ) => {
632
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
661
+ assert . assert (
662
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
663
+ ErrorCode . Unauthorized ,
664
+ 'Caller is not allowed' ,
665
+ ) ;
633
666
params . userAddresses . map ( address => {
634
667
return assert . isNonZeroETHAddressHex ( 'User Address' , address ) ;
635
668
} ) ;
636
- assert . assert ( params . lockupAmounts . length > 0 , 'Empty lockup information' ) ;
669
+ assert . assert ( params . lockupAmounts . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
637
670
assert . areValidArrayLengths (
638
671
[
639
672
params . userAddresses ,
@@ -675,7 +708,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
675
708
* Lets the admin remove a user from a lock up
676
709
*/
677
710
public removeLockUpFromUser = async ( params : RemoveLockUpFromUserParams ) => {
678
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
711
+ assert . assert (
712
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
713
+ ErrorCode . Unauthorized ,
714
+ 'Caller is not allowed' ,
715
+ ) ;
679
716
await this . checkRemoveLockUpFromUser ( params ) ;
680
717
return ( await this . contract ) . removeLockUpFromUser . sendTransactionAsync (
681
718
params . userAddress ,
@@ -689,9 +726,13 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
689
726
* Use to remove the lockup for multiple users
690
727
*/
691
728
public removeLockUpFromUserMulti = async ( params : RemoveLockUpFromUserMultiParams ) => {
692
- assert . assert ( params . lockupNames . length > 0 , 'Empty lockup information' ) ;
729
+ assert . assert ( params . lockupNames . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
693
730
assert . areValidArrayLengths ( [ params . userAddresses , params . lockupNames ] , 'Argument arrays length mismatch' ) ;
694
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
731
+ assert . assert (
732
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
733
+ ErrorCode . Unauthorized ,
734
+ 'Caller is not allowed' ,
735
+ ) ;
695
736
const results = [ ] ;
696
737
for ( let i = 0 ; i < params . lockupNames . length ; i += 1 ) {
697
738
results . push (
@@ -714,7 +755,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
714
755
* Used to remove the lockup type
715
756
*/
716
757
public removeLockupType = async ( params : RemoveLockUpTypeParams ) => {
717
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
758
+ assert . assert (
759
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
760
+ ErrorCode . Unauthorized ,
761
+ 'Caller is not allowed' ,
762
+ ) ;
718
763
await this . checkRemoveLockUpType ( params . lockupName ) ;
719
764
return ( await this . contract ) . removeLockupType . sendTransactionAsync (
720
765
stringToBytes32 ( params . lockupName ) ,
@@ -727,8 +772,12 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
727
772
* Used to remove the multiple lockup type
728
773
*/
729
774
public removeLockupTypeMulti = async ( params : RemoveLockUpTypeMultiParams ) => {
730
- assert . assert ( params . lockupNames . length > 0 , 'Empty lockup information' ) ;
731
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
775
+ assert . assert ( params . lockupNames . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
776
+ assert . assert (
777
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
778
+ ErrorCode . Unauthorized ,
779
+ 'Caller is not allowed' ,
780
+ ) ;
732
781
const results = [ ] ;
733
782
for ( let i = 0 ; i < params . lockupNames . length ; i += 1 ) {
734
783
results . push ( this . checkRemoveLockUpType ( params . lockupNames [ i ] ) ) ;
@@ -745,7 +794,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
745
794
* Lets the admin modify a lockup.
746
795
*/
747
796
public modifyLockUpType = async ( params : LockUpTypeParams ) => {
748
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
797
+ assert . assert (
798
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
799
+ ErrorCode . Unauthorized ,
800
+ 'Caller is not allowed' ,
801
+ ) ;
749
802
await this . checkModifyLockUpType ( params ) ;
750
803
const decimals = await ( await this . securityTokenContract ( ) ) . decimals . callAsync ( ) ;
751
804
return ( await this . contract ) . modifyLockUpType . sendTransactionAsync (
@@ -763,7 +816,7 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
763
816
* Lets the admin modify a volume restriction lockup for multiple addresses.
764
817
*/
765
818
public modifyLockUpTypeMulti = async ( params : LockUpTypeMultiParams ) => {
766
- assert . assert ( params . lockupAmounts . length > 0 , 'Empty lockup information' ) ;
819
+ assert . assert ( params . lockupAmounts . length > 0 , ErrorCode . InvalidData , 'Empty lockup information' ) ;
767
820
assert . areValidArrayLengths (
768
821
[
769
822
params . lockupAmounts ,
@@ -774,7 +827,11 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
774
827
] ,
775
828
'Argument arrays length mismatch' ,
776
829
) ;
777
- assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
830
+ assert . assert (
831
+ await this . isCallerAllowed ( params . txData , Perm . Admin ) ,
832
+ ErrorCode . Unauthorized ,
833
+ 'Caller is not allowed' ,
834
+ ) ;
778
835
const results = [ ] ;
779
836
for ( let i = 0 ; i < params . lockupNames . length ; i += 1 ) {
780
837
results . push (
@@ -858,39 +915,53 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
858
915
} ;
859
916
860
917
private checkLockUpTypeInformation = async ( params : LockUpTypeParams ) => {
861
- assert . assert ( params . lockupName . length > 0 , 'Lockup Name cannot be empty string' ) ;
918
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'Lockup Name cannot be empty string' ) ;
862
919
assert . isFutureDate ( params . startTime , 'Start time must be in the future' ) ;
863
- assert . assert ( params . lockUpPeriodSeconds > 0 , 'Lockup period in seconds should be greater than 0' ) ;
864
- assert . assert ( params . releaseFrequenciesSeconds > 0 , 'Release frequency in seconds should be greater than 0' ) ;
920
+ assert . assert (
921
+ params . lockUpPeriodSeconds > 0 ,
922
+ ErrorCode . InvalidData ,
923
+ 'Lockup period in seconds should be greater than 0' ,
924
+ ) ;
925
+ assert . assert (
926
+ params . releaseFrequenciesSeconds > 0 ,
927
+ ErrorCode . InvalidData ,
928
+ 'Release frequency in seconds should be greater than 0' ,
929
+ ) ;
865
930
assert . isBigNumberGreaterThanZero ( params . lockupAmount , 'Lockup amount should be greater than 0' ) ;
866
931
} ;
867
932
868
933
private checkAddLockUpByName = async ( params : LockUpByNameParams ) => {
869
- assert . assert ( params . lockupName . length > 0 , 'Lockup Name cannot be empty string' ) ;
934
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'Lockup Name cannot be empty string' ) ;
870
935
assert . isNonZeroETHAddressHex ( 'User Address' , params . userAddress ) ;
871
936
const lockupNames = await this . getLockupsNamesToUser ( { user : params . userAddress } ) ;
872
- assert . assert ( ! lockupNames . includes ( params . lockupName ) , 'User already added to this lockup name' ) ;
937
+ assert . assert (
938
+ ! lockupNames . includes ( params . lockupName ) ,
939
+ ErrorCode . AlreadyExists ,
940
+ 'User already added to this lockup name' ,
941
+ ) ;
873
942
const lockup = await this . getLockUp ( { lockupName : params . lockupName } ) ;
874
943
assert . isFutureDate ( lockup . startTime , 'Start time must be in the future' ) ;
875
944
} ;
876
945
877
946
private checkRemoveLockUpFromUser = async ( params : LockUpByNameParams ) => {
878
- assert . assert ( params . lockupName . length > 0 , 'Lockup Name cannot be empty string' ) ;
947
+ assert . assert ( params . lockupName . length > 0 , ErrorCode . InvalidData , 'Lockup Name cannot be empty string' ) ;
879
948
assert . isNonZeroETHAddressHex ( 'User Address' , params . userAddress ) ;
880
949
const lockupNames = await this . getLockupsNamesToUser ( { user : params . userAddress } ) ;
881
950
assert . assert (
882
951
lockupNames . includes ( params . lockupName ) ,
952
+ ErrorCode . PreconditionRequired ,
883
953
'User not added to this lockup name, not included in lookup' ,
884
954
) ;
885
955
} ;
886
956
887
957
private checkRemoveLockUpType = async ( lockupName : string ) => {
888
- assert . assert ( lockupName . length > 0 , 'Lockup Name cannot be empty string' ) ;
958
+ assert . assert ( lockupName . length > 0 , ErrorCode . InvalidData , 'Lockup Name cannot be empty string' ) ;
889
959
const lockup = await this . getLockUp ( { lockupName } ) ;
890
960
assert . isNotDateZero ( lockup . startTime , 'Lockup does not exist' ) ;
891
961
const lockupListOfAddresses = await this . getListOfAddresses ( { lockupName } ) ;
892
962
assert . assert (
893
963
lockupListOfAddresses . length === 0 ,
964
+ ErrorCode . PreconditionRequired ,
894
965
'There are users attached to the lockup that must be removed before removing the lockup type' ,
895
966
) ;
896
967
} ;
0 commit comments