# Add or remove a bid on an auction

### Prerequisites

Before getting started, make sure you have the following ready:

1. [Create a Ternoa](https://docs.ternoa.network/getting-started/wallets/ternoa-wallet) account with [Alphanet CAPS](https://docs.ternoa.network/build-1/javascript/nft-features-and-pallets/sale-your-nft/auction/broken-reference)
2. Install and set up your editor of choice (we will use Visual Studio Code \[VSC] in this tutorial)
3. Install [NodeJS v.14+](https://nodejs.org/en/download/) & NPM
4. [Install & initialize Ternoa-JS](https://docs.ternoa.network/build-1/javascript/ternoa-js-library-utilities/installation-and-initialization)

### Bid on an auction using Ternoa-JS

This function adds a bid to an existing auction NFT on the Ternoa chain. It returns an object promise containing the BidAddedEvent provided by the Ternoa blockchain.

{% hint style="info" %}
Use your own account by updating the `//TernoaTestAccount` with your account seed when retrieving the keyring from the example below. **Replace the NFT\_ID** with the existing one to bid on, and the **bidAmount**.
{% endhint %}

```typescript
import {
    addBid,
    initializeApi,
    getKeyringFromSeed,
    WaitUntil,
} from "ternoa-js";

const auctionBid = async () => {
    try {
        await initializeApi();
        const keyring = await getKeyringFromSeed("//TernoaTestAccount");
        const NFT_ID = // update with the nft id you want to bid on.
        const bidAmount = // update with the amount to bid.
        const res = await addBid(
            NFT_ID,
            bidAmount,
            keyring,
            WaitUntil.BlockInclusion
        );
        console.log(`Bid added to NFT ${res.nftId} for ${res.amountRounded}CAPS`);
    } catch (e) {
        console.error(e);
    }
};
```

#### The expected params

```markdown
`nftId`: The ID of the auctioned NFT.
`amount`: Rhe amount to bid.
`keyring`: The provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil defines at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.
```

#### Response

The response provided from the blockchain event includes all the information below according to the parameters provided when bidding on an auction.

```markdown
`nftId`: NFT id auctioned.
`bidder`: The bidder's address.
`amount`: The amount bid as a string corresponding to the value in a big number.
`amountRounded`: The amount bid as a number.
```

### Remove a bid using Ternoa-JS

This function removes a bid from an auction on the Ternoa chain. It returns an object promise containing the BidRemovedEvent provided by the Ternoa blockchain.

{% hint style="info" %}
Use your own account by updating the `//TernoaTestAccount` with your account seed when retrieving the keyring from the example below. **Replace the NFT\_ID** with the existing one to remove the bid.&#x20;
{% endhint %}

```typescript
import {
    removeBid,
    initializeApi,
    getKeyringFromSeed,
    WaitUntil,
} from "ternoa-js";

const auctionBidRemoved = async () => {
    try {
        await initializeApi();
        const keyring = await getKeyringFromSeed("//TernoaTestAccount");
        const NFT_ID = // update with the nft id you want to remove the bid.
        const res = await removeBid(
            NFT_ID,
            keyring,
            WaitUntil.BlockInclusion
        );
        console.log(`Bid removed from NFT ${res.nftId}`);
    } catch (e) {
        console.error(e);
    }
};
```

#### The expected params

```markdown
`nftId`: The ID of the auctioned NFT.
`keyring`: The provided keyring (containing the address) will be used to sign the transaction and pay the execution fee.
`waitUntil`: WaitUntil defines at which point we want to get the results of the transaction execution: BlockInclusion or BlockFinalization.
```

#### Response

The response provided from the blockchain event includes all the information below according to the parameters provided when removing a bid.

```markdown
`nftId`: NFT id auctioned.
`bidder`: The bidder address who removed the bid.
`amount`: The bid amount removed as a string corresponding to the value in a big number.
`amountRounded`: The bid amount is removed as a number.
```

### Support

If you face any trouble, feel free to reach out to our community engineers in our [Discord](https://discord.gg/fUmBkPpnRu).
