@@ -58,46 +58,84 @@ interface GetGeneralPermissionManagerLogsAsyncParams extends GetLogs {
58
58
( params : GetAddDelegateLogsAsyncParams ) : Promise < LogWithDecodedArgs < GeneralPermissionManagerAddDelegateEventArgs > [ ] > ;
59
59
}
60
60
61
+ /**
62
+ * @param delegate Ethereum address of the delegate
63
+ * @param module Ethereum contract address of the module
64
+ * @param perm Permission flag
65
+ */
61
66
interface PermParams {
62
67
module : string ;
63
68
delegate : string ;
64
69
permission : Perm ;
65
70
}
66
71
72
+ /**
73
+ * @param delegateIndex Index of the delegate
74
+ */
67
75
interface DelegateIndexParams {
68
76
delegateIndex : number ;
69
77
}
70
78
79
+ /**
80
+ * @param delegate the address of potential delegate
81
+ */
71
82
interface DelegateParams {
72
83
delegate : string ;
73
84
}
74
85
86
+ /**
87
+ * @param module Ethereum contract address of the module
88
+ * @param perm Permission flag
89
+ */
75
90
interface GetAllDelegatesWithPermParams {
76
91
module : string ;
77
92
perm : Perm ;
78
93
}
79
94
95
+ /**
96
+ * @param delegate Ethereum address of the delegate
97
+ * @param types Array of types
98
+ */
80
99
interface GetAllModulesAndPermsFromTypesParams {
81
100
delegate : string ;
82
101
types : number [ ] ;
83
102
}
84
103
104
+ /**
105
+ * @param delegate Ethereum address of the delegate
106
+ */
85
107
interface DelegateTxParams extends TxParams {
86
108
delegate : string ;
87
109
}
88
110
111
+ /**
112
+ * @param delegate Ethereum address of the delegate
113
+ * @param details Details about the delegate i.e `Belongs to financial firm`
114
+ */
89
115
interface AddDelegateParams extends TxParams {
90
116
delegate : string ;
91
117
details : string ;
92
118
}
93
119
120
+ /**
121
+ * @param delegate Ethereum address of the delegate
122
+ * @param module Ethereum contract address of the module
123
+ * @param perm Permission flag
124
+ * @param valid Bool flag use to switch on/off the permission
125
+ */
94
126
interface ChangePermissionParams extends TxParams {
95
127
delegate : string ;
96
128
module : string ;
97
129
perm : Perm ;
98
130
valid : boolean ;
99
131
}
100
132
133
+ /**
134
+ * @param delegate Ethereum address of the delegate
135
+ * @param modules Multiple module matching the multiple perms, needs to be same length
136
+ * @param perms Multiple permission flag needs to be changed
137
+ * @param valids Bool array consist the flag to switch on/off the permission
138
+ */
101
139
interface ChangePermissionMultiParams extends TxParams {
102
140
delegate : string ;
103
141
modules : string [ ] ;
@@ -134,22 +172,35 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
134
172
this . contract = contract ;
135
173
}
136
174
175
+ /**
176
+ * Mapping used to hold the permissions on the modules provided to delegate
177
+ */
137
178
public perms = async ( params : PermParams ) => {
138
179
assert . isETHAddressHex ( 'module' , params . module ) ;
139
180
assert . isETHAddressHex ( 'delegate' , params . delegate ) ;
140
181
return ( await this . contract ) . perms . callAsync ( params . module , params . delegate , stringToBytes32 ( params . permission ) ) ;
141
182
} ;
142
183
143
- public allDelegates = async ( params : DelegateIndexParams ) => {
184
+ /**
185
+ * Array to track all delegates
186
+ */
187
+ public allDelegates = async ( params : DelegateIndexParams ) : Promise < string > => {
144
188
return ( await this . contract ) . allDelegates . callAsync ( numberToBigNumber ( params . delegateIndex ) ) ;
145
189
} ;
146
190
147
- public delegateDetails = async ( params : DelegateParams ) => {
191
+ /**
192
+ * Mapping to hold the delegate details
193
+ */
194
+ public delegateDetails = async ( params : DelegateParams ) : Promise < string > => {
148
195
assert . isETHAddressHex ( 'delegate' , params . delegate ) ;
149
196
return ( await this . contract ) . delegateDetails . callAsync ( params . delegate ) ;
150
197
} ;
151
198
152
- public checkPermission = async ( params : PermParams ) => {
199
+ /**
200
+ * Used to check the permission on delegate corresponds to module contract address
201
+ * @return bool if permission is valid
202
+ */
203
+ public checkPermission = async ( params : PermParams ) : Promise < boolean > => {
153
204
assert . isETHAddressHex ( 'delegate' , params . delegate ) ;
154
205
assert . isETHAddressHex ( 'module' , params . module ) ;
155
206
return ( await this . contract ) . checkPermission . callAsync (
@@ -159,6 +210,11 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
159
210
) ;
160
211
} ;
161
212
213
+ /**
214
+ * Used to add a delegate
215
+ * @param delegate Ethereum address of the delegate
216
+ * @param details Details about the delegate i.e `Belongs to financial firm`
217
+ */
162
218
public addDelegate = async ( params : AddDelegateParams ) => {
163
219
assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
164
220
assert . isNonZeroETHAddressHex ( 'delegate' , params . delegate ) ;
@@ -172,6 +228,9 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
172
228
) ;
173
229
} ;
174
230
231
+ /**
232
+ * Used to delete a delegate
233
+ */
175
234
public deleteDelegate = async ( params : DelegateTxParams ) => {
176
235
assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
177
236
assert . isNonZeroETHAddressHex ( 'delegate' , params . delegate ) ;
@@ -183,11 +242,18 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
183
242
) ;
184
243
} ;
185
244
186
- public checkDelegate = async ( params : DelegateParams ) => {
245
+ /**
246
+ * Used to check if an address is a delegate or not
247
+ * @return boolean if address is delegate
248
+ */
249
+ public checkDelegate = async ( params : DelegateParams ) : Promise < boolean > => {
187
250
assert . isNonZeroETHAddressHex ( 'delegate' , params . delegate ) ;
188
251
return ( await this . contract ) . checkDelegate . callAsync ( params . delegate ) ;
189
252
} ;
190
253
254
+ /**
255
+ * Used to provide/change the permission to the delegate corresponds to the module contract
256
+ */
191
257
public changePermission = async ( params : ChangePermissionParams ) => {
192
258
assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
193
259
assert . isNonZeroETHAddressHex ( 'delegate' , params . delegate ) ;
@@ -202,6 +268,9 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
202
268
) ;
203
269
} ;
204
270
271
+ /**
272
+ * Used to change one or more permissions for a single delegate at once
273
+ */
205
274
public changePermissionMulti = async ( params : ChangePermissionMultiParams ) => {
206
275
assert . assert ( await this . isCallerAllowed ( params . txData , Perm . Admin ) , 'Caller is not allowed' ) ;
207
276
assert . isNonZeroETHAddressHex ( 'delegate' , params . delegate ) ;
@@ -219,12 +288,23 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
219
288
) ;
220
289
} ;
221
290
222
- public getAllDelegatesWithPerm = async ( params : GetAllDelegatesWithPermParams ) => {
291
+ /**
292
+ * Used to return all delegates with a given permission and module
293
+ * @return delegates address array
294
+ */
295
+ public getAllDelegatesWithPerm = async ( params : GetAllDelegatesWithPermParams ) : Promise < string [ ] > => {
223
296
assert . isETHAddressHex ( 'module' , params . module ) ;
224
297
return ( await this . contract ) . getAllDelegatesWithPerm . callAsync ( params . module , stringToBytes32 ( params . perm ) ) ;
225
298
} ;
226
299
227
- public getAllModulesAndPermsFromTypes = async ( params : GetAllModulesAndPermsFromTypesParams ) => {
300
+ /**
301
+ * Used to return all permission of a single or multiple module
302
+ * @return address[] the address array of Modules this delegate has permission
303
+ * @return bytes32[] the permission array of the corresponding Modules
304
+ */
305
+ public getAllModulesAndPermsFromTypes = async (
306
+ params : GetAllModulesAndPermsFromTypesParams ,
307
+ ) : Promise < PermissionsPerModule [ ] > => {
228
308
assert . isETHAddressHex ( 'delegate' , params . delegate ) ;
229
309
const result = await ( await this . contract ) . getAllModulesAndPermsFromTypes . callAsync ( params . delegate , params . types ) ;
230
310
// [module1, module1, module2, module3, module3], [perm1, perm2, perm1, perm2, perm3]
@@ -243,6 +323,10 @@ export default class GeneralPermissionManagerWrapper extends ModuleWrapper {
243
323
return typedResult ;
244
324
} ;
245
325
326
+ /**
327
+ * Used to get all delegates
328
+ * @return delegate addresses array
329
+ */
246
330
public getAllDelegates = async ( ) => {
247
331
return ( await this . contract ) . getAllDelegates . callAsync ( ) ;
248
332
} ;
0 commit comments