@satelink/sdk 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 +240 -0
- package/dist/adapters.d.ts +113 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +178 -0
- package/dist/adapters.js.map +1 -0
- package/dist/ai.d.ts +12 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +71 -0
- package/dist/ai.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/mev.d.ts +101 -0
- package/dist/mev.d.ts.map +1 -0
- package/dist/mev.js +133 -0
- package/dist/mev.js.map +1 -0
- package/dist/provider.d.ts +36 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +97 -0
- package/dist/provider.js.map +1 -0
- package/dist/rpc.d.ts +32 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +101 -0
- package/dist/rpc.js.map +1 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/eslint.config.js +1 -0
- package/package.json +71 -0
- package/src/adapters.ts +207 -0
- package/src/ai.ts +100 -0
- package/src/index.ts +43 -0
- package/src/mev.ts +213 -0
- package/src/provider.ts +134 -0
- package/src/rpc.ts +132 -0
- package/src/types.ts +73 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# @satelink/sdk
|
|
2
|
+
|
|
3
|
+
Official SDK for the Satelink DePIN network — blockchain RPC, MEV relay, AI inference, and more.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @satelink/sdk
|
|
9
|
+
# or
|
|
10
|
+
pnpm add @satelink/sdk
|
|
11
|
+
# or
|
|
12
|
+
yarn add @satelink/sdk
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { SatelinkRPC, SatelinkMEV, getEthersProvider } from '@satelink/sdk';
|
|
19
|
+
|
|
20
|
+
// RPC calls (no API key needed for public tier)
|
|
21
|
+
const rpc = new SatelinkRPC({ chain: 'polygon' });
|
|
22
|
+
const blockNumber = await rpc.getBlockNumber();
|
|
23
|
+
console.log('Current block:', blockNumber);
|
|
24
|
+
|
|
25
|
+
// ethers.js provider (drop-in Alchemy replacement)
|
|
26
|
+
const provider = getEthersProvider('polygon');
|
|
27
|
+
const balance = await provider.getBalance('0x...');
|
|
28
|
+
|
|
29
|
+
// MEV relay (API key required)
|
|
30
|
+
const mev = new SatelinkMEV({ apiKey: 'sk_live_...' });
|
|
31
|
+
const simulation = await mev.simulateBundle([signedTx1, signedTx2]);
|
|
32
|
+
if (simulation.profitable) {
|
|
33
|
+
const result = await mev.submitBundle([signedTx1, signedTx2]);
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## RPC Usage
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { SatelinkRPC } from '@satelink/sdk';
|
|
41
|
+
|
|
42
|
+
const rpc = new SatelinkRPC({
|
|
43
|
+
apiKey: 'sk_live_...', // optional for higher rate limits
|
|
44
|
+
chain: 'ethereum' // ethereum, polygon, arbitrum, base, polygon-amoy
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Get block number
|
|
48
|
+
const block = await rpc.getBlockNumber();
|
|
49
|
+
|
|
50
|
+
// Get balance
|
|
51
|
+
const balance = await rpc.getBalance('0x742d35Cc6634C0532925a3b844Bc9e7595f7bA8f');
|
|
52
|
+
|
|
53
|
+
// Make contract call
|
|
54
|
+
const result = await rpc.call({
|
|
55
|
+
to: '0x...',
|
|
56
|
+
data: '0x...'
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Send signed transaction
|
|
60
|
+
const txHash = await rpc.sendRawTransaction('0x...');
|
|
61
|
+
|
|
62
|
+
// Raw JSON-RPC request
|
|
63
|
+
const logs = await rpc.request('eth_getLogs', [{
|
|
64
|
+
fromBlock: '0x0',
|
|
65
|
+
toBlock: 'latest',
|
|
66
|
+
address: '0x...'
|
|
67
|
+
}]);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## MEV Relay
|
|
71
|
+
|
|
72
|
+
Private mempool for MEV searchers. Transactions bypass public mempool.
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import { createMevClient } from '@satelink/sdk';
|
|
76
|
+
|
|
77
|
+
const mev = createMevClient({ apiKey: 'sk_live_...' });
|
|
78
|
+
|
|
79
|
+
// 1. Simulate bundle first (cheap - $0.0001)
|
|
80
|
+
const simulation = await mev.simulateBundle([
|
|
81
|
+
'0x02f8...', // signed tx 1
|
|
82
|
+
'0x02f8...' // signed tx 2
|
|
83
|
+
]);
|
|
84
|
+
|
|
85
|
+
console.log('Profitable:', simulation.profitable);
|
|
86
|
+
console.log('Coinbase diff:', simulation.simulation?.coinbaseDiff);
|
|
87
|
+
|
|
88
|
+
// 2. Submit if profitable ($0.005 per bundle)
|
|
89
|
+
if (simulation.profitable) {
|
|
90
|
+
const result = await mev.submitBundle(
|
|
91
|
+
['0x02f8...', '0x02f8...'],
|
|
92
|
+
{ blockNumber: 'latest' }
|
|
93
|
+
);
|
|
94
|
+
console.log('Bundle hash:', result.bundleHash);
|
|
95
|
+
|
|
96
|
+
// 3. Track inclusion status
|
|
97
|
+
const status = await mev.getBundleStatus(result.bundleHash);
|
|
98
|
+
console.log('Status:', status.status);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Submit single private tx ($0.001)
|
|
102
|
+
const tx = await mev.submitPrivateTransaction('0x02f8...');
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### MEV Pricing
|
|
106
|
+
|
|
107
|
+
| Method | Price |
|
|
108
|
+
|--------|-------|
|
|
109
|
+
| eth_callBundle (simulation) | $0.0001 |
|
|
110
|
+
| eth_sendRawTransaction | $0.001 |
|
|
111
|
+
| eth_sendBundle | $0.005 |
|
|
112
|
+
| flashbots_getBundleStats | $0.00005 |
|
|
113
|
+
|
|
114
|
+
## Framework Adapters
|
|
115
|
+
|
|
116
|
+
Drop-in replacements for Alchemy/Infura with zero config changes.
|
|
117
|
+
|
|
118
|
+
### ethers.js
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { getEthersProvider } from '@satelink/sdk';
|
|
122
|
+
|
|
123
|
+
// ethers v5 or v6 - auto-detected
|
|
124
|
+
const provider = getEthersProvider('polygon');
|
|
125
|
+
const block = await provider.getBlockNumber();
|
|
126
|
+
const balance = await provider.getBalance('0x...');
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### viem
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
import { createPublicClient } from 'viem';
|
|
133
|
+
import { polygon } from 'viem/chains';
|
|
134
|
+
import { getViemTransport } from '@satelink/sdk';
|
|
135
|
+
|
|
136
|
+
const client = createPublicClient({
|
|
137
|
+
chain: polygon,
|
|
138
|
+
transport: getViemTransport('polygon'),
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
const block = await client.getBlockNumber();
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### wagmi
|
|
145
|
+
|
|
146
|
+
```typescript
|
|
147
|
+
import { createConfig, http } from 'wagmi';
|
|
148
|
+
import { polygon, arbitrum, base } from 'wagmi/chains';
|
|
149
|
+
import { getSatelinkRpcUrl } from '@satelink/sdk';
|
|
150
|
+
|
|
151
|
+
const config = createConfig({
|
|
152
|
+
chains: [polygon, arbitrum, base],
|
|
153
|
+
transports: {
|
|
154
|
+
[polygon.id]: http(getSatelinkRpcUrl('polygon')),
|
|
155
|
+
[arbitrum.id]: http(getSatelinkRpcUrl('arbitrum')),
|
|
156
|
+
[base.id]: http(getSatelinkRpcUrl('base')),
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Raw JSON-RPC (no dependencies)
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { rpc } from '@satelink/sdk';
|
|
165
|
+
|
|
166
|
+
const blockNumber = await rpc('eth_blockNumber', [], 'polygon');
|
|
167
|
+
const balance = await rpc('eth_getBalance', ['0x...', 'latest'], 'ethereum');
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## AI Usage
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { SatelinkAI } from '@satelink/sdk';
|
|
174
|
+
|
|
175
|
+
const ai = new SatelinkAI({ apiKey: 'sk_live_...' });
|
|
176
|
+
|
|
177
|
+
// Chat completion (OpenAI-compatible)
|
|
178
|
+
const chatResponse = await ai.chat([
|
|
179
|
+
{ role: 'system', content: 'You are a helpful assistant.' },
|
|
180
|
+
{ role: 'user', content: 'What is DePIN?' }
|
|
181
|
+
], {
|
|
182
|
+
model: 'gpt-4o',
|
|
183
|
+
max_tokens: 500
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
console.log(chatResponse.choices[0].message.content);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## EIP-1193 Provider
|
|
190
|
+
|
|
191
|
+
Full EIP-1193 compatible provider with event support:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
import { SatelinkProvider } from '@satelink/sdk';
|
|
195
|
+
|
|
196
|
+
const provider = new SatelinkProvider({
|
|
197
|
+
chainId: 137, // Polygon
|
|
198
|
+
apiKey: 'sk_live_...'
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// Standard EIP-1193 request
|
|
202
|
+
const blockNumber = await provider.request({ method: 'eth_blockNumber' });
|
|
203
|
+
|
|
204
|
+
// Listen for chain changes
|
|
205
|
+
provider.on('chainChanged', (chainId) => {
|
|
206
|
+
console.log('Chain changed to:', chainId);
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
// Switch chains
|
|
210
|
+
await provider.request({
|
|
211
|
+
method: 'wallet_switchEthereumChain',
|
|
212
|
+
params: [{ chainId: '0x89' }] // Polygon
|
|
213
|
+
});
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Supported Chains
|
|
217
|
+
|
|
218
|
+
| Chain | ID | Slug | MEV Support |
|
|
219
|
+
|-------|-----|------|-------------|
|
|
220
|
+
| Ethereum | 1 | `ethereum` | Yes (Flashbots) |
|
|
221
|
+
| Polygon | 137 | `polygon` | Yes |
|
|
222
|
+
| Arbitrum | 42161 | `arbitrum` | Yes |
|
|
223
|
+
| Base | 8453 | `base` | No |
|
|
224
|
+
| Polygon Amoy | 80002 | `amoy` | No (testnet) |
|
|
225
|
+
|
|
226
|
+
## Pricing
|
|
227
|
+
|
|
228
|
+
- **RPC calls**: $0.00003 USDT per call
|
|
229
|
+
- **MEV relay**: $0.001-$0.005 per tx/bundle
|
|
230
|
+
- **AI inference**: $0.000001 per input token
|
|
231
|
+
|
|
232
|
+
## Links
|
|
233
|
+
|
|
234
|
+
- Website: https://satelink.network
|
|
235
|
+
- RPC Endpoint: https://rpc.satelink.network
|
|
236
|
+
- GitHub: https://github.com/Satelink-Protocol/Satelink_Network
|
|
237
|
+
|
|
238
|
+
## License
|
|
239
|
+
|
|
240
|
+
MIT
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Adapters
|
|
3
|
+
* L8-002: Drop-in adapters for ethers.js, wagmi, and viem
|
|
4
|
+
*
|
|
5
|
+
* Makes Satelink RPC a drop-in replacement for Alchemy/Infura
|
|
6
|
+
*/
|
|
7
|
+
export declare const SATELINK_CHAINS: {
|
|
8
|
+
readonly polygon: {
|
|
9
|
+
readonly chainId: 137;
|
|
10
|
+
readonly name: "Polygon";
|
|
11
|
+
readonly rpcUrl: "https://rpc.satelink.network/rpc/polygon";
|
|
12
|
+
};
|
|
13
|
+
readonly ethereum: {
|
|
14
|
+
readonly chainId: 1;
|
|
15
|
+
readonly name: "Ethereum";
|
|
16
|
+
readonly rpcUrl: "https://rpc.satelink.network/rpc/ethereum";
|
|
17
|
+
};
|
|
18
|
+
readonly arbitrum: {
|
|
19
|
+
readonly chainId: 42161;
|
|
20
|
+
readonly name: "Arbitrum One";
|
|
21
|
+
readonly rpcUrl: "https://rpc.satelink.network/rpc/arbitrum";
|
|
22
|
+
};
|
|
23
|
+
readonly base: {
|
|
24
|
+
readonly chainId: 8453;
|
|
25
|
+
readonly name: "Base";
|
|
26
|
+
readonly rpcUrl: "https://rpc.satelink.network/rpc/base";
|
|
27
|
+
};
|
|
28
|
+
readonly amoy: {
|
|
29
|
+
readonly chainId: 80002;
|
|
30
|
+
readonly name: "Polygon Amoy";
|
|
31
|
+
readonly rpcUrl: "https://rpc.satelink.network/rpc/amoy";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type SatelinkChain = keyof typeof SATELINK_CHAINS;
|
|
35
|
+
/**
|
|
36
|
+
* Get the RPC URL for a chain
|
|
37
|
+
*/
|
|
38
|
+
export declare function getSatelinkRpcUrl(chain?: SatelinkChain, apiKey?: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Create an ethers.js v6 JsonRpcProvider for Satelink
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { getEthersProvider } from '@satelink/sdk';
|
|
45
|
+
* const provider = getEthersProvider('polygon');
|
|
46
|
+
* const block = await provider.getBlockNumber();
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function getEthersProvider(chain?: SatelinkChain, apiKey?: string): unknown;
|
|
50
|
+
/**
|
|
51
|
+
* Create a viem http transport for Satelink
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* import { createPublicClient } from 'viem';
|
|
56
|
+
* import { polygon } from 'viem/chains';
|
|
57
|
+
* import { getViemTransport } from '@satelink/sdk';
|
|
58
|
+
*
|
|
59
|
+
* const client = createPublicClient({
|
|
60
|
+
* chain: polygon,
|
|
61
|
+
* transport: getViemTransport('polygon'),
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function getViemTransport(chain?: SatelinkChain, apiKey?: string): unknown;
|
|
66
|
+
/**
|
|
67
|
+
* Get a wagmi-compatible chain config for Satelink RPC
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { createConfig, http } from 'wagmi';
|
|
72
|
+
* import { getSatelinkChainConfig } from '@satelink/sdk';
|
|
73
|
+
*
|
|
74
|
+
* const config = createConfig({
|
|
75
|
+
* chains: [getSatelinkChainConfig('polygon')],
|
|
76
|
+
* transports: { 137: http('https://rpc.satelink.network/rpc/polygon') }
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function getSatelinkChainConfig(chain?: SatelinkChain): {
|
|
81
|
+
id: 137 | 1 | 42161 | 8453 | 80002;
|
|
82
|
+
name: "Polygon" | "Ethereum" | "Arbitrum One" | "Base" | "Polygon Amoy";
|
|
83
|
+
nativeCurrency: {
|
|
84
|
+
name: string;
|
|
85
|
+
symbol: string;
|
|
86
|
+
decimals: number;
|
|
87
|
+
};
|
|
88
|
+
rpcUrls: {
|
|
89
|
+
default: {
|
|
90
|
+
http: ("https://rpc.satelink.network/rpc/polygon" | "https://rpc.satelink.network/rpc/ethereum" | "https://rpc.satelink.network/rpc/arbitrum" | "https://rpc.satelink.network/rpc/base" | "https://rpc.satelink.network/rpc/amoy")[];
|
|
91
|
+
};
|
|
92
|
+
public: {
|
|
93
|
+
http: ("https://rpc.satelink.network/rpc/polygon" | "https://rpc.satelink.network/rpc/ethereum" | "https://rpc.satelink.network/rpc/arbitrum" | "https://rpc.satelink.network/rpc/base" | "https://rpc.satelink.network/rpc/amoy")[];
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
blockExplorers: {
|
|
97
|
+
default: {
|
|
98
|
+
name: string;
|
|
99
|
+
url: string;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Raw JSON-RPC call to Satelink (no dependencies)
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* import { rpc } from '@satelink/sdk';
|
|
109
|
+
* const blockNumber = await rpc('eth_blockNumber', [], 'polygon');
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function rpc<T = unknown>(method: string, params?: unknown[], chain?: SatelinkChain, apiKey?: string): Promise<T>;
|
|
113
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,eAAe,CAAC;AAEzD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,aAAyB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3F;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,GAAE,aAAyB,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAgCT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,GAAE,aAAyB,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAmBT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,GAAE,aAAyB;;;;;;;;;;;;;;;;;iBAgCnB;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE;;EAnBhF;AA6BD;;;;;;;;GAQG;AACH,wBAAsB,GAAG,CAAC,CAAC,GAAG,OAAO,EACnC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,EAAO,EACtB,KAAK,GAAE,aAAyB,EAChC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAuBZ"}
|
package/dist/adapters.js
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Adapters
|
|
3
|
+
* L8-002: Drop-in adapters for ethers.js, wagmi, and viem
|
|
4
|
+
*
|
|
5
|
+
* Makes Satelink RPC a drop-in replacement for Alchemy/Infura
|
|
6
|
+
*/
|
|
7
|
+
const BASE_URL = 'https://rpc.satelink.network';
|
|
8
|
+
export const SATELINK_CHAINS = {
|
|
9
|
+
polygon: { chainId: 137, name: 'Polygon', rpcUrl: `${BASE_URL}/rpc/polygon` },
|
|
10
|
+
ethereum: { chainId: 1, name: 'Ethereum', rpcUrl: `${BASE_URL}/rpc/ethereum` },
|
|
11
|
+
arbitrum: { chainId: 42161, name: 'Arbitrum One', rpcUrl: `${BASE_URL}/rpc/arbitrum` },
|
|
12
|
+
base: { chainId: 8453, name: 'Base', rpcUrl: `${BASE_URL}/rpc/base` },
|
|
13
|
+
amoy: { chainId: 80002, name: 'Polygon Amoy', rpcUrl: `${BASE_URL}/rpc/amoy` }
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Get the RPC URL for a chain
|
|
17
|
+
*/
|
|
18
|
+
export function getSatelinkRpcUrl(chain = 'polygon', apiKey) {
|
|
19
|
+
const config = SATELINK_CHAINS[chain];
|
|
20
|
+
return apiKey ? `${config.rpcUrl}?apiKey=${apiKey}` : config.rpcUrl;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create an ethers.js v6 JsonRpcProvider for Satelink
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { getEthersProvider } from '@satelink/sdk';
|
|
28
|
+
* const provider = getEthersProvider('polygon');
|
|
29
|
+
* const block = await provider.getBlockNumber();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function getEthersProvider(chain = 'polygon', apiKey) {
|
|
33
|
+
const config = SATELINK_CHAINS[chain];
|
|
34
|
+
const url = config.rpcUrl;
|
|
35
|
+
try {
|
|
36
|
+
// Try ethers v6 first
|
|
37
|
+
const { JsonRpcProvider } = require('ethers');
|
|
38
|
+
const fetchRequest = apiKey ? {
|
|
39
|
+
url,
|
|
40
|
+
getUrlFunc: () => url,
|
|
41
|
+
processFunc: (req, resp) => resp,
|
|
42
|
+
setHeader: (key, value) => { },
|
|
43
|
+
} : undefined;
|
|
44
|
+
return new JsonRpcProvider(url, config.chainId, {
|
|
45
|
+
staticNetwork: true
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
try {
|
|
50
|
+
// Fall back to ethers v5
|
|
51
|
+
const { providers } = require('ethers');
|
|
52
|
+
const connection = apiKey
|
|
53
|
+
? { url, headers: { 'X-API-Key': apiKey } }
|
|
54
|
+
: url;
|
|
55
|
+
return new providers.JsonRpcProvider(connection, config.chainId);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
throw new Error('@satelink/sdk ethers adapter requires ethers ^5.0.0 or ^6.0.0. ' +
|
|
59
|
+
'Install with: npm install ethers');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a viem http transport for Satelink
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { createPublicClient } from 'viem';
|
|
69
|
+
* import { polygon } from 'viem/chains';
|
|
70
|
+
* import { getViemTransport } from '@satelink/sdk';
|
|
71
|
+
*
|
|
72
|
+
* const client = createPublicClient({
|
|
73
|
+
* chain: polygon,
|
|
74
|
+
* transport: getViemTransport('polygon'),
|
|
75
|
+
* });
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function getViemTransport(chain = 'polygon', apiKey) {
|
|
79
|
+
const config = SATELINK_CHAINS[chain];
|
|
80
|
+
try {
|
|
81
|
+
const { http } = require('viem');
|
|
82
|
+
return http(config.rpcUrl, {
|
|
83
|
+
fetchOptions: apiKey
|
|
84
|
+
? { headers: { 'X-API-Key': apiKey } }
|
|
85
|
+
: undefined,
|
|
86
|
+
retryCount: 3,
|
|
87
|
+
retryDelay: 150,
|
|
88
|
+
timeout: 20000
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
throw new Error('@satelink/sdk viem adapter requires viem ^1.0.0 or ^2.0.0. ' +
|
|
93
|
+
'Install with: npm install viem');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get a wagmi-compatible chain config for Satelink RPC
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* import { createConfig, http } from 'wagmi';
|
|
102
|
+
* import { getSatelinkChainConfig } from '@satelink/sdk';
|
|
103
|
+
*
|
|
104
|
+
* const config = createConfig({
|
|
105
|
+
* chains: [getSatelinkChainConfig('polygon')],
|
|
106
|
+
* transports: { 137: http('https://rpc.satelink.network/rpc/polygon') }
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function getSatelinkChainConfig(chain = 'polygon') {
|
|
111
|
+
const config = SATELINK_CHAINS[chain];
|
|
112
|
+
return {
|
|
113
|
+
id: config.chainId,
|
|
114
|
+
name: config.name,
|
|
115
|
+
nativeCurrency: getNativeCurrency(chain),
|
|
116
|
+
rpcUrls: {
|
|
117
|
+
default: { http: [config.rpcUrl] },
|
|
118
|
+
public: { http: [config.rpcUrl] }
|
|
119
|
+
},
|
|
120
|
+
blockExplorers: getBlockExplorer(chain)
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function getNativeCurrency(chain) {
|
|
124
|
+
switch (chain) {
|
|
125
|
+
case 'polygon':
|
|
126
|
+
case 'amoy':
|
|
127
|
+
return { name: 'MATIC', symbol: 'MATIC', decimals: 18 };
|
|
128
|
+
case 'ethereum':
|
|
129
|
+
return { name: 'Ether', symbol: 'ETH', decimals: 18 };
|
|
130
|
+
case 'arbitrum':
|
|
131
|
+
return { name: 'Ether', symbol: 'ETH', decimals: 18 };
|
|
132
|
+
case 'base':
|
|
133
|
+
return { name: 'Ether', symbol: 'ETH', decimals: 18 };
|
|
134
|
+
default:
|
|
135
|
+
return { name: 'Ether', symbol: 'ETH', decimals: 18 };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function getBlockExplorer(chain) {
|
|
139
|
+
const explorers = {
|
|
140
|
+
polygon: { default: { name: 'Polygonscan', url: 'https://polygonscan.com' } },
|
|
141
|
+
ethereum: { default: { name: 'Etherscan', url: 'https://etherscan.io' } },
|
|
142
|
+
arbitrum: { default: { name: 'Arbiscan', url: 'https://arbiscan.io' } },
|
|
143
|
+
base: { default: { name: 'Basescan', url: 'https://basescan.org' } },
|
|
144
|
+
amoy: { default: { name: 'Polygonscan Amoy', url: 'https://amoy.polygonscan.com' } }
|
|
145
|
+
};
|
|
146
|
+
return explorers[chain];
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Raw JSON-RPC call to Satelink (no dependencies)
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* import { rpc } from '@satelink/sdk';
|
|
154
|
+
* const blockNumber = await rpc('eth_blockNumber', [], 'polygon');
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export async function rpc(method, params = [], chain = 'polygon', apiKey) {
|
|
158
|
+
const config = SATELINK_CHAINS[chain];
|
|
159
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
160
|
+
if (apiKey)
|
|
161
|
+
headers['X-API-Key'] = apiKey;
|
|
162
|
+
const response = await fetch(config.rpcUrl, {
|
|
163
|
+
method: 'POST',
|
|
164
|
+
headers,
|
|
165
|
+
body: JSON.stringify({
|
|
166
|
+
jsonrpc: '2.0',
|
|
167
|
+
id: Date.now(),
|
|
168
|
+
method,
|
|
169
|
+
params
|
|
170
|
+
})
|
|
171
|
+
});
|
|
172
|
+
const data = await response.json();
|
|
173
|
+
if (data.error) {
|
|
174
|
+
throw new Error(`RPC error: ${data.error.message} (code: ${data.error.code})`);
|
|
175
|
+
}
|
|
176
|
+
return data.result;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
|
package/dist/ai.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SatelinkAIOptions, ChatMessage, ChatCompletionOptions, ChatCompletionResponse, Model } from './types.js';
|
|
2
|
+
export declare class SatelinkAI {
|
|
3
|
+
private apiKey;
|
|
4
|
+
private baseUrl;
|
|
5
|
+
constructor(options: SatelinkAIOptions);
|
|
6
|
+
private getHeaders;
|
|
7
|
+
chat(messages: ChatMessage[], options?: ChatCompletionOptions): Promise<ChatCompletionResponse>;
|
|
8
|
+
complete(prompt: string, options?: ChatCompletionOptions): Promise<string>;
|
|
9
|
+
getModels(): Promise<Model[]>;
|
|
10
|
+
get models(): Promise<Model[]>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ai.d.ts.map
|
package/dist/ai.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,EACN,MAAM,YAAY,CAAC;AAIpB,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,iBAAiB;IAQtC,OAAO,CAAC,UAAU;IAOZ,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAyB5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB9E,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAcnC,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAE7B;CACF"}
|
package/dist/ai.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const DEFAULT_BASE_URL = 'https://rpc.satelink.network';
|
|
2
|
+
export class SatelinkAI {
|
|
3
|
+
apiKey;
|
|
4
|
+
baseUrl;
|
|
5
|
+
constructor(options) {
|
|
6
|
+
if (!options.apiKey) {
|
|
7
|
+
throw new Error('API key is required for SatelinkAI');
|
|
8
|
+
}
|
|
9
|
+
this.apiKey = options.apiKey;
|
|
10
|
+
this.baseUrl = options.baseUrl || DEFAULT_BASE_URL;
|
|
11
|
+
}
|
|
12
|
+
getHeaders() {
|
|
13
|
+
return {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
'x-api-key': this.apiKey
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async chat(messages, options = {}) {
|
|
19
|
+
const body = {
|
|
20
|
+
model: options.model || 'satelink-default',
|
|
21
|
+
messages,
|
|
22
|
+
max_tokens: options.max_tokens || 1000,
|
|
23
|
+
temperature: options.temperature,
|
|
24
|
+
stream: false
|
|
25
|
+
};
|
|
26
|
+
const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: this.getHeaders(),
|
|
29
|
+
body: JSON.stringify(body)
|
|
30
|
+
});
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const error = await response.json().catch(() => ({}));
|
|
33
|
+
throw new Error(`AI request failed: ${response.status} - ${error.error?.message || response.statusText}`);
|
|
34
|
+
}
|
|
35
|
+
return response.json();
|
|
36
|
+
}
|
|
37
|
+
async complete(prompt, options = {}) {
|
|
38
|
+
const body = {
|
|
39
|
+
model: options.model || 'satelink-default',
|
|
40
|
+
prompt,
|
|
41
|
+
max_tokens: options.max_tokens || 100,
|
|
42
|
+
temperature: options.temperature
|
|
43
|
+
};
|
|
44
|
+
const response = await fetch(`${this.baseUrl}/v1/completions`, {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
headers: this.getHeaders(),
|
|
47
|
+
body: JSON.stringify(body)
|
|
48
|
+
});
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const error = await response.json().catch(() => ({}));
|
|
51
|
+
throw new Error(`AI request failed: ${response.status} - ${error.error?.message || response.statusText}`);
|
|
52
|
+
}
|
|
53
|
+
const data = await response.json();
|
|
54
|
+
return data.choices?.[0]?.text || '';
|
|
55
|
+
}
|
|
56
|
+
async getModels() {
|
|
57
|
+
const response = await fetch(`${this.baseUrl}/v1/models`, {
|
|
58
|
+
method: 'GET',
|
|
59
|
+
headers: this.getHeaders()
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) {
|
|
62
|
+
throw new Error(`Failed to fetch models: ${response.status}`);
|
|
63
|
+
}
|
|
64
|
+
const data = await response.json();
|
|
65
|
+
return data.data || [];
|
|
66
|
+
}
|
|
67
|
+
get models() {
|
|
68
|
+
return this.getModels();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=ai.js.map
|
package/dist/ai.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { SatelinkRPC, createProvider } from './rpc.js';
|
|
2
|
+
export { SatelinkProvider, createSatelinkProvider } from './provider.js';
|
|
3
|
+
export { SatelinkAI } from './ai.js';
|
|
4
|
+
export { SatelinkMEV, createMevClient } from './mev.js';
|
|
5
|
+
export { SATELINK_CHAINS, getSatelinkRpcUrl, getEthersProvider, getViemTransport, getSatelinkChainConfig, rpc } from './adapters.js';
|
|
6
|
+
export type { SatelinkRPCOptions, SatelinkAIOptions, JsonRpcRequest, JsonRpcResponse, ChatMessage, ChatCompletionOptions, ChatCompletionResponse, Model, TransactionRequest } from './types.js';
|
|
7
|
+
export type { EIP1193Provider } from './rpc.js';
|
|
8
|
+
export type { SatelinkProviderOptions } from './provider.js';
|
|
9
|
+
export type { SatelinkChain } from './adapters.js';
|
|
10
|
+
export type { MevClientOptions, MevSubmitResult, MevSimulationResult, MevBundleStatus } from './mev.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGvD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,GAAG,EACJ,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,eAAe,EAChB,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Core RPC client
|
|
2
|
+
export { SatelinkRPC, createProvider } from './rpc.js';
|
|
3
|
+
// EIP-1193 Provider
|
|
4
|
+
export { SatelinkProvider, createSatelinkProvider } from './provider.js';
|
|
5
|
+
// AI inference client
|
|
6
|
+
export { SatelinkAI } from './ai.js';
|
|
7
|
+
// MEV relay client
|
|
8
|
+
export { SatelinkMEV, createMevClient } from './mev.js';
|
|
9
|
+
// Framework adapters (ethers.js, viem, wagmi)
|
|
10
|
+
export { SATELINK_CHAINS, getSatelinkRpcUrl, getEthersProvider, getViemTransport, getSatelinkChainConfig, rpc } from './adapters.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEvD,oBAAoB;AACpB,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEzE,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAExD,8CAA8C;AAC9C,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,GAAG,EACJ,MAAM,eAAe,CAAC"}
|