/
masa.ts
67 lines (61 loc) · 1.57 KB
/
masa.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
import {
createRandomWallet,
Environment,
environments,
Masa,
NetworkName,
} from '@masa-finance/masa-sdk';
import { ethers, providers } from 'ethers';
import { ArweaveConfig } from '../provider';
export const getWeb3Provider = (): providers.Web3Provider | undefined => {
if (
typeof window !== 'undefined' &&
typeof window?.ethereum !== 'undefined'
) {
return new providers.Web3Provider(
window?.ethereum as unknown as providers.ExternalProvider
);
}
return;
};
export const createNewMasa = ({
signer,
environmentName,
networkName = 'unknown',
arweaveConfig,
verbose,
}: {
signer: ethers.Signer | null;
environmentName: string;
networkName?: NetworkName;
arweaveConfig?: ArweaveConfig;
verbose: boolean;
}): Masa | undefined => {
const newSigner: ethers.Signer | null = signer
? signer
: createRandomWallet(getWeb3Provider());
if (!newSigner) {
console.error('Unable to create signer!');
return;
}
const environment = environments.find(
(environment: Environment) => environment.name === environmentName
);
if (!environment) {
console.error(`Unable to find environment ${environmentName}`);
return;
}
return new Masa({
wallet: newSigner,
apiUrl: environment.apiUrl,
networkName,
environment: environment.environment,
arweave: {
host: arweaveConfig?.host || 'arweave.net',
port: parseInt(arweaveConfig?.port || '443'),
protocol: arweaveConfig?.protocol || 'https',
logging: (!!arweaveConfig?.logging as boolean) || false,
},
verbose,
});
};