# @integraledger/lcp/ccd

> The exports of @integraledger/lcp/ccd.

Source: https://lcp.integraledger.com/reference/api/ccd

## Interfaces

### CcdChoice

#### Properties

| Property    | Type                                                             |
| ----------- | ---------------------------------------------------------------- |
|  `accepted` | [`PaymentRequirements`](https://lcp.integraledger.com/reference/api/x402#paymentrequirements) |
|  `now`      | `number`                                                         |
|  `required` | [`PaymentRequired`](https://lcp.integraledger.com/reference/api/x402#paymentrequired)         |

***

### CcdReader

Bounded, read-only calls against one network's node. Every failure rejects with `ReaderError`.

#### Properties

| Property   | Modifier   | Type                  |
| ---------- | ---------- | --------------------- |
|  `network` | `readonly` | `` `ccd:${string}` `` |

#### Methods

##### item()

> **item**(`hash`): `Promise`\<[`CcdItem`](#ccditem) | `null`>

gRPC v2 `GetBlockItemStatus`; null when the node does not know the item.

###### Parameters

| Parameter | Type     |
| --------- | -------- |
| `hash`    | `string` |

###### Returns

`Promise`\<[`CcdItem`](#ccditem) | `null`>

***

### CcdRef

The read keys recorded at claim.

#### Properties

| Property        | Type                  |
| --------------- | --------------------- |
|  `asset`        | `string`              |
|  `idDigest`     | `` `0x${string}` ``   |
|  `network`      | `` `ccd:${string}` `` |
|  `settleBy`     | `number`              |
|  `transaction?` | `string`              |

***

### CcdTransfer

#### Properties

| Property    | Type                                       |
| ----------- | ------------------------------------------ |
|  `amount`   | `bigint`                                   |
|  `kind`     | `"ccd"` \| `"plt"`                         |
|  `memo`     | `Uint8Array`\<`ArrayBufferLike`> \| `null` |
|  `receiver` | `Uint8Array`                               |
|  `tokenId?` | `string`                                   |

***

### CcdUnsigned

#### Properties

| Property            | Type                  |
| ------------------- | --------------------- |
|  `request`          | `object`              |
| `request.amount`    | `string`              |
| `request.asset`     | `string`              |
| `request.expiresBy` | `number`              |
| `request.kind`      | `"ccd-transfer"`      |
| `request.memo`      | `Uint8Array`          |
| `request.network`   | `` `ccd:${string}` `` |
| `request.sponsor`   | `string`              |
| `request.toAddress` | `string`              |

#### Methods

##### complete()

> **complete**(`signedTransaction`): [`Refusal`](https://lcp.integraledger.com/reference/api#refusal) | [`CcdPaymentPayload`](#ccdpaymentpayload)

Takes the sender-signed V1 sponsored transaction in the SDK's `signableToJSON` form.

###### Parameters

| Parameter           | Type                          |
| ------------------- | ----------------------------- |
| `signedTransaction` | [`Json`](https://lcp.integraledger.com/reference/api#json) |

###### Returns

[`Refusal`](https://lcp.integraledger.com/reference/api#refusal) | [`CcdPaymentPayload`](#ccdpaymentpayload)

## Type Aliases

### CcdItem

> **CcdItem** = \{ `state`: `"received"`; } | \{ `state`: `"committed"`; } | \{ `sender`: `Uint8Array` | `null`; `state`: `"finalized"`; `success`: `boolean`; `transfers`: readonly [`CcdTransfer`](#ccdtransfer)\[]; }

***

### CcdNetwork

> **CcdNetwork** = `` `ccd:${string}` ``

CAIP-2: `ccd:` and the first 32 lowercase hex digits of the genesis block hash.

***

### CcdPaymentPayload

> **CcdPaymentPayload** = `object`

#### Properties

| Property                    | Type                                                                      |
| --------------------------- | ------------------------------------------------------------------------- |
|  `accepted`                 | [`PaymentRequirements`](https://lcp.integraledger.com/reference/api/x402#paymentrequirements)          |
|  `extensions?`              | [`PaymentRequired`](https://lcp.integraledger.com/reference/api/x402#paymentrequired)\[`"extensions"`] |
|  `payload`                  | `object`                                                                  |
| `payload.signedTransaction` | `object`                                                                  |
|  `resource?`                | [`PaymentRequired`](https://lcp.integraledger.com/reference/api/x402#paymentrequired)\[`"resource"`]   |
|  `x402Version`              | `2`                                                                       |

***

### CcdStatus

> **CcdStatus** = \{ `finality`: `"finalized"`; `state`: `"settled"`; } | \{ `state`: `"pending"`; `why`: `"not-found"` | `"received"` | `"committed"` | `"unreadable"`; } | \{ `state`: `"failed"`; `why`: `"rejected"` | `"not-this-instrument"`; }

## Variables

### exactCcd

> `const` **exactCcd**: `Readonly`\<\{ `advertise`: [`X402Advertise`](https://lcp.integraledger.com/reference/api/x402#x402advertise); `bound`: (`presented`) => `Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>; `build`: (`c`, `h`) => `Promise`\<[`Refusal`](https://lcp.integraledger.com/reference/api#refusal) | [`CcdUnsigned`](#ccdunsigned)>; `claims`: `boolean`; `id`: `"x402/exact/ccd"`; `pattern`: [`LcpPattern`](https://lcp.integraledger.com/reference/api/x402#lcppattern); `read`: (`doc`) => [`Refusal`](https://lcp.integraledger.com/reference/api#refusal) | [`X402Read`](https://lcp.integraledger.com/reference/api/x402#x402read); `recover`: (`ref`, `reader`) => `Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>; `reference`: (`presented`) => `Promise`\<[`Refusal`](https://lcp.integraledger.com/reference/api#refusal) | [`CcdRef`](#ccdref)>; `status`: (`ref`, `reader`) => `Promise`\<[`CcdStatus`](#ccdstatus)>; `tie`: (`accepts`, `request`) => \[`"x402"`, \{ `accepts`: readonly [`PaymentRequirements`](https://lcp.integraledger.com/reference/api/x402#paymentrequirements)\[]; `request`: [`RequestCommitment`](https://lcp.integraledger.com/reference/api/x402#requestcommitment); }]; `unplaced`: (`option`) => [`PaymentRequirements`](https://lcp.integraledger.com/reference/api/x402#paymentrequirements); }>

## Functions

### accountBytes()

> **accountBytes**(`address`): `Uint8Array`\<`ArrayBufferLike`> | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)

The 32 bytes of a base58check account address whose version byte is 1: its last four bytes are the first four of
the double SHA-256 of the 33 before them.

#### Parameters

| Parameter | Type     |
| --------- | -------- |
| `address` | `string` |

#### Returns

`Uint8Array`\<`ArrayBufferLike`> | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)

***

### ccdIdDigest()

> **ccdIdDigest**(`sender`, `receiver`, `amount`): `Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>

SHA-256 over the 32 + 32 bytes of the two accounts and the amount as a 32-byte big-endian integer.

#### Parameters

| Parameter  | Type         |
| ---------- | ------------ |
| `sender`   | `Uint8Array` |
| `receiver` | `Uint8Array` |
| `amount`   | `bigint`     |

#### Returns

`Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>

***

### ccdMemo()

> **ccdMemo**(`h`): `Uint8Array`

The CBOR text string of `toLcpString(h)`: `78 4d` and the 77 ASCII bytes.

#### Parameters

| Parameter | Type                |
| --------- | ------------------- |
| `h`       | `` `0x${string}` `` |

#### Returns

`Uint8Array`

***

### ccdOption()

> **ccdOption**(`o`): `o is PaymentRequirements`

The pairing's filter: an `exact` option on a `ccd:` network, for CCD or a token symbol, whose `payTo` and
`extra.feePayer` are base58check account addresses.

#### Parameters

| Parameter | Type      |
| --------- | --------- |
| `o`       | `unknown` |

#### Returns

`o is PaymentRequirements`

***

### ccdRecover()

> **ccdRecover**(`ref`, `reader`): `Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>

The hash from a settlement block item alone: its one memo-carrying transfer's memo, through `memoCarrier`.

#### Parameters

| Parameter         | Type                                                            |
| ----------------- | --------------------------------------------------------------- |
| `ref`             | \{ `network`: `` `ccd:${string}` ``; `transaction`: `string`; } |
| `ref.network`     | `` `ccd:${string}` ``                                           |
| `ref.transaction` | `string`                                                        |
| `reader`          | [`CcdReader`](#ccdreader)                                       |

#### Returns

`Promise`\<`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)>

***

### ccdStatus()

> **ccdStatus**(`ref`, `reader`): `Promise`\<[`CcdStatus`](#ccdstatus)>

Reads the named block item. Settled when it is finalized and successful, with exactly one transfer whose memo
`memoCarrier` reads as `ref.h` (a PLT memo with tag 24 unwrapped) and whose sender, receiver and amount hash to
`ref.idDigest`. Not final, unknown or unreadable is pending; a reader for another network is pending.

#### Parameters

| Parameter | Type                           |
| --------- | ------------------------------ |
| `ref`     | [`CcdRef`](#ccdref) & `object` |
| `reader`  | [`CcdReader`](#ccdreader)      |

#### Returns

`Promise`\<[`CcdStatus`](#ccdstatus)>

***

### memoCarrier()

> **memoCarrier**(`memo`): `` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)

The hash a memo carries: exactly one CBOR text string, nothing after it, whose bytes are `ccdMemo` of the hash it
names (LCP's string form with lowercase hex, under the preferred two-byte head). `bound`, `status` and `recover` all
read a memo through this one function.

#### Parameters

| Parameter | Type         |
| --------- | ------------ |
| `memo`    | `Uint8Array` |

#### Returns

`` `0x${string}` `` | [`Refusal`](https://lcp.integraledger.com/reference/api#refusal)

***

### pltMemo()

> **pltMemo**(`h`): `Uint8Array`

CBOR tag 24 around a byte string holding `ccdMemo(h)`: `d8 18 58 4f` and the 79 bytes.

#### Parameters

| Parameter | Type                |
| --------- | ------------------- |
| `h`       | `` `0x${string}` `` |

#### Returns

`Uint8Array`
