Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Fixed
- Ethers import error (#2984)

### Changed
- Update MCP SDK and lock down version (#2984)

## [6.6.1] - 2025-11-20
### Changed
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"dependencies": {
"@apollo/client": "^3.14.0",
"@inquirer/prompts": "^5.3.6",
"@modelcontextprotocol/sdk": "^1.17.2",
"@modelcontextprotocol/sdk": "1.24.3",
"@oclif/core": "^4.8.0",
"@subql/common": "workspace:~",
"@subql/contract-sdk": "^1.9.0",
Expand Down
14 changes: 10 additions & 4 deletions packages/cli/src/adapters/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@
import {confirm, input, search, checkbox} from '@inquirer/prompts';
import {McpServer} from '@modelcontextprotocol/sdk/server/mcp.js';
import {RequestHandlerExtra} from '@modelcontextprotocol/sdk/shared/protocol';
import {CallToolResult, ElicitRequest, ServerNotification, ServerRequest} from '@modelcontextprotocol/sdk/types';
import {
CallToolResult,
ElicitRequestFormParams,
ServerNotification,
ServerRequest,
} from '@modelcontextprotocol/sdk/types';
import {Args, Command, Flags} from '@oclif/core';
import {Flag, Arg} from '@oclif/core/lib/interfaces';
import fuzzy from 'fuzzy';
Expand Down Expand Up @@ -36,8 +41,8 @@
T extends z.ZodArray<infer U> ? ZodToPrimitive<U>[] : ZodToPrimitive<T>;

// Check if optional
type HasDefault<T extends ZodTypeAny> = T extends ZodDefault<any> ? true : false;

Check warning on line 44 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
type IsOptional<T extends ZodTypeAny> = T extends ZodOptional<any> ? true : false;

Check warning on line 45 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type

// Combine to determine final flag type
type FlagFromZod<T extends ZodTypeAny> =
Expand All @@ -63,7 +68,7 @@
[K in keyof Shape]: ArgFromZod<Shape[K]>;
};

type UnwrapInfo = {type: ZodTypeAny; default: any; array: boolean; optional: boolean};

Check warning on line 71 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type

// Unrwap recursive type information to get the primitive and other information
function unwrap(
Expand Down Expand Up @@ -96,7 +101,7 @@

// Runtime impl
export function zodToFlags<Shape extends Record<string, ZodTypeAny>>(schema: ZodObject<Shape>): FlagsFromSchema<Shape> {
const flags: Record<string, Flag<any>> = {};

Check warning on line 104 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type

for (const [key, def] of Object.entries(schema.shape)) {
const description = def.description ?? '';
Expand All @@ -108,14 +113,14 @@
description,
required: !optional,
default: defaultValue,
multiple: array as any, // Gets around a type issue

Check warning on line 116 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
});
} else if (type instanceof z.ZodNumber) {
flags[key] = Flags.integer({
description,
required: !optional,
default: defaultValue,
multiple: array as any, // Gets around a type issue

Check warning on line 123 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
});
} else if (type instanceof z.ZodBoolean) {
flags[key] = Flags.boolean({
Expand All @@ -128,7 +133,7 @@
required: !optional,
default: defaultValue,
options: type.options,
multiple: array as any, // Gets around a type issue

Check warning on line 136 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
});
} else {
throw new Error(`Unsupported Zod type for flag: ${key}`);
Expand All @@ -139,7 +144,7 @@
}

export function zodToArgs<Shape extends Record<string, ZodTypeAny>>(schema: ZodObject<Shape>): ArgsFromSchema<Shape> {
const args: Record<string, Arg<any>> = {};

Check warning on line 147 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type

for (const [key, def] of Object.entries(schema.shape)) {
const description = def.description ?? '';
Expand Down Expand Up @@ -185,7 +190,7 @@
const log = (level: 'error' | 'debug' | 'info' | 'notice') => (input: string) => {
void server.sendLoggingMessage({
level,
message: stripVTControlCharacters(input),
data: stripVTControlCharacters(input),
});
};
return {
Expand All @@ -201,7 +206,7 @@
info: command.log.bind(command),
warn: command.warn.bind(command),
error: command.error.bind(command),
debug: (command as any).debug.bind(command),

Check warning on line 209 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
};
}

Expand Down Expand Up @@ -243,7 +248,7 @@
mmultiple?: boolean,
options?: PromptTypes[T][],
defaultValue?: PromptTypes[T]
): ElicitRequest['params']['requestedSchema'] {
): ElicitRequestFormParams['requestedSchema'] {
if (type === 'string') {
return {
type: 'object',
Expand All @@ -256,7 +261,7 @@
},
},
required: ['input'],
additionalProperties: false,
// additionalProperties: false,
};
// } else if (type === 'number') {
// return zodToJsonSchema(
Expand Down Expand Up @@ -284,6 +289,7 @@
export function makeMCPElicitPrmompt(server: McpServer): Prompt {
return async ({defaultValue, message, multiple, options, required, type}) => {
const res = await server.server.elicitInput({
mode: 'form',
message,
requestedSchema: makeInputSchema(type, required, multiple, options, defaultValue),
});
Expand All @@ -302,7 +308,7 @@
throw new Error(`Input for ${message} is required`);
}
if (type === 'string') {
return input as any; // TODO fix type, string doesn't work for some reason

Check warning on line 311 in packages/cli/src/adapters/utils.ts

View workflow job for this annotation

GitHub Actions / code-style

Unexpected any. Specify a different type
}
if (type === 'boolean') {
return input === 'true';
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/commands/mcp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ export default class MCP extends Command {
{
name: 'SubQuery CLI',
version: pjson.version,
description:
'Interact with SubQuery CLI commands using Model Context Protocol. This allows you to initialize, build and deploy your SubQuery projects.',
// description:
// 'Interact with SubQuery CLI commands using Model Context Protocol. This allows you to initialize, build and deploy your SubQuery projects.',
},
{
capabilities: {
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/multi-chain/add.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export default class MultiChainAdd extends Command {

export function registerMultichainAddMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`multichain:${MultiChainAdd.name}`,
`multichain.${MultiChainAdd.name}`,
{
description: MultiChainAdd.description,
inputSchema: multichainAddInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/add-deployment-boost.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export default class AddDeploymentBoost extends Command {

export function registerAddDeploymentBoostMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${AddDeploymentBoost.name}`,
`network.${AddDeploymentBoost.name}`,
{
description: AddDeploymentBoost.description,
inputSchema: addDeploymentBoostInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/connect-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export default class ConnectWallet extends Command {

export function registerConnectWalletMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${ConnectWallet.name}`,
`network.${ConnectWallet.name}`,
{
description: ConnectWallet.description,
inputSchema: connectWalletInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/create-api-key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export default class CreateNetworkApiKey extends Command {

export function registerCreateNetworkApiKeyMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${CreateNetworkApiKey.name}`,
`network.${CreateNetworkApiKey.name}`,
{
description: CreateNetworkApiKey.description,
inputSchema: createApiKeyInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/create-deployment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ export default class CreateNetworkDeployment extends Command {

export function registerCreateNetworkDeploymentMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${CreateNetworkDeployment.name}`,
`network.${CreateNetworkDeployment.name}`,
{
description: CreateNetworkDeployment.description,
inputSchema: (opts.supportsElicitation
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/create-flex-plan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ export default class CreateNetworkFlexPlan extends Command {

export function registerCreateNetworkFlexPlanMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${CreateNetworkFlexPlan.name}`,
`network.${CreateNetworkFlexPlan.name}`,
{
description: CreateNetworkFlexPlan.description,
inputSchema: createFlexPlanInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/create-project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ export default class CreateNetworkProject extends Command {

export function registerCreateNetworkProjectMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${CreateNetworkProject.name}`,
`network.${CreateNetworkProject.name}`,
{
description: CreateNetworkProject.description,
inputSchema: (opts.supportsElicitation ? createProjectInputs : createProjectInputs.required({description: true}))
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/disconnect-wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export default class DisconnectWallet extends Command {

export function registerDisconnectWalletMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${DisconnectWallet.name}`,
`network.${DisconnectWallet.name}`,
{
description: DisconnectWallet.description,
inputSchema: disconnectWalletInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/list-account-boosts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export default class ListAccountBoosts extends Command {

export function registerListAccountBoostsMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListAccountBoosts.name}`,
`network.${ListAccountBoosts.name}`,
{
description: ListAccountBoosts.description,
inputSchema: listBoostsInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/list-api-keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export default class ListNetworkApiKeys extends Command {

export function registerListNetworkApiKeysMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListNetworkApiKeys.name}`,
`network.${ListNetworkApiKeys.name}`,
{
description: ListNetworkApiKeys.description,
inputSchema: listApiKeysInputs.shape,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export default class ListDeploymentBoosts extends Command {

export function registerListDeploymentBoostsMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListDeploymentBoosts.name}`,
`network.${ListDeploymentBoosts.name}`,
{
description: ListDeploymentBoosts.description,
inputSchema: listBoostsInputs.shape,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export default class ListDeploymentIndexers extends Command {

export function registerListDeploymentIndexersMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListDeploymentIndexers.name}`,
`network.${ListDeploymentIndexers.name}`,
{
description: ListDeploymentIndexers.description,
inputSchema: listIndexersInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/list-deployments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export default class ListNetworkDeployments extends Command {

export function registerListNetworkDeploymentsMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListNetworkDeployments.name}`,
`network.${ListNetworkDeployments.name}`,
{
description: ListNetworkDeployments.description,
inputSchema: listDeploymentsInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/list-flex-plans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export default class ListFlexPlans extends Command {

export function registerListFlexPlansMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListFlexPlans.name}`,
`network.${ListFlexPlans.name}`,
{
description: ListFlexPlans.description,
inputSchema: listFlexPlansInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/list-projects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export default class ListProjects extends Command {

export function registerListNetworkProjectsMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${ListProjects.name}`,
`network.${ListProjects.name}`,
{
description: ListProjects.description,
inputSchema: listProjectsInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/remove-api-key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export default class RemoveApiKey extends Command {

export function registerRemoveApiKeyMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${RemoveApiKey.name}`,
`network.${RemoveApiKey.name}`,
{
description: RemoveApiKey.description,
inputSchema: removeApiKeyInputs.shape,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export default class RemoveDeploymentBoost extends Command {

export function registerRemoveDeploymentBoostMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${RemoveDeploymentBoost.name}`,
`network.${RemoveDeploymentBoost.name}`,
{
description: RemoveDeploymentBoost.description,
inputSchema: removeDeploymentBoostInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/network/stop-flex-plan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ export default class StopNetworkFlexPlan extends Command {

export function registerStopNetworkFlexPlanMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`network:${StopNetworkFlexPlan.name}`,
`network.${StopNetworkFlexPlan.name}`,
{
description: StopNetworkFlexPlan.description,
inputSchema: stopFlexPlanInputs.shape,
Expand Down
6 changes: 4 additions & 2 deletions packages/cli/src/commands/network/swap-deployment-boost.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,16 @@ export default class SwapDeploymentBoost extends Command {
const result = await swapDeploymentBoostAdapter(flags, commandLogger(this), makeCLIPrompt());

this.log(
`Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${flags.toDeploymentId}. TransactionHash: ${result.transactionHash}`
`Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${
flags.toDeploymentId
}. TransactionHash: ${result.transactionHash}`
);
Comment on lines 91 to 95
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Template literal now likely prints newlines/spaces in CLI output.

Because the string is split across lines inside the template literal, the output will include a newline + indentation before flags.toDeploymentId. If you want a single-line log, keep the template literal on one line (or build the string via concatenation).

-    this.log(
-      `Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${
-        flags.toDeploymentId
-      }. TransactionHash: ${result.transactionHash}`
-    );
+    this.log(
+      `Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${flags.toDeploymentId}. TransactionHash: ${result.transactionHash}`
+    );
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
this.log(
`Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${flags.toDeploymentId}. TransactionHash: ${result.transactionHash}`
`Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${
flags.toDeploymentId
}. TransactionHash: ${result.transactionHash}`
);
this.log(
`Swapped boost (${formatSQT(result.amount)}) from deployment: ${flags.fromDeploymentId} to deployment ${flags.toDeploymentId}. TransactionHash: ${result.transactionHash}`
);
🤖 Prompt for AI Agents
In packages/cli/src/commands/network/swap-deployment-boost.ts around lines 91 to
95, the template literal is split across lines which inserts a newline and
spaces into the CLI output; change the log to produce a single-line string by
either putting the entire template literal on one line or by concatenating parts
(e.g. build the message with + or use a single-line template literal) so
flags.toDeploymentId is printed without the embedded newline/indentation.

}
}

export function registerSwapDeploymentBoostMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`network:${SwapDeploymentBoost.name}`,
`network.${SwapDeploymentBoost.name}`,
{
description: SwapDeploymentBoost.description,
inputSchema: swapDeploymentBoostInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/onfinality/create-deployment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const nonInteractiveCreateDeploymentInputs = createDeploymentInputs.extend({

export function registerCreateDeploymentMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`onfinality:${CreateDeployment.name}`,
`onfinality.${CreateDeployment.name}`,
{
description: CreateDeployment.description,
inputSchema: (opts.supportsElicitation ? createDeploymentInputs : nonInteractiveCreateDeploymentInputs).shape,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ const nonInteractiveCreateMultichainDeploymentInputs = createMultichainDeploymen

export function registerCreateMultichainDeploymentMCPTool(server: McpServer, opts: MCPToolOptions): RegisteredTool {
return server.registerTool(
`onfinality:${CreateMultichainDeployment.name}`,
`onfinality.${CreateMultichainDeployment.name}`,
{
description: CreateMultichainDeployment.description,
inputSchema: (opts.supportsElicitation
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/onfinality/create-project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export default class CreateProject extends Command {

export function registerCreateProjectMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`onfinality:${CreateProject.name}`,
`onfinality.${CreateProject.name}`,
{
description: CreateProject.description,
inputSchema: createProjectInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/onfinality/delete-deployment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export default class DeleteDeployment extends Command {

export function deleteDeploymentMCPAdapter(server: McpServer): RegisteredTool {
return server.registerTool(
`onfinality:${DeleteDeployment.name}`,
`onfinality.${DeleteDeployment.name}`,
{
description: DeleteDeployment.description,
inputSchema: deleteDeploymentInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/onfinality/delete-project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export default class DeleteProject extends Command {

export function registerDeleteProjectMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`onfinality:${DeleteProject.name}`,
`onfinality.${DeleteProject.name}`,
{
description: DeleteProject.description,
inputSchema: deleteProjectInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/commands/onfinality/promote-deployment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export default class PromoteDeployment extends Command {

export function registerPromoteDeploymentMCPTool(server: McpServer): RegisteredTool {
return server.registerTool(
`onfinality:${PromoteDeployment.name}`,
`onfinality.${PromoteDeployment.name}`,
{
description: PromoteDeployment.description,
inputSchema: promoteInputs.shape,
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/controller/network/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
// SPDX-License-Identifier: GPL-3.0

import {JsonRpcProvider, Provider} from '@ethersproject/providers';
import {formatUnits} from '@ethersproject/units';
import {Wallet} from '@ethersproject/wallet';
import {ProjectType, ContractSDK, networks} from '@subql/contract-sdk';
import {GraphqlQueryClient} from '@subql/network-clients/dist/clients/queryClient';
import {NETWORK_CONFIGS, SQNetworks, SQT_DECIMAL} from '@subql/network-config';
import {base58Decode} from '@subql/utils';
import {BigNumberish, ContractReceipt, ContractTransaction, Signer} from 'ethers';
import {formatUnits} from 'ethers/lib/utils';
import {z} from 'zod';
import {Logger} from '../../adapters/utils';
import {ProjectType as ProjectTypeGql} from './__graphql__/base-types';
Expand Down
Loading