1
1
import {
2
+ BigNumber ,
3
+ ContractAbi ,
4
+ LockUpTransferManager ,
5
+ LockUpTransferManagerAddLockUpToUserEventArgs ,
6
+ LockUpTransferManagerAddNewLockUpTypeEventArgs ,
2
7
LockUpTransferManagerContract ,
3
8
LockUpTransferManagerEventArgs ,
4
9
LockUpTransferManagerEvents ,
5
- LockUpTransferManagerAddLockUpToUserEventArgs ,
6
- LockUpTransferManagerRemoveLockUpFromUserEventArgs ,
7
10
LockUpTransferManagerModifyLockUpTypeEventArgs ,
8
- LockUpTransferManagerAddNewLockUpTypeEventArgs ,
9
- LockUpTransferManagerRemoveLockUpTypeEventArgs ,
10
11
LockUpTransferManagerPauseEventArgs ,
12
+ LockUpTransferManagerRemoveLockUpFromUserEventArgs ,
13
+ LockUpTransferManagerRemoveLockUpTypeEventArgs ,
11
14
LockUpTransferManagerUnpauseEventArgs ,
12
- LockUpTransferManager ,
13
- Web3Wrapper ,
14
- ContractAbi ,
15
15
LogWithDecodedArgs ,
16
- BigNumber ,
16
+ Web3Wrapper ,
17
17
} from '@polymathnetwork/abi-wrappers' ;
18
18
import { schemas } from '@0x/json-schemas' ;
19
19
import assert from '../../../utils/assert' ;
20
20
import ModuleWrapper from '../module_wrapper' ;
21
21
import ContractFactory from '../../../factories/contractFactory' ;
22
22
import {
23
- TxParams ,
24
- GetLogsAsyncParams ,
25
- SubscribeAsyncParams ,
26
23
EventCallback ,
27
- Subscribe ,
24
+ FULL_DECIMALS ,
28
25
GetLogs ,
29
- Perm ,
26
+ GetLogsAsyncParams ,
27
+ Subscribe ,
28
+ SubscribeAsyncParams ,
30
29
TransferResult ,
30
+ TxParams ,
31
31
} from '../../../types' ;
32
- import { valueToWei , weiToValue } from '../../../utils/convert' ;
32
+ import { bigNumberToDate , parseTransferResult , stringToBytes32 , valueToWei , weiToValue } from '../../../utils/convert' ;
33
33
34
34
interface AddLockUpToUserSubscribeAsyncParams extends SubscribeAsyncParams {
35
35
eventName : LockUpTransferManagerEvents . AddLockUpToUser ;
@@ -41,12 +41,12 @@ interface GetAddLockUpToUserLogsAsyncParams extends GetLogsAsyncParams {
41
41
}
42
42
43
43
interface RemoveLockUpFromUserSubscribeAsyncParams extends SubscribeAsyncParams {
44
- eventName : LockUpTransferManagerEvents . RemoveLockUpFromUser ;
45
- callback : EventCallback < LockUpTransferManagerRemoveLockUpFromUserEventArgs > ;
44
+ eventName : LockUpTransferManagerEvents . RemoveLockUpFromUser ;
45
+ callback : EventCallback < LockUpTransferManagerRemoveLockUpFromUserEventArgs > ;
46
46
}
47
47
48
48
interface GetRemoveLockUpFromUserLogsAsyncParams extends GetLogsAsyncParams {
49
- eventName : LockUpTransferManagerEvents . RemoveLockUpFromUser ;
49
+ eventName : LockUpTransferManagerEvents . RemoveLockUpFromUser ;
50
50
}
51
51
52
52
interface ModifyLockUpTypeSubscribeAsyncParams extends SubscribeAsyncParams {
@@ -105,15 +105,49 @@ interface LockUpTransferManagerSubscribeAsyncParams extends Subscribe {
105
105
}
106
106
107
107
interface GetLockUpTransferManagerLogsAsyncParams extends GetLogs {
108
- ( params : GetAddLockUpToUserLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerAddLockUpToUserEventArgs > [ ] > ;
109
- ( params : GetRemoveLockUpFromUserLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerRemoveLockUpFromUserEventArgs > [ ] > ;
110
- ( params : GetModifyLockUpTypeLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerModifyLockUpTypeEventArgs > [ ] > ;
111
- ( params : GetAddNewLockUpTypeLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerAddNewLockUpTypeEventArgs > [ ] > ;
112
- ( params : GetRemoveLockUpTypeLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerRemoveLockUpTypeEventArgs > [ ] > ;
108
+ ( params : GetAddLockUpToUserLogsAsyncParams ) : Promise <
109
+ LogWithDecodedArgs < LockUpTransferManagerAddLockUpToUserEventArgs > [ ]
110
+ > ;
111
+ ( params : GetRemoveLockUpFromUserLogsAsyncParams ) : Promise <
112
+ LogWithDecodedArgs < LockUpTransferManagerRemoveLockUpFromUserEventArgs > [ ]
113
+ > ;
114
+ ( params : GetModifyLockUpTypeLogsAsyncParams ) : Promise <
115
+ LogWithDecodedArgs < LockUpTransferManagerModifyLockUpTypeEventArgs > [ ]
116
+ > ;
117
+ ( params : GetAddNewLockUpTypeLogsAsyncParams ) : Promise <
118
+ LogWithDecodedArgs < LockUpTransferManagerAddNewLockUpTypeEventArgs > [ ]
119
+ > ;
120
+ ( params : GetRemoveLockUpTypeLogsAsyncParams ) : Promise <
121
+ LogWithDecodedArgs < LockUpTransferManagerRemoveLockUpTypeEventArgs > [ ]
122
+ > ;
113
123
( params : GetPauseLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerPauseEventArgs > [ ] > ;
114
124
( params : GetUnpauseLogsAsyncParams ) : Promise < LogWithDecodedArgs < LockUpTransferManagerUnpauseEventArgs > [ ] > ;
115
125
}
116
126
127
+ interface LockupsParams extends TxParams {
128
+ details : string ;
129
+ }
130
+
131
+ interface VerifyTransferParams {
132
+ from : string ;
133
+ to : string ;
134
+ amount : BigNumber ;
135
+ data : string ;
136
+ }
137
+
138
+ // // Return types ////
139
+ interface LockUp {
140
+ lockupAmount : BigNumber ;
141
+ startTime : Date ;
142
+ lockUpPeriodSeconds : BigNumber ;
143
+ releaseFrequencySeconds : BigNumber ;
144
+ }
145
+
146
+ interface VerifyTransfer {
147
+ transferResult : TransferResult ;
148
+ address : string ;
149
+ }
150
+
117
151
/**
118
152
* This class includes the functionality related to interacting with the LockUp Transfer Manager contract.
119
153
*/
@@ -153,6 +187,37 @@ export default class LockUpTransferManagerWrapper extends ModuleWrapper {
153
187
return ( await this . contract ) . pause . sendTransactionAsync ( params . txData , params . safetyFactor ) ;
154
188
} ;
155
189
190
+ /**
191
+ * Return the lockups
192
+ */
193
+ public lockups = async ( params : LockupsParams ) : Promise < LockUp > => {
194
+ assert . assert ( params . details . length > 0 , 'LockUp Details must not be an empty string' ) ;
195
+ const result = await ( await this . contract ) . lockups . callAsync ( stringToBytes32 ( params . details ) ) ;
196
+ return {
197
+ lockupAmount : weiToValue ( result [ 0 ] , FULL_DECIMALS ) ,
198
+ startTime : bigNumberToDate ( result [ 1 ] ) ,
199
+ lockUpPeriodSeconds : result [ 2 ] ,
200
+ releaseFrequencySeconds : result [ 3 ] ,
201
+ } ;
202
+ } ;
203
+
204
+ public verifyTransfer = async ( params : VerifyTransferParams ) : Promise < VerifyTransfer > => {
205
+ assert . isETHAddressHex ( 'from' , params . from ) ;
206
+ assert . isETHAddressHex ( 'to' , params . to ) ;
207
+ const decimals = await ( await this . securityTokenContract ( ) ) . decimals . callAsync ( ) ;
208
+ const result = await ( await this . contract ) . verifyTransfer . callAsync (
209
+ params . from ,
210
+ params . to ,
211
+ valueToWei ( params . amount , decimals ) ,
212
+ params . data ,
213
+ ) ;
214
+ const transferResult = parseTransferResult ( result [ 0 ] ) ;
215
+ return {
216
+ transferResult,
217
+ address : result [ 1 ] ,
218
+ } ;
219
+ } ;
220
+
156
221
/**
157
222
* Subscribe to an event type emitted by the contract.
158
223
* @return Subscription token used later to unsubscribe
0 commit comments