/
setup.ts
92 lines (78 loc) · 2.19 KB
/
setup.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import {
deployNftMinterSCabiRelativeFilePath,
deployNftMinterSCabiFileUrl,
deployNftMinterSCwasmRelativeFilePath,
deployNftMinterSCwasmFileUrl,
deploySftMinterSCabiRelativeFilePath,
deploySftMinterSCabiFileUrl,
deploySftMinterSCwasmRelativeFilePath,
deploySftMinterSCwasmFileUrl,
pemKeyFileName,
} from './config';
import {
getFileContents,
getAbi,
getScWasmCode,
createSmartContractInstance,
getNetworkProvider,
prepareUserAccount,
prepareUserSigner,
} from './utils';
export const publicEndpointSetup = async () => {
// PEM wallet key file
const walletPemKey = getFileContents(pemKeyFileName, { isJSON: false });
// Provider type based on initial configuration
const provider = getNetworkProvider();
const userAccount = await prepareUserAccount(walletPemKey);
const userAccountOnNetwork = await provider.getAccount(userAccount.address);
userAccount.update(userAccountOnNetwork);
const signer = prepareUserSigner(walletPemKey);
return {
signer,
userAccount,
provider,
};
};
export const setupNftSc = async (smartContractAddress?: string) => {
const abiFile = await getAbi(
deployNftMinterSCabiRelativeFilePath,
deployNftMinterSCabiFileUrl
);
const scWasmCode = await getScWasmCode(
deployNftMinterSCwasmRelativeFilePath,
deployNftMinterSCwasmFileUrl
);
// Smart contract instance - SC responsible for minting
const smartContract = createSmartContractInstance(
abiFile,
smartContractAddress
);
const publicSetup = await publicEndpointSetup();
return {
scWasmCode,
smartContract,
...publicSetup,
};
};
export const setupSftSc = async (smartContractAddress?: string) => {
// PEM wallet key file
const abiFile = await getAbi(
deploySftMinterSCabiRelativeFilePath,
deploySftMinterSCabiFileUrl
);
const scWasmCode = await getScWasmCode(
deploySftMinterSCwasmRelativeFilePath,
deploySftMinterSCwasmFileUrl
);
// Smart contract instance - SC responsible for minting
const smartContract = createSmartContractInstance(
abiFile,
smartContractAddress
);
const publicSetup = await publicEndpointSetup();
return {
scWasmCode,
smartContract,
...publicSetup,
};
};