Skip to content

Commit

Permalink
Initial version of js sdk for express relay (#1281)
Browse files Browse the repository at this point in the history
  • Loading branch information
m30m authored Feb 8, 2024
1 parent ca852ea commit 5c8e372
Show file tree
Hide file tree
Showing 9 changed files with 3,018 additions and 0 deletions.
6 changes: 6 additions & 0 deletions express_relay/sdk/js/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
root: true,
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
};
1 change: 1 addition & 0 deletions express_relay/sdk/js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lib/
74 changes: 74 additions & 0 deletions express_relay/sdk/js/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Pyth Express Relay JS SDK

Utility library for interacting with the Pyth Express Relay API.

## Installation

### npm

```
$ npm install --save @pythnetwork/express-relay-evm-js
```

### Yarn

```
$ yarn add @pythnetwork/express-relay-evm-js
```

## Development

To generate the latest type declarations from the server openapi schema, run:

```bash
npm run generate-api-types
```

## Quickstart

```typescript
import {
Client,
OpportunityParams,
BidInfo,
} from "@pythnetwork/express-relay-evm-js";

const client = new Client({ baseUrl: "https://per-staging.dourolabs.app/" });

function calculateOpportunityBid(
opportunity: OpportunityParams
): BidInfo | null {
// searcher implementation here
// if the opportunity is not suitable for the searcher, return null
}
const opportunities = await client.getOpportunities();

for (const opportunity of opportunities) {
const bidInfo = calculateOpportunityBid(order);
if (bidInfo === null) continue;
const opportunityBid = await client.signOpportunityBid(
opportunity,
bidInfo,
privateKey // searcher private key with appropriate permissions and assets
);
await client.submitOpportunityBid(opportunityBid);
}
```

### Example

There is an example searcher in [examples](./src/examples/) directory.

#### SimpleSearcher

[This example](./src/examples/SimpleSearcher.ts) fetches `OpportunityParams` from the specified endpoint,
creates a fixed bid on each opportunity and signs them with the provided private key, and finally submits them back to the server. You can run it with
`npm run simple-searcher`. A full command looks like this:

```bash
npm run simple-searcher -- \
--endpoint https://per-staging.dourolabs.app/ \
--bid 100000 \
--chain-id op_sepolia \
--private-key <YOUR-PRIVATE-KEY>
```
Loading

0 comments on commit 5c8e372

Please sign in to comment.