# @windingtree/sdk-messages

> The WindingTree market protocol messages utilities

Latest version **1.2.3** (published 2024-01-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install @windingtree/sdk-messages
pnpm add @windingtree/sdk-messages
yarn add @windingtree/sdk-messages
bun add @windingtree/sdk-messages
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.3 |
| Published | 2024-01-17 |
| First published | 2023-07-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 50.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Kostiantyn Smyrnov |
| Maintainers | valera_rozuvan, kostysh, kvakes, tomashq |

## Links

- npm: https://www.npmjs.com/package/@windingtree/sdk-messages
- Repository: https://github.com/windingtree/sdk.git#readme
- Homepage: https://github.com/windingtree/sdk/tree/readme#readme
- Issues: https://github.com/windingtree/sdk/issues
- npm.io page: https://npm.io/package/@windingtree/sdk-messages

## Dependencies (5)

- [viem](https://npm.io/package/viem.md) ^1.19.13
- [abitype](https://npm.io/package/abitype.md) ^0.10.3
- [@windingtree/contracts](https://npm.io/package/@windingtree/contracts.md) ^1.0.0
- [@windingtree/sdk-types](https://npm.io/package/@windingtree/sdk-types.md) 1.1.4
- [@windingtree/sdk-utils](https://npm.io/package/@windingtree/sdk-utils.md) 1.2.3

## Recent versions

- 1.2.3 (latest) — 2024-01-17
- 1.2.3-beta.0 (beta) — 2024-01-17
- 1.2.2 — 2023-12-11
- 1.2.1 — 2023-10-31
- 1.2.0 — 2023-10-25
- 1.2.0-beta.1 — 2023-10-25
- 1.2.0-beta.0 — 2023-07-31
- 1.1.0 — 2023-07-27
- 1.1.0-beta.3 — 2023-07-27
- 1.1.0-beta.2 — 2023-07-27
- 1.1.0-beta.1 — 2023-07-23
- 1.1.0-beta.0 — 2023-07-23

## README

# @windingtree/sdk-messages

This package offers a way to build, sign and verify offers and requests for Winding Tree market protocol. It takes care of data validation, hashing, and signing/verification of EIP-712 signatures. Additionally, it provides utilities for test environments.

## Installation

```bash
pnpm i @windingtree/sdk-messages
```

## Key Concepts

- **EIP-712 signatures:** Ethereum has a standard for signing structured data, known as EIP-712. This package provides utilities for signing data according to this standard and for verifying such signatures.
- **Offers and requests:** The Winding Tree market protocol operates based on offers and requests. This package includes utilities for creating, signing, and verifying these objects.
- **Data hashing:** Data associated with offers and requests need to be hashed before they can be signed or sent. This package includes utilities for creating these hashes.
- **Expiration time:** Offers and requests can have an expiration time after which they are no longer valid. This package provides a utility for parsing this expiration time.

## Usage

Here is a basic example of how to use this package:

```typescript
import {
  buildRequest,
  buildOffer,
  verifyOffer,
  createCheckInOutSignature,
  Account
} from '@windingtree/sdk-messages';
import { TypedDataDomain } from 'abitype';
import { HDKey, hdKeyToAccount } from 'viem/accounts';
import { polygonZkEvmTestnet } from 'viem/chains';

const domain: TypedDataDomain = { name: 'Market', version: '1.0', chainId: polygonZkEvmTestnet.id };
const supplierId: string = '0x...';
const hdKey = HDKey.fromMasterSeed(...);
const account = hdKeyToAccount(hdKey);

const request = await buildRequest({
  topic: 'test',
  query: {},
  nonce: BigInt(0),
  idOverride: 'customId',
  expire: '1h',
});

const offer = await buildOffer({
  domain,
  supplierId,
  expire: '1h',
  request,
  options: {},
  payment: [],
  cancel: [],
  checkIn: BigInt(1),
  checkOut: BigInt(2),
  account,
});

await verifyOffer({ domain, address: account.address, offer });

const checkInSignature = await createCheckInOutSignature({
  offerId: offer.id,
  domain,
  account,
});
```

## API

This package provides several main functions:

- **buildRequest:** Accepts a `BuildRequestOptions` object and returns a `RequestData` object.
- **buildOffer:** Accepts a `BuildOfferOptions` object and returns an `OfferData` object.
- **verifyOffer:** Accepts a `VerifyOfferArgs` object and checks if an offer signature is valid.
- **createCheckInOutSignature:** Accepts a `CreateCheckInOutSignatureArgs` object and returns a signed EIP-712 hash for a check-in/out voucher.

It also provides several utility functions, mainly for use in tests.

## Testing

```bash
pnpm test
```

## Contributing

[Contribution guidelines](https://windingtree.github.io/sdk/#/docs/contribution)

---
_Source: https://npm.io/package/@windingtree/sdk-messages · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
