@helium/blockchain-api 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -69
- package/dist/index.d.ts +2382 -0
- package/dist/index.js +852 -0
- package/package.json +37 -127
- package/tsconfig.json +0 -45
- package/types/README.md +0 -108
- package/types/generated/index.d.mts +0 -2481
- package/types/generated/index.d.ts +0 -2481
- package/types/generated/index.js +0 -723
- package/types/generated/index.mjs +0 -614
- package/types/index.ts +0 -30
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @helium/blockchain-api
|
|
2
2
|
|
|
3
|
-
TypeScript
|
|
3
|
+
TypeScript client and schemas for the Helium Blockchain API.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -10,98 +10,133 @@ npm install @helium/blockchain-api
|
|
|
10
10
|
yarn add @helium/blockchain-api
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Quick Start
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
```typescript
|
|
16
|
+
import { createClient } from "@helium/blockchain-api";
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
const client = createClient({
|
|
19
|
+
url: "https://api.helium.com",
|
|
20
|
+
transport: "rpc",
|
|
21
|
+
});
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
// Get token balances
|
|
24
|
+
const balances = await client.tokens.getBalances({
|
|
25
|
+
walletAddress: "YOUR_WALLET_ADDRESS",
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Get hotspots
|
|
29
|
+
const hotspots = await client.hotspots.getHotspots({
|
|
30
|
+
walletAddress: "YOUR_WALLET_ADDRESS",
|
|
31
|
+
type: "iot",
|
|
32
|
+
page: 1,
|
|
33
|
+
limit: 20,
|
|
34
|
+
});
|
|
35
|
+
```
|
|
21
36
|
|
|
22
|
-
|
|
23
|
-
import type { BlockchainAPIClient } from "@helium/blockchain-api"
|
|
24
|
-
import { createORPCClient } from "@orpc/client"
|
|
25
|
-
import { RPCLink } from "@orpc/client/fetch"
|
|
37
|
+
## Authentication
|
|
26
38
|
|
|
27
|
-
|
|
28
|
-
url: "https://your-api-url.com/rpc",
|
|
29
|
-
})
|
|
39
|
+
For protected endpoints, provide a context factory:
|
|
30
40
|
|
|
31
|
-
|
|
41
|
+
```typescript
|
|
42
|
+
const client = createClient({
|
|
43
|
+
url: "https://api.helium.com",
|
|
44
|
+
transport: "rpc",
|
|
45
|
+
getContext: () => ({
|
|
46
|
+
userId: currentUser.id,
|
|
47
|
+
walletAddress: connectedWallet?.address ?? null,
|
|
48
|
+
user: privyUser,
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
32
51
|
```
|
|
33
52
|
|
|
34
|
-
|
|
53
|
+
Or use an access token:
|
|
35
54
|
|
|
36
55
|
```typescript
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
// Get swap quote
|
|
43
|
-
const quote = await client.swap.getQuote({
|
|
44
|
-
inputMint: "input-token-mint",
|
|
45
|
-
outputMint: "output-token-mint",
|
|
46
|
-
amount: "1000000"
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
// Claim hotspot rewards
|
|
50
|
-
const { transactionData } = await client.hotspots.claimRewards({
|
|
51
|
-
walletAddress: "your-wallet-address"
|
|
52
|
-
})
|
|
56
|
+
const client = createClient({
|
|
57
|
+
url: "https://api.helium.com",
|
|
58
|
+
accessToken: "your-access-token",
|
|
59
|
+
});
|
|
53
60
|
```
|
|
54
61
|
|
|
55
|
-
|
|
62
|
+
## Schema Validation
|
|
63
|
+
|
|
64
|
+
All Zod schemas are exported for direct use:
|
|
56
65
|
|
|
57
66
|
```typescript
|
|
58
|
-
import {
|
|
67
|
+
import { GetBalancesInputSchema, TokenBalanceDataSchema } from "@helium/blockchain-api";
|
|
59
68
|
|
|
60
|
-
// Validate
|
|
61
|
-
const
|
|
69
|
+
// Validate input
|
|
70
|
+
const input = GetBalancesInputSchema.parse({
|
|
71
|
+
walletAddress: userInput,
|
|
72
|
+
});
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Error Handling
|
|
62
76
|
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
Typed error definitions are available:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { createClient, INSUFFICIENT_FUNDS, solanaErrors } from "@helium/blockchain-api";
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
await client.tokens.transfer({ ... });
|
|
84
|
+
} catch (error) {
|
|
85
|
+
if (error.code === INSUFFICIENT_FUNDS.code) {
|
|
86
|
+
console.error("Not enough SOL:", error.data);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
65
89
|
```
|
|
66
90
|
|
|
67
|
-
|
|
91
|
+
## Testing with Mock Client
|
|
68
92
|
|
|
69
93
|
```typescript
|
|
70
|
-
import {
|
|
94
|
+
import { createMockClient } from "@helium/blockchain-api";
|
|
95
|
+
|
|
96
|
+
const mockClient = createMockClient({
|
|
97
|
+
tokens: {
|
|
98
|
+
getBalances: async () => ({
|
|
99
|
+
totalBalanceUsd: 100,
|
|
100
|
+
solBalance: 1,
|
|
101
|
+
solBalanceUsd: 50,
|
|
102
|
+
tokens: [],
|
|
103
|
+
}),
|
|
104
|
+
},
|
|
105
|
+
health: {
|
|
106
|
+
check: async () => ({ ok: true }),
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Use in tests
|
|
111
|
+
const result = await mockClient.tokens.getBalances({ walletAddress: "..." });
|
|
112
|
+
```
|
|
71
113
|
|
|
72
|
-
|
|
114
|
+
## OpenAPI Spec Generation
|
|
73
115
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
116
|
+
```typescript
|
|
117
|
+
import { generateOpenAPISpec } from "@helium/blockchain-api";
|
|
118
|
+
|
|
119
|
+
const spec = generateOpenAPISpec({
|
|
120
|
+
info: {
|
|
121
|
+
title: "Helium Blockchain API",
|
|
122
|
+
version: "1.0.0",
|
|
123
|
+
},
|
|
124
|
+
servers: [{ url: "https://api.helium.com" }],
|
|
125
|
+
});
|
|
78
126
|
```
|
|
79
127
|
|
|
80
|
-
##
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- `
|
|
85
|
-
- `
|
|
86
|
-
- `
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
### Types
|
|
93
|
-
- `ORPCRouter` - The full router type
|
|
94
|
-
- `BlockchainAPIClient` - Helper type for typed clients
|
|
95
|
-
- `RouterClient` - Re-exported from @orpc/server
|
|
96
|
-
|
|
97
|
-
### Zod Schemas
|
|
98
|
-
- `HotspotSchema`, `HotspotsDataSchema` - Hotspot data validation
|
|
99
|
-
- `TokenAccountSchema`, `TokenBalanceDataSchema` - Token data validation
|
|
100
|
-
- `TransactionDataSchema`, `TransactionItemSchema` - Transaction validation
|
|
101
|
-
- `QuoteResponseSchema` - Swap quote validation
|
|
102
|
-
- `WelcomePackSchema` - Welcome pack validation
|
|
103
|
-
- `BankAccountSchema`, `KycStatusOutputSchema` - Fiat/KYC validation
|
|
104
|
-
- And many more input/output schemas for each router
|
|
128
|
+
## API Reference
|
|
129
|
+
|
|
130
|
+
### Routers
|
|
131
|
+
|
|
132
|
+
- `health` - Health check
|
|
133
|
+
- `tokens` - Token balances and transfers
|
|
134
|
+
- `hotspots` - Hotspot management and rewards
|
|
135
|
+
- `swap` - Token swaps via Jupiter
|
|
136
|
+
- `transactions` - Transaction submission and tracking
|
|
137
|
+
- `welcomePacks` - Welcome pack management
|
|
138
|
+
- `fiat` - Fiat offramp and bank accounts
|
|
139
|
+
- `webhooks` - Webhook handlers
|
|
105
140
|
|
|
106
141
|
## License
|
|
107
142
|
|