1
1
import { RedundantSubprovider , RPCSubprovider , Web3ProviderEngine } from '@0x/subproviders' ;
2
2
import { USDTieredSTOEvents , BigNumber } from '@polymathnetwork/abi-wrappers' ;
3
3
import { ApiConstructorParams , PolymathAPI } from '../src/PolymathAPI' ;
4
- import { bytes32ToString } from '../src/utils/convert' ;
5
4
import { FundRaiseType , ModuleName , ModuleType } from '../src' ;
6
5
import ModuleFactoryWrapper from '../src/contract_wrappers/modules/module_factory_wrapper' ;
7
6
@@ -38,26 +37,25 @@ window.addEventListener('load', async () => {
38
37
spender : await polymathAPI . securityTokenRegistry . address ( ) ,
39
38
value : tickerFee ,
40
39
} ) ;
41
-
42
40
// Register a ticker
43
41
await polymathAPI . securityTokenRegistry . registerTicker ( {
44
42
ticker : ticker ! ,
45
43
tokenName : tokenName ! ,
46
44
} ) ;
47
-
48
45
// Get the st launch fee and approve the security token registry to spend
49
46
const securityTokenLaunchFee = await polymathAPI . securityTokenRegistry . getSecurityTokenLaunchFee ( ) ;
50
47
await polymathAPI . polyToken . approve ( {
51
48
spender : await polymathAPI . securityTokenRegistry . address ( ) ,
52
49
value : securityTokenLaunchFee ,
53
50
} ) ;
54
51
55
- // Generate a security token
56
- await polymathAPI . securityTokenRegistry . generateSecurityToken ( {
52
+ await polymathAPI . securityTokenRegistry . generateNewSecurityToken ( {
57
53
name : tokenName ! ,
58
54
ticker : ticker ! ,
59
- details : 'http://' ,
60
- divisible : false ,
55
+ tokenDetails : 'details' ,
56
+ divisible : true ,
57
+ treasuryWallet : myAddress ,
58
+ protocolVersion : '0' ,
61
59
} ) ;
62
60
63
61
const moduleStringName = 'USDTieredSTO' ;
@@ -78,14 +76,10 @@ window.addEventListener('load', async () => {
78
76
} ) ;
79
77
const resultNames = await Promise . all ( names ) ;
80
78
81
- const finalNames = resultNames . map ( name => {
82
- return bytes32ToString ( name ) ;
83
- } ) ;
84
- const index = finalNames . indexOf ( moduleStringName ) ;
79
+ const index = resultNames . indexOf ( moduleStringName ) ;
85
80
86
81
// Create a Security Token Instance
87
82
const tickerSecurityTokenInstance = await polymathAPI . tokenFactory . getSecurityTokenInstanceFromTicker ( ticker ! ) ;
88
-
89
83
const factory = await polymathAPI . moduleFactory . getModuleFactory ( modules [ index ] ) ;
90
84
const setupCost = await factory . setupCostInPoly ( ) ;
91
85
@@ -94,15 +88,34 @@ window.addEventListener('load', async () => {
94
88
value : setupCost ,
95
89
} ) ;
96
90
97
- // Call to add module
91
+ // Get General TM Address to whitelist transfers
92
+ const generalTMAddress = ( await tickerSecurityTokenInstance . getModulesByName ( {
93
+ moduleName : ModuleName . GeneralTransferManager ,
94
+ } ) ) [ 0 ] ;
95
+ const generalTM = await polymathAPI . moduleFactory . getModuleInstance ( {
96
+ name : ModuleName . GeneralTransferManager ,
97
+ address : generalTMAddress ,
98
+ } ) ;
99
+ await generalTM . modifyKYCData ( {
100
+ investor : myAddress ,
101
+ canSendAfter : new Date ( ) ,
102
+ canReceiveAfter : new Date ( ) ,
103
+ expiryTime : new Date ( 2020 , 0 ) ,
104
+ txData : {
105
+ from : await polymathAPI . getAccount ( ) ,
106
+ } ,
107
+ } ) ;
108
+
109
+ // Call to add usd tiered sto module
110
+ const startTime = new Date ( Date . now ( ) + 10000 ) ;
98
111
const usdTieredResult = await tickerSecurityTokenInstance . addModule ( {
99
112
moduleName,
100
113
address : modules [ index ] ,
101
114
maxCost : setupCost ,
102
115
budget : setupCost ,
103
116
archived : false ,
104
117
data : {
105
- startTime : new Date ( 2030 , 1 ) ,
118
+ startTime,
106
119
endTime : new Date ( 2031 , 1 ) ,
107
120
ratePerTier : [ new BigNumber ( 10 ) , new BigNumber ( 10 ) ] ,
108
121
ratePerTierDiscountPoly : [ new BigNumber ( 8 ) , new BigNumber ( 9 ) ] ,
@@ -117,16 +130,13 @@ window.addEventListener('load', async () => {
117
130
} ,
118
131
} ) ;
119
132
console . log ( usdTieredResult ) ;
120
-
121
133
const usdTieredAddress = ( await tickerSecurityTokenInstance . getModulesByName ( {
122
134
moduleName : ModuleName . UsdTieredSTO ,
123
135
} ) ) [ 0 ] ;
124
136
const usdTiered = await polymathAPI . moduleFactory . getModuleInstance ( {
125
137
name : ModuleName . UsdTieredSTO ,
126
138
address : usdTieredAddress ,
127
139
} ) ;
128
- const buyWithETH = await usdTiered . buyWithETH ( { value : new BigNumber ( 1 ) , beneficiary : myAddress } ) ;
129
- console . log ( buyWithETH ) ;
130
140
131
141
// Subscribe to event of update dividend dates
132
142
await usdTiered . subscribeAsync ( {
@@ -136,7 +146,7 @@ window.addEventListener('load', async () => {
136
146
if ( error ) {
137
147
console . log ( error ) ;
138
148
} else {
139
- console . log ( 'Dividend Date Updated! ' , log ) ;
149
+ console . log ( 'STO Tiers updated ' , log ) ;
140
150
}
141
151
} ,
142
152
} ) ;
@@ -149,5 +159,27 @@ window.addEventListener('load', async () => {
149
159
tokensPerTierDiscountPoly : [ new BigNumber ( 4 ) , new BigNumber ( 4 ) ] ,
150
160
} ) ;
151
161
162
+ const sleep = ( milliseconds : number ) => {
163
+ console . log ( 'Sleeping until the STO starts' ) ;
164
+ return new Promise ( resolve => setTimeout ( resolve , milliseconds ) )
165
+ } ;
166
+ await sleep ( 10000 ) ;
167
+
168
+ // Subscribe to event of update dividend dates
169
+ await usdTiered . subscribeAsync ( {
170
+ eventName : USDTieredSTOEvents . TokenPurchase ,
171
+ indexFilterValues : { } ,
172
+ callback : async ( error , log ) => {
173
+ if ( error ) {
174
+ console . log ( error ) ;
175
+ } else {
176
+ console . log ( 'Token Purchased!' , log ) ;
177
+ }
178
+ } ,
179
+ } ) ;
180
+
181
+ await usdTiered . buyWithETH ( { value : new BigNumber ( 1 ) , beneficiary : myAddress } ) ;
182
+ console . log ( 'BuyWithETH complete' ) ;
183
+
152
184
usdTiered . unsubscribeAll ( ) ;
153
185
} ) ;
0 commit comments