# @snowcone/contracts

> ## Develop

Latest version **9.0.73** (published 2023-07-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install @snowcone/contracts
pnpm add @snowcone/contracts
yarn add @snowcone/contracts
bun add @snowcone/contracts
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; large bundle.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 9.0.73 |
| Published | 2023-07-19 |
| First published | 2022-11-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 4 |
| Unpacked size | 12.2 MB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Maintainers | sirbenchalot |

## Links

- npm: https://www.npmjs.com/package/@snowcone/contracts
- Repository: https://github.com/sirbenchalot757/Snowcone-icy-contracts
- Issues: https://github.com/sirbenchalot757/Snowcone-icy-contracts/issues
- npm.io page: https://npm.io/package/@snowcone/contracts

## Dependencies (4)

- [fs](https://npm.io/package/fs.md) ^0.0.1-security
- [path](https://npm.io/package/path.md) ^0.12.7
- [abitype](https://npm.io/package/abitype.md) ^0.8.11
- [fs-extra](https://npm.io/package/fs-extra.md) ^11.1.1

## Recent versions

- 9.0.73 (latest) — 2023-07-19
- 9.0.72 — 2023-07-19
- 9.0.71 — 2023-07-10
- 9.0.69 — 2023-07-10
- 9.0.68 — 2023-07-10
- 9.0.67 — 2023-07-03
- 9.0.66 — 2023-06-28
- 9.0.65 — 2023-06-28
- 9.0.64 — 2023-06-23
- 9.0.63 — 2023-06-23
- 9.0.62 — 2023-06-23
- 9.0.61 — 2023-06-23
- 9.0.6 — 2023-06-23
- 9.0.59 — 2023-06-23
- 9.0.58 — 2023-06-23
- … 16 more at https://npm.io/package/@snowcone/contracts/versions

## README

# Snowcone-icy-contracts

## Develop

### Unit Tests

To run the unit tests suite (in Javascript), you'll need to run `yarn install` first then manually run Hardhat in order to enable ESM support:

```bash
node --require esm ./node_modules/.bin/hardhat test --network hardhat
```

Alternatively, you can run a local Hardhat node in another terminal using

```bash
yarn chain --network hardhat
```

then run the following:

```bash
yarn test
```

It might happens that Hardhat cannot resolve custom error (test failing on "Expecter nameOfTheError() but reverted
without a reason string"), just restart yarn chain.

### System Tests

End-to-end tests have been written in Solidity, using Foundry.

To get set up:

1. Install [Foundry](https://github.com/gakonst/foundry).

```bash
curl -L https://foundry.paradigm.xyz | sh
```

2. Install external lib(s)

```bash
git submodule update --init
```

3. Run tests:

```bash
forge test
```

4. Update Foundry periodically:

```bash
foundryup
```

Resources:

- [The Forge-Book](https://onbjerg.github.io/foundry-book/forge)

### Coverage

To check current unit tests coverage:

```bash
node --require esm ./node_modules/.bin/hardhat coverage --network hardhat
```

A few notes:

- Hardhat doesn't support [esm](https://nodejs.org/api/esm.html) yet, hence running manually with node.
- We are currently using a forked version of [solidity-coverage](https://www.npmjs.com/package/solidity-coverage) that includes optimizer settings. Ideally we will move to the maintained version after this is fixed on their end.
- SnowCone V2 codebase being quite large, Solidity Coverage might run out of memory if you modify/add parts to it. Please check [Solidity-coverage FAQ](https://github.com/sc-forks/solidity-coverage/blob/master/docs/faq.md) in order to address the issue.

## Deploy

SnowCone uses the [Hardhat Deploy](https://github.com/wighawag/hardhat-deploy) plugin to deploy contracts to a given network. But before using it, you must create a `./mnemonic.txt` file containing the mnemonic phrase of the wallet used to deploy. You can generate a new mnemonic using [this tool](https://github.com/itinance/mnemonics). Generate a mnemonic at your own risk.

Then, to execute the `./deploy/deploy.js` script, run the following:

```bash
npx hardhat deploy --network $network
```

\_You'll likely want to set the optimizer runs to 10000 in `./hardhat.config.js` before deploying to prevent contract size errors. The preset value of 1000000 is necessary for hardhat to run unit tests successfully. Bug about this opened [here](https://github.com/NomicFoundation/hardhat/issues/2657#issuecomment-1113890401).

Contract artifacts will be outputted to `./deployments/$network/**` and should be checked in to the repo.

## Verification

To verify the contracts on [Etherscan](https://etherscan.io), make sure you have an `ETHERSCAN_API_KEY` set in your `./.env` file. Then run the following:

```bash
npx hardhat --network $network etherscan-verify
<!-- npx hardhat --network arbitrumGoerli etherscan-verify
```

<!-- npx hardhat --network fuji etherscan-verify -->

This will verify all of the deployed contracts in `./deployments`.

---
_Source: https://npm.io/package/@snowcone/contracts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
