@@ -34,6 +34,7 @@ import {
34
34
TransferResult ,
35
35
Perm ,
36
36
TransferStatusCode ,
37
+ FULL_DECIMALS ,
37
38
} from '../../../types' ;
38
39
import {
39
40
numberToBigNumber ,
@@ -43,6 +44,7 @@ import {
43
44
bytes32ToString ,
44
45
bytes32ArrayToStringArray ,
45
46
bigNumberToDate ,
47
+ stringToBytes32 ,
46
48
} from '../../../utils/convert' ;
47
49
48
50
const TRANSFER_SUCCESS = '0x51' ;
@@ -442,7 +444,8 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
442
444
} ;
443
445
444
446
public unassignedTokens = async ( ) => {
445
- return ( await this . contract ) . unassignedTokens . callAsync ( ) ;
447
+ const result = await ( await this . contract ) . unassignedTokens . callAsync ( ) ;
448
+ return result . toNumber ( ) ;
446
449
} ;
447
450
448
451
public schedules = async ( params : SchedulesParams ) => {
@@ -484,13 +487,13 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
484
487
const canTransferFromResult = await ( await this . securityTokenContract ( ) ) . canTransferFrom . callAsync (
485
488
await this . getCallerAddress ( params . txData ) ,
486
489
await this . address ( ) ,
487
- numberToBigNumber ( params . numberOfTokens ) ,
490
+ valueToWei ( numberToBigNumber ( params . numberOfTokens ) , FULL_DECIMALS ) ,
488
491
'0x00' ,
489
492
) ;
490
493
assert . assert ( canTransferFromResult [ 0 ] === TRANSFER_SUCCESS , 'Failed transferFrom' ) ;
491
494
492
495
return ( await this . contract ) . depositTokens . sendTransactionAsync (
493
- numberToBigNumber ( params . numberOfTokens ) ,
496
+ valueToWei ( numberToBigNumber ( params . numberOfTokens ) , FULL_DECIMALS ) ,
494
497
params . txData ,
495
498
params . safetyFactor ,
496
499
) ;
@@ -503,7 +506,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
503
506
assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Operator ) , 'Caller is not allowed' ) ;
504
507
assert . assert ( params . amount > 0 , 'Amount cannot be zero' ) ;
505
508
506
- const unassignedTokens = ( await this . unassignedTokens ( ) ) . toNumber ( ) ;
509
+ const unassignedTokens = await this . unassignedTokens ( ) ;
507
510
assert . assert ( params . amount <= unassignedTokens , 'Amount is greater than unassigned tokens' ) ;
508
511
509
512
const canTransferResult = await ( await this . securityTokenContract ( ) ) . canTransfer . callAsync (
@@ -557,8 +560,8 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
557
560
assert . assert ( ! ( await this . getAllTemplateNames ( ) ) . includes ( params . name ) , 'Template name already exists' ) ;
558
561
await this . validateTemplate ( params . numberOfTokens , params . duration , params . frequency ) ;
559
562
return ( await this . contract ) . addTemplate . sendTransactionAsync (
560
- params . name ,
561
- numberToBigNumber ( params . numberOfTokens ) ,
563
+ stringToBytes32 ( params . name ) ,
564
+ valueToWei ( numberToBigNumber ( params . numberOfTokens ) , FULL_DECIMALS ) ,
562
565
numberToBigNumber ( params . duration ) ,
563
566
numberToBigNumber ( params . frequency ) ,
564
567
params . txData ,
@@ -603,11 +606,11 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
603
606
assert . assert ( params . templateName !== '' , 'Invalid name' ) ;
604
607
assert . assert ( ! ( await this . getAllTemplateNames ( ) ) . includes ( params . templateName ) , 'Template name already exists' ) ;
605
608
await this . validateTemplate ( params . numberOfTokens , params . duration , params . frequency ) ;
606
- await this . validateAddScheduleFromTemplate ( params . beneficiary , params . templateName , params . startTime ) ;
609
+ await this . validateAddSchedule ( params . beneficiary , params . templateName , params . startTime ) ;
607
610
return ( await this . contract ) . addSchedule . sendTransactionAsync (
608
611
params . beneficiary ,
609
- params . templateName ,
610
- numberToBigNumber ( params . numberOfTokens ) ,
612
+ stringToBytes32 ( params . templateName ) ,
613
+ valueToWei ( numberToBigNumber ( params . numberOfTokens ) , FULL_DECIMALS ) ,
611
614
numberToBigNumber ( params . duration ) ,
612
615
numberToBigNumber ( params . frequency ) ,
613
616
dateToBigNumber ( params . startTime ) ,
@@ -624,7 +627,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
624
627
await this . validateAddScheduleFromTemplate ( params . beneficiary , params . templateName , params . startTime ) ;
625
628
return ( await this . contract ) . addScheduleFromTemplate . sendTransactionAsync (
626
629
params . beneficiary ,
627
- params . templateName ,
630
+ stringToBytes32 ( params . templateName ) ,
628
631
dateToBigNumber ( params . startTime ) ,
629
632
params . txData ,
630
633
params . safetyFactor ,
@@ -641,7 +644,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
641
644
// TODO: require(now < schedule.startTime, "Schedule started");
642
645
return ( await this . contract ) . modifySchedule . sendTransactionAsync (
643
646
params . beneficiary ,
644
- params . templateName ,
647
+ stringToBytes32 ( params . templateName ) ,
645
648
dateToBigNumber ( params . startTime ) ,
646
649
params . txData ,
647
650
params . safetyFactor ,
@@ -657,7 +660,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
657
660
// TODO: _sendTokensPerSchedule assert
658
661
return ( await this . contract ) . revokeSchedule . sendTransactionAsync (
659
662
params . beneficiary ,
660
- params . templateName ,
663
+ stringToBytes32 ( params . templateName ) ,
661
664
params . txData ,
662
665
params . safetyFactor ,
663
666
) ;
@@ -683,6 +686,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
683
686
public getSchedule = async ( params : GetScheduleParams ) => {
684
687
this . checkSchedule ( params . beneficiary , params . templateName ) ;
685
688
const result = await ( await this . contract ) . getSchedule . callAsync ( params . beneficiary , params . templateName ) ;
689
+
686
690
return {
687
691
numberOfTokens : result [ 0 ] . toNumber ( ) ,
688
692
duration : result [ 1 ] . toNumber ( ) ,
@@ -710,7 +714,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
710
714
public getScheduleCount = async ( params : GetScheduleCountParams ) => {
711
715
assert . isNonZeroETHAddressHex ( 'beneficiary' , params . beneficiary ) ;
712
716
const result = await ( await this . contract ) . getScheduleCount . callAsync ( params . beneficiary ) ;
713
- return result . toNumber ( ) ;
717
+ return weiToValue ( result , FULL_DECIMALS ) . toNumber ( ) ;
714
718
} ;
715
719
716
720
/**
@@ -751,7 +755,7 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
751
755
this . validateTemplate ( params . numberOfTokens [ i ] , params . durations [ i ] , params . frequencies [ i ] ) ,
752
756
) ;
753
757
resultValidateAddScheduleFromTemplate . push (
754
- this . validateAddScheduleFromTemplate ( params . beneficiaries [ i ] , params . templateNames [ i ] , params . startTimes [ i ] ) ,
758
+ this . validateAddSchedule ( params . beneficiaries [ i ] , params . templateNames [ i ] , params . startTimes [ i ] ) ,
755
759
) ;
756
760
}
757
761
const getAllTemplatesNames = await Promise . all ( resultGetAllTemplatesNames ) ;
@@ -763,9 +767,11 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
763
767
764
768
return ( await this . contract ) . addScheduleMulti . sendTransactionAsync (
765
769
params . beneficiaries ,
766
- params . templateNames ,
770
+ params . templateNames . map ( name => {
771
+ return stringToBytes32 ( name ) ;
772
+ } ) ,
767
773
params . numberOfTokens . map ( number => {
768
- return numberToBigNumber ( number ) ;
774
+ return valueToWei ( numberToBigNumber ( number ) , FULL_DECIMALS ) ;
769
775
} ) ,
770
776
params . durations . map ( duration => {
771
777
return numberToBigNumber ( duration ) ;
@@ -795,7 +801,9 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
795
801
await Promise . all ( resultsValidateAddScheduleFromTemplate ) ;
796
802
return ( await this . contract ) . addScheduleFromTemplateMulti . sendTransactionAsync (
797
803
params . beneficiaries ,
798
- params . templateNames ,
804
+ params . templateNames . map ( name => {
805
+ return stringToBytes32 ( name ) ;
806
+ } ) ,
799
807
params . startTimes . map ( startTime => {
800
808
return dateToBigNumber ( startTime ) ;
801
809
} ) ,
@@ -837,7 +845,9 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
837
845
838
846
return ( await this . contract ) . modifyScheduleMulti . sendTransactionAsync (
839
847
params . beneficiaries ,
840
- params . templateNames ,
848
+ params . templateNames . map ( name => {
849
+ return stringToBytes32 ( name ) ;
850
+ } ) ,
841
851
params . startTimes . map ( startTime => {
842
852
return dateToBigNumber ( startTime ) ;
843
853
} ) ,
@@ -853,7 +863,13 @@ export default class VestingEscrowWalletWrapper extends ModuleWrapper {
853
863
assert . assert ( numberOfTokens % periodCount === 0 , 'Invalid period count' ) ;
854
864
const amountPerPeriod = numberOfTokens / periodCount ;
855
865
const granularity = await ( await this . securityTokenContract ( ) ) . granularity . callAsync ( ) ;
856
- assert . assert ( amountPerPeriod % granularity . toNumber ( ) === 0 , 'Invalid granularity' ) ;
866
+ assert . assert ( amountPerPeriod % weiToValue ( granularity , FULL_DECIMALS ) . toNumber ( ) === 0 , 'Invalid granularity' ) ;
867
+ } ;
868
+
869
+ private validateAddSchedule = async ( beneficiary : string , templateName : string , startTime : Date ) => {
870
+ assert . isNonZeroETHAddressHex ( 'beneficiary' , beneficiary ) ;
871
+ assert . assert ( ( await this . getScheduleCount ( { beneficiary } ) ) === 0 , 'Already added' ) ;
872
+ assert . assert ( startTime . getTime ( ) > Date . now ( ) , 'Date in the past' ) ;
857
873
} ;
858
874
859
875
private validateAddScheduleFromTemplate = async ( beneficiary : string , templateName : string , startTime : Date ) => {
0 commit comments