@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.
Files changed (138) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +231 -3
  3. package/dist/approvals.d.ts +129 -0
  4. package/dist/approvals.d.ts.map +1 -0
  5. package/dist/approvals.js +221 -0
  6. package/dist/approvals.js.map +1 -0
  7. package/dist/fees.d.ts +89 -0
  8. package/dist/fees.d.ts.map +1 -0
  9. package/dist/fees.js +166 -0
  10. package/dist/fees.js.map +1 -0
  11. package/dist/layout.d.ts +2 -0
  12. package/dist/layout.d.ts.map +1 -1
  13. package/dist/layout.js +2 -2
  14. package/dist/layout.js.map +1 -1
  15. package/dist/lp.d.ts +8 -15
  16. package/dist/lp.d.ts.map +1 -1
  17. package/dist/lp.js +7 -31
  18. package/dist/lp.js.map +1 -1
  19. package/dist/names.d.ts +68 -0
  20. package/dist/names.d.ts.map +1 -0
  21. package/dist/names.js +257 -0
  22. package/dist/names.js.map +1 -0
  23. package/dist/pools.d.ts +9 -0
  24. package/dist/pools.d.ts.map +1 -0
  25. package/dist/pools.js +45 -0
  26. package/dist/pools.js.map +1 -0
  27. package/dist/portfolio.d.ts +64 -0
  28. package/dist/portfolio.d.ts.map +1 -0
  29. package/dist/portfolio.js +57 -0
  30. package/dist/portfolio.js.map +1 -0
  31. package/dist/price.d.ts +90 -0
  32. package/dist/price.d.ts.map +1 -0
  33. package/dist/price.js +287 -0
  34. package/dist/price.js.map +1 -0
  35. package/dist/risk.d.ts +84 -0
  36. package/dist/risk.d.ts.map +1 -0
  37. package/dist/risk.js +211 -0
  38. package/dist/risk.js.map +1 -0
  39. package/dist/rpc.d.ts +2 -0
  40. package/dist/rpc.d.ts.map +1 -1
  41. package/dist/rpc.js +33 -9
  42. package/dist/rpc.js.map +1 -1
  43. package/dist/subpaths/approvals.d.ts +29 -0
  44. package/dist/subpaths/approvals.d.ts.map +1 -0
  45. package/dist/subpaths/approvals.js +30 -0
  46. package/dist/subpaths/approvals.js.map +1 -0
  47. package/dist/subpaths/fees.d.ts +23 -0
  48. package/dist/subpaths/fees.d.ts.map +1 -0
  49. package/dist/subpaths/fees.js +25 -0
  50. package/dist/subpaths/fees.js.map +1 -0
  51. package/dist/subpaths/names.d.ts +37 -0
  52. package/dist/subpaths/names.d.ts.map +1 -0
  53. package/dist/subpaths/names.js +27 -0
  54. package/dist/subpaths/names.js.map +1 -0
  55. package/dist/subpaths/price.d.ts +40 -0
  56. package/dist/subpaths/price.d.ts.map +1 -0
  57. package/dist/subpaths/price.js +43 -0
  58. package/dist/subpaths/price.js.map +1 -0
  59. package/dist/subpaths/risk.d.ts +28 -0
  60. package/dist/subpaths/risk.d.ts.map +1 -0
  61. package/dist/subpaths/risk.js +30 -0
  62. package/dist/subpaths/risk.js.map +1 -0
  63. package/dist/subpaths/swap.d.ts +22 -0
  64. package/dist/subpaths/swap.d.ts.map +1 -0
  65. package/dist/subpaths/swap.js +21 -0
  66. package/dist/subpaths/swap.js.map +1 -0
  67. package/dist/subpaths/write.d.ts +1 -1
  68. package/dist/subpaths/write.d.ts.map +1 -1
  69. package/dist/subpaths/write.js +1 -1
  70. package/dist/subpaths/write.js.map +1 -1
  71. package/dist/swap/amm.d.ts +20 -0
  72. package/dist/swap/amm.d.ts.map +1 -0
  73. package/dist/swap/amm.js +77 -0
  74. package/dist/swap/amm.js.map +1 -0
  75. package/dist/swap/clmmMath.d.ts +24 -0
  76. package/dist/swap/clmmMath.d.ts.map +1 -0
  77. package/dist/swap/clmmMath.js +82 -0
  78. package/dist/swap/clmmMath.js.map +1 -0
  79. package/dist/swap/common.d.ts +68 -0
  80. package/dist/swap/common.d.ts.map +1 -0
  81. package/dist/swap/common.js +65 -0
  82. package/dist/swap/common.js.map +1 -0
  83. package/dist/swap/cpmm.d.ts +28 -0
  84. package/dist/swap/cpmm.d.ts.map +1 -0
  85. package/dist/swap/cpmm.js +113 -0
  86. package/dist/swap/cpmm.js.map +1 -0
  87. package/dist/swap/index.d.ts +145 -0
  88. package/dist/swap/index.d.ts.map +1 -0
  89. package/dist/swap/index.js +349 -0
  90. package/dist/swap/index.js.map +1 -0
  91. package/dist/swap/orca.d.ts +50 -0
  92. package/dist/swap/orca.d.ts.map +1 -0
  93. package/dist/swap/orca.js +382 -0
  94. package/dist/swap/orca.js.map +1 -0
  95. package/dist/swap/raydiumClmm.d.ts +62 -0
  96. package/dist/swap/raydiumClmm.d.ts.map +1 -0
  97. package/dist/swap/raydiumClmm.js +447 -0
  98. package/dist/swap/raydiumClmm.js.map +1 -0
  99. package/dist/tradeCheck.d.ts +45 -0
  100. package/dist/tradeCheck.d.ts.map +1 -0
  101. package/dist/tradeCheck.js +131 -0
  102. package/dist/tradeCheck.js.map +1 -0
  103. package/dist/write/instructions.d.ts +7 -0
  104. package/dist/write/instructions.d.ts.map +1 -1
  105. package/dist/write/instructions.js +24 -1
  106. package/dist/write/instructions.js.map +1 -1
  107. package/dist/write/transaction.d.ts +23 -0
  108. package/dist/write/transaction.d.ts.map +1 -1
  109. package/dist/write/transaction.js +50 -0
  110. package/dist/write/transaction.js.map +1 -1
  111. package/package.json +46 -14
  112. package/src/approvals.ts +358 -0
  113. package/src/fees.ts +259 -0
  114. package/src/layout.ts +2 -2
  115. package/src/lp.ts +8 -44
  116. package/src/names.ts +329 -0
  117. package/src/pools.ts +43 -0
  118. package/src/portfolio.ts +124 -0
  119. package/src/price.ts +366 -0
  120. package/src/risk.ts +243 -0
  121. package/src/rpc.ts +36 -9
  122. package/src/subpaths/approvals.ts +47 -0
  123. package/src/subpaths/fees.ts +41 -0
  124. package/src/subpaths/names.ts +45 -0
  125. package/src/subpaths/price.ts +62 -0
  126. package/src/subpaths/risk.ts +36 -0
  127. package/src/subpaths/swap.ts +41 -0
  128. package/src/subpaths/write.ts +2 -0
  129. package/src/swap/amm.ts +88 -0
  130. package/src/swap/clmmMath.ts +96 -0
  131. package/src/swap/common.ts +113 -0
  132. package/src/swap/cpmm.ts +132 -0
  133. package/src/swap/index.ts +467 -0
  134. package/src/swap/orca.ts +397 -0
  135. package/src/swap/raydiumClmm.ts +464 -0
  136. package/src/tradeCheck.ts +166 -0
  137. package/src/write/instructions.ts +26 -1
  138. package/src/write/transaction.ts +62 -0
package/dist/lp.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { RequestOptions, SolanaClient } from './client.js';
2
2
  import { type AccountInfo } from './layout.js';
3
+ import { type SolanaPriceSource } from './price.js';
3
4
  export declare const RAYDIUM_CLMM_PROGRAM_ID = "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
4
5
  export declare const ORCA_WHIRLPOOL_PROGRAM_ID = "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
5
6
  export declare const RAYDIUM_AMM_PROGRAM_ID = "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
@@ -14,19 +15,7 @@ export declare const SOLANA_LP_PROTOCOLS: Readonly<Record<SolanaLpProtocol, {
14
15
  type: 'clmm' | 'amm';
15
16
  programId: string;
16
17
  }>>;
17
- export interface SolanaPriceSource {
18
- readonly name: string;
19
- /** 返回 mint → 美元价格;没有价格的不返回 */
20
- prices(ctx: {
21
- mints: readonly string[];
22
- fetch: typeof fetch;
23
- signal?: AbortSignal;
24
- }): Promise<Map<string, number>>;
25
- }
26
- /** DefiLlama 价格(免费免 Key,按 100 个一批查询);confidence 低于 minConfidence(默认 0.9)的价格不用 */
27
- export declare function defillamaPrices(options?: {
28
- minConfidence?: number;
29
- }): SolanaPriceSource;
18
+ export { defillamaPrices, type SolanaPriceSource, type SolanaPriceSourceContext } from './price.js';
30
19
  export interface SolanaLpToken {
31
20
  mint: string;
32
21
  /** 读不到时为 null;Wrapped SOL 为 'SOL'(按客户端的 nativeMints 配置) */
@@ -105,7 +94,7 @@ export interface LpPositionsOptions extends RequestOptions {
105
94
  pools?: readonly string[];
106
95
  /** 返回已清空的仓位(流动性为 0、手续费也领完,NFT 还在)。默认 false */
107
96
  includeClosed?: boolean;
108
- /** 查美元价值:true 用 DefiLlama,也可以传自己的 SolanaPriceSource。默认不查 */
97
+ /** 查美元价值:true 用 DefiLlama,也可以传自己的 SolanaPriceSource(如 /price 的 combinePrices([defillamaPrices(), onchainPrices()]))。默认不查 */
109
98
  prices?: boolean | SolanaPriceSource;
110
99
  /**
111
100
  * 价格源出错时调用(服务不可用、被拦截等):这时照样返回仓位,只是 valueUsd / feesUsd 为 null,
@@ -164,5 +153,9 @@ export declare function orcaTickArray(pool: string, tick: number, spacing: numbe
164
153
  * - 质押在农场里的 LP、Orca 的仓位组合(Position Bundle)、锁仓的 Raydium 仓位不在用户名下,查不到
165
154
  */
166
155
  export declare function lpPositions(client: SolanaClient, owner: string, options?: LpPositionsOptions): Promise<SolanaLpPosition[]>;
167
- export {};
156
+ /**
157
+ * 节点不提供这个方法(方法不存在、被拦截、需要付费 / Token、403 等):这时报错里说明怎么绕过。
158
+ * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出(资产总值 portfolio 也用)
159
+ */
160
+ export declare function methodUnavailable(err: unknown): boolean;
168
161
  //# sourceMappingURL=lp.d.ts.map
package/dist/lp.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzF,eAAO,MAAM,uBAAuB,iDAAiD,CAAA;AACrF,eAAO,MAAM,yBAAyB,gDAAgD,CAAA;AACtF,eAAO,MAAM,sBAAsB,iDAAiD,CAAA;AACpF,eAAO,MAAM,uBAAuB,iDAAiD,CAAA;AACrF,gCAAgC;AAChC,eAAO,MAAM,qBAAqB,iDAAiD,CAAA;AACnF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,iDAAiD,CAAA;AAEpF,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,cAAc,CAAA;AAEjG,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAK7H,CAAA;AAMD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,8BAA8B;IAC9B,MAAM,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,OAAO,KAAK,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnH;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CA2B3F;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,aAAa,CAAA;IACrB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,IAAI,EAAE,KAAK,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,oBAAoB,CAAA;AAEzE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,kBAAkB;IAClB,SAAS,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAA;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AAMD,6BAA6B;AAC7B,qBAAa,KAAK;;IAEJ,QAAQ,CAAC,IAAI,EAAE,UAAU;gBAAhB,IAAI,EAAE,UAAU;IAGrC,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGrB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGtB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGtB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGtB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGtB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAGvB,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAGvB;AA2GD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,GAAG,cAAc,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAoCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAStE;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,4BAAgC,CAAA;AAM9D,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKhH;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAG7G;AA4FD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2LpI"}
1
+ {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
package/dist/lp.js CHANGED
@@ -4,6 +4,7 @@ import { decodeAddress, encodeAddress, findProgramAddress, isAddress } from './a
4
4
  import { formatUnits, parseMint, parseTokenAccount } from './layout.js';
5
5
  import { AllNodesFailedError, HttpError, RpcError } from './rpc.js';
6
6
  import { getAmountsForLiquidity, getFeeGrowthInside, getFeesOwed, orcaSqrtPriceAtTick, raydiumSqrtPriceAtTick, sqrtPriceToPrice, tickToPrice } from './lpMath.js';
7
+ import { defillamaPrices } from './price.js';
7
8
  export const RAYDIUM_CLMM_PROGRAM_ID = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK';
8
9
  export const ORCA_WHIRLPOOL_PROGRAM_ID = 'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc';
9
10
  export const RAYDIUM_AMM_PROGRAM_ID = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8';
@@ -18,33 +19,8 @@ export const SOLANA_LP_PROTOCOLS = {
18
19
  'raydium-amm': { name: 'Raydium AMM v4', type: 'amm', programId: RAYDIUM_AMM_PROGRAM_ID },
19
20
  'raydium-cpmm': { name: 'Raydium CPMM', type: 'amm', programId: RAYDIUM_CPMM_PROGRAM_ID },
20
21
  };
21
- /** DefiLlama 价格(免费免 Key,按 100 个一批查询);confidence 低于 minConfidence(默认 0.9)的价格不用 */
22
- export function defillamaPrices(options = {}) {
23
- const minConfidence = options.minConfidence ?? 0.9;
24
- return {
25
- name: 'defillama',
26
- async prices({ mints, fetch: fetchFn, signal }) {
27
- const result = new Map();
28
- const batches = [];
29
- for (let i = 0; i < mints.length; i += 100) {
30
- batches.push(mints.slice(i, i + 100));
31
- }
32
- await Promise.all(batches.map(async (batch) => {
33
- const res = await fetchFn(`https://coins.llama.fi/prices/current/${batch.map((m) => `solana:${m}`).join(',')}`, { signal });
34
- if (!res.ok) {
35
- throw new Error(`DefiLlama prices: HTTP ${res.status}`);
36
- }
37
- const body = (await res.json());
38
- for (const [key, coin] of Object.entries(body.coins ?? {})) {
39
- if (typeof coin.price === 'number' && Number.isFinite(coin.price) && (coin.confidence === undefined || coin.confidence >= minConfidence)) {
40
- result.set(key.slice(key.indexOf(':') + 1), coin.price);
41
- }
42
- }
43
- }));
44
- return result;
45
- },
46
- };
47
- }
22
+ // 价格源在 price.ts(子路径 /price);这里继续导出,旧的 import 不受影响
23
+ export { defillamaPrices } from './price.js';
48
24
  // ---------------------------------------------------------------------------
49
25
  // 账户布局(各程序的 Anchor / 原生账户,偏移量含 8 字节判别符)
50
26
  // ---------------------------------------------------------------------------
@@ -464,9 +440,9 @@ export async function lpPositions(client, owner, options = {}) {
464
440
  }
465
441
  /**
466
442
  * 节点不提供这个方法(方法不存在、被拦截、需要付费 / Token、403 等):这时报错里说明怎么绕过。
467
- * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出
443
+ * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出(资产总值 portfolio 也用)
468
444
  */
469
- function methodUnavailable(err) {
445
+ export function methodUnavailable(err) {
470
446
  if (err instanceof AllNodesFailedError) {
471
447
  return err.errors.length > 0 && err.errors.every((e) => methodUnavailable(e.error));
472
448
  }
@@ -531,8 +507,8 @@ async function finalize(client, raw, options) {
531
507
  return new Map();
532
508
  }
533
509
  try {
534
- // wSOL 的价格就是 SOL 的价格,DefiLlama 用 So111…112 查得到
535
- return await priceSource.prices({ mints, fetch: fetchFn, signal });
510
+ // wSOL 的价格就是 SOL 的价格,DefiLlama 用 So111…112 查得到;client 给链上价格源读池子
511
+ return await priceSource.prices({ mints, fetch: fetchFn, signal, client });
536
512
  }
537
513
  catch (err) {
538
514
  if (signal?.aborted) {
package/dist/lp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lp.js","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp.js","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import type { RequestOptions, SolanaClient } from './client.js';
2
+ /** SPL Name Service 程序 */
3
+ export declare const NAME_PROGRAM_ID = "namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX";
4
+ /** SNS 顶级域(`.sns`,2026-10 之前叫 `.sol`,链上是同一批账户)的根账户 */
5
+ export declare const SNS_ROOT_DOMAIN = "58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx";
6
+ export interface NamesOptions extends RequestOptions {
7
+ /**
8
+ * 也按 SNS 解析 `.sol` 名字(当作同名的 `.sns`)。默认 false:`.sol` 正在迁到另一个注册服务(SRS),
9
+ * SNS 官方 SDK 从 slot 452,825,395(约 2026-10-15)起不再解析 `.sol`,以后同一个 `.sol` 名字可能属于别人
10
+ */
11
+ legacySol?: boolean;
12
+ /**
13
+ * 域名的 owner 是 PDA(程序账户,不是钱包)时也作为地址返回,默认 false(与官方 SDK 一致:转给 PDA 的资产可能取不出来,address 为 null)
14
+ */
15
+ allowPda?: boolean;
16
+ }
17
+ /**
18
+ * 地址的来源(与 SNS 官方 SDK 的解析顺序相同):
19
+ * - nft:域名代币化成了 NFT,地址是 NFT 的持有人(要用 getTokenLargestAccounts 找,节点不支持时 address 为 null)
20
+ * - record-v2 / record-v1:域名设置的 SOL 记录(V2 要求 owner 验证过、没有过期;V1 要求 owner 的签名)
21
+ * - owner:域名的 owner
22
+ */
23
+ export type NameSource = 'nft' | 'record-v2' | 'record-v1' | 'owner';
24
+ export interface ResolvedName {
25
+ /** 传入的名字(原样) */
26
+ name: string;
27
+ /** 规范化后的名字(小写、去掉空格,后缀为 .sns);名字不合法时为 null */
28
+ normalized: string | null;
29
+ /** 解析出的地址(SOL 记录,没有时为 owner);没有注册、名字不合法、记录不合法时为 null */
30
+ address: string | null;
31
+ /** 域名的 owner(代币化的域名是 NFT 的持有人) */
32
+ owner: string | null;
33
+ source: NameSource | null;
34
+ /** 解析这个名字的服务('sns');名字不归 SNS 管时为 null */
35
+ service: 'sns' | null;
36
+ }
37
+ export interface AddressName {
38
+ /** 传入的地址(原样) */
39
+ address: string;
40
+ /** 主域名(如 'bonfida.sns'),核对过属于这个地址;没有设置或已经转给别人时为 null */
41
+ name: string | null;
42
+ service: 'sns' | null;
43
+ }
44
+ /** 域名对应的名字账户:'bonfida' 或子域名 'sub.bonfida'(不带后缀);子域名的种子是 '\0' + 子域名,parent 是父域名 */
45
+ export declare function snsDomainKey(domain: string): {
46
+ key: string;
47
+ parent: string | null;
48
+ };
49
+ /**
50
+ * 名字 → 地址(一次 getMultipleAccounts 读域名、NFT 记录、两版 SOL 记录;代币化的域名另外找 NFT 持有人)。
51
+ * 解析顺序同官方 SDK:代币化 → NFT 持有人;V2 SOL 记录(验证过、没过期);V1 SOL 记录(owner 签过名);owner(是 PDA 时默认不返回)
52
+ *
53
+ * ```ts
54
+ * await resolveNames(client, ['bonfida.sns', 'toly.sns'])
55
+ * // [{ name: 'bonfida.sns', normalized: 'bonfida.sns', address: 'Fw1E…Lb1v', owner: 'Fw1E…Lb1v', source: 'owner', service: 'sns' }, …]
56
+ * ```
57
+ */
58
+ export declare function resolveNames(client: SolanaClient, names: readonly string[], options?: NamesOptions): Promise<ResolvedName[]>;
59
+ /**
60
+ * 地址 → 主域名:读地址设置的主域名(favourite domain),再读域名和反查记录拼出名字,核对名字确实推导出这个域名账户、
61
+ * 并且域名属于这个地址(owner 是它,或代币化后它持有 NFT)——换了 owner 的旧设置不算。通常两次 getMultipleAccounts(子域名三次)
62
+ *
63
+ * ```ts
64
+ * await lookupAddresses(client, [wallet]) // [{ address: wallet, name: 'bonfida.sns', service: 'sns' }]
65
+ * ```
66
+ */
67
+ export declare function lookupAddresses(client: SolanaClient, addresses: readonly string[], options?: RequestOptions): Promise<AddressName[]>;
68
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../src/names.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/D,0BAA0B;AAC1B,eAAO,MAAM,eAAe,gDAAgD,CAAA;AAC5E,sDAAsD;AACtD,eAAO,MAAM,eAAe,iDAAiD,CAAA;AAe7E,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAA;AAEpE,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,wDAAwD;IACxD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACzB,yCAAyC;IACzC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,KAAK,GAAG,IAAI,CAAA;CACtB;AASD,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAUnF;AA4HD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAqCtI;AAeD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8C9I"}
package/dist/names.js ADDED
@@ -0,0 +1,257 @@
1
+ /**
2
+ * 域名解析(子路径 `@w3lib/solana-batch-call/names`):SNS(Solana Name Service,Bonfida),名字 → 地址、地址 → 主域名(反查后核对)。
3
+ * 账户地址都在本地按 PDA 推导,读取合成 getMultipleAccounts,不需要索引节点(代币化的域名除外)
4
+ */
5
+ import { sha256 } from '@noble/hashes/sha2.js';
6
+ import { decodeAddress, encodeAddress, findProgramAddress, getAssociatedTokenAddress, isAddress, isOnCurve } from './address.js';
7
+ import { TOKEN_PROGRAM_ID } from './constants.js';
8
+ /** SPL Name Service 程序 */
9
+ export const NAME_PROGRAM_ID = 'namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX';
10
+ /** SNS 顶级域(`.sns`,2026-10 之前叫 `.sol`,链上是同一批账户)的根账户 */
11
+ export const SNS_ROOT_DOMAIN = '58PwtjSDuFHuUkYjH9BYnnQKHfwo9reZhC2zMJv9JPkx';
12
+ /** 反查记录的 class(同时是 SNS 注册程序的中心状态账户) */
13
+ const REVERSE_LOOKUP_CLASS = '33m47vH6Eav6jr5Ry86XjhRft2jRBLDnDgPSHoquXi2Z';
14
+ /** V2 记录的 class:sns-records 程序(HP3D4D1Z…)的中心状态 PDA */
15
+ const RECORDS_V2_CLASS = '2pMnqHvei2N5oDcVGCRdZx48gqti199wr5CsyTTafsbo';
16
+ /** 主域名(favourite domain)所在的程序 */
17
+ const PRIMARY_DOMAIN_PROGRAM = '85iDfUvr3HJyLM2zcq5BXSiDvUWfw6cSE1FfNBo8Ap29';
18
+ /** 域名代币化(NFT)程序 */
19
+ const NAME_TOKENIZER_ID = 'nftD3vbNkNqfj2Sd3HZwbpw4BxxKWr4AjGb9X38JeZk';
20
+ /** 名字账户的头部:parent(32)+ owner(32)+ class(32),之后是数据 */
21
+ const HEADER_LEN = 96;
22
+ const encoder = new TextEncoder();
23
+ const ZERO = new Uint8Array(32);
24
+ const hashName = (name) => sha256(encoder.encode(`SPL Name Service${name}`));
25
+ /** 名字账户:sha256('SPL Name Service' + name)、class、parent 推导的 PDA(没有 class / parent 时用 32 个 0) */
26
+ function nameAccount(name, nameClass, parent) {
27
+ return findProgramAddress([hashName(name), nameClass ? decodeAddress(nameClass) : ZERO, parent ? decodeAddress(parent) : ZERO], NAME_PROGRAM_ID);
28
+ }
29
+ /** 域名对应的名字账户:'bonfida' 或子域名 'sub.bonfida'(不带后缀);子域名的种子是 '\0' + 子域名,parent 是父域名 */
30
+ export function snsDomainKey(domain) {
31
+ const labels = domain.split('.');
32
+ if (labels.length === 2) {
33
+ const parent = nameAccount(labels[1], undefined, SNS_ROOT_DOMAIN);
34
+ return { key: nameAccount(`\0${labels[0]}`, undefined, parent), parent };
35
+ }
36
+ if (labels.length !== 1) {
37
+ throw new Error(`Invalid SNS domain: ${domain}`);
38
+ }
39
+ return { key: nameAccount(domain, undefined, SNS_ROOT_DOMAIN), parent: null };
40
+ }
41
+ /** 反查记录:sha256 的是名字账户地址的 base58,class 是 REVERSE_LOOKUP_CLASS,子域名的 parent 是父域名 */
42
+ function reverseKey(domainKey, parent) {
43
+ return nameAccount(domainKey, REVERSE_LOOKUP_CLASS, parent ?? undefined);
44
+ }
45
+ /** 规范化:小写、去掉首尾空格;只认 name.sns / sub.name.sns(legacySol 时也认 .sol),返回不带后缀的部分 */
46
+ function parseName(name, legacySol) {
47
+ const n = name.trim().toLowerCase();
48
+ const suffix = n.endsWith('.sns') ? '.sns' : legacySol && n.endsWith('.sol') ? '.sol' : null;
49
+ if (!suffix) {
50
+ return null;
51
+ }
52
+ const domain = n.slice(0, -suffix.length);
53
+ const labels = domain.split('.');
54
+ if (labels.length > 2 || labels.some((l) => !l || l.includes('\0'))) {
55
+ return null;
56
+ }
57
+ return { domain, normalized: `${domain}.sns` };
58
+ }
59
+ function registryOf(account) {
60
+ if (!account || account.owner !== NAME_PROGRAM_ID || account.data.length < HEADER_LEN) {
61
+ return null;
62
+ }
63
+ return { parent: encodeAddress(account.data.slice(0, 32)), owner: encodeAddress(account.data.slice(32, 64)), data: account.data.slice(HEADER_LEN) };
64
+ }
65
+ /** NftRecord:tag(1)+ nonce(1)+ 名字账户(32)+ owner(32)+ NFT mint(32);tag 2 表示域名正在代币化 */
66
+ function tokenized(account) {
67
+ return !!account && account.owner === NAME_TOKENIZER_ID && account.data[0] === 2;
68
+ }
69
+ const nftRecordKey = (domainKey) => findProgramAddress([encoder.encode('nft_record'), decodeAddress(domainKey)], NAME_TOKENIZER_ID);
70
+ const nftMint = (domainKey) => findProgramAddress([encoder.encode('tokenized_name'), decodeAddress(domainKey)], NAME_TOKENIZER_ID);
71
+ /** 记录账户:V1 的种子是 '\x01' + 记录名,parent 是域名;V2 是 '\x02' + 记录名,class 是 RECORDS_V2_CLASS */
72
+ const recordV1Key = (domainKey, record) => nameAccount(`\x01${record}`, undefined, domainKey);
73
+ const recordV2Key = (domainKey, record) => nameAccount(`\x02${record}`, RECORDS_V2_CLASS, domainKey);
74
+ /** V2 记录的验证方式和对应 id 的长度:0 None,1 Solana(32),2 Ethereum(20),3 UnverifiedSolana(32) */
75
+ const VALIDATION_LENGTH = [0, 32, 20, 32];
76
+ const VALIDATION_SOLANA = 1;
77
+ /**
78
+ * V2 的 SOL 记录(与官方 SDK 相同):数据是 u16 过期验证方式 + u16 关联验证方式 + u32 内容长度,然后是两个验证 id 和内容。
79
+ * 返回记录的地址;记录过期(过期验证的 id 不是当前 owner)时为 undefined(继续看 V1 / owner);记录不合法时为 null(不解析)
80
+ */
81
+ function solRecordV2(registry, owner) {
82
+ if (!registry || registry.data.length < 8) {
83
+ return undefined;
84
+ }
85
+ const view = new DataView(registry.data.buffer, registry.data.byteOffset, registry.data.byteLength);
86
+ const staleness = view.getUint16(0, true);
87
+ const roa = view.getUint16(2, true);
88
+ const stalenessLength = VALIDATION_LENGTH[staleness];
89
+ const roaLength = VALIDATION_LENGTH[roa];
90
+ if (stalenessLength === undefined || roaLength === undefined) {
91
+ return null;
92
+ }
93
+ const body = registry.data.slice(8);
94
+ const content = body.slice(stalenessLength + roaLength);
95
+ if (content.length !== 32 || staleness !== VALIDATION_SOLANA || roa !== VALIDATION_SOLANA) {
96
+ return null;
97
+ }
98
+ if (encodeAddress(body.slice(0, 32)) !== owner) {
99
+ return undefined; // owner 换了:记录过期
100
+ }
101
+ // 关联验证的 id 必须就是内容本身(内容地址签过名)
102
+ return encodeAddress(body.slice(32, 64)) === encodeAddress(content) ? encodeAddress(content) : null;
103
+ }
104
+ /** V1 的 SOL 记录:32 字节地址 + 64 字节 owner 的签名(签的是 hex(地址 ‖ 记录账户地址) 的 UTF-8);签名不对时为 null */
105
+ async function solRecordV1(registry, recordKey, owner) {
106
+ if (!registry || registry.data.length < 96) {
107
+ return null;
108
+ }
109
+ const target = registry.data.slice(0, 32);
110
+ const signature = registry.data.slice(32, 96);
111
+ const hex = [...target, ...decodeAddress(recordKey)].map((b) => b.toString(16).padStart(2, '0')).join('');
112
+ return (await verifyEd25519(decodeAddress(owner), signature, encoder.encode(hex))) ? encodeAddress(target) : null;
113
+ }
114
+ /** Ed25519 验签(WebCrypto);运行环境不支持时当作验签失败 */
115
+ async function verifyEd25519(publicKey, signature, message) {
116
+ const subtle = globalThis.crypto?.subtle;
117
+ if (!subtle)
118
+ return false;
119
+ try {
120
+ const key = await subtle.importKey('raw', publicKey, { name: 'Ed25519' }, false, ['verify']);
121
+ return await subtle.verify('Ed25519', key, signature, message);
122
+ }
123
+ catch {
124
+ return false;
125
+ }
126
+ }
127
+ /**
128
+ * 代币化域名的 NFT 持有人:getTokenLargestAccounts 找到唯一的持有账户,再读出它的 owner(与官方 SDK 相同)。
129
+ * 免费公共节点大多不支持 getTokenLargestAccounts,这时为 null
130
+ */
131
+ async function nftHolders(client, domainKeys, signal) {
132
+ const largest = await Promise.all(domainKeys.map((key) => client
133
+ .request('getTokenLargestAccounts', [nftMint(key), { commitment: client.commitment }], { signal })
134
+ .then((res) => res.value.find((a) => a.amount === '1')?.address ?? null)
135
+ .catch((err) => {
136
+ if (signal?.aborted)
137
+ throw err;
138
+ return null;
139
+ })));
140
+ const holders = largest.filter((a) => a !== null);
141
+ const accounts = holders.length ? await client.accounts(holders, { signal }) : [];
142
+ const ownerOf = new Map(holders.map((a, i) => [a, accounts[i]?.owner === TOKEN_PROGRAM_ID ? encodeAddress(accounts[i].data.slice(32, 64)) : null]));
143
+ return new Map(domainKeys.map((key, i) => [key, largest[i] ? (ownerOf.get(largest[i]) ?? null) : null]));
144
+ }
145
+ /**
146
+ * 名字 → 地址(一次 getMultipleAccounts 读域名、NFT 记录、两版 SOL 记录;代币化的域名另外找 NFT 持有人)。
147
+ * 解析顺序同官方 SDK:代币化 → NFT 持有人;V2 SOL 记录(验证过、没过期);V1 SOL 记录(owner 签过名);owner(是 PDA 时默认不返回)
148
+ *
149
+ * ```ts
150
+ * await resolveNames(client, ['bonfida.sns', 'toly.sns'])
151
+ * // [{ name: 'bonfida.sns', normalized: 'bonfida.sns', address: 'Fw1E…Lb1v', owner: 'Fw1E…Lb1v', source: 'owner', service: 'sns' }, …]
152
+ * ```
153
+ */
154
+ export async function resolveNames(client, names, options = {}) {
155
+ const { signal, legacySol = false, allowPda = false } = options;
156
+ const items = names.map((name) => {
157
+ const parsed = parseName(name, legacySol);
158
+ if (!parsed)
159
+ return { name, parsed: null, key: null };
160
+ const { key } = snsDomainKey(parsed.domain);
161
+ return { name, parsed, key, nft: nftRecordKey(key), v1: recordV1Key(key, 'SOL'), v2: recordV2Key(key, 'SOL') };
162
+ });
163
+ const keys = items.flatMap((x) => (x.key ? [x.key, x.nft, x.v1, x.v2] : []));
164
+ const accounts = keys.length ? await client.accounts(keys, { signal }) : [];
165
+ const byKey = new Map(keys.map((k, i) => [k, accounts[i] ?? null]));
166
+ const nfts = items.filter((x) => x.key && registryOf(byKey.get(x.key)) && tokenized(byKey.get(x.nft))).map((x) => x.key);
167
+ const holders = nfts.length ? await nftHolders(client, nfts, signal) : new Map();
168
+ return Promise.all(items.map(async (x) => {
169
+ const base = { name: x.name, normalized: x.parsed?.normalized ?? null, service: x.parsed ? 'sns' : null };
170
+ const registry = x.key ? registryOf(byKey.get(x.key)) : null;
171
+ if (!x.key || !registry) {
172
+ return { ...base, address: null, owner: null, source: null };
173
+ }
174
+ if (holders.has(x.key)) {
175
+ const holder = holders.get(x.key) ?? null;
176
+ return { ...base, address: holder, owner: holder, source: 'nft' };
177
+ }
178
+ const owner = registry.owner;
179
+ const v2 = solRecordV2(registryOf(byKey.get(x.v2)), owner);
180
+ if (v2 !== undefined) {
181
+ return { ...base, address: v2, owner, source: 'record-v2' };
182
+ }
183
+ const v1 = await solRecordV1(registryOf(byKey.get(x.v1)), x.v1, owner);
184
+ if (v1) {
185
+ return { ...base, address: v1, owner, source: 'record-v1' };
186
+ }
187
+ return { ...base, address: allowPda || isOnCurve(decodeAddress(owner)) ? owner : null, owner, source: 'owner' };
188
+ }));
189
+ }
190
+ /** 反查记录的数据:u32 长度 + 名字(子域名的以 \0 开头) */
191
+ function reverseName(account) {
192
+ const registry = registryOf(account);
193
+ if (!registry || registry.data.length < 4) {
194
+ return null;
195
+ }
196
+ const length = new DataView(registry.data.buffer, registry.data.byteOffset).getUint32(0, true);
197
+ if (registry.data.length < 4 + length) {
198
+ return null;
199
+ }
200
+ return new TextDecoder().decode(registry.data.slice(4, 4 + length)).replace(/^\0/, '') || null;
201
+ }
202
+ /**
203
+ * 地址 → 主域名:读地址设置的主域名(favourite domain),再读域名和反查记录拼出名字,核对名字确实推导出这个域名账户、
204
+ * 并且域名属于这个地址(owner 是它,或代币化后它持有 NFT)——换了 owner 的旧设置不算。通常两次 getMultipleAccounts(子域名三次)
205
+ *
206
+ * ```ts
207
+ * await lookupAddresses(client, [wallet]) // [{ address: wallet, name: 'bonfida.sns', service: 'sns' }]
208
+ * ```
209
+ */
210
+ export async function lookupAddresses(client, addresses, options = {}) {
211
+ const { signal } = options;
212
+ const wallets = [...new Set(addresses.filter((a) => isAddress(a)))];
213
+ const primaryKeys = wallets.map((w) => findProgramAddress([encoder.encode('favourite_domain'), decodeAddress(w)], PRIMARY_DOMAIN_PROGRAM));
214
+ const primaries = primaryKeys.length ? await client.accounts(primaryKeys, { signal }) : [];
215
+ // 主域名账户:tag(1)+ 名字账户(32)
216
+ const chosen = wallets.flatMap((wallet, i) => {
217
+ const a = primaries[i];
218
+ return a && a.owner === PRIMARY_DOMAIN_PROGRAM && a.data.length >= 33 ? [{ wallet, domain: encodeAddress(a.data.slice(1, 33)) }] : [];
219
+ });
220
+ // 先按顶级域名读反查记录(大多数情况);是子域名时再读一次
221
+ const round2 = chosen.flatMap((c) => [c.domain, reverseKey(c.domain), getAssociatedTokenAddress(c.wallet, nftMint(c.domain), TOKEN_PROGRAM_ID)]);
222
+ const accounts2 = round2.length ? await client.accounts(round2, { signal }) : [];
223
+ const found = chosen.map((c, i) => ({ ...c, registry: registryOf(accounts2[3 * i]), reverse: accounts2[3 * i + 1] ?? null, nft: accounts2[3 * i + 2] ?? null }));
224
+ const subs = found.filter((f) => f.registry && f.registry.parent !== SNS_ROOT_DOMAIN);
225
+ const round3 = subs.flatMap((f) => [reverseKey(f.domain, f.registry?.parent), reverseKey(f.registry?.parent)]);
226
+ const accounts3 = round3.length ? await client.accounts(round3, { signal }) : [];
227
+ const subNames = new Map(subs.map((f, i) => {
228
+ const [sub, parent] = [reverseName(accounts3[2 * i]), reverseName(accounts3[2 * i + 1])];
229
+ return [f, sub && parent ? `${sub}.${parent}` : null];
230
+ }));
231
+ const names = new Map();
232
+ for (const f of found) {
233
+ if (!f.registry)
234
+ continue;
235
+ const domain = f.registry.parent === SNS_ROOT_DOMAIN ? reverseName(f.reverse) : (subNames.get(f) ?? null);
236
+ if (!domain)
237
+ continue;
238
+ // 正查核对:名字推导出的账户就是主域名指向的账户(反查记录的内容格式不对时不会拼出别的名字)
239
+ let key;
240
+ try {
241
+ key = snsDomainKey(domain).key;
242
+ }
243
+ catch {
244
+ continue;
245
+ }
246
+ // 代币化的域名:钱包的 ATA 里有这个域名的 NFT(数量 1)
247
+ const holdsNft = !!f.nft && f.nft.owner === TOKEN_PROGRAM_ID && f.nft.data.length >= 72 && new DataView(f.nft.data.buffer, f.nft.data.byteOffset).getBigUint64(64, true) === 1n;
248
+ if (key === f.domain && (f.registry.owner === f.wallet || holdsNft)) {
249
+ names.set(f.wallet, `${domain}.sns`);
250
+ }
251
+ }
252
+ return addresses.map((address) => {
253
+ const name = names.get(address) ?? null;
254
+ return { address, name, service: name ? 'sns' : null };
255
+ });
256
+ }
257
+ //# sourceMappingURL=names.js.map