# Credenza3 Contracts lib

#### Ethers.js

Ethers.js v6 is required

```
<script src="https://cdnjs.cloudflare.com/ajax/libs/ethers/6.0.8/ethers.umd.min.js" integrity="sha512-B/0gQMZc/py0Ldqgnuen4yZzABN1sz6dv65+2pVQHgOlIcrshSTJsk7yCSWqh0wh94KUD4Lr5F4HSWzcZjhqqw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
```

## Installation

with npm

```
npm install @credenza-web3/contracts-lib
```

with yarn

```
yarn add @credenza-web3/contracts-lib
```

with pnpm

```
pnpm install @credenza-web3/contracts-lib
```

or include a script tag

```
<script src="https://unpkg.com/@credenza-web3/contracts-lib/dist/contracts-lib.umd.js"></script>
or 
<script src="https://cdn.jsdelivr.net/npm/@credenza-web3/contracts-lib/dist/contracts-lib.umd.js"></script>
```

## Usage

```
import { 
  listContracts, 
  getCredenzaContract, 
  fetchCredenzaContractJson, 
  CDNProviders 
} from '@credenza-web3/contracts-lib'
```

or

```
const { 
  listContracts, 
  getCredenzaContract, 
  fetchCredenzaContractJson, 
  CDNProviders 
} = window.CredenzaContracts
```

#### Get ethers instance of Credenza contract

```
const contract = await getCredenzaContract({
  address: string
  cdn?: CDNProviders.JSDELIVR | CDNProviders.UNPKG, // defaults to CDNProviders.UNPKG
  cache?: boolean // defaults to true
  // either 'provider' or 'signer' or 'wallet' is required
  provider?: Provider
  signer?: Signer
  wallet?: Provider | Signer
  // either 'abi' or 'name' 
  // if 'name' the abi will be fetched from https://www.npmjs.com/package/@credenza-web3/contracts
  name?: string
  abi?: Abi | Abi[]
})
```

#### Get compiled contract JSON 

```
const {abi} = await fetchCredenzaContractJson({
  cdn?: CDNProviders.JSDELIVR | CDNProviders.UNPKG, // defaults to CDNProviders.UNPKG
  cache?: boolean // defaults to true
  name: string
})
```

#### List available Credenza contracts

```
const cdnProvider = CDNProviders.JSDELIVR | CDNProviders.UNPKG | undefined
const contractList = await listContracts(cdnProvider) // defaults to CDNProviders.UNPKG
```