> For the complete documentation index, see [llms.txt](https://docs.pulse.domains/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pulse.domains/dapp-developer-guide/getting-started/pns-libraries.md).

# 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.
