# PNS Libraries

PNS support is available in many popular languages. If you know of a library that is not listed here, please [send us a PR](https://github.com/pulsedomains/pns-contracts/compare).

### Javascript

* [pnsjs](https://www.npmjs.com/package/@pnsdomains/pnsjs), maintained by the PNS developers
* [ethers.js](https://github.com/ethers-io/ethers.js)

#### Which Javascript library should I use?

If you are already using `ethers.js`, and do not require functionality such as creating subdomains, transferring ownership, or updating resolvers, use built in PNS features of these libraries.

Otherwise, use `pnsjs`.

#### Accessing smart contracts directly

All the PNS smart contracts are published as `@pnsdomains/pns-contracts` [npm module](https://www.npmjs.com/package/@pnsdomains/pns-contracts).

This is how you include abi into your frontend code.

```
import {
  PNS,
  PublicResolver
} from '@pnsdomains/pns-contracts'`
```

This is how you import our smartcontract within Solidity.

```
import '@pnsdomains/pns-contracts/contracts/registry/PNS.sol';
```

### Go

* [go-pns](https://github.com/pulsedomains/go-pns)

## Next Steps

Once you've chosen a library, read Working with PNS to learn how to use your chosen PNS library in your application.
