hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
87 lines • 2.97 kB
TypeScript
/**
* The possible types of a global or task option.
*/
export declare enum ArgumentType {
STRING = "STRING",
BOOLEAN = "BOOLEAN",
FLAG = "FLAG",
INT = "INT",
LEVEL = "LEVEL",
BIGINT = "BIGINT",
FLOAT = "FLOAT",
FILE = "FILE",
STRING_WITHOUT_DEFAULT = "STRING_WITHOUT_DEFAULT",
FILE_WITHOUT_DEFAULT = "FILE_WITHOUT_DEFAULT"
}
/**
* Maps all the `ArgumentType` values to their corresponding value types.
*/
export interface ArgumentValueTypes {
[ArgumentType.STRING]: string;
[ArgumentType.BOOLEAN]: boolean;
[ArgumentType.FLAG]: boolean;
[ArgumentType.INT]: number;
[ArgumentType.LEVEL]: number;
[ArgumentType.BIGINT]: bigint;
[ArgumentType.FLOAT]: number;
[ArgumentType.FILE]: string;
[ArgumentType.STRING_WITHOUT_DEFAULT]: string | undefined;
[ArgumentType.FILE_WITHOUT_DEFAULT]: string | undefined;
}
/**
* All the possible values for an argument.
*/
export type ArgumentValue = ArgumentValueTypes[keyof ArgumentValueTypes];
/**
* Maps a `ArgumentType` to its corresponding value type.
*
* This type takes a `ArgumentType` as a type parameter and returns the type
* of the value that should be used for arguments of that type.
*
* @example
* ArgumentTypeToValueType<ArgumentType.STRING>
* // ^? "string"
*
* @example
* ArgumentTypeToValueType<ArgumentType.INT>
* // ^? "number"
*/
export type ArgumentTypeToValueType<T extends ArgumentType> = ArgumentValueTypes[T];
/**
* Options in CLI are specified as `--<name> value`, where `--<name>` is the
* option's name and `value` is the argument it takes. For example,
* `--network mainnet` sets the network option to `mainnet`.
*
* Options can also be flags, which are boolean options that don't take an
* argument. For example, `--help` is a flag that shows the help message.
*
* Options are always optional and can be provided in any order.
*/
export interface OptionDefinition<T extends ArgumentType = ArgumentType> {
name: string;
shortName?: string;
description: string;
type: T;
defaultValue: ArgumentTypeToValueType<T>;
hidden?: boolean;
}
/**
* A global option is essentially identical to a regular OptionDefinition,
* except that it cannot be hidden.
*/
export type GlobalOptionDefinition<T extends ArgumentType = ArgumentType> = Omit<OptionDefinition<T>, "hidden">;
/**
* A positional argument is used as `<value>` in the CLI, where its position
* matters. For example, `mv <from> <to>` has two positional arguments.
*
* If the argument is variadic, it accepts multiple values. A variadic argument
* must be the last positional argument and consumes all remaining values.
*/
export interface PositionalArgumentDefinition<T extends ArgumentType = ArgumentType> {
name: string;
description: string;
type: T;
defaultValue?: ArgumentTypeToValueType<T> | Array<ArgumentTypeToValueType<T>>;
isVariadic: boolean;
}
//# sourceMappingURL=arguments.d.ts.map