1
+ import { Prettify } from "../helpers" ;
1
2
import { SProxy } from "../proxy" ;
2
- import { DeployContractTxParams } from "../proxy/proxy" ;
3
3
import { Account , Block } from "../proxy/sproxy" ;
4
4
import { DummySigner , Signer } from "./signer" ;
5
5
import { startSimulnet } from "./simulnet" ;
6
6
import { isContractAddress , numberToBytesAddress } from "./utils" ;
7
- import { World , Contract , Wallet , expandCode } from "./world" ;
7
+ import {
8
+ World ,
9
+ Contract ,
10
+ Wallet ,
11
+ expandCode ,
12
+ WorldDeployContractParams ,
13
+ } from "./world" ;
8
14
9
15
let walletCounter = 0 ;
10
16
let contractCounter = 0 ;
@@ -13,7 +19,7 @@ export class SWorld extends World {
13
19
proxy : SProxy ;
14
20
sysAcc : SContract ;
15
21
16
- constructor ( { proxy, gasPrice } : { proxy : SProxy ; gasPrice ? : number } ) {
22
+ constructor ( { proxy, gasPrice } : { proxy : SProxy ; gasPrice : number } ) {
17
23
super ( { proxy, chainId : "S" , gasPrice } ) ;
18
24
this . proxy = proxy ;
19
25
this . sysAcc = new SContract ( {
@@ -23,7 +29,7 @@ export class SWorld extends World {
23
29
}
24
30
25
31
static new ( { proxyUrl, gasPrice } : { proxyUrl : string ; gasPrice ?: number } ) {
26
- return new SWorld ( { proxy : new SProxy ( proxyUrl ) , gasPrice } ) ;
32
+ return new SWorld ( { proxy : new SProxy ( proxyUrl ) , gasPrice : gasPrice ?? 0 } ) ;
27
33
}
28
34
29
35
static async start ( {
@@ -46,7 +52,7 @@ export class SWorld extends World {
46
52
return new SContract ( { address, proxy : this . proxy } ) ;
47
53
}
48
54
49
- async createWallet ( account : Omit < Account , "address" > = { } ) {
55
+ async createWallet ( account : SWorldCreateWalletAccount = { } ) {
50
56
walletCounter += 1 ;
51
57
const address = numberToBytesAddress ( walletCounter , false ) ;
52
58
const wallet = new SWallet ( {
@@ -59,7 +65,7 @@ export class SWorld extends World {
59
65
return wallet ;
60
66
}
61
67
62
- createContract ( account : Omit < Account , "address" > = { } ) {
68
+ createContract ( account : SWorldCreateContractAccount = { } ) {
63
69
return createContract ( this . proxy , account ) ;
64
70
}
65
71
@@ -84,24 +90,22 @@ export class SWallet extends Wallet {
84
90
signer : Signer ;
85
91
proxy : SProxy ;
86
92
chainId : string ;
87
- gasPrice ? : number ;
93
+ gasPrice : number ;
88
94
} ) {
89
95
super ( { signer, proxy, chainId, gasPrice } ) ;
90
96
this . proxy = proxy ;
91
97
}
92
98
93
- setAccount ( account : Omit < Account , "address" > ) {
99
+ setAccount ( account : SWalletSetAccountAccount ) {
94
100
return setAccount ( this . proxy , { address : this , ...account } ) ;
95
101
}
96
102
97
- createContract ( account : Omit < Account , "address" | "owner" > ) {
103
+ createContract ( account : SWalletCreateContractAccount = { } ) {
98
104
return createContract ( this . proxy , { ...account , owner : this } ) ;
99
105
}
100
106
101
- deployContract (
102
- txParams : Omit < DeployContractTxParams , "sender" | "nonce" | "chainId" > ,
103
- ) {
104
- return super . deployContract ( txParams ) . then ( ( data ) => ( {
107
+ deployContract ( params : WorldDeployContractParams ) {
108
+ return super . deployContract ( params ) . then ( ( data ) => ( {
105
109
...data ,
106
110
contract : new SContract ( {
107
111
address : data . address ,
@@ -125,7 +129,7 @@ export class SContract extends Contract {
125
129
this . proxy = proxy ;
126
130
}
127
131
128
- setAccount ( account : Omit < Account , "address" > ) {
132
+ setAccount ( account : SContractSetAccountAccount ) {
129
133
return setAccount ( this . proxy , { address : this , ...account } ) ;
130
134
}
131
135
}
@@ -151,3 +155,15 @@ const createContract = async (
151
155
await contract . setAccount ( account ) ;
152
156
return contract ;
153
157
} ;
158
+
159
+ type SWorldCreateWalletAccount = Prettify < Omit < Account , "address" > > ;
160
+
161
+ type SWorldCreateContractAccount = Prettify < Omit < Account , "address" > > ;
162
+
163
+ type SWalletSetAccountAccount = Prettify < Omit < Account , "address" > > ;
164
+
165
+ type SWalletCreateContractAccount = Prettify <
166
+ Omit < Account , "address" | "owner" >
167
+ > ;
168
+
169
+ type SContractSetAccountAccount = Omit < Account , "address" > ;
0 commit comments