1
1
/* eslint-disable @typescript-eslint/unbound-method */
2
2
import { HardhatRuntimeEnvironment } from "hardhat/types" ;
3
- import { DeployFunction } from "hardhat-deploy/types" ;
3
+ import {
4
+ DeployFunction ,
5
+ DeployOptions ,
6
+ DeployResult ,
7
+ } from "hardhat-deploy/types" ;
8
+ import { MockERC20Dec18 , EntitiesRegistry } from "../typechain" ;
9
+ import { ethers } from "hardhat" ;
4
10
import {
5
11
kindsArr ,
6
12
eip712name ,
@@ -9,8 +15,56 @@ import {
9
15
protocolFee ,
10
16
retailerFee ,
11
17
minDeposit ,
18
+ createSupplierId ,
19
+ kinds ,
12
20
} from "../utils" ;
13
21
22
+ const setupToken = async (
23
+ proxySettings : { owner : string ; proxyContract : string } ,
24
+ owner : string ,
25
+ deploy : ( name : string , options : DeployOptions ) => Promise < DeployResult > ,
26
+ name : string ,
27
+ contractName : string ,
28
+ tokenName : string ,
29
+ tokenSymbol : string ,
30
+ networkName : string
31
+ ) : Promise < DeployResult > => {
32
+ const options : DeployOptions = {
33
+ contract : contractName ,
34
+ proxy : {
35
+ ...proxySettings ,
36
+ execute : {
37
+ methodName : "initialize" ,
38
+ args : [ tokenName , tokenSymbol , owner ] ,
39
+ } ,
40
+ } ,
41
+ from : owner ,
42
+ log : true ,
43
+ autoMine : true ,
44
+ } ;
45
+ const token = await deploy ( name , options ) ;
46
+
47
+ if ( token . newlyDeployed ) {
48
+ console . log (
49
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
50
+ `${ tokenSymbol } token deployed at ${ token . address } using ${ token . receipt ?. gasUsed } gas`
51
+ ) ;
52
+ }
53
+
54
+ if ( networkName === "hardhat" ) {
55
+ const tokenContract = < MockERC20Dec18 > await ethers . getContract ( name ) ;
56
+ const signer = await ethers . getSigner ( owner ) ;
57
+ tokenContract . connect ( signer ) ;
58
+ await Promise . all (
59
+ [ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" ] . map ( ( addr ) =>
60
+ tokenContract . mint ( addr , "1000000000000000000000000" )
61
+ )
62
+ ) ;
63
+ }
64
+
65
+ return token ;
66
+ } ;
67
+
14
68
const func : DeployFunction = async function ( hre : HardhatRuntimeEnvironment ) {
15
69
const { network, deployments, getNamedAccounts } = hre ;
16
70
@@ -26,6 +80,56 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
26
80
proxyContract : "OpenZeppelinTransparentProxy" ,
27
81
} ;
28
82
83
+ // Setup testing stable coins
84
+
85
+ // STABLE Decimals 6 no permit
86
+ await setupToken (
87
+ PROXY_SETTINGS_WITH_UPGRADE ,
88
+ owner ,
89
+ deploy ,
90
+ "STABLE6" ,
91
+ "MockERC20Dec6" ,
92
+ "Stable6NoPermit" ,
93
+ "STABLE6" ,
94
+ network . name
95
+ ) ;
96
+
97
+ // STABLE Decimals 6 with permit
98
+ await setupToken (
99
+ PROXY_SETTINGS_WITH_UPGRADE ,
100
+ owner ,
101
+ deploy ,
102
+ "STABLE6PERMIT" ,
103
+ "MockERC20Dec6Permit" ,
104
+ "Stable6Permit" ,
105
+ "STABLE6PERMIT" ,
106
+ network . name
107
+ ) ;
108
+
109
+ // STABLE Decimals 18 no permit
110
+ await setupToken (
111
+ PROXY_SETTINGS_WITH_UPGRADE ,
112
+ owner ,
113
+ deploy ,
114
+ "STABLE18" ,
115
+ "MockERC20Dec18" ,
116
+ "Stable18NoPermit" ,
117
+ "STABLE18" ,
118
+ network . name
119
+ ) ;
120
+
121
+ // STABLE Decimals 18 with permit
122
+ await setupToken (
123
+ PROXY_SETTINGS_WITH_UPGRADE ,
124
+ owner ,
125
+ deploy ,
126
+ "STABLE18PERMIT" ,
127
+ "MockERC20Dec18Permit" ,
128
+ "Stable18Permit" ,
129
+ "STABLE18PERMIT" ,
130
+ network . name
131
+ ) ;
132
+
29
133
// Simple ERC20 token
30
134
const erc20 = await deploy ( "MockERC20Dec18" , {
31
135
proxy : {
@@ -66,6 +170,19 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
66
170
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
67
171
`MockERC20Dec18Permit (lif) was deployed at: ${ lif . address } using ${ lif . receipt ?. gasUsed } gas`
68
172
) ;
173
+
174
+ if ( network . name === "hardhat" ) {
175
+ const lifContract = < MockERC20Dec18 > (
176
+ await ethers . getContract ( "MockERC20Dec18Permit" )
177
+ ) ;
178
+ const signer = await ethers . getSigner ( owner ) ;
179
+ lifContract . connect ( signer ) ;
180
+ await Promise . all (
181
+ [ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" ] . map ( ( addr ) =>
182
+ lifContract . mint ( addr , "1000000000000000000000000" )
183
+ )
184
+ ) ;
185
+ }
69
186
}
70
187
71
188
// Protocol Config
@@ -117,6 +234,47 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
117
234
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
118
235
`EntitiesRegistry was deployed at: ${ entities . address } using ${ entities . receipt ?. gasUsed } gas`
119
236
) ;
237
+
238
+ if ( network . name === "hardhat" ) {
239
+ const supplierOwner = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" ;
240
+ const supplierSalt =
241
+ "0x4c51462692236a1cc8dcde78386cb02a1a59828a92932336770a08cae542c2e8" ;
242
+ const supplierId = createSupplierId (
243
+ "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" ,
244
+ supplierSalt
245
+ ) ;
246
+
247
+ const entities = < EntitiesRegistry > (
248
+ await ethers . getContract ( "EntitiesRegistry" )
249
+ ) ;
250
+ const signer = await ethers . getSigner ( owner ) ;
251
+ entities . connect ( signer ) ;
252
+
253
+ await entities . register (
254
+ kinds . supplier ,
255
+ supplierSalt ,
256
+ "0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
257
+ ) ;
258
+ console . log ( `Registered supplier #${ supplierId } ` ) ;
259
+
260
+ const supplierSigner = await ethers . getSigner ( supplierOwner ) ;
261
+ entities . connect ( supplierSigner ) ;
262
+
263
+ const lifContract = < MockERC20Dec18 > (
264
+ await ethers . getContract ( "MockERC20Dec18Permit" )
265
+ ) ;
266
+ lifContract . connect ( supplierSigner ) ;
267
+
268
+ await lifContract . approve ( entities . address , minDeposit ) ;
269
+
270
+ await entities [ "addDeposit(bytes32,uint256)" ] ( supplierId , minDeposit ) ;
271
+
272
+ console . log ( `LIF deposit added for supplier #${ supplierId } ` ) ;
273
+
274
+ await entities . toggleEntity ( supplierId ) ;
275
+
276
+ console . log ( `Enabled supplier #${ supplierId } ` ) ;
277
+ }
120
278
}
121
279
122
280
// Market
0 commit comments