@@ -20,6 +20,20 @@ import {
2020 VestingEscrowWallet ,
2121 RestrictedPartialSaleTransferManager ,
2222 Perm ,
23+ isCappedSTO ,
24+ isCappedSTO_3_0_0 ,
25+ isUSDTieredSTO ,
26+ isUSDTieredSTO_3_0_0 ,
27+ isGeneralPermissionManager ,
28+ isGeneralPermissionManager_3_0_0 ,
29+ isGeneralTransferManager ,
30+ isBlacklistTransferManager ,
31+ isLockUpTransferManager ,
32+ isCountTransferManager ,
33+ isManualApprovalTransferManager ,
34+ isPercentageTransferManager ,
35+ isVolumeRestrictionTransferManager ,
36+ isRestrictedPartialSaleTransferManager ,
2337} from '@polymathnetwork/contract-wrappers' ;
2438import { range , flatten , includes } from 'lodash' ;
2539import P from 'bluebird' ;
@@ -244,6 +258,63 @@ export class PolymathBase extends PolymathAPI {
244258 } ) ;
245259 } ;
246260
261+ public getTreasuryWallet = async ( { module } : { module : Module } ) => {
262+ const stAddress = await module . securityToken ( ) ;
263+ const token = await this . tokenFactory . getSecurityTokenInstanceFromAddress ( stAddress ) ;
264+ const defaultWallet = await token . getTreasuryWallet ( ) ;
265+
266+ if ( isCappedSTO ( module ) ) {
267+ if ( isCappedSTO_3_0_0 ( module ) ) {
268+ return defaultWallet ;
269+ }
270+ }
271+
272+ if ( isUSDTieredSTO ( module ) ) {
273+ if ( isUSDTieredSTO_3_0_0 ( module ) ) {
274+ const wallet = await module . treasuryWallet ( ) ;
275+ return wallet === '0x0000000000000000000000000000000000000000' ? defaultWallet : wallet ;
276+ }
277+ }
278+
279+ if ( isGeneralPermissionManager ( module ) ) {
280+ return defaultWallet ;
281+ }
282+
283+ if ( isGeneralTransferManager ( module ) ) {
284+ return defaultWallet ;
285+ }
286+
287+ if ( isBlacklistTransferManager ( module ) ) {
288+ return defaultWallet ;
289+ }
290+
291+ if ( isLockUpTransferManager ( module ) ) {
292+ return defaultWallet ;
293+ }
294+
295+ if ( isCountTransferManager ( module ) ) {
296+ return defaultWallet ;
297+ }
298+
299+ if ( isManualApprovalTransferManager ( module ) ) {
300+ return defaultWallet ;
301+ }
302+
303+ if ( isPercentageTransferManager ( module ) ) {
304+ return defaultWallet ;
305+ }
306+
307+ if ( isVolumeRestrictionTransferManager ( module ) ) {
308+ return defaultWallet ;
309+ }
310+
311+ if ( isRestrictedPartialSaleTransferManager ( module ) ) {
312+ return defaultWallet ;
313+ }
314+
315+ return module . getTreasuryWallet ( ) ;
316+ } ;
317+
247318 public getModuleAddressesByName = async (
248319 { symbol, moduleName } : GetModuleAddressesByNameParams ,
249320 opts ?: GetModuleAddressesByNameOpts
0 commit comments