@w3lib/solana-batch-call 0.4.0 → 0.5.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/CHANGELOG.md +31 -0
- package/README.md +231 -3
- package/dist/approvals.d.ts +129 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +221 -0
- package/dist/approvals.js.map +1 -0
- package/dist/fees.d.ts +89 -0
- package/dist/fees.d.ts.map +1 -0
- package/dist/fees.js +166 -0
- package/dist/fees.js.map +1 -0
- package/dist/layout.d.ts +2 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +2 -2
- package/dist/layout.js.map +1 -1
- package/dist/lp.d.ts +8 -15
- package/dist/lp.d.ts.map +1 -1
- package/dist/lp.js +7 -31
- package/dist/lp.js.map +1 -1
- package/dist/names.d.ts +68 -0
- package/dist/names.d.ts.map +1 -0
- package/dist/names.js +257 -0
- package/dist/names.js.map +1 -0
- package/dist/pools.d.ts +9 -0
- package/dist/pools.d.ts.map +1 -0
- package/dist/pools.js +45 -0
- package/dist/pools.js.map +1 -0
- package/dist/portfolio.d.ts +64 -0
- package/dist/portfolio.d.ts.map +1 -0
- package/dist/portfolio.js +57 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/price.d.ts +90 -0
- package/dist/price.d.ts.map +1 -0
- package/dist/price.js +287 -0
- package/dist/price.js.map +1 -0
- package/dist/risk.d.ts +84 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +211 -0
- package/dist/risk.js.map +1 -0
- package/dist/rpc.d.ts +2 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +33 -9
- package/dist/rpc.js.map +1 -1
- package/dist/subpaths/approvals.d.ts +29 -0
- package/dist/subpaths/approvals.d.ts.map +1 -0
- package/dist/subpaths/approvals.js +30 -0
- package/dist/subpaths/approvals.js.map +1 -0
- package/dist/subpaths/fees.d.ts +23 -0
- package/dist/subpaths/fees.d.ts.map +1 -0
- package/dist/subpaths/fees.js +25 -0
- package/dist/subpaths/fees.js.map +1 -0
- package/dist/subpaths/names.d.ts +37 -0
- package/dist/subpaths/names.d.ts.map +1 -0
- package/dist/subpaths/names.js +27 -0
- package/dist/subpaths/names.js.map +1 -0
- package/dist/subpaths/price.d.ts +40 -0
- package/dist/subpaths/price.d.ts.map +1 -0
- package/dist/subpaths/price.js +43 -0
- package/dist/subpaths/price.js.map +1 -0
- package/dist/subpaths/risk.d.ts +28 -0
- package/dist/subpaths/risk.d.ts.map +1 -0
- package/dist/subpaths/risk.js +30 -0
- package/dist/subpaths/risk.js.map +1 -0
- package/dist/subpaths/swap.d.ts +22 -0
- package/dist/subpaths/swap.d.ts.map +1 -0
- package/dist/subpaths/swap.js +21 -0
- package/dist/subpaths/swap.js.map +1 -0
- package/dist/subpaths/write.d.ts +1 -1
- package/dist/subpaths/write.d.ts.map +1 -1
- package/dist/subpaths/write.js +1 -1
- package/dist/subpaths/write.js.map +1 -1
- package/dist/swap/amm.d.ts +20 -0
- package/dist/swap/amm.d.ts.map +1 -0
- package/dist/swap/amm.js +77 -0
- package/dist/swap/amm.js.map +1 -0
- package/dist/swap/clmmMath.d.ts +24 -0
- package/dist/swap/clmmMath.d.ts.map +1 -0
- package/dist/swap/clmmMath.js +82 -0
- package/dist/swap/clmmMath.js.map +1 -0
- package/dist/swap/common.d.ts +68 -0
- package/dist/swap/common.d.ts.map +1 -0
- package/dist/swap/common.js +65 -0
- package/dist/swap/common.js.map +1 -0
- package/dist/swap/cpmm.d.ts +28 -0
- package/dist/swap/cpmm.d.ts.map +1 -0
- package/dist/swap/cpmm.js +113 -0
- package/dist/swap/cpmm.js.map +1 -0
- package/dist/swap/index.d.ts +145 -0
- package/dist/swap/index.d.ts.map +1 -0
- package/dist/swap/index.js +349 -0
- package/dist/swap/index.js.map +1 -0
- package/dist/swap/orca.d.ts +50 -0
- package/dist/swap/orca.d.ts.map +1 -0
- package/dist/swap/orca.js +382 -0
- package/dist/swap/orca.js.map +1 -0
- package/dist/swap/raydiumClmm.d.ts +62 -0
- package/dist/swap/raydiumClmm.d.ts.map +1 -0
- package/dist/swap/raydiumClmm.js +447 -0
- package/dist/swap/raydiumClmm.js.map +1 -0
- package/dist/tradeCheck.d.ts +45 -0
- package/dist/tradeCheck.d.ts.map +1 -0
- package/dist/tradeCheck.js +131 -0
- package/dist/tradeCheck.js.map +1 -0
- package/dist/write/instructions.d.ts +7 -0
- package/dist/write/instructions.d.ts.map +1 -1
- package/dist/write/instructions.js +24 -1
- package/dist/write/instructions.js.map +1 -1
- package/dist/write/transaction.d.ts +23 -0
- package/dist/write/transaction.d.ts.map +1 -1
- package/dist/write/transaction.js +50 -0
- package/dist/write/transaction.js.map +1 -1
- package/package.json +46 -14
- package/src/approvals.ts +358 -0
- package/src/fees.ts +259 -0
- package/src/layout.ts +2 -2
- package/src/lp.ts +8 -44
- package/src/names.ts +329 -0
- package/src/pools.ts +43 -0
- package/src/portfolio.ts +124 -0
- package/src/price.ts +366 -0
- package/src/risk.ts +243 -0
- package/src/rpc.ts +36 -9
- package/src/subpaths/approvals.ts +47 -0
- package/src/subpaths/fees.ts +41 -0
- package/src/subpaths/names.ts +45 -0
- package/src/subpaths/price.ts +62 -0
- package/src/subpaths/risk.ts +36 -0
- package/src/subpaths/swap.ts +41 -0
- package/src/subpaths/write.ts +2 -0
- package/src/swap/amm.ts +88 -0
- package/src/swap/clmmMath.ts +96 -0
- package/src/swap/common.ts +113 -0
- package/src/swap/cpmm.ts +132 -0
- package/src/swap/index.ts +467 -0
- package/src/swap/orca.ts +397 -0
- package/src/swap/raydiumClmm.ts +464 -0
- package/src/tradeCheck.ts +166 -0
- package/src/write/instructions.ts +26 -1
- package/src/write/transaction.ts +62 -0
package/src/write/transaction.ts
CHANGED
|
@@ -179,3 +179,65 @@ export function messageBlockhash(message: Uint8Array): string {
|
|
|
179
179
|
const start = keysStart + 32 * keys
|
|
180
180
|
return encodeAddress(message.slice(start, start + 32))
|
|
181
181
|
}
|
|
182
|
+
|
|
183
|
+
/** 解析后的消息(legacy / v0) */
|
|
184
|
+
export interface ParsedMessage {
|
|
185
|
+
version: 'legacy' | 0
|
|
186
|
+
/** 需要的签名数 */
|
|
187
|
+
signatures: number
|
|
188
|
+
/** 消息里直接列出的账户 */
|
|
189
|
+
staticKeys: string[]
|
|
190
|
+
/** staticKeys 里可写的 */
|
|
191
|
+
writable: string[]
|
|
192
|
+
instructions: Array<{ programId: string; accounts: number[]; data: Uint8Array }>
|
|
193
|
+
/** v0 的地址查找表:表地址 + 要用的可写 / 只读下标 */
|
|
194
|
+
lookups: Array<{ table: string; writable: number[]; readonly: number[] }>
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/** 解析 legacy / v0 消息;其他版本抛错 */
|
|
198
|
+
export function parseMessage(message: Uint8Array): ParsedMessage {
|
|
199
|
+
const first = message[0] as number
|
|
200
|
+
const versioned = (first & 0x80) !== 0
|
|
201
|
+
if (versioned && (first & 0x7f) !== 0) {
|
|
202
|
+
throw new Error(`Unsupported transaction version ${first & 0x7f} (only legacy and v0)`)
|
|
203
|
+
}
|
|
204
|
+
let o = versioned ? 1 : 0
|
|
205
|
+
const byte = () => {
|
|
206
|
+
const b = message[o++]
|
|
207
|
+
if (b === undefined) throw new Error('Invalid transaction: truncated')
|
|
208
|
+
return b
|
|
209
|
+
}
|
|
210
|
+
const take = (n: number) => {
|
|
211
|
+
if (o + n > message.length) throw new Error('Invalid transaction: truncated')
|
|
212
|
+
const out = message.slice(o, o + n)
|
|
213
|
+
o += n
|
|
214
|
+
return out
|
|
215
|
+
}
|
|
216
|
+
const compact = () => {
|
|
217
|
+
const [value, next] = readCompactU16(message, o)
|
|
218
|
+
o = next
|
|
219
|
+
return value
|
|
220
|
+
}
|
|
221
|
+
const [required, readonlySigned, readonlyUnsigned] = [byte(), byte(), byte()]
|
|
222
|
+
const keyCount = compact()
|
|
223
|
+
const staticKeys = Array.from({ length: keyCount }, () => encodeAddress(take(32)))
|
|
224
|
+
take(32) // blockhash
|
|
225
|
+
const instructions = Array.from({ length: compact() }, () => {
|
|
226
|
+
const program = byte()
|
|
227
|
+
const accounts = Array.from({ length: compact() }, byte)
|
|
228
|
+
const data = take(compact())
|
|
229
|
+
const programId = staticKeys[program]
|
|
230
|
+
if (programId === undefined) throw new Error('Invalid transaction: bad program index')
|
|
231
|
+
return { programId, accounts, data }
|
|
232
|
+
})
|
|
233
|
+
const lookups = versioned
|
|
234
|
+
? Array.from({ length: compact() }, () => {
|
|
235
|
+
const table = encodeAddress(take(32))
|
|
236
|
+
const writable = Array.from({ length: compact() }, byte)
|
|
237
|
+
const readonly = Array.from({ length: compact() }, byte)
|
|
238
|
+
return { table, writable, readonly }
|
|
239
|
+
})
|
|
240
|
+
: []
|
|
241
|
+
const writable = staticKeys.filter((_, i) => (i < required ? i < required - readonlySigned : i < keyCount - readonlyUnsigned))
|
|
242
|
+
return { version: versioned ? 0 : 'legacy', signatures: required, staticKeys, writable, instructions, lookups }
|
|
243
|
+
}
|