@hyperlane-xyz/cli 1.4.2-beta0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +38 -0
- package/dist/cli.js.map +1 -0
- package/dist/src/commands/chains.d.ts +6 -0
- package/dist/src/commands/chains.d.ts.map +1 -0
- package/dist/src/commands/chains.js +59 -0
- package/dist/src/commands/chains.js.map +1 -0
- package/dist/src/commands/config.d.ts +6 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +94 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +6 -0
- package/dist/src/commands/deploy.d.ts.map +1 -0
- package/dist/src/commands/deploy.js +72 -0
- package/dist/src/commands/deploy.js.map +1 -0
- package/dist/src/commands/options.d.ts +6 -0
- package/dist/src/commands/options.d.ts.map +1 -0
- package/dist/src/commands/options.js +19 -0
- package/dist/src/commands/options.js.map +1 -0
- package/dist/src/commands/send.d.ts +6 -0
- package/dist/src/commands/send.d.ts.map +1 -0
- package/dist/src/commands/send.js +110 -0
- package/dist/src/commands/send.js.map +1 -0
- package/dist/src/configs.d.ts +284 -0
- package/dist/src/configs.d.ts.map +1 -0
- package/dist/src/configs.js +110 -0
- package/dist/src/configs.js.map +1 -0
- package/dist/src/consts.d.ts +4 -0
- package/dist/src/consts.d.ts.map +1 -0
- package/dist/src/consts.js +4 -0
- package/dist/src/consts.js.map +1 -0
- package/dist/src/context.d.ts +373 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +24 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/deploy/TestRecipientDeployer.d.ts +20 -0
- package/dist/src/deploy/TestRecipientDeployer.d.ts.map +1 -0
- package/dist/src/deploy/TestRecipientDeployer.js +35 -0
- package/dist/src/deploy/TestRecipientDeployer.js.map +1 -0
- package/dist/src/deploy/core.d.ts +6 -0
- package/dist/src/deploy/core.d.ts.map +1 -0
- package/dist/src/deploy/core.js +264 -0
- package/dist/src/deploy/core.js.map +1 -0
- package/dist/src/deploy/types.d.ts +21 -0
- package/dist/src/deploy/types.d.ts.map +1 -0
- package/dist/src/deploy/types.js +2 -0
- package/dist/src/deploy/types.js.map +1 -0
- package/dist/src/deploy/utils.d.ts +10 -0
- package/dist/src/deploy/utils.d.ts.map +1 -0
- package/dist/src/deploy/utils.js +24 -0
- package/dist/src/deploy/utils.js.map +1 -0
- package/dist/src/deploy/warp.d.ts +8 -0
- package/dist/src/deploy/warp.d.ts.map +1 -0
- package/dist/src/deploy/warp.js +230 -0
- package/dist/src/deploy/warp.js.map +1 -0
- package/dist/src/logger.d.ts +12 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +25 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/send/message.d.ts +10 -0
- package/dist/src/send/message.d.ts.map +1 -0
- package/dist/src/send/message.js +66 -0
- package/dist/src/send/message.js.map +1 -0
- package/dist/src/send/transfer.d.ts +14 -0
- package/dist/src/send/transfer.d.ts.map +1 -0
- package/dist/src/send/transfer.js +95 -0
- package/dist/src/send/transfer.js.map +1 -0
- package/dist/src/utils/balances.d.ts +6 -0
- package/dist/src/utils/balances.d.ts.map +1 -0
- package/dist/src/utils/balances.js +23 -0
- package/dist/src/utils/balances.js.map +1 -0
- package/dist/src/utils/files.d.ts +19 -0
- package/dist/src/utils/files.d.ts.map +1 -0
- package/dist/src/utils/files.js +100 -0
- package/dist/src/utils/files.js.map +1 -0
- package/dist/src/utils/keys.d.ts +4 -0
- package/dist/src/utils/keys.d.ts.map +1 -0
- package/dist/src/utils/keys.js +17 -0
- package/dist/src/utils/keys.js.map +1 -0
- package/dist/src/utils/time.d.ts +2 -0
- package/dist/src/utils/time.d.ts.map +1 -0
- package/dist/src/utils/time.js +5 -0
- package/dist/src/utils/time.js.map +1 -0
- package/examples/chain-config.yaml +44 -0
- package/examples/contract-artifacts.yaml +20 -0
- package/examples/multisig-ism.yaml +20 -0
- package/examples/warp-tokens.yaml +23 -0
- package/package.json +57 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { Separator, checkbox, confirm, input } from '@inquirer/prompts';
|
|
2
|
+
import select from '@inquirer/select';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { ethers } from 'ethers';
|
|
5
|
+
import { GasOracleContractType, HyperlaneCoreDeployer, HyperlaneIgpDeployer, HyperlaneIsmFactory, HyperlaneIsmFactoryDeployer, ModuleType, agentStartBlocks, buildAgentConfig, defaultMultisigIsmConfigs, mainnetChainsMetadata, multisigIsmVerificationCost, objFilter, objMerge, serializeContractsMap, testnetChainsMetadata, } from '@hyperlane-xyz/sdk';
|
|
6
|
+
import { readDeploymentArtifacts, readMultisigConfig } from '../configs.js';
|
|
7
|
+
import { MINIMUM_CORE_DEPLOY_BALANCE } from '../consts.js';
|
|
8
|
+
import { getDeployerContext, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
|
|
9
|
+
import { log, logBlue, logGray, logGreen } from '../logger.js';
|
|
10
|
+
import { prepNewArtifactsFiles, writeJson } from '../utils/files.js';
|
|
11
|
+
import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
|
|
12
|
+
import { runPreflightChecks } from './utils.js';
|
|
13
|
+
export async function runCoreDeploy({ key, chainConfigPath, outPath, }) {
|
|
14
|
+
const { customChains, multiProvider, signer } = getDeployerContext(key, chainConfigPath);
|
|
15
|
+
const { local, remotes, allChains } = await runChainSelectionStep(customChains);
|
|
16
|
+
const artifacts = await runArtifactStep(allChains);
|
|
17
|
+
const multisigConfig = await runIsmStep(allChains);
|
|
18
|
+
const deploymentParams = {
|
|
19
|
+
local,
|
|
20
|
+
remotes,
|
|
21
|
+
signer,
|
|
22
|
+
multiProvider,
|
|
23
|
+
artifacts,
|
|
24
|
+
multisigConfig,
|
|
25
|
+
outPath,
|
|
26
|
+
};
|
|
27
|
+
await runDeployPlanStep(deploymentParams);
|
|
28
|
+
await runPreflightChecks({
|
|
29
|
+
...deploymentParams,
|
|
30
|
+
minBalanceWei: MINIMUM_CORE_DEPLOY_BALANCE,
|
|
31
|
+
});
|
|
32
|
+
await executeDeploy(deploymentParams);
|
|
33
|
+
}
|
|
34
|
+
async function runChainSelectionStep(customChains) {
|
|
35
|
+
const chainsToChoices = (chains) => chains.map((c) => ({ name: c.name, value: c.name }));
|
|
36
|
+
const choices = [
|
|
37
|
+
new Separator('--Custom Chains--'),
|
|
38
|
+
...chainsToChoices(Object.values(customChains)),
|
|
39
|
+
{ name: '(New custom chain)', value: '__new__' },
|
|
40
|
+
new Separator('--Mainnet Chains--'),
|
|
41
|
+
...chainsToChoices(mainnetChainsMetadata),
|
|
42
|
+
new Separator('--Testnet Chains--'),
|
|
43
|
+
...chainsToChoices(testnetChainsMetadata),
|
|
44
|
+
];
|
|
45
|
+
const local = (await select({
|
|
46
|
+
message: 'Select local chain (the chain to which you will deploy now)',
|
|
47
|
+
choices,
|
|
48
|
+
pageSize: 20,
|
|
49
|
+
}));
|
|
50
|
+
handleNewChain([local]);
|
|
51
|
+
const remotes = (await checkbox({
|
|
52
|
+
message: 'Select remote chains the local will send messages to',
|
|
53
|
+
choices,
|
|
54
|
+
pageSize: 20,
|
|
55
|
+
}));
|
|
56
|
+
handleNewChain(remotes);
|
|
57
|
+
if (!remotes?.length)
|
|
58
|
+
throw new Error('No remote chains selected');
|
|
59
|
+
const allChains = [local, ...remotes];
|
|
60
|
+
return { local, remotes, allChains };
|
|
61
|
+
}
|
|
62
|
+
async function runArtifactStep(allChains) {
|
|
63
|
+
logBlue('\nDeployments can be totally new or can use some existing contract addresses.');
|
|
64
|
+
const isResume = await confirm({
|
|
65
|
+
message: 'Do you want use some existing contract addresses?',
|
|
66
|
+
});
|
|
67
|
+
if (!isResume)
|
|
68
|
+
return undefined;
|
|
69
|
+
const artifactsPath = await input({
|
|
70
|
+
message: 'Enter filepath with existing contract artifacts (addresses)',
|
|
71
|
+
});
|
|
72
|
+
const artifacts = readDeploymentArtifacts(artifactsPath);
|
|
73
|
+
const artifactChains = Object.keys(artifacts).filter((c) => allChains.includes(c));
|
|
74
|
+
log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
|
|
75
|
+
return artifacts;
|
|
76
|
+
}
|
|
77
|
+
async function runIsmStep(allChains) {
|
|
78
|
+
logBlue('\nHyperlane instances requires an Interchain Security Module (ISM).');
|
|
79
|
+
const isMultisig = await confirm({
|
|
80
|
+
message: 'Do you want use a Multisig ISM?',
|
|
81
|
+
});
|
|
82
|
+
if (!isMultisig)
|
|
83
|
+
throw new Error('Sorry, only multisig ISMs are currently supported in the CLI');
|
|
84
|
+
const defaultConfigChains = Object.keys(defaultMultisigIsmConfigs);
|
|
85
|
+
const configRequired = !!allChains.find((c) => !defaultConfigChains.includes(c));
|
|
86
|
+
if (!configRequired)
|
|
87
|
+
return;
|
|
88
|
+
logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/multisig-ism.yaml');
|
|
89
|
+
const multisigConfigPath = await input({
|
|
90
|
+
message: 'Enter filepath for the multisig config',
|
|
91
|
+
});
|
|
92
|
+
const configs = readMultisigConfig(multisigConfigPath);
|
|
93
|
+
const multisigConfigChains = Object.keys(configs).filter((c) => allChains.includes(c));
|
|
94
|
+
log(`Found configs for chains: ${multisigConfigChains.join(', ')}`);
|
|
95
|
+
return configs;
|
|
96
|
+
}
|
|
97
|
+
function handleNewChain(chainNames) {
|
|
98
|
+
if (chainNames.includes('__new__')) {
|
|
99
|
+
logBlue('To use a new chain, use the --config argument add them to that file');
|
|
100
|
+
log(chalk.blue('Use the'), chalk.magentaBright('hyperlane config create'), chalk.blue('command to create new configs'));
|
|
101
|
+
process.exit(0);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function runDeployPlanStep({ local, remotes, signer, artifacts, }) {
|
|
105
|
+
const address = await signer.getAddress();
|
|
106
|
+
logBlue('\nDeployment plan:');
|
|
107
|
+
logGray('===============:');
|
|
108
|
+
log(`Transaction signer and owner of new contracts will be ${address}`);
|
|
109
|
+
log(`Deploying to ${local} and connecting it to ${remotes.join(', ')}`);
|
|
110
|
+
const numContracts = Object.keys(Object.values(sdkContractAddressesMap)[0]).length;
|
|
111
|
+
log(`There are ${numContracts} contracts for each chain`);
|
|
112
|
+
if (artifacts) {
|
|
113
|
+
log('But contracts with an address in the artifacts file will be skipped');
|
|
114
|
+
for (const chain of [local, ...remotes]) {
|
|
115
|
+
const chainArtifacts = artifacts[chain];
|
|
116
|
+
if (!chainArtifacts)
|
|
117
|
+
continue;
|
|
118
|
+
const numRequired = numContracts - Object.keys(chainArtifacts).length;
|
|
119
|
+
log(`${chain} will require ${numRequired} of ${numContracts}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
log('The interchain security module will be a Multisig.');
|
|
123
|
+
const isConfirmed = await confirm({
|
|
124
|
+
message: 'Is this deployment plan correct?',
|
|
125
|
+
});
|
|
126
|
+
if (!isConfirmed)
|
|
127
|
+
throw new Error('Deployment cancelled');
|
|
128
|
+
}
|
|
129
|
+
async function executeDeploy({ local, remotes, signer, multiProvider, outPath, artifacts = {}, multiSigConfig = {}, }) {
|
|
130
|
+
logBlue('All systems ready, captain! Beginning deployment...');
|
|
131
|
+
const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
|
|
132
|
+
{ filename: 'core-deployment', description: 'Contract addresses' },
|
|
133
|
+
{ filename: 'agent-config', description: 'Agent configs' },
|
|
134
|
+
]);
|
|
135
|
+
const owner = await signer.getAddress();
|
|
136
|
+
const allChains = [local, ...remotes];
|
|
137
|
+
const mergedContractAddrs = getMergedContractAddresses(artifacts);
|
|
138
|
+
// 1. Deploy ISM factories to all deployable chains that don't have them.
|
|
139
|
+
log('Deploying ISM factory contracts');
|
|
140
|
+
const ismDeployer = new HyperlaneIsmFactoryDeployer(multiProvider);
|
|
141
|
+
ismDeployer.cacheAddressesMap(mergedContractAddrs);
|
|
142
|
+
const ismFactoryContracts = await ismDeployer.deploy(allChains);
|
|
143
|
+
artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismFactoryContracts);
|
|
144
|
+
logGreen(`ISM factory contracts deployed`);
|
|
145
|
+
// 2. Deploy IGPs to all deployable chains.
|
|
146
|
+
log(`Deploying IGP contracts`);
|
|
147
|
+
const igpConfig = buildIgpConfigMap(owner, allChains, allChains, multiSigConfig);
|
|
148
|
+
const igpDeployer = new HyperlaneIgpDeployer(multiProvider);
|
|
149
|
+
igpDeployer.cacheAddressesMap(artifacts);
|
|
150
|
+
const igpContracts = await igpDeployer.deploy(igpConfig);
|
|
151
|
+
artifacts = writeMergedAddresses(contractsFilePath, artifacts, igpContracts);
|
|
152
|
+
logGreen(`IGP contracts deployed`);
|
|
153
|
+
// Build an IsmFactory that covers all chains so that we can
|
|
154
|
+
// use it later to deploy ISMs to remote chains.
|
|
155
|
+
const ismFactory = HyperlaneIsmFactory.fromAddressesMap(mergedContractAddrs, multiProvider);
|
|
156
|
+
// 3. Deploy core contracts to local chain
|
|
157
|
+
log(`Deploying core contracts to ${local}`);
|
|
158
|
+
const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
|
|
159
|
+
coreDeployer.cacheAddressesMap(artifacts);
|
|
160
|
+
const coreConfig = buildCoreConfigMap(owner, local, remotes, multiSigConfig);
|
|
161
|
+
const coreContracts = await coreDeployer.deploy(coreConfig);
|
|
162
|
+
artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
|
|
163
|
+
logGreen(`Core contracts deployed`);
|
|
164
|
+
// 4. Deploy ISM contracts to remote deployable chains
|
|
165
|
+
log(`Deploying ISMs`);
|
|
166
|
+
const ismConfigs = buildIsmConfigMap(owner, remotes, allChains, multiSigConfig);
|
|
167
|
+
const ismContracts = {};
|
|
168
|
+
for (const [ismChain, ismConfig] of Object.entries(ismConfigs)) {
|
|
169
|
+
if (artifacts[ismChain].multisigIsm) {
|
|
170
|
+
log(`ISM contract recovered, skipping ISM deployment to ${ismChain}`);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
log(`Deploying ISM to ${ismChain}`);
|
|
174
|
+
ismContracts[ismChain] = {
|
|
175
|
+
multisigIsm: await ismFactory.deploy(ismChain, ismConfig),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismContracts);
|
|
179
|
+
logGreen(`ISM contracts deployed `);
|
|
180
|
+
// 5. Deploy TestRecipients to all deployable chains
|
|
181
|
+
log(`Deploying test recipient contracts`);
|
|
182
|
+
const testRecipientConfig = buildTestRecipientConfigMap(allChains, artifacts);
|
|
183
|
+
const testRecipientDeployer = new TestRecipientDeployer(multiProvider);
|
|
184
|
+
testRecipientDeployer.cacheAddressesMap(artifacts);
|
|
185
|
+
const testRecipients = await testRecipientDeployer.deploy(testRecipientConfig);
|
|
186
|
+
artifacts = writeMergedAddresses(contractsFilePath, artifacts, testRecipients);
|
|
187
|
+
logGreen(`Test recipient contracts deployed`);
|
|
188
|
+
log('Writing agent configs');
|
|
189
|
+
await writeAgentConfig(agentFilePath, artifacts, local, remotes, multiProvider);
|
|
190
|
+
logGreen('Agent configs written');
|
|
191
|
+
logBlue('Deployment is complete!');
|
|
192
|
+
logBlue(`Contract address artifacts are in ${contractsFilePath}`);
|
|
193
|
+
logBlue(`Agent configs are in ${agentFilePath}`);
|
|
194
|
+
}
|
|
195
|
+
function buildIsmConfig(owner, remotes, multisigIsmConfigs) {
|
|
196
|
+
const mergedMultisigIsmConfig = objMerge(defaultMultisigIsmConfigs, multisigIsmConfigs);
|
|
197
|
+
return {
|
|
198
|
+
owner,
|
|
199
|
+
type: ModuleType.ROUTING,
|
|
200
|
+
domains: Object.fromEntries(remotes.map((remote) => [remote, mergedMultisigIsmConfig[remote]])),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function buildIsmConfigMap(owner, chains, remotes, multisigIsmConfigs) {
|
|
204
|
+
return Object.fromEntries(chains.map((chain) => {
|
|
205
|
+
const ismConfig = buildIsmConfig(owner, remotes.filter((r) => r !== chain), multisigIsmConfigs);
|
|
206
|
+
return [chain, ismConfig];
|
|
207
|
+
}));
|
|
208
|
+
}
|
|
209
|
+
function buildCoreConfigMap(owner, local, remotes, multisigIsmConfigs) {
|
|
210
|
+
const configMap = {};
|
|
211
|
+
configMap[local] = {
|
|
212
|
+
owner,
|
|
213
|
+
defaultIsm: buildIsmConfig(owner, remotes, multisigIsmConfigs),
|
|
214
|
+
};
|
|
215
|
+
return configMap;
|
|
216
|
+
}
|
|
217
|
+
function buildTestRecipientConfigMap(chains, addressesMap) {
|
|
218
|
+
return Object.fromEntries(chains.map((chain) => {
|
|
219
|
+
const interchainSecurityModule = addressesMap[chain].interchainSecurityModule ??
|
|
220
|
+
ethers.constants.AddressZero;
|
|
221
|
+
return [chain, { interchainSecurityModule }];
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
function buildIgpConfigMap(owner, deployChains, allChains, multisigIsmConfigs) {
|
|
225
|
+
const mergedMultisigIsmConfig = objMerge(defaultMultisigIsmConfigs, multisigIsmConfigs);
|
|
226
|
+
const configMap = {};
|
|
227
|
+
for (const local of deployChains) {
|
|
228
|
+
const overhead = {};
|
|
229
|
+
const gasOracleType = {};
|
|
230
|
+
for (const remote of allChains) {
|
|
231
|
+
if (local === remote)
|
|
232
|
+
continue;
|
|
233
|
+
overhead[remote] = multisigIsmVerificationCost(mergedMultisigIsmConfig[remote].threshold, mergedMultisigIsmConfig[remote].validators.length);
|
|
234
|
+
gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
|
|
235
|
+
}
|
|
236
|
+
configMap[local] = {
|
|
237
|
+
owner,
|
|
238
|
+
beneficiary: owner,
|
|
239
|
+
gasOracleType,
|
|
240
|
+
overhead,
|
|
241
|
+
oracleKey: owner,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
return configMap;
|
|
245
|
+
}
|
|
246
|
+
function writeMergedAddresses(filePath, aAddresses, bContracts) {
|
|
247
|
+
const bAddresses = serializeContractsMap(bContracts);
|
|
248
|
+
const mergedAddresses = objMerge(aAddresses, bAddresses);
|
|
249
|
+
writeJson(filePath, mergedAddresses);
|
|
250
|
+
return mergedAddresses;
|
|
251
|
+
}
|
|
252
|
+
async function writeAgentConfig(filePath, artifacts, local, remotes, multiProvider) {
|
|
253
|
+
const allChains = [local, ...remotes];
|
|
254
|
+
const startBlocks = { ...agentStartBlocks };
|
|
255
|
+
startBlocks[local] = await multiProvider.getProvider(local).getBlockNumber();
|
|
256
|
+
const mergedAddressesMap = objMerge(sdkContractAddressesMap, artifacts);
|
|
257
|
+
const filteredAddressesMap = objFilter(mergedAddressesMap, (chain, v) => allChains.includes(chain) &&
|
|
258
|
+
!!v.mailbox &&
|
|
259
|
+
!!v.interchainGasPaymaster &&
|
|
260
|
+
!!v.validatorAnnounce);
|
|
261
|
+
const agentConfig = buildAgentConfig(allChains, multiProvider, filteredAddressesMap, startBlocks);
|
|
262
|
+
writeJson(filePath, agentConfig);
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ERC20Metadata, TokenType } from '@hyperlane-xyz/hyperlane-token';
|
|
2
|
+
import type { types } from '@hyperlane-xyz/utils';
|
|
3
|
+
export type MinimalTokenMetadata = Omit<ERC20Metadata, 'totalSupply'>;
|
|
4
|
+
interface BaseWarpUITokenConfig extends MinimalTokenMetadata {
|
|
5
|
+
type: TokenType.collateral | TokenType.native;
|
|
6
|
+
chainId: number;
|
|
7
|
+
logoURI?: string;
|
|
8
|
+
isNft?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface CollateralTokenConfig extends BaseWarpUITokenConfig {
|
|
11
|
+
type: TokenType.collateral;
|
|
12
|
+
address: types.Address;
|
|
13
|
+
hypCollateralAddress: types.Address;
|
|
14
|
+
}
|
|
15
|
+
interface NativeTokenConfig extends BaseWarpUITokenConfig {
|
|
16
|
+
type: TokenType.native;
|
|
17
|
+
hypNativeAddress: types.Address;
|
|
18
|
+
}
|
|
19
|
+
export type WarpUITokenConfig = CollateralTokenConfig | NativeTokenConfig;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAKtE,UAAU,qBAAsB,SAAQ,oBAAoB;IAC1D,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC;CACrC;AAED,UAAU,iBAAkB,SAAQ,qBAAqB;IACvD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;IACvB,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deploy/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { ChainName, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
3
|
+
export declare function runPreflightChecks({ local, remotes, signer, multiProvider, minBalanceWei, }: {
|
|
4
|
+
local: ChainName;
|
|
5
|
+
remotes: ChainName[];
|
|
6
|
+
signer: ethers.Signer;
|
|
7
|
+
multiProvider: MultiProvider;
|
|
8
|
+
minBalanceWei: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAM5E,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GACd,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,iBAwBA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProtocolType } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { log, logGreen } from '../logger.js';
|
|
3
|
+
import { assertNativeBalances } from '../utils/balances.js';
|
|
4
|
+
import { assertSigner } from '../utils/keys.js';
|
|
5
|
+
export async function runPreflightChecks({ local, remotes, signer, multiProvider, minBalanceWei, }) {
|
|
6
|
+
log('Running pre-flight checks...');
|
|
7
|
+
if (!local || !remotes?.length)
|
|
8
|
+
throw new Error('Invalid chain selection');
|
|
9
|
+
if (remotes.includes(local))
|
|
10
|
+
throw new Error('Local and remotes must be distinct');
|
|
11
|
+
for (const chain of [local, ...remotes]) {
|
|
12
|
+
const metadata = multiProvider.tryGetChainMetadata(chain);
|
|
13
|
+
if (!metadata)
|
|
14
|
+
throw new Error(`No chain config found for ${chain}`);
|
|
15
|
+
if (metadata.protocol !== ProtocolType.Ethereum)
|
|
16
|
+
throw new Error('Only Ethereum chains are supported for now');
|
|
17
|
+
}
|
|
18
|
+
logGreen('Chains are valid ✅');
|
|
19
|
+
assertSigner(signer);
|
|
20
|
+
logGreen('Signer is valid ✅');
|
|
21
|
+
await assertNativeBalances(multiProvider, signer, [local, ...remotes], minBalanceWei);
|
|
22
|
+
logGreen('Balances are sufficient ✅');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GAOd;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE;QACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;YAC7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KACjE;IACD,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE/B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE9B,MAAM,oBAAoB,CACxB,aAAa,EACb,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,EACnB,aAAa,CACd,CAAC;IACF,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, }: {
|
|
2
|
+
key: string;
|
|
3
|
+
chainConfigPath: string;
|
|
4
|
+
warpConfigPath: string;
|
|
5
|
+
coreArtifactsPath: string;
|
|
6
|
+
outPath: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=warp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AAqCA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,OAAO,GACR,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,iBA4BA"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { confirm, input } from '@inquirer/prompts';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { ERC20__factory, ERC721__factory, HypERC20Deployer, HypERC721Deployer, TokenType, } from '@hyperlane-xyz/hyperlane-token';
|
|
4
|
+
import { chainMetadata as defaultChainMetadata, objMap, } from '@hyperlane-xyz/sdk';
|
|
5
|
+
import { readDeploymentArtifacts, readWarpRouteConfig, } from '../configs.js';
|
|
6
|
+
import { MINIMUM_WARP_DEPLOY_BALANCE } from '../consts.js';
|
|
7
|
+
import { getDeployerContext, getMergedContractAddresses } from '../context.js';
|
|
8
|
+
import { log, logBlue, logGray, logGreen } from '../logger.js';
|
|
9
|
+
import { prepNewArtifactsFiles, writeJson } from '../utils/files.js';
|
|
10
|
+
import { runPreflightChecks } from './utils.js';
|
|
11
|
+
export async function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, }) {
|
|
12
|
+
const { multiProvider, signer } = getDeployerContext(key, chainConfigPath);
|
|
13
|
+
const warpRouteConfig = readWarpRouteConfig(warpConfigPath);
|
|
14
|
+
const artifacts = coreArtifactsPath
|
|
15
|
+
? readDeploymentArtifacts(coreArtifactsPath)
|
|
16
|
+
: undefined;
|
|
17
|
+
const configs = await runBuildConfigStep({
|
|
18
|
+
warpRouteConfig,
|
|
19
|
+
artifacts,
|
|
20
|
+
multiProvider,
|
|
21
|
+
signer,
|
|
22
|
+
});
|
|
23
|
+
const deploymentParams = {
|
|
24
|
+
...configs,
|
|
25
|
+
signer,
|
|
26
|
+
multiProvider,
|
|
27
|
+
outPath,
|
|
28
|
+
};
|
|
29
|
+
await runDeployPlanStep(deploymentParams);
|
|
30
|
+
await runPreflightChecks({
|
|
31
|
+
...deploymentParams,
|
|
32
|
+
minBalanceWei: MINIMUM_WARP_DEPLOY_BALANCE,
|
|
33
|
+
});
|
|
34
|
+
await executeDeploy(deploymentParams);
|
|
35
|
+
}
|
|
36
|
+
async function runBuildConfigStep({ warpRouteConfig, multiProvider, signer, artifacts, }) {
|
|
37
|
+
log('Assembling token configs');
|
|
38
|
+
const { base, synthetics } = warpRouteConfig;
|
|
39
|
+
const { type: baseType, chainName: baseChainName, isNft } = base;
|
|
40
|
+
const owner = await signer.getAddress();
|
|
41
|
+
const baseMetadata = await fetchBaseTokenMetadata(base, multiProvider);
|
|
42
|
+
log(`Using base token metadata: Name: ${baseMetadata.name}, Symbol: ${baseMetadata.symbol}, Decimals: ${baseMetadata.decimals}`);
|
|
43
|
+
const mergedContractAddrs = getMergedContractAddresses(artifacts);
|
|
44
|
+
// Create configs that coalesce together values from the config file,
|
|
45
|
+
// the artifacts, and the SDK as a fallback
|
|
46
|
+
const configMap = {
|
|
47
|
+
[baseChainName]: {
|
|
48
|
+
type: baseType,
|
|
49
|
+
token: baseType === TokenType.collateral
|
|
50
|
+
? base.address
|
|
51
|
+
: ethers.constants.AddressZero,
|
|
52
|
+
owner,
|
|
53
|
+
mailbox: base.mailbox || mergedContractAddrs[baseChainName].mailbox,
|
|
54
|
+
interchainSecurityModule: base.interchainSecurityModule ||
|
|
55
|
+
mergedContractAddrs[baseChainName].interchainSecurityModule ||
|
|
56
|
+
mergedContractAddrs[baseChainName].multisigIsm,
|
|
57
|
+
interchainGasPaymaster: base.interchainGasPaymaster ||
|
|
58
|
+
mergedContractAddrs[baseChainName].defaultIsmInterchainGasPaymaster,
|
|
59
|
+
foreignDeployment: base.foreignDeployment,
|
|
60
|
+
name: baseMetadata.name,
|
|
61
|
+
symbol: baseMetadata.symbol,
|
|
62
|
+
decimals: baseMetadata.decimals,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
for (const synthetic of synthetics) {
|
|
66
|
+
const sChainName = synthetic.chainName;
|
|
67
|
+
configMap[sChainName] = {
|
|
68
|
+
type: TokenType.synthetic,
|
|
69
|
+
name: synthetic.name || baseMetadata.name,
|
|
70
|
+
symbol: synthetic.symbol || baseMetadata.symbol,
|
|
71
|
+
totalSupply: synthetic.totalSupply || 0,
|
|
72
|
+
owner,
|
|
73
|
+
mailbox: synthetic.mailbox || mergedContractAddrs[sChainName].mailbox,
|
|
74
|
+
interchainSecurityModule: synthetic.interchainSecurityModule ||
|
|
75
|
+
mergedContractAddrs[sChainName].interchainSecurityModule ||
|
|
76
|
+
mergedContractAddrs[sChainName].multisigIsm,
|
|
77
|
+
interchainGasPaymaster: synthetic.interchainGasPaymaster ||
|
|
78
|
+
mergedContractAddrs[sChainName].defaultIsmInterchainGasPaymaster,
|
|
79
|
+
foreignDeployment: synthetic.foreignDeployment,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// Request input for any address fields that are missing
|
|
83
|
+
const requiredRouterFields = [
|
|
84
|
+
'mailbox',
|
|
85
|
+
'interchainSecurityModule',
|
|
86
|
+
'interchainGasPaymaster',
|
|
87
|
+
];
|
|
88
|
+
let hasShownInfo = false;
|
|
89
|
+
for (const [chain, token] of Object.entries(configMap)) {
|
|
90
|
+
for (const field of requiredRouterFields) {
|
|
91
|
+
if (token[field])
|
|
92
|
+
continue;
|
|
93
|
+
if (!hasShownInfo) {
|
|
94
|
+
logBlue('Some router fields are missing. Please enter them now, add them to your warp config, or use the --core flag to use deployment artifacts.');
|
|
95
|
+
hasShownInfo = true;
|
|
96
|
+
}
|
|
97
|
+
const value = await input({
|
|
98
|
+
message: `Enter ${field} for ${getTokenName(token)} token on ${chain}`,
|
|
99
|
+
});
|
|
100
|
+
if (!value)
|
|
101
|
+
throw new Error(`Field ${field} required`);
|
|
102
|
+
token[field] = value.trim();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
log('Token configs ready');
|
|
106
|
+
return {
|
|
107
|
+
configMap,
|
|
108
|
+
metadata: baseMetadata,
|
|
109
|
+
local: baseChainName,
|
|
110
|
+
remotes: synthetics.map(({ chainName }) => chainName),
|
|
111
|
+
isNft: !!isNft,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
async function runDeployPlanStep({ configMap, isNft, local, remotes, signer, }) {
|
|
115
|
+
const address = await signer.getAddress();
|
|
116
|
+
const baseToken = configMap[local];
|
|
117
|
+
const baseName = getTokenName(baseToken);
|
|
118
|
+
logBlue('\nDeployment plan:');
|
|
119
|
+
logGray('===============:');
|
|
120
|
+
log(`Transaction signer and owner of new contracts will be ${address}`);
|
|
121
|
+
log(`Deploying a warp route with a base of ${baseName} token on ${local}`);
|
|
122
|
+
log(`Connecting it to new synthetic tokens on ${remotes.join(', ')}`);
|
|
123
|
+
log(`Using token standard ${isNft ? 'ERC721' : 'ERC20'}`);
|
|
124
|
+
const isConfirmed = await confirm({
|
|
125
|
+
message: 'Is this deployment plan correct?',
|
|
126
|
+
});
|
|
127
|
+
if (!isConfirmed)
|
|
128
|
+
throw new Error('Deployment cancelled');
|
|
129
|
+
}
|
|
130
|
+
async function executeDeploy(params) {
|
|
131
|
+
logBlue('All systems ready, captain! Beginning deployment...');
|
|
132
|
+
const { configMap, isNft, multiProvider, outPath } = params;
|
|
133
|
+
const [contractsFilePath, tokenConfigPath] = prepNewArtifactsFiles(outPath, [
|
|
134
|
+
{ filename: 'warp-deployment', description: 'Contract addresses' },
|
|
135
|
+
{ filename: 'warp-ui-token-config', description: 'Warp UI token config' },
|
|
136
|
+
]);
|
|
137
|
+
const deployer = isNft
|
|
138
|
+
? new HypERC721Deployer(multiProvider)
|
|
139
|
+
: new HypERC20Deployer(multiProvider);
|
|
140
|
+
const deployedContracts = await deployer.deploy(configMap);
|
|
141
|
+
logGreen('Hyp token deployments complete');
|
|
142
|
+
log('Writing deployment artifacts');
|
|
143
|
+
writeTokenDeploymentArtifacts(contractsFilePath, deployedContracts, params);
|
|
144
|
+
writeWarpUiTokenConfig(tokenConfigPath, deployedContracts, params);
|
|
145
|
+
logBlue('Deployment is complete!');
|
|
146
|
+
logBlue(`Contract address artifacts are in ${contractsFilePath}`);
|
|
147
|
+
logBlue(`Warp UI token config is in ${tokenConfigPath}`);
|
|
148
|
+
}
|
|
149
|
+
async function fetchBaseTokenMetadata(base, multiProvider) {
|
|
150
|
+
const { type, name, symbol, chainName, address, decimals, isNft } = base;
|
|
151
|
+
// Skip fetching metadata if it's already provided in the config
|
|
152
|
+
if (name && symbol && decimals) {
|
|
153
|
+
return { name, symbol, decimals };
|
|
154
|
+
}
|
|
155
|
+
if (type === TokenType.native) {
|
|
156
|
+
return (multiProvider.getChainMetadata(base.chainName).nativeToken ||
|
|
157
|
+
defaultChainMetadata.ethereum.nativeToken);
|
|
158
|
+
}
|
|
159
|
+
else if (base.type === TokenType.collateral && address) {
|
|
160
|
+
log(`Fetching token metadata for ${address} on ${chainName}}`);
|
|
161
|
+
const provider = multiProvider.getProvider(chainName);
|
|
162
|
+
if (isNft) {
|
|
163
|
+
const erc721Contract = ERC721__factory.connect(address, provider);
|
|
164
|
+
const [name, symbol] = await Promise.all([
|
|
165
|
+
erc721Contract.name(),
|
|
166
|
+
erc721Contract.symbol(),
|
|
167
|
+
]);
|
|
168
|
+
return { name, symbol, decimals: 0 };
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const erc20Contract = ERC20__factory.connect(address, provider);
|
|
172
|
+
const [name, symbol, decimals] = await Promise.all([
|
|
173
|
+
erc20Contract.name(),
|
|
174
|
+
erc20Contract.symbol(),
|
|
175
|
+
erc20Contract.decimals(),
|
|
176
|
+
]);
|
|
177
|
+
return { name, symbol, decimals };
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
throw new Error(`Unsupported token: ${base}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function getTokenName(token) {
|
|
185
|
+
return token.type === TokenType.native ? 'native' : token.name;
|
|
186
|
+
}
|
|
187
|
+
function writeTokenDeploymentArtifacts(filePath, contracts, { configMap }) {
|
|
188
|
+
const artifacts = objMap(contracts, (chain, contract) => {
|
|
189
|
+
return {
|
|
190
|
+
router: contract.router.address,
|
|
191
|
+
tokenType: configMap[chain].type,
|
|
192
|
+
};
|
|
193
|
+
});
|
|
194
|
+
writeJson(filePath, artifacts);
|
|
195
|
+
}
|
|
196
|
+
function writeWarpUiTokenConfig(filePath, contracts, { configMap, isNft, metadata, local, multiProvider }) {
|
|
197
|
+
const baseConfig = configMap[local];
|
|
198
|
+
const hypTokenAddr = contracts[local]?.router?.address || configMap[local]?.foreignDeployment;
|
|
199
|
+
if (!hypTokenAddr) {
|
|
200
|
+
throw Error('No base Hyperlane token address deployed and no foreign deployment specified');
|
|
201
|
+
}
|
|
202
|
+
const commonFields = {
|
|
203
|
+
chainId: multiProvider.getChainId(local),
|
|
204
|
+
name: metadata.name,
|
|
205
|
+
symbol: metadata.symbol,
|
|
206
|
+
decimals: metadata.decimals,
|
|
207
|
+
};
|
|
208
|
+
let tokenConfig;
|
|
209
|
+
if (baseConfig.type === TokenType.collateral) {
|
|
210
|
+
tokenConfig = {
|
|
211
|
+
...commonFields,
|
|
212
|
+
type: TokenType.collateral,
|
|
213
|
+
address: baseConfig.token,
|
|
214
|
+
hypCollateralAddress: hypTokenAddr,
|
|
215
|
+
isNft,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
else if (baseConfig.type === TokenType.native) {
|
|
219
|
+
tokenConfig = {
|
|
220
|
+
...commonFields,
|
|
221
|
+
type: TokenType.native,
|
|
222
|
+
hypNativeAddress: hypTokenAddr,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
throw new Error(`Unsupported token type: ${baseConfig.type}`);
|
|
227
|
+
}
|
|
228
|
+
writeJson(filePath, tokenConfig);
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=warp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
export declare const logger: debug.Debugger;
|
|
3
|
+
export declare const error: debug.Debugger;
|
|
4
|
+
export declare function createLogger(namespace: string, isError?: boolean): debug.Debugger;
|
|
5
|
+
export declare const logBlue: (...args: any) => void;
|
|
6
|
+
export declare const logPink: (...args: any) => void;
|
|
7
|
+
export declare const logGray: (...args: any) => void;
|
|
8
|
+
export declare const logGreen: (...args: any) => void;
|
|
9
|
+
export declare const logRed: (...args: any) => void;
|
|
10
|
+
export declare const errorRed: (...args: any) => void;
|
|
11
|
+
export declare const log: (...args: any) => void;
|
|
12
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,eAAO,MAAM,MAAM,gBAAsB,CAAC;AAC1C,eAAO,MAAM,KAAK,gBAAiC,CAAC;AAEpD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,UAAQ,kBAE9D;AAaD,eAAO,MAAM,OAAO,YAAa,GAAG,SAAqC,CAAC;AAC1E,eAAO,MAAM,OAAO,YAAa,GAAG,SACO,CAAC;AAC5C,eAAO,MAAM,OAAO,YAAa,GAAG,SAAqC,CAAC;AAC1E,eAAO,MAAM,QAAQ,YAAa,GAAG,SAAsC,CAAC;AAC5E,eAAO,MAAM,MAAM,YAAa,GAAG,SAAoC,CAAC;AACxE,eAAO,MAAM,QAAQ,YAAa,GAAG,SAAsC,CAAC;AAC5E,eAAO,MAAM,GAAG,YAAa,GAAG,SAAyB,CAAC"}
|