open-index/open-npm huggingface dataset:
npm package: @nomicfoundation/slang-linux-arm64-gnu
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-linux-arm64-gnu

This is the **aarch64-unknown-linux-gnu** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-linux-arm64-musl
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-linux-arm64-musl

This is the **aarch64-unknown-linux-musl** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-linux-x64-gnu
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-linux-x64-gnu

This is the **x86_64-unknown-linux-gnu** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-linux-x64-musl
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-linux-x64-musl

This is the **x86_64-unknown-linux-musl** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-win32-arm64-msvc
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-win32-arm64-msvc

This is the **aarch64-pc-windows-msvc** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-win32-ia32-msvc
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-win32-ia32-msvc

This is the **i686-pc-windows-msvc** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/slang-win32-x64-msvc
Description: Platform-specific binaries for @nomicfoundation/slang.
Latest version: 0.17.0

<!-- cSpell:disable -->

# @nomicfoundation/slang-win32-x64-msvc

This is the **x86_64-pc-windows-msvc** binary for `@nomicfoundation/slang`.
npm package: @nomicfoundation/solidity-analyzer
Description: `@nomicfoundation/solidity-analyzer` is an N-API library built in Rust, which exposes a single function, which takes the contents of a Solidity source file and returns its imports and version pragmas.
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer`

`@nomicfoundation/solidity-analyzer` is an N-API library built in Rust, which exposes a single function, which takes the contents of a Solidity source file and returns its imports and version pragmas.

## Installation

```bash
npm install @nomicfoundation/solidity-analyzer
```

## API

```ts
export interface AnalysisResult {
  versionPragmas: Array<string>;
  imports: Array<string>;
}

export function analyze(input: string): AnalysisResult;
```

## Example

```ts
analyze(`
  pragma solidity ^0.8.0;

  import "./file.sol";
`);

// { versionPragmas: [ '^0.8.0' ], imports: [ './file.sol' ] }
```

## Goals

This library has two different goals:

1. Being fast
2. Being error-tolerant

Both are achieved by not parsing the Solidity source but just tokenizing it instead. This allows us to create a simple state machine that only recognizes imports and pragmas, ignoring everything else, and recovering from malformed tokens or expressions.

## Browser support

This library doesn't work in a browser.

## Testing

This project has some JavaScript unit tests in `__test__`, and it's also tested using the entire [`smart-contract-sanctuary`](https://github.com/tintinweb/smart-contract-sanctuary).

You can find the scripts to test with the sanctuary in `test-with-sanctuary/`.

## Regenerating `index.js` and `index.d.ts`

These files have to be committed because of our current Github Actions, yet, they are autogenerated.

You can run `cargo clean`, `yarn clean`, and `yarn build` to recreate them.
npm package: @nomicfoundation/solidity-analyzer-darwin-arm64
Description: This is the **aarch64-apple-darwin** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-darwin-arm64`

This is the **aarch64-apple-darwin** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-darwin-x64
Description: This is the **x86_64-apple-darwin** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-darwin-x64`

This is the **x86_64-apple-darwin** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-freebsd-x64
Description: This is the **x86_64-unknown-freebsd** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.1

# `@nomicfoundation/solidity-analyzer-freebsd-x64`

This is the **x86_64-unknown-freebsd** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-linux-arm64-gnu
Description: This is the **aarch64-unknown-linux-gnu** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-linux-arm64-gnu`

This is the **aarch64-unknown-linux-gnu** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-linux-arm64-musl
Description: This is the **aarch64-unknown-linux-musl** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-linux-arm64-musl`

This is the **aarch64-unknown-linux-musl** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-linux-x64-gnu
Description: This is the **x86_64-unknown-linux-gnu** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-linux-x64-musl
Description: This is the **x86_64-unknown-linux-musl** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-linux-x64-musl`

This is the **x86_64-unknown-linux-musl** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-win32-arm64-msvc
Description: This is the **aarch64-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.1

# `@nomicfoundation/solidity-analyzer-win32-arm64-msvc`

This is the **aarch64-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-win32-ia32-msvc
Description: This is the **i686-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.1

# `@nomicfoundation/solidity-analyzer-win32-ia32-msvc`

This is the **i686-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-analyzer-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
Latest version: 0.1.2

# `@nomicfoundation/solidity-analyzer-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@nomicfoundation/solidity-analyzer`
npm package: @nomicfoundation/solidity-language-server
Description: Solidity language server by Nomic Foundation
Author: Nomic Foundation
Latest version: 0.8.25

# Solidity Language Server

A language server for the [Solidity](https://soliditylang.org/) programming language, used in the `Solidity by Nomic Foundation` VS code extension and the `@nomicfoundation/coc-solidity` coc.nvim extension.

Built by the [Nomic Foundation](https://nomic.foundation/) for the Ethereum community.

Join our [Hardhat Support Discord server](https://hardhat.org/discord) to stay up to date on new releases, plugins and tutorials.

## Install

The language server can be installed via npm:

```sh
npm install @nomicfoundation/solidity-language-server -g

```

To run the server standalone:

```sh
nomicfoundation-solidity-language-server --stdio
```

### coc.nvim

For coc the extension for this language server (found [here](https://www.npmjs.com/package/@nomicfoundation/coc-solidity)) can be installed through the coc vim command:

```vim
:CocInstall @nomicfoundation/coc-solidity
```

### neovim lsp

To run the language server directly through the neovim lsp (assuming [neovim/nvim-lspconfig](https://github.com/neovim/nvim-lspconfig))

```sh
local lspconfig = require 'lspconfig'
local configs = require 'lspconfig.configs'

configs.solidity = {
  default_config = {
    cmd = {'nomicfoundation-solidity-language-server', '--stdio'},
    filetypes = { 'solidity' },
    root_dir = lspconfig.util.find_git_ancestor,
    single_file_support = true,
  },
}

lspconfig.solidity.setup {}
```

[include '../docs/features.md']

## Contributing

Contributions are always welcome! Feel free to [open any issue](https://github.com/NomicFoundation/hardhat-vscode/issues) or send a pull request.

Go to [CONTRIBUTING.md](https://github.com/nomicfoundation/hardhat-vscode/blob/main/CONTRIBUTING.md) to learn about how to set up a development environment.

## Feedback, help and news

[Hardhat Support Discord server](https://hardhat.org/discord): for questions and feedback.

[Follow Hardhat on Twitter.](https://twitter.com/HardhatHQ)
npm package: @nomicfoundations/hardhat-config
Description: Recommended bundle of Hardhat plugins (ethers based)
Latest version: 1.0.1

# Nomicfoundation Hardhat Config

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/nomicfoundations/hardhat/tree/main/packages/hardhat-config.git
```

Move into the hardhat-config working directory

```sh
cd hardhat-config/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.19
$ tsdx test
 PASS  test/fraction.test.ts
 PASS  test/constants.test.ts
 PASS  test/token.test.ts

Test Suites: 1 skipped, 3 passed, 3 of 4 total
Tests:       3 skipped, 20 passed, 23 total
Snapshots:   0 total
Time:        0.869s, estimated 1s
Ran all test suites.
Done in 1.48s.
```
npm package: @nomiclabs/buidler-ethers
Description: Buidler plugin for ethers
Author: Nomic Labs LLC
Latest version: 2.0.2

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-ethers.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-ethers)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-ethers

[Buidler](http://getbuidler.com) plugin for integration with [ethers.js](https://github.com/ethers-io/ethers.js/).

## What

This plugin brings to Buidler the Ethereum library `ethers.js`, which allows you to interact with the Ethereum blockchain in a simple way.

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-ethers 'ethers@^5.0.0'
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-ethers");
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugins adds an `ethers` object to the Buidler Runtime Environment.

This object has the same API than `ethers.js`, with some extra Buidler-specific
functionality.

### Provider object

A `provider` field is added to `ethers`, which is an `ethers.providers.Provider`
automatically connected to the selected network.

### Helpers

These helpers are added to the `ethers` object:

```typescript
function getContractFactory(name: string, signer?: ethers.Signer): Promise<ethers.ContractFactory>;


function getContractAt(nameOrAbi: string | any[], address: string, signer?: ethers.Signer): Promise<ethers.Contract>;

function getSigners() => Promise<ethers.Signer[]>;
```

The `Contract`s and `ContractFactory`s returned by these helpers are connected to the first signer returned by `getSigners` be default.

## Usage

There are no additional steps you need to take for this plugin to work.

Install it and access ethers through the Buidler Runtime Environment anywhere you need it (tasks, scripts, tests, etc). For example, in your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-ethers");

// task action function receives the Buidler Runtime Environment as second argument
task(
  "blockNumber",
  "Prints the current block number",
  async (_, { ethers }) => {
    await ethers.provider.getBlockNumber().then((blockNumber) => {
      console.log("Current block number: " + blockNumber);
    });
  }
);

module.exports = {};
```

And then run `npx buidler blockNumber` to try it.

Read the documentation on the [Buidler Runtime Environment](https://buidler.dev/advanced/buidler-runtime-environment.html) to learn how to access the BRE in different ways to use ethers.js from anywhere the BRE is accessible.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array: `"node_modules/@nomiclabs/buidler-ethers/src/type-extensions.d.ts"`
npm package: @nomiclabs/buidler-ganache
Description: Buidler plugin for managing Ganache
Author: Nomic Labs LLC
Latest version: 1.3.3

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-ethers.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-ethers)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-ganache

This Buidler plugin automatically starts and stops [Ganache](https://github.com/trufflesuite/ganache-core) when running tests or scripts.

## What

This plugin creates a network named `ganache`. When this network is used, a Ganache server will be
automatically started before running tests and scripts, and stopped when finished.

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-ganache
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-ganache");
```

## Tasks

This plugin hooks into the `test` and `run` tasks to wrap them in the instantiation and termination of a `ganache-core` instance.
This plugin creates no additional tasks.

## Environment extensions

This plugin doesn't extend the Buidler Runtime Environment.

## Usage

There are no additional steps you need to take for this plugin to work.

## Configuration

You can set any of the [Ganache's options](https://github.com/trufflesuite/ganache-core#options) through the `ganache`
network config. All of them are supported, with the exception of `accounts`.

This example sets a larger block gas limit and the default balance of Ganache's accounts.

```js
module.exports = {
  defaultNetwork: "ganache",
  networks: {
    ganache: {
      gasLimit: 6000000000,
      defaultBalanceEther: 10
    }
  }
};
```

Note: The `accounts` option is not currently supported.
npm package: @nomiclabs/buidler-solhint
Description: Buidler plugin for solhint
Author: Nomic Labs LLC
Latest version: 1.3.3

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-solhint.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-solhint)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-solhint

[Buidler](http://getbuidler.com) plugin for integration with [solhint linter](https://github.com/protofire/solhint).

## What

This plugin runs solhint on the project's sources and prints the report.

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-solhint
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-solhint");
```

## Tasks

This plugin overrides the `check` task, runs solhint on the project's sources and prints the report to the console.

## Environment extensions

This plugin does not extend the environment.

## Usage

There are no additional steps you need to take for this plugin to work.

Install it, run `npx buidler check` and check the Solhint report.

You may want to add a [solhint configuration](https://github.com/protofire/solhint/blob/master/README.md) file to customize your rules or include a Solhint plugin.
npm package: @nomiclabs/buidler-solpp
Description: Buidler plugin for solpp
Author: Nomic Labs LLC
Latest version: 1.3.3

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-solpp.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-solpp)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-solpp

[Buidler](http://getbuidler.com) plugin for integration with the [solpp preprocessor](https://github.com/merklejerk/solpp).

## What

This plugin hooks into the compilation pipeline and runs the solpp preprocessor.

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-solpp
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-solpp");
```

## Environment extensions

This plugin does not extend the environment.

## Usage

There are no additional steps you need to take for this plugin to work.

Install it, run `npx buidler compile` and solc will compile the solpp generated contracts, which will be in `cache/solpp-generated-contracts`.

## Configuration

This plugin can by configured by setting a `solpp` entry in `buidler.config.js`. Its options are:

- `defs`: is an object where each property is the symbol's name and its value is the actual definition. Definitions can be numbers, string, expressions, lists, or functions. For more detail about symbols you can check [solpp README](https://github.com/merklejerk/solpp).
- `cwd: string`: directory where the contracts are located, it will be used for flattening purposes, by default it will be the project's source directory.
- `collapseEmptyLines: boolean`: delete empty lines, false by default.
- `noPreprocessor: boolean`: disable preprocessor, false by default.
- `noFlatten: boolean`: won't flatten contracts, true by default.
- `tolerant: boolean`: ignore if an imported contract file is missing when flattening, false by default.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array: `"node_modules/@nomiclabs/buidler-solpp/src/type-extensions.d.ts"`
npm package: @nomiclabs/buidler-truffle4
Description: Truffle 4 Buidler compatibility plugin
Author: Nomic Labs LLC
Latest version: 1.3.3

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-truffle4.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-truffle4)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-truffle4

[Buidler](http://getbuidler.com) plugin for integration with TruffleContract from Truffle 4

## What

This plugin brings to Buidler TruffleContracts from Truffle 4. With it you can call [`contract()` and `artifacts.require()`](https://truffleframework.com/docs/truffle/testing/writing-tests-in-javascript) like you normally would with Truffle. Interact with your contracts with a familiar API from tasks, scripts and tests.

Additionally, you can **migrate your contracts to Solidity 5 without needing to migrate your tests to Truffle 5**.

## Required plugins

This plugin requires [buidler-web3-legacy](https://github.com/nomiclabs/buidler/tree/master/packages/buidler-web3-legacy) as a prerequisite.

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-truffle4 @nomiclabs/buidler-web3-legacy web3@^0.20.7
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-truffle4");
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

An instance of [`TruffleEnvironmentArtifacts`](https://github.com/nomiclabs/buidler/blob/master/packages/buidler-truffle4/src/artifacts.ts) is injected into `env.artifacts` and the method `contract()` is injected into the global scope for using in tests.

## Usage

There are no additional steps you need to take for this plugin to work.

Install it, run `npx buidler test` and your Truffle tests should run with no need to make any modifications.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array: `"node_modules/@nomiclabs/buidler-truffle4/src/type-extensions.d.ts"`
npm package: @nomiclabs/buidler-vyper
Description: Buidler plugin to develop smart contracts in Vyper
Author: Nomic Labs LLC
Latest version: 1.3.4

# buidler-vyper

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-vyper.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-vyper)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

[Buidler](http://buidler.dev) plugin to develop smart contracts with Vyper.

## What

This plugin adds support for Vyper to Buidler. Once installed, Vyper contracts can be compiled by running the `compile` task.

This plugin generates the same artifact format as the built-in Solidity compiler, so that it can be used in conjunction with
all other plugins.

The Vyper compiler is run using the [official Docker images](https://hub.docker.com/r/ethereum/vyper).

## Installation

First, you have to install Docker Desktop by following its [Get Started guide](https://www.docker.com/get-started).

Then, you need to install the plugin by running

```bash
npm install --save-dev @nomiclabs/buidler-vyper
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-vyper");
```

## Required plugins

No plugins dependencies.

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugin does not extend the Buidler Runtime Environment.

## Configuration

This plugin adds an optional `vyper` entry to Buidler's config, which lets you specify the Vyper version to use. If no
version is given, the [latest one on Docker Hub](https://hub.docker.com/r/ethereum/vyper/tags) will be used.

This is an example of how to set it:

```js
module.exports = {
  vyper: {
    version: "0.1.0b9"
  }
};
```

## Usage

There are no additional steps you need to take for this plugin to work.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array:
`"node_modules/@nomiclabs/buidler-vyper/src/type-extensions.d.ts"`
npm package: @nomiclabs/buidler-waffle
Description: Buidler plugin to test smart contracts with Waffle
Author: Nomic Labs LLC
Latest version: 2.1.0

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-waffle.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-waffle)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-waffle

[Buidler](http://getbuidler.com) plugin for integration with [Waffle](https://getwaffle.io/).

## What

You can use this plugin to build smart contract tests using Waffle in Buidler,
taking advantage of both.

This plugin adds a Buidler-ready version of Waffle to the Buidler Runtime Environment,
and automatically initializes the [Waffle Chai matchers](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).

## Installation

```bash
npm install --save-dev @nomiclabs/buidler-waffle 'ethereum-waffle@^3.0.0' @nomiclabs/buidler-ethers 'ethers@^5.0.0'
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-waffle");
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugin adds a `waffle` object to the Buidler Runtime Environment. This object has all the Waffle functionality, already adapted to work with Buidler.

The `waffle` object has these properties:

- `provider`
- `deployContract`
- `solidity`
- `link`
- `deployMockContract`
- `createFixtureLoader`
- `loadFixture`

This plugin depends on [`@nomiclabs/buidler-ethers`](https://github.com/nomiclabs/buidler/tree/master/packages/buidler-ethers),
so it also injects an `ethers` object into the BRE, which is documented [here](https://github.com/nomiclabs/buidler/tree/master/packages/buidler-ethers#environment-extensions).

## Usage

Once installed, you can build your tests almost like in Waffle.

Instead of importing things from `ethereum-waffle`, you access them from the `waffle` property of the Buidler Runtime Environment.

For example, instead of doing

```typescript
import { deployContract } from "ethereum-waffle";
```

you should do

```typescript
import { waffle } from "@nomiclabs/buidler";
const { deployContract } = waffle;
```

Also, you don't need to call `chai.use`.

Note that by default, Buidler save its compilation output into `artifacts/` instead of `build/`. You can either use
that directory in your tests, or [customize your Buidler config](https://buidler.dev/config/#path-configuration).

## TypeScript support

This plugin supports TypeScript by following these steps:

1. Add these to your `tsconfig.json`'s `files` array:
  * `"node_modules/@nomiclabs/buidler-ethers/src/type-extensions.d.ts"`
  * `"node_modules/@nomiclabs/buidler-waffle/src/type-extensions.d.ts"`

2. Install these packages: `npm install --save-dev @types/mocha @types/chai`

We also recommend enabling `resolveJsonModule` in your `tsconfig.json`, as it's common
to import JSON files directly when using Waffle.

There's no need to import the Waffle's `solidity` Chai matchers. They are
automatically imported and initialized by this plugin, including its types.
npm package: @nomiclabs/buidler-web3
Description: Buidler plugin for using Web3 1.x
Author: Nomic Labs LLC
Latest version: 1.3.4

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-web3.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-web3)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-web3

This plugin integrates [Web3.js](https://github.com/ethereum/web3.js) `1.x` into [Buidler](http://getbuidler.com).

## What

This plugin brings to Buidler the Web3 module and an initialized instance of Web3.

# Installation

```bash
npm install --save-dev @nomiclabs/buidler-web3 web3
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-web3");
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugin adds the following elements to the `BuidlerRuntimeEnvironment`:

- `Web3`: The Web3.js module.
- `web3`: An instantiated Web3.js object connected to the selected network.

## Usage
Install it and access Web3.js through the Buidler Runtime Environment anywhere you need it (tasks, scripts, tests, etc). For example, in your `buidler.config.js`:
```
usePlugin("@nomiclabs/buidler-web3");

// task action function receives the Buidler Runtime Environment as second argument
task("accounts", "Prints accounts", async (_, { web3 }) => {
  
  console.log(await web3.eth.getAccounts());
  
});

module.exports = {};
```
And then run `npx buidler accounts` to try it.

Read the documentation on the [Buidler Runtime Environment](https://buidler.dev/documentation/#buidler-runtime-environment-bre) to learn how to access the BRE in different ways to use Web3.js from anywhere the BRE is accessible.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array: `"node_modules/@nomiclabs/buidler-web3/src/type-extensions.d.ts"`
npm package: @nomiclabs/buidler-web3-legacy
Description: Buidler plugin for using Web3 0.20.x
Author: Nomic Labs LLC
Latest version: 1.3.3

[![npm](https://img.shields.io/npm/v/@nomiclabs/buidler-web3-legacy.svg)](https://www.npmjs.com/package/@nomiclabs/buidler-web3-legacy)
[![buidler](https://buidler.dev/buidler-plugin-badge.svg?1)](https://buidler.dev)

# buidler-web3-legacy

This plugin integrates [Web3.js](https://github.com/ethereum/web3.js) `0.20x` into [Buidler](http://getbuidler.com).

## What

This plugin brings to Buidler the Web3 module and an initialized instance of Web3.

# Installation

```bash
npm install --save-dev @nomiclabs/buidler-web3-legacy web3@^0.20.7
```

And add the following statement to your `buidler.config.js`:

```js
usePlugin("@nomiclabs/buidler-web3-legacy");
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugin adds the following elements to the `BuidlerRuntimeEnvironment`:

- `Web3`: The Web3.js module.
- `web3`: An instantiated Web3.js object connected to the selected network.
- `pweb3`: A promisified version of `web3`.

## Usage

In Web3 0.20x some features are synchronous and some are asynchronous. For example `web3.eth.accounts` and `web3.eth.blockNumber` are synchronous and not supported. You'll get a `Synchronous requests are not supported, use pweb3 instead` error when trying to access them. To use these you need to use the promisified web3 and call the getter version of the property instead: `await pweb3.eth.getAccounts()`.

## TypeScript support

You need to add this to your `tsconfig.json`'s `files` array: `"node_modules/@nomiclabs/buidler-web3-legacy/src/type-extensions.d.ts"`
npm package: @nomiclabs/eslint-plugin-hardhat-internal-rules
Description: This plugin contains internal linting rules used in the [Hardhat repository](https://github.com/nomiclabs/hardhat/). It's not meant to be used by other projects.
Latest version: 1.0.2

This plugin contains internal linting rules used in the [Hardhat repository](https://github.com/nomiclabs/hardhat/). It's not meant to be used by other projects.
npm package: @nomiclabs/hardhat-docker
Description: A library to manage Docker from Hardhat plugins
Author: Nomic Labs LLC
Latest version: 2.0.2

[![npm](https://img.shields.io/npm/v/@nomiclabs/hardhat-docker.svg)](https://www.npmjs.com/package/@nomiclabs/hardhat-docker) [![hardhat](https://hardhat.org/buidler-plugin-badge.svg?1)](https://hardhat.org)

# `hardhat-docker`

## What

A library to manage Docker from Hardhat plugins.

## Installation

```bash
npm install @nomiclabs/hardhat-docker
```

## Usage

Importing HardhatDocker

```js
const { HardhatDocker } = require("@nomiclabs/hardhat-docker");
```

Running Docker container

```js
const image = { repository: "alpine", tag: "latest" };
const docker = await HardhatDocker.create();

if (!(await docker.hasPulledImage(image))) {
  await docker.pullImage(image);
}

const { statusCode, stdout, stderr } = await docker.runContainer(image, [
  "echo",
  "Hello world!",
]);

console.log(stdout.toString());
```

Available methods

| Method | Description | Arguments | Return Type |
| --- | --- | --- | --- |
| isInstalled | check if docker is installed |  | `Promise<boolean>` |
| imageExists | check if docker image is available on docker hub | Image | `Promise<boolean>` |
| hasPulledImage | check if docker image is pulled | Image | `Promise<boolean>` |
| isImageUpToDate | check if latest docker image is installed | Image | `Promise<boolean>` |
| pullImage | pulls docker image from docker hub | Image | `Promise<void>` |
| imageToRepoTag | returns image repository tag | Image | `String` |
| runContainer | runs docker container | Image, command | `Promise<ProcessResult>` |
npm package: @nomiclabs/hardhat-ganache
Description: Hardhat plugin for managing Ganache
Author: Nomic Labs LLC
Latest version: 2.0.1

[![npm](https://img.shields.io/npm/v/@nomiclabs/hardhat-ganache.svg)](https://www.npmjs.com/package/@nomiclabs/hardhat-ganache) [![hardhat](https://hardhat.org/buidler-plugin-badge.svg?1)](https://hardhat.org)

# hardhat-ganache

This Hardhat plugin automatically starts and stops [Ganache](https://github.com/trufflesuite/ganache-core) when running tests or scripts.

## What

This plugin creates a network named `ganache`. When this network is used, a Ganache server will be automatically started before running tests and scripts, and stopped when finished.

## Installation

```bash
npm install --save-dev @nomiclabs/hardhat-ganache
```

And add the following statement to your `hardhat.config.js`:

```js
require("@nomiclabs/hardhat-ganache");
```

Or, if you are using TypeScript, add this to your `hardhat.config.ts`:

```js
import "@nomiclabs/hardhat-ganache";
```

## Tasks

This plugin hooks into the `test` and `run` tasks to wrap them in the instantiation and termination of a `ganache-core` instance. This plugin creates no additional tasks.

## Environment extensions

This plugin doesn't extend the Hardhat Runtime Environment.

## Usage

There are no additional steps you need to take for this plugin to work.

## Configuration

You can set any of the [Ganache's options](https://github.com/trufflesuite/ganache-core#options) through the `ganache` network config. All of them are supported, with the exception of `accounts`.

This example sets a larger block gas limit and the default balance of Ganache's accounts.

```js
module.exports = {
  defaultNetwork: "ganache",
  networks: {
    ganache: {
      gasLimit: 6000000000,
      defaultBalanceEther: 10,
    },
  },
};
```

Note: The `accounts` option is not currently supported.
npm package: @nomiclabs/hardhat-solhint
Description: Hardhat plugin for solhint
Author: Nomic Foundation
Latest version: 5.0.0

# hardhat-solhint

[Hardhat](https://hardhat.org) plugin for integration with [solhint linter](https://github.com/protofire/solhint).

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-solhint@hh2"
```
npm package: @nomiclabs/hardhat-solpp
Description: Hardhat plugin for solpp
Author: Nomic Foundation
Latest version: 3.0.0

# hardhat-solpp

[Hardhat](https://hardhat.org) plugin for integration with the [solpp preprocessor](https://github.com/merklejerk/solpp).

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-solpp@hh2"
```
npm package: @nomiclabs/hardhat-truffle4
Description: Truffle 4 Hardhat compatibility plugin
Author: Nomic Foundation
Latest version: 3.0.0

# hardhat-truffle4

[Hardhat](https://hardhat.org) plugin for integration with TruffleContract from Truffle 4.

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-truffle4@hh2"
```
npm package: @nomiclabs/hardhat-truffle5
Description: Truffle 5 Hardhat compatibility plugin
Author: Nomic Labs LLC
Latest version: 3.0.0

# hardhat-truffle5

[Hardhat](https://hardhat.org) plugin for integration with TruffleContract from Truffle 5. This allows tests and scripts written for Truffle to work with Hardhat.

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-truffle5@hh2"
```
npm package: @nomiclabs/hardhat-vyper
Description: Hardhat plugin to develop smart contracts in Vyper
Author: Nomic Labs LLC
Latest version: 4.0.0

# hardhat-vyper

[Hardhat](https://hardhat.org) plugin to develop smart contracts with Vyper.

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-vyper@hh2"
```
npm package: @nomiclabs/hardhat-waffle
Description: Hardhat plugin to test smart contracts with Waffle
Author: Nomic Labs LLC
Latest version: 2.0.6

[![npm](https://img.shields.io/npm/v/@nomiclabs/hardhat-waffle.svg)](https://www.npmjs.com/package/@nomiclabs/hardhat-waffle) [![hardhat](https://hardhat.org/buidler-plugin-badge.svg?1)](https://hardhat.org)

# hardhat-waffle

[Hardhat](https://hardhat.org) plugin for integration with [Waffle](https://getwaffle.io/).

## What

You can use this plugin to build smart contract tests using Waffle in Hardhat, taking advantage of both.

This plugin adds a Hardhat-ready version of Waffle to the Hardhat Runtime Environment, and automatically initializes the [Waffle Chai matchers](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).

## Installation

```bash
npm install --save-dev @nomiclabs/hardhat-waffle 'ethereum-waffle@^3.0.0' @nomiclabs/hardhat-ethers 'ethers@^5.0.0' @types/sinon-chai@^3.2.3
```

And add the following statement to your `hardhat.config.js`:

```js
require("@nomiclabs/hardhat-waffle");
```

Or, if you are using TypeScript, add this to your `hardhat.config.ts`:

```js
import "@nomiclabs/hardhat-waffle";
```

## Tasks

This plugin creates no additional tasks.

## Environment extensions

This plugin adds a `waffle` object to the Hardhat Runtime Environment. This object has all the Waffle functionality, already adapted to work with Hardhat.

The `waffle` object has these properties:

- `provider`
- `deployContract`
- `solidity`
- `link`
- `deployMockContract`
- `createFixtureLoader`
- `loadFixture`

This plugin depends on [`@nomiclabs/hardhat-ethers`](https://github.com/nomiclabs/hardhat/tree/master/packages/hardhat-ethers), so it also injects an `ethers` object into the HRE, which is documented [here](https://github.com/nomiclabs/hardhat/tree/master/packages/hardhat-ethers#environment-extensions).

## Usage

Once installed, you can build your tests almost like in Waffle.

Instead of importing things from `ethereum-waffle`, you access them from the `waffle` property of the Hardhat Runtime Environment.

For example, instead of doing

```js
const { deployContract } = require("ethereum-waffle");
```

you should do

```typescript
const { waffle } = require("hardhat");
const { deployContract } = waffle;
```

Also, you don't need to call `chai.use` in order to use [Waffle's Chai matchers](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html).

Note that by default, Hardhat saves its compilation output into `artifacts/` instead of `build/`. You can either use that directory in your tests, or [customize your Hardhat config](https://hardhat.org/hardhat-runner/docs/config#path-configuration).
npm package: @nomiclabs/hardhat-web3
Description: Hardhat plugin for using Web3 1.x
Author: Nomic Labs LLC
Latest version: 3.0.0

# hardhat-web3

This plugin integrates [Web3.js](https://github.com/ethereum/web3.js) `1.x` into [Hardhat](https://hardhat.org).

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-web3@hh2"
```
npm package: @nomiclabs/hardhat-web3-legacy
Description: Hardhat plugin for using Web3 0.20.x
Author: Nomic Labs LLC
Latest version: 3.0.0

# hardhat-web3-legacy

This plugin integrates [Web3.js](https://github.com/ethereum/web3.js) `0.20x` into [Hardhat](https://hardhat.org).

**Version compatibility warning:** This version of the package does not work with Hardhat 2 nor 3. Please read below to migrate to Hardhat 3 or install a version compatible with Hardhat 2.

### Installation

#### Hardhat 3

To learn how to migrate to Hardhat 3, please read the [migration guide](https://hardhat.org/migrate-from-hardhat2).

#### Hardhat 2

To use this package with Hardhat 2, please install the `hh2` tag with npm or your package manager of choice:

```bash
npm install --save-dev "@nomiclabs/hardhat-web3-legacy@hh2"
```
npm package: @nomiclabs/hh
Description: Launcher binary for Hardhat
Author: Nomic Labs LLC
Latest version: 0.0.1

[![npm](https://img.shields.io/npm/v/@nomiclabs/hardhat-ethers.svg)](https://www.npmjs.com/package/@nomiclabs/hardhat-ethers)
[![hardhat](https://hardhat.org/buidler-plugin-badge.svg?1)](https://hardhat.org)

# hh

TODO

## What

TODO

## Installation

```bash
npm install --global @nomiclabs/hh
```

## Usage

TODO