{"id":41940863,"url":"https://github.com/playmint/hardhat-starknetjs","last_synced_at":"2026-01-25T18:37:36.438Z","repository":{"id":57683413,"uuid":"494005168","full_name":"playmint/hardhat-starknetjs","owner":"playmint","description":"This plugin brings to Hardhat the StarkNet library StarkNet.js, which allows you to interact with StarkNet via javascript in a simple way.","archived":false,"fork":false,"pushed_at":"2022-05-25T09:25:40.000Z","size":429,"stargazers_count":10,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T04:36:27.450Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/playmint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-19T09:28:44.000Z","updated_at":"2024-02-02T12:19:52.000Z","dependencies_parsed_at":"2022-09-05T17:31:01.266Z","dependency_job_id":null,"html_url":"https://github.com/playmint/hardhat-starknetjs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/playmint/hardhat-starknetjs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playmint%2Fhardhat-starknetjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playmint%2Fhardhat-starknetjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playmint%2Fhardhat-starknetjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playmint%2Fhardhat-starknetjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/playmint","download_url":"https://codeload.github.com/playmint/hardhat-starknetjs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/playmint%2Fhardhat-starknetjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28756442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T16:32:25.380Z","status":"ssl_error","status_checked_at":"2026-01-25T16:32:09.189Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-25T18:37:36.380Z","updated_at":"2026-01-25T18:37:36.431Z","avatar_url":"https://github.com/playmint.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/playmint/hardhat-starknetjs/main/hardhat-starknetjs.png\" width=\"300\" height=\"300\"/\u003e\n\n[![NPM Package](https://img.shields.io/npm/v/@playmint/hardhat-starknetjs.svg?style=flat-square)](https://www.npmjs.com/package/@playmint/hardhat-starknetjs)\n---\n# hardhat-starknetjs\n[Hardhat](https://hardhat.org/) plugin for integration with [StarkNet.js](https://www.starknetjs.com/).\n\n## What\nThis plugin brings to Hardhat the StarkNet library `StarkNet.js`, which allows you to interact with StarkNet via javascript in a simple way.\n\nNOTE: This plugin doesn't compile your StarkNet contracts or manage artifacts, it's intended to be used in conjunction with another plugin such as [hardhat-starknet-compile](https://github.com/playmint/hardhat-starknet-compile).\n\n## Installation\n`npm install --save-dev @playmint/hardhat-starknetjs starknet`\n\nAnd add the following to your `hardhat.config.ts`:\n```ts\nimport \"@playmint/hardhat-starknetjs\";\n```\n\nOr if you're using Javascript, add this to `hardhat.config.js`:\n```js\nrequire(\"@playmint/hardhat-starknetjs\");\n```\n## Config extensions\nThis plugin adds a field `starknetArtifacts` to `ProjectPathsConfig` which contains the path to where the plugin should look for artifacts (compiled StarkNet contracts). This defaults to `artifacts-starknet`.\n\nIt also adds a `starknetjs` object to `HardhatConfig` which contains `networks`, a mapping of network name to network config (as defined by the constructor of StarkNet.js's `Provider` object). The default networks populated are `goerli-alpha` and `mainnet-alpha`, you can add any additional ones you need or change the default networks as you see fit.\n```ts\nconst config: HardhatUserConfig = {\n    paths: {\n        starknetArtifacts: \"artifacts-starknet\"\n    },\n    starknetjs: {\n        networks: {\n            \"goerli-alpha\": { network: \"goerli-alpha\" },\n            \"mainnet-alpha\": { network: \"mainnet-alpha\" },\n            \"devnet\": { baseUrl: \"http://localhost:5000\" }\n        }\n    }\n};\n```\n\n## Selecting a network\nYou can select the network you want by either:\n* setting the environment variable `STARKNETJS_NETWORK`, or\n* using the `--starknetjs-network` argument when running a script or test, e.g. `npx hardhat run scripts/deploy.ts --starknetjs-network devnet`\n\n## Environment extensions\nThis plugin adds an object called `starknetjs` to the Hardhat Runtime Environment.\n\n### NetworkId\nA `networkId` field is added to `starknetjs` which is a string, and contains the key of the selected network from `hre.config.starknetjs.networks`.\n\n### Provider object\nA `provider` field is added to `starknetjs`, which is a StarkNet.js `Provider` automatically connected to the selected network.\n\n### Helpers\n```ts\nfunction getContractFactory(\n    contractName: string,\n    providerOrAccount?: Provider | Account | undefined,\n    abi?: Abi | undefined): Promise\u003cContractFactory\u003e;\n\nfunction getContractFactoryFromArtifact(\n    artifact: CompiledContract,\n    providerOrAccount?: Provider | Account | undefined,\n    abi?: Abi | undefined): ContractFactory;\n\nfunction getContractAt(\n    contractName: string,\n    address: string,\n    providerOrAccount?: Provider | Account | undefined,\n    abi?: Abi | undefined): Promise\u003cContract\u003e;\n\nfunction getContractAtFromArtifact(\n    artifact: CompiledContract,\n    address: string,\n    providerOrAccount?: Provider | Account | undefined,\n    abi?: Abi | undefined): Contract;\n\nfunction getAccount(\n    address: string,\n    keyPairOrSigner: KeyPair | SignerInterface,\n    provider?: Provider): Account;\n\nfunction readArtifact(searchPath: string): Promise\u003cCompiledContract\u003e;\n```\n\n## Usage\nExample deploy.ts:\n```ts\nimport hre from \"hardhat\";\n\n\nasync function main() {\n    // these paths will all resolve to the same artifact\n    let factory = await hre.starknetjs.getContractFactory(\"test\");\n    factory = await hre.starknetjs.getContractFactory(\"artifacts-starknet/test\");\n    factory = await hre.starknetjs.getContractFactory(\"test.cairo\");\n    factory = await hre.starknetjs.getContractFactory(\"test.cairo/test.json\");\n\n    const instance = await factory.deploy();\n\n    await instance.invoke_some_func(42);\n\n    console.log(await instance.get_some_value());\n}\n\nmain().catch(err =\u003e console.error(err));\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaymint%2Fhardhat-starknetjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplaymint%2Fhardhat-starknetjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplaymint%2Fhardhat-starknetjs/lists"}