sol-parser-sdk-nodejs 0.3.0 → 0.4.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 (93) hide show
  1. package/.env.example +24 -0
  2. package/README.md +94 -352
  3. package/README_CN.md +101 -253
  4. package/dist/accounts/mod.d.ts +2 -0
  5. package/dist/accounts/mod.js +5 -1
  6. package/dist/accounts/rpc_wallet.d.ts +5 -0
  7. package/dist/accounts/rpc_wallet.js +18 -0
  8. package/dist/accounts/rust_aliases.d.ts +9 -0
  9. package/dist/accounts/rust_aliases.js +19 -0
  10. package/dist/accounts/wallet_resolve.d.ts +1 -0
  11. package/dist/accounts/wallet_resolve.js +28 -0
  12. package/dist/common/constants.d.ts +10 -0
  13. package/dist/common/constants.js +13 -0
  14. package/dist/core/account_dispatcher_rpc.js +26 -5
  15. package/dist/core/account_fill_meteora.d.ts +4 -2
  16. package/dist/core/account_fill_meteora.js +5 -2
  17. package/dist/core/account_pubkey_cache.d.ts +12 -0
  18. package/dist/core/account_pubkey_cache.js +26 -0
  19. package/dist/core/clock.d.ts +6 -0
  20. package/dist/core/clock.js +13 -0
  21. package/dist/core/dex_event.d.ts +25 -44
  22. package/dist/core/metadata.d.ts +1 -0
  23. package/dist/core/unified_parser.d.ts +2 -2
  24. package/dist/core/unified_parser.js +6 -6
  25. package/dist/grpc/client.d.ts +6 -0
  26. package/dist/grpc/client.js +121 -64
  27. package/dist/grpc/event_parser.d.ts +6 -0
  28. package/dist/grpc/event_parser.js +15 -0
  29. package/dist/grpc/geyser_connect.d.ts +30 -0
  30. package/dist/grpc/geyser_connect.js +40 -0
  31. package/dist/grpc/program_ids.d.ts +25 -0
  32. package/dist/grpc/program_ids.js +54 -0
  33. package/dist/grpc/rpc_to_grpc.d.ts +18 -0
  34. package/dist/grpc/rpc_to_grpc.js +127 -0
  35. package/dist/grpc/subscribe_builder.d.ts +13 -0
  36. package/dist/grpc/subscribe_builder.js +66 -0
  37. package/dist/grpc/transaction_meta.d.ts +29 -0
  38. package/dist/grpc/transaction_meta.js +208 -0
  39. package/dist/grpc/types.d.ts +53 -2
  40. package/dist/grpc/types.js +98 -7
  41. package/dist/grpc/yellowstone_parse.d.ts +5 -0
  42. package/dist/grpc/yellowstone_parse.js +15 -2
  43. package/dist/index.d.ts +36 -6
  44. package/dist/index.js +172 -2
  45. package/dist/instr/bonk_ix.d.ts +4 -1
  46. package/dist/instr/bonk_ix.js +106 -27
  47. package/dist/instr/meteora_damm_ix.d.ts +4 -2
  48. package/dist/instr/meteora_damm_ix.js +248 -13
  49. package/dist/instr/mod.js +7 -2
  50. package/dist/instr/orca_whirlpool_ix.d.ts +4 -1
  51. package/dist/instr/orca_whirlpool_ix.js +45 -16
  52. package/dist/instr/program_ids.d.ts +7 -13
  53. package/dist/instr/program_ids.js +19 -15
  54. package/dist/instr/pumpswap_ix.d.ts +1 -1
  55. package/dist/instr/pumpswap_ix.js +78 -57
  56. package/dist/instr/raydium_amm_v4_ix.d.ts +1 -1
  57. package/dist/instr/raydium_amm_v4_ix.js +94 -28
  58. package/dist/instr/raydium_clmm_ix.d.ts +1 -1
  59. package/dist/instr/raydium_clmm_ix.js +59 -26
  60. package/dist/instr/raydium_cpmm_ix.d.ts +1 -1
  61. package/dist/instr/raydium_cpmm_ix.js +46 -12
  62. package/dist/instr/rust_aliases.d.ts +7 -0
  63. package/dist/instr/rust_aliases.js +14 -0
  64. package/dist/instr/utils.d.ts +1 -1
  65. package/dist/instr/utils.js +2 -1
  66. package/dist/logs/discriminator_lut.d.ts +19 -0
  67. package/dist/logs/discriminator_lut.js +60 -0
  68. package/dist/logs/meteora_damm.d.ts +3 -4
  69. package/dist/logs/meteora_damm.js +3 -369
  70. package/dist/logs/optimized_matcher.d.ts +2 -2
  71. package/dist/logs/optimized_matcher.js +3 -3
  72. package/dist/logs/rust_aliases.d.ts +6 -0
  73. package/dist/logs/rust_aliases.js +13 -0
  74. package/dist/rpc_parser.d.ts +1 -0
  75. package/dist/rpc_parser.js +4 -1
  76. package/dist/shredstream/alt_lookup.d.ts +9 -0
  77. package/dist/shredstream/alt_lookup.js +70 -0
  78. package/dist/shredstream/client.d.ts +62 -0
  79. package/dist/shredstream/client.js +399 -0
  80. package/dist/shredstream/config.d.ts +30 -0
  81. package/dist/shredstream/config.js +34 -0
  82. package/dist/shredstream/entries_decode.d.ts +28 -0
  83. package/dist/shredstream/entries_decode.js +251 -0
  84. package/dist/shredstream/index.d.ts +17 -0
  85. package/dist/shredstream/index.js +33 -0
  86. package/dist/shredstream/instruction_parse.d.ts +34 -0
  87. package/dist/shredstream/instruction_parse.js +47 -0
  88. package/dist/shredstream/proto_types.d.ts +9 -0
  89. package/dist/shredstream/proto_types.js +2 -0
  90. package/dist/shredstream/shredstream.proto +15 -0
  91. package/dist/shredstream/wire_to_shred_tx.d.ts +2 -0
  92. package/dist/shredstream/wire_to_shred_tx.js +59 -0
  93. package/package.json +28 -11
package/dist/index.js CHANGED
@@ -33,7 +33,21 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.YellowstoneGrpc = exports.programIds = exports.parseMeteoraDammInstruction = exports.parsePumpswapInstruction = exports.parsePumpfunInstruction = exports.parseInstructionUnified = exports.hasDiscriminator = exports.isPoolAccount = exports.isGlobalConfigAccount = exports.parsePumpswapAccount = exports.parsePumpswapPool = exports.parsePumpswapGlobalConfig = exports.parseTokenAccount = exports.isNonceAccount = exports.parseNonceAccount = exports.parseAccountUnified = exports.u64leDiscriminator = exports.PUMPSWAP_DISC = exports.PROGRAM_LOG_DISC = exports.parseInitializePoolEvent = exports.parseMeteoraDammLog = exports.parseLogOptimized = exports.parseLogUnified = exports.eventTypeFilterAllowsInstructionParsing = exports.eventTypeFilterIncludesMeteoraDammV2 = exports.eventTypeFilterIncludesPumpswap = exports.eventTypeFilterIncludesPumpfun = exports.eventTypeFilterExclude = exports.eventTypeFilterIncludeOnly = exports.newTransactionFilter = exports.defaultClientConfig = exports.parseDexEventsFromGrpcTransactionInfo = exports.applyAccountFillsToLogEvents = exports.fillDataRpc = exports.fillAccountsFromTransactionDataRpc = exports.parseRpcTransaction = exports.parseTransactionFromRpc = exports.isWarmedUp = exports.warmupParser = exports.nowUs = exports.parseLog = exports.parseTransactionWithStreamingListener = exports.parseLogsStreaming = exports.parseTransactionEventsStreaming = exports.parseTransactionWithListener = exports.parseLogsOnly = exports.parseTransactionEvents = exports.formatParseError = exports.dexEventToJsonString = exports.bigintToJsonReplacer = void 0;
36
+ exports.heuristic_sol_counterparties_for_watched_keys = exports.lamport_balance_deltas = exports.collect_account_keys_bs58 = exports.pubkey_bytes_to_bs58 = exports.tryYellowstoneSignature = exports.collectWatchTransferCounterpartyPairs = exports.splTokenCounterpartyByOwner = exports.tokenBalanceRawAmount = exports.heuristicSolCounterpartiesForWatchedKeys = exports.lamportBalanceDeltas = exports.collectAccountKeysBs58 = exports.pubkeyBytesToBs58 = exports.grpcTxIndexFromInfo = exports.parseDexEventsFromGrpcTransactionInfo = exports.convert_rpc_to_grpc = exports.convertRpcToGrpc = exports.applyAccountFillsToLogEvents = exports.fillDataRpc = exports.fillAccountsFromTransactionDataRpc = exports.parseRpcTransaction = exports.parseTransactionFromRpc = exports.isWarmedUp = exports.warmupParser = exports.build_account_pubkeys_with_cache = exports.buildAccountPubkeysWithCache = exports.AccountPubkeyCache = exports.elapsedMicrosSince = exports.nowNanos = exports.nowMicros = exports.nowUs = exports.parse_log = exports.parseLog = exports.parseTransactionWithStreamingListener = exports.parseLogsStreaming = exports.parseTransactionEventsStreaming = exports.parseTransactionWithListener = exports.parseLogsOnly = exports.parseTransactionEvents = exports.formatParseError = exports.dexEventToJsonString = exports.bigintToJsonReplacer = exports.defaultPubkey = exports.metadataForDexEvent = exports.SLOW_PROCESSING_THRESHOLD_US = exports.DEFAULT_REQUEST_TIMEOUT = exports.DEFAULT_METRICS_WINDOW_SECONDS = exports.DEFAULT_METRICS_PRINT_INTERVAL_SECONDS = exports.DEFAULT_MAX_DECODING_MESSAGE_SIZE = exports.DEFAULT_CONNECT_TIMEOUT = exports.DEFAULT_CHANNEL_SIZE = void 0;
37
+ exports.low_latency_client_config = exports.default_client_config = exports.account_filter_for_protocols = exports.transaction_filter_for_protocols = exports.get_program_ids_for_protocols = exports.protocol_program_ids = exports.accountFilterForProtocols = exports.transactionFilterForProtocols = exports.getProgramIdsForProtocols = exports.METEORA_DLMM_PROGRAM_ID = exports.METEORA_DAMM_V2_PROGRAM_ID = exports.METEORA_POOLS_PROGRAM_ID = exports.ORCA_WHIRLPOOL_PROGRAM_ID = exports.RAYDIUM_AMM_V4_PROGRAM_ID = exports.RAYDIUM_CLMM_PROGRAM_ID = exports.RAYDIUM_CPMM_PROGRAM_ID = exports.BONK_PROGRAM_ID = exports.PUMPSWAP_FEES_PROGRAM_ID = exports.PUMPSWAP_PROGRAM_ID = exports.PUMPFUN_PROGRAM_ID = exports.PROTOCOL_PROGRAM_IDS = exports.all_event_types = exports.ALL_EVENT_TYPES = exports.eventTypeFilterAllowsInstructionParsing = exports.eventTypeFilterIncludesRaydiumLaunchpad = exports.eventTypeFilterIncludesBonk = exports.eventTypeFilterIncludesOrcaWhirlpool = exports.eventTypeFilterIncludesRaydiumAmmV4 = exports.eventTypeFilterIncludesRaydiumCpmm = exports.eventTypeFilterIncludesRaydiumClmm = exports.eventTypeFilterIncludesMeteoraDammV2 = exports.eventTypeFilterIncludesPumpswap = exports.eventTypeFilterIncludesPumpfun = exports.eventTypeFilterExclude = exports.eventTypeFilterIncludeOnly = exports.accountFilterMemcmp = exports.accountFilterFromProgramOwners = exports.slotFilterMaxSlot = exports.slotFilterMinSlot = exports.newSlotFilter = exports.newAccountFilter = exports.transactionFilterFromProgramIds = exports.newTransactionFilter = exports.highThroughputClientConfig = exports.lowLatencyClientConfig = exports.defaultClientConfig = exports.try_yellowstone_signature = exports.collect_watch_transfer_counterparty_pairs = exports.spl_token_counterparty_by_owner = exports.token_balance_raw_amount = void 0;
38
+ exports.parse_nonce_account = exports.parse_account_unified = exports.rpcResolveUserWalletPubkey = exports.userWalletPubkeyForOnchainAccount = exports.hasDiscriminator = exports.isPoolAccount = exports.isGlobalConfigAccount = exports.parsePumpswapAccount = exports.parsePumpswapPool = exports.parsePumpswapGlobalConfig = exports.parseTokenAccount = exports.isNonceAccount = exports.parseNonceAccount = exports.parseAccountUnified = exports.u64leDiscriminator = exports.PUMPSWAP_DISC = exports.PROGRAM_LOG_DISC = exports.parseMeteoraDammLog = exports.lookup_discriminator = exports.lookupDiscriminator = exports.discriminator_to_protocol = exports.discriminatorToProtocol = exports.discriminator_to_name = exports.discriminatorToName = exports.parse_log_unified = exports.parse_log_optimized = exports.parse_meteora_dlmm_log = exports.parse_meteora_damm_log = exports.parseLogOptimized = exports.parseLogUnified = exports.build_subscribe_transaction_filters_named = exports.build_subscribe_request_with_commitment = exports.build_subscribe_request = exports.CommitmentLevel = exports.buildSubscribeTransactionFiltersNamed = exports.buildSubscribeRequestWithCommitment = exports.buildSubscribeRequest = exports.exclude_types = exports.include_only = exports.event_type_filter_exclude = exports.event_type_filter_include_only = exports.account_filter_memcmp = exports.account_filter_from_program_owners = exports.slot_filter_max_slot = exports.slot_filter_min_slot = exports.new_slot_filter = exports.new_account_filter = exports.transaction_filter_from_program_ids = exports.new_transaction_filter = exports.high_throughput_client_config = void 0;
39
+ exports.high_throughput_shred_stream_config = exports.low_latency_shred_stream_config = exports.default_shred_stream_config = exports.highThroughputShredStreamConfig = exports.lowLatencyShredStreamConfig = exports.defaultShredStreamConfig = exports.wireBytesToShredWasmTx = exports.decodeShredstreamEntriesBincode = exports.decodeEntriesBincodeNested = exports.decodeEntriesBincodeFlat = exports.bincodeVecEntryCount = exports.loadAddressLookupTableAccounts = exports.fullAccountKeyStringsFromShredTx = exports.dexEventsFromShredWasmTxWithFullKeys = exports.dexEventsFromShredWasmTx = exports.ShredEventQueue = exports.ShredStreamClient = exports.geyser_grpc_channel_options = exports.default_geyser_connect_config = exports.connect_yellowstone_geyser = exports.event_parser = exports.geyserGrpcChannelOptions = exports.defaultGeyserConnectConfig = exports.connectYellowstoneGeyser = exports.YellowstoneGrpc = exports.programIds = exports.parse_meteora_damm_instruction = exports.parse_pumpswap_instruction = exports.parse_pumpfun_instruction = exports.parse_instruction_unified = exports.parseMeteoraDammInstruction = exports.parsePumpswapInstruction = exports.parsePumpfunInstruction = exports.parseInstructionUnified = exports.user_wallet_pubkey_for_onchain_account = exports.rpc_resolve_user_wallet_pubkey = exports.parse_pumpswap_pool = exports.parse_pumpswap_global_config = exports.parse_token_account = void 0;
40
+ var constants_js_1 = require("./common/constants.js");
41
+ Object.defineProperty(exports, "DEFAULT_CHANNEL_SIZE", { enumerable: true, get: function () { return constants_js_1.DEFAULT_CHANNEL_SIZE; } });
42
+ Object.defineProperty(exports, "DEFAULT_CONNECT_TIMEOUT", { enumerable: true, get: function () { return constants_js_1.DEFAULT_CONNECT_TIMEOUT; } });
43
+ Object.defineProperty(exports, "DEFAULT_MAX_DECODING_MESSAGE_SIZE", { enumerable: true, get: function () { return constants_js_1.DEFAULT_MAX_DECODING_MESSAGE_SIZE; } });
44
+ Object.defineProperty(exports, "DEFAULT_METRICS_PRINT_INTERVAL_SECONDS", { enumerable: true, get: function () { return constants_js_1.DEFAULT_METRICS_PRINT_INTERVAL_SECONDS; } });
45
+ Object.defineProperty(exports, "DEFAULT_METRICS_WINDOW_SECONDS", { enumerable: true, get: function () { return constants_js_1.DEFAULT_METRICS_WINDOW_SECONDS; } });
46
+ Object.defineProperty(exports, "DEFAULT_REQUEST_TIMEOUT", { enumerable: true, get: function () { return constants_js_1.DEFAULT_REQUEST_TIMEOUT; } });
47
+ Object.defineProperty(exports, "SLOW_PROCESSING_THRESHOLD_US", { enumerable: true, get: function () { return constants_js_1.SLOW_PROCESSING_THRESHOLD_US; } });
48
+ var dex_event_js_1 = require("./core/dex_event.js");
49
+ Object.defineProperty(exports, "metadataForDexEvent", { enumerable: true, get: function () { return dex_event_js_1.metadataForDexEvent; } });
50
+ Object.defineProperty(exports, "defaultPubkey", { enumerable: true, get: function () { return dex_event_js_1.defaultPubkey; } });
37
51
  var json_utils_js_1 = require("./core/json_utils.js");
38
52
  Object.defineProperty(exports, "bigintToJsonReplacer", { enumerable: true, get: function () { return json_utils_js_1.bigintToJsonReplacer; } });
39
53
  Object.defineProperty(exports, "dexEventToJsonString", { enumerable: true, get: function () { return json_utils_js_1.dexEventToJsonString; } });
@@ -47,7 +61,16 @@ Object.defineProperty(exports, "parseTransactionEventsStreaming", { enumerable:
47
61
  Object.defineProperty(exports, "parseLogsStreaming", { enumerable: true, get: function () { return unified_parser_js_1.parseLogsStreaming; } });
48
62
  Object.defineProperty(exports, "parseTransactionWithStreamingListener", { enumerable: true, get: function () { return unified_parser_js_1.parseTransactionWithStreamingListener; } });
49
63
  Object.defineProperty(exports, "parseLog", { enumerable: true, get: function () { return unified_parser_js_1.parseLog; } });
64
+ Object.defineProperty(exports, "parse_log", { enumerable: true, get: function () { return unified_parser_js_1.parseLog; } });
50
65
  Object.defineProperty(exports, "nowUs", { enumerable: true, get: function () { return unified_parser_js_1.nowUs; } });
66
+ var clock_js_1 = require("./core/clock.js");
67
+ Object.defineProperty(exports, "nowMicros", { enumerable: true, get: function () { return clock_js_1.nowMicros; } });
68
+ Object.defineProperty(exports, "nowNanos", { enumerable: true, get: function () { return clock_js_1.nowNanos; } });
69
+ Object.defineProperty(exports, "elapsedMicrosSince", { enumerable: true, get: function () { return clock_js_1.elapsedMicrosSince; } });
70
+ var account_pubkey_cache_js_1 = require("./core/account_pubkey_cache.js");
71
+ Object.defineProperty(exports, "AccountPubkeyCache", { enumerable: true, get: function () { return account_pubkey_cache_js_1.AccountPubkeyCache; } });
72
+ Object.defineProperty(exports, "buildAccountPubkeysWithCache", { enumerable: true, get: function () { return account_pubkey_cache_js_1.buildAccountPubkeysWithCache; } });
73
+ Object.defineProperty(exports, "build_account_pubkeys_with_cache", { enumerable: true, get: function () { return account_pubkey_cache_js_1.buildAccountPubkeysWithCache; } });
51
74
  var warmup_js_1 = require("./warmup.js");
52
75
  Object.defineProperty(exports, "warmupParser", { enumerable: true, get: function () { return warmup_js_1.warmupParser; } });
53
76
  Object.defineProperty(exports, "isWarmedUp", { enumerable: true, get: function () { return warmup_js_1.isWarmedUp; } });
@@ -57,23 +80,124 @@ Object.defineProperty(exports, "parseRpcTransaction", { enumerable: true, get: f
57
80
  Object.defineProperty(exports, "fillAccountsFromTransactionDataRpc", { enumerable: true, get: function () { return rpc_parser_js_1.fillAccountsFromTransactionDataRpc; } });
58
81
  Object.defineProperty(exports, "fillDataRpc", { enumerable: true, get: function () { return rpc_parser_js_1.fillDataRpc; } });
59
82
  Object.defineProperty(exports, "applyAccountFillsToLogEvents", { enumerable: true, get: function () { return rpc_parser_js_1.applyAccountFillsToLogEvents; } });
83
+ Object.defineProperty(exports, "convertRpcToGrpc", { enumerable: true, get: function () { return rpc_parser_js_1.convertRpcToGrpc; } });
84
+ Object.defineProperty(exports, "convert_rpc_to_grpc", { enumerable: true, get: function () { return rpc_parser_js_1.convert_rpc_to_grpc; } });
60
85
  var yellowstone_parse_js_1 = require("./grpc/yellowstone_parse.js");
61
86
  Object.defineProperty(exports, "parseDexEventsFromGrpcTransactionInfo", { enumerable: true, get: function () { return yellowstone_parse_js_1.parseDexEventsFromGrpcTransactionInfo; } });
87
+ Object.defineProperty(exports, "grpcTxIndexFromInfo", { enumerable: true, get: function () { return yellowstone_parse_js_1.grpcTxIndexFromInfo; } });
88
+ var transaction_meta_js_1 = require("./grpc/transaction_meta.js");
89
+ Object.defineProperty(exports, "pubkeyBytesToBs58", { enumerable: true, get: function () { return transaction_meta_js_1.pubkeyBytesToBs58; } });
90
+ Object.defineProperty(exports, "collectAccountKeysBs58", { enumerable: true, get: function () { return transaction_meta_js_1.collectAccountKeysBs58; } });
91
+ Object.defineProperty(exports, "lamportBalanceDeltas", { enumerable: true, get: function () { return transaction_meta_js_1.lamportBalanceDeltas; } });
92
+ Object.defineProperty(exports, "heuristicSolCounterpartiesForWatchedKeys", { enumerable: true, get: function () { return transaction_meta_js_1.heuristicSolCounterpartiesForWatchedKeys; } });
93
+ Object.defineProperty(exports, "tokenBalanceRawAmount", { enumerable: true, get: function () { return transaction_meta_js_1.tokenBalanceRawAmount; } });
94
+ Object.defineProperty(exports, "splTokenCounterpartyByOwner", { enumerable: true, get: function () { return transaction_meta_js_1.splTokenCounterpartyByOwner; } });
95
+ Object.defineProperty(exports, "collectWatchTransferCounterpartyPairs", { enumerable: true, get: function () { return transaction_meta_js_1.collectWatchTransferCounterpartyPairs; } });
96
+ Object.defineProperty(exports, "tryYellowstoneSignature", { enumerable: true, get: function () { return transaction_meta_js_1.tryYellowstoneSignature; } });
97
+ /** Rust `grpc::transaction_meta` 蛇形命名别名(便于从 Rust 迁移) */
98
+ var transaction_meta_js_2 = require("./grpc/transaction_meta.js");
99
+ Object.defineProperty(exports, "pubkey_bytes_to_bs58", { enumerable: true, get: function () { return transaction_meta_js_2.pubkeyBytesToBs58; } });
100
+ Object.defineProperty(exports, "collect_account_keys_bs58", { enumerable: true, get: function () { return transaction_meta_js_2.collectAccountKeysBs58; } });
101
+ Object.defineProperty(exports, "lamport_balance_deltas", { enumerable: true, get: function () { return transaction_meta_js_2.lamportBalanceDeltas; } });
102
+ Object.defineProperty(exports, "heuristic_sol_counterparties_for_watched_keys", { enumerable: true, get: function () { return transaction_meta_js_2.heuristicSolCounterpartiesForWatchedKeys; } });
103
+ Object.defineProperty(exports, "token_balance_raw_amount", { enumerable: true, get: function () { return transaction_meta_js_2.tokenBalanceRawAmount; } });
104
+ Object.defineProperty(exports, "spl_token_counterparty_by_owner", { enumerable: true, get: function () { return transaction_meta_js_2.splTokenCounterpartyByOwner; } });
105
+ Object.defineProperty(exports, "collect_watch_transfer_counterparty_pairs", { enumerable: true, get: function () { return transaction_meta_js_2.collectWatchTransferCounterpartyPairs; } });
106
+ Object.defineProperty(exports, "try_yellowstone_signature", { enumerable: true, get: function () { return transaction_meta_js_2.tryYellowstoneSignature; } });
62
107
  var types_js_1 = require("./grpc/types.js");
63
108
  Object.defineProperty(exports, "defaultClientConfig", { enumerable: true, get: function () { return types_js_1.defaultClientConfig; } });
109
+ Object.defineProperty(exports, "lowLatencyClientConfig", { enumerable: true, get: function () { return types_js_1.lowLatencyClientConfig; } });
110
+ Object.defineProperty(exports, "highThroughputClientConfig", { enumerable: true, get: function () { return types_js_1.highThroughputClientConfig; } });
64
111
  Object.defineProperty(exports, "newTransactionFilter", { enumerable: true, get: function () { return types_js_1.newTransactionFilter; } });
112
+ Object.defineProperty(exports, "transactionFilterFromProgramIds", { enumerable: true, get: function () { return types_js_1.transactionFilterFromProgramIds; } });
113
+ Object.defineProperty(exports, "newAccountFilter", { enumerable: true, get: function () { return types_js_1.newAccountFilter; } });
114
+ Object.defineProperty(exports, "newSlotFilter", { enumerable: true, get: function () { return types_js_1.newSlotFilter; } });
115
+ Object.defineProperty(exports, "slotFilterMinSlot", { enumerable: true, get: function () { return types_js_1.slotFilterMinSlot; } });
116
+ Object.defineProperty(exports, "slotFilterMaxSlot", { enumerable: true, get: function () { return types_js_1.slotFilterMaxSlot; } });
117
+ Object.defineProperty(exports, "accountFilterFromProgramOwners", { enumerable: true, get: function () { return types_js_1.accountFilterFromProgramOwners; } });
118
+ Object.defineProperty(exports, "accountFilterMemcmp", { enumerable: true, get: function () { return types_js_1.accountFilterMemcmp; } });
65
119
  Object.defineProperty(exports, "eventTypeFilterIncludeOnly", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludeOnly; } });
66
120
  Object.defineProperty(exports, "eventTypeFilterExclude", { enumerable: true, get: function () { return types_js_1.eventTypeFilterExclude; } });
67
121
  Object.defineProperty(exports, "eventTypeFilterIncludesPumpfun", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesPumpfun; } });
68
122
  Object.defineProperty(exports, "eventTypeFilterIncludesPumpswap", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesPumpswap; } });
69
123
  Object.defineProperty(exports, "eventTypeFilterIncludesMeteoraDammV2", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesMeteoraDammV2; } });
124
+ Object.defineProperty(exports, "eventTypeFilterIncludesRaydiumClmm", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesRaydiumClmm; } });
125
+ Object.defineProperty(exports, "eventTypeFilterIncludesRaydiumCpmm", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesRaydiumCpmm; } });
126
+ Object.defineProperty(exports, "eventTypeFilterIncludesRaydiumAmmV4", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesRaydiumAmmV4; } });
127
+ Object.defineProperty(exports, "eventTypeFilterIncludesOrcaWhirlpool", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesOrcaWhirlpool; } });
128
+ Object.defineProperty(exports, "eventTypeFilterIncludesBonk", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesBonk; } });
129
+ Object.defineProperty(exports, "eventTypeFilterIncludesRaydiumLaunchpad", { enumerable: true, get: function () { return types_js_1.eventTypeFilterIncludesRaydiumLaunchpad; } });
70
130
  Object.defineProperty(exports, "eventTypeFilterAllowsInstructionParsing", { enumerable: true, get: function () { return types_js_1.eventTypeFilterAllowsInstructionParsing; } });
131
+ Object.defineProperty(exports, "ALL_EVENT_TYPES", { enumerable: true, get: function () { return types_js_1.ALL_EVENT_TYPES; } });
132
+ var types_js_2 = require("./grpc/types.js");
133
+ Object.defineProperty(exports, "all_event_types", { enumerable: true, get: function () { return types_js_2.ALL_EVENT_TYPES; } });
134
+ var program_ids_js_1 = require("./grpc/program_ids.js");
135
+ Object.defineProperty(exports, "PROTOCOL_PROGRAM_IDS", { enumerable: true, get: function () { return program_ids_js_1.PROTOCOL_PROGRAM_IDS; } });
136
+ Object.defineProperty(exports, "PUMPFUN_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.PUMPFUN_PROGRAM_ID; } });
137
+ Object.defineProperty(exports, "PUMPSWAP_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.PUMPSWAP_PROGRAM_ID; } });
138
+ Object.defineProperty(exports, "PUMPSWAP_FEES_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.PUMPSWAP_FEES_PROGRAM_ID; } });
139
+ Object.defineProperty(exports, "BONK_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.BONK_PROGRAM_ID; } });
140
+ Object.defineProperty(exports, "RAYDIUM_CPMM_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.RAYDIUM_CPMM_PROGRAM_ID; } });
141
+ Object.defineProperty(exports, "RAYDIUM_CLMM_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.RAYDIUM_CLMM_PROGRAM_ID; } });
142
+ Object.defineProperty(exports, "RAYDIUM_AMM_V4_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.RAYDIUM_AMM_V4_PROGRAM_ID; } });
143
+ Object.defineProperty(exports, "ORCA_WHIRLPOOL_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.ORCA_WHIRLPOOL_PROGRAM_ID; } });
144
+ Object.defineProperty(exports, "METEORA_POOLS_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.METEORA_POOLS_PROGRAM_ID; } });
145
+ Object.defineProperty(exports, "METEORA_DAMM_V2_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.METEORA_DAMM_V2_PROGRAM_ID; } });
146
+ Object.defineProperty(exports, "METEORA_DLMM_PROGRAM_ID", { enumerable: true, get: function () { return program_ids_js_1.METEORA_DLMM_PROGRAM_ID; } });
147
+ Object.defineProperty(exports, "getProgramIdsForProtocols", { enumerable: true, get: function () { return program_ids_js_1.getProgramIdsForProtocols; } });
148
+ Object.defineProperty(exports, "transactionFilterForProtocols", { enumerable: true, get: function () { return program_ids_js_1.transactionFilterForProtocols; } });
149
+ Object.defineProperty(exports, "accountFilterForProtocols", { enumerable: true, get: function () { return program_ids_js_1.accountFilterForProtocols; } });
150
+ var program_ids_js_2 = require("./grpc/program_ids.js");
151
+ Object.defineProperty(exports, "protocol_program_ids", { enumerable: true, get: function () { return program_ids_js_2.PROTOCOL_PROGRAM_IDS; } });
152
+ Object.defineProperty(exports, "get_program_ids_for_protocols", { enumerable: true, get: function () { return program_ids_js_2.getProgramIdsForProtocols; } });
153
+ Object.defineProperty(exports, "transaction_filter_for_protocols", { enumerable: true, get: function () { return program_ids_js_2.transactionFilterForProtocols; } });
154
+ Object.defineProperty(exports, "account_filter_for_protocols", { enumerable: true, get: function () { return program_ids_js_2.accountFilterForProtocols; } });
155
+ /** Rust `grpc::types` 蛇形命名别名 */
156
+ var types_js_3 = require("./grpc/types.js");
157
+ Object.defineProperty(exports, "default_client_config", { enumerable: true, get: function () { return types_js_3.defaultClientConfig; } });
158
+ Object.defineProperty(exports, "low_latency_client_config", { enumerable: true, get: function () { return types_js_3.lowLatencyClientConfig; } });
159
+ Object.defineProperty(exports, "high_throughput_client_config", { enumerable: true, get: function () { return types_js_3.highThroughputClientConfig; } });
160
+ Object.defineProperty(exports, "new_transaction_filter", { enumerable: true, get: function () { return types_js_3.newTransactionFilter; } });
161
+ Object.defineProperty(exports, "transaction_filter_from_program_ids", { enumerable: true, get: function () { return types_js_3.transactionFilterFromProgramIds; } });
162
+ Object.defineProperty(exports, "new_account_filter", { enumerable: true, get: function () { return types_js_3.newAccountFilter; } });
163
+ Object.defineProperty(exports, "new_slot_filter", { enumerable: true, get: function () { return types_js_3.newSlotFilter; } });
164
+ Object.defineProperty(exports, "slot_filter_min_slot", { enumerable: true, get: function () { return types_js_3.slotFilterMinSlot; } });
165
+ Object.defineProperty(exports, "slot_filter_max_slot", { enumerable: true, get: function () { return types_js_3.slotFilterMaxSlot; } });
166
+ Object.defineProperty(exports, "account_filter_from_program_owners", { enumerable: true, get: function () { return types_js_3.accountFilterFromProgramOwners; } });
167
+ Object.defineProperty(exports, "account_filter_memcmp", { enumerable: true, get: function () { return types_js_3.accountFilterMemcmp; } });
168
+ Object.defineProperty(exports, "event_type_filter_include_only", { enumerable: true, get: function () { return types_js_3.eventTypeFilterIncludeOnly; } });
169
+ Object.defineProperty(exports, "event_type_filter_exclude", { enumerable: true, get: function () { return types_js_3.eventTypeFilterExclude; } });
170
+ Object.defineProperty(exports, "include_only", { enumerable: true, get: function () { return types_js_3.eventTypeFilterIncludeOnly; } });
171
+ Object.defineProperty(exports, "exclude_types", { enumerable: true, get: function () { return types_js_3.eventTypeFilterExclude; } });
172
+ var subscribe_builder_js_1 = require("./grpc/subscribe_builder.js");
173
+ Object.defineProperty(exports, "buildSubscribeRequest", { enumerable: true, get: function () { return subscribe_builder_js_1.buildSubscribeRequest; } });
174
+ Object.defineProperty(exports, "buildSubscribeRequestWithCommitment", { enumerable: true, get: function () { return subscribe_builder_js_1.buildSubscribeRequestWithCommitment; } });
175
+ Object.defineProperty(exports, "buildSubscribeTransactionFiltersNamed", { enumerable: true, get: function () { return subscribe_builder_js_1.buildSubscribeTransactionFiltersNamed; } });
176
+ Object.defineProperty(exports, "CommitmentLevel", { enumerable: true, get: function () { return subscribe_builder_js_1.CommitmentLevel; } });
177
+ /** Rust `grpc::subscribe_builder` 蛇形命名 */
178
+ var subscribe_builder_js_2 = require("./grpc/subscribe_builder.js");
179
+ Object.defineProperty(exports, "build_subscribe_request", { enumerable: true, get: function () { return subscribe_builder_js_2.buildSubscribeRequest; } });
180
+ Object.defineProperty(exports, "build_subscribe_request_with_commitment", { enumerable: true, get: function () { return subscribe_builder_js_2.buildSubscribeRequestWithCommitment; } });
181
+ Object.defineProperty(exports, "build_subscribe_transaction_filters_named", { enumerable: true, get: function () { return subscribe_builder_js_2.buildSubscribeTransactionFiltersNamed; } });
71
182
  var optimized_matcher_js_1 = require("./logs/optimized_matcher.js");
72
183
  Object.defineProperty(exports, "parseLogUnified", { enumerable: true, get: function () { return optimized_matcher_js_1.parseLogUnified; } });
73
184
  Object.defineProperty(exports, "parseLogOptimized", { enumerable: true, get: function () { return optimized_matcher_js_1.parseLogOptimized; } });
185
+ /** Rust `logs` 蛇形命名别名(`parse_meteora_damm_log` 等) */
186
+ var rust_aliases_js_1 = require("./logs/rust_aliases.js");
187
+ Object.defineProperty(exports, "parse_meteora_damm_log", { enumerable: true, get: function () { return rust_aliases_js_1.parse_meteora_damm_log; } });
188
+ Object.defineProperty(exports, "parse_meteora_dlmm_log", { enumerable: true, get: function () { return rust_aliases_js_1.parse_meteora_dlmm_log; } });
189
+ Object.defineProperty(exports, "parse_log_optimized", { enumerable: true, get: function () { return rust_aliases_js_1.parse_log_optimized; } });
190
+ Object.defineProperty(exports, "parse_log_unified", { enumerable: true, get: function () { return rust_aliases_js_1.parse_log_unified; } });
191
+ /** 与 Rust `logs::discriminator_lut` 名称 / 协议查询对齐 */
192
+ var discriminator_lut_js_1 = require("./logs/discriminator_lut.js");
193
+ Object.defineProperty(exports, "discriminatorToName", { enumerable: true, get: function () { return discriminator_lut_js_1.discriminatorToName; } });
194
+ Object.defineProperty(exports, "discriminator_to_name", { enumerable: true, get: function () { return discriminator_lut_js_1.discriminator_to_name; } });
195
+ Object.defineProperty(exports, "discriminatorToProtocol", { enumerable: true, get: function () { return discriminator_lut_js_1.discriminatorToProtocol; } });
196
+ Object.defineProperty(exports, "discriminator_to_protocol", { enumerable: true, get: function () { return discriminator_lut_js_1.discriminator_to_protocol; } });
197
+ Object.defineProperty(exports, "lookupDiscriminator", { enumerable: true, get: function () { return discriminator_lut_js_1.lookupDiscriminator; } });
198
+ Object.defineProperty(exports, "lookup_discriminator", { enumerable: true, get: function () { return discriminator_lut_js_1.lookup_discriminator; } });
74
199
  var meteora_damm_js_1 = require("./logs/meteora_damm.js");
75
200
  Object.defineProperty(exports, "parseMeteoraDammLog", { enumerable: true, get: function () { return meteora_damm_js_1.parseMeteoraDammLog; } });
76
- Object.defineProperty(exports, "parseInitializePoolEvent", { enumerable: true, get: function () { return meteora_damm_js_1.parseInitializePoolEvent; } });
77
201
  var program_log_discriminators_js_1 = require("./logs/program_log_discriminators.js");
78
202
  Object.defineProperty(exports, "PROGRAM_LOG_DISC", { enumerable: true, get: function () { return program_log_discriminators_js_1.PROGRAM_LOG_DISC; } });
79
203
  Object.defineProperty(exports, "PUMPSWAP_DISC", { enumerable: true, get: function () { return program_log_discriminators_js_1.PUMPSWAP_DISC; } });
@@ -89,11 +213,57 @@ Object.defineProperty(exports, "parsePumpswapAccount", { enumerable: true, get:
89
213
  Object.defineProperty(exports, "isGlobalConfigAccount", { enumerable: true, get: function () { return mod_js_1.isGlobalConfigAccount; } });
90
214
  Object.defineProperty(exports, "isPoolAccount", { enumerable: true, get: function () { return mod_js_1.isPoolAccount; } });
91
215
  Object.defineProperty(exports, "hasDiscriminator", { enumerable: true, get: function () { return mod_js_1.hasDiscriminator; } });
216
+ Object.defineProperty(exports, "userWalletPubkeyForOnchainAccount", { enumerable: true, get: function () { return mod_js_1.userWalletPubkeyForOnchainAccount; } });
217
+ Object.defineProperty(exports, "rpcResolveUserWalletPubkey", { enumerable: true, get: function () { return mod_js_1.rpcResolveUserWalletPubkey; } });
218
+ /** Rust `accounts` 蛇形命名别名 */
219
+ var rust_aliases_js_2 = require("./accounts/rust_aliases.js");
220
+ Object.defineProperty(exports, "parse_account_unified", { enumerable: true, get: function () { return rust_aliases_js_2.parse_account_unified; } });
221
+ Object.defineProperty(exports, "parse_nonce_account", { enumerable: true, get: function () { return rust_aliases_js_2.parse_nonce_account; } });
222
+ Object.defineProperty(exports, "parse_token_account", { enumerable: true, get: function () { return rust_aliases_js_2.parse_token_account; } });
223
+ Object.defineProperty(exports, "parse_pumpswap_global_config", { enumerable: true, get: function () { return rust_aliases_js_2.parse_pumpswap_global_config; } });
224
+ Object.defineProperty(exports, "parse_pumpswap_pool", { enumerable: true, get: function () { return rust_aliases_js_2.parse_pumpswap_pool; } });
225
+ Object.defineProperty(exports, "rpc_resolve_user_wallet_pubkey", { enumerable: true, get: function () { return rust_aliases_js_2.rpc_resolve_user_wallet_pubkey; } });
226
+ Object.defineProperty(exports, "user_wallet_pubkey_for_onchain_account", { enumerable: true, get: function () { return rust_aliases_js_2.user_wallet_pubkey_for_onchain_account; } });
92
227
  var mod_js_2 = require("./instr/mod.js");
93
228
  Object.defineProperty(exports, "parseInstructionUnified", { enumerable: true, get: function () { return mod_js_2.parseInstructionUnified; } });
94
229
  Object.defineProperty(exports, "parsePumpfunInstruction", { enumerable: true, get: function () { return mod_js_2.parsePumpfunInstruction; } });
95
230
  Object.defineProperty(exports, "parsePumpswapInstruction", { enumerable: true, get: function () { return mod_js_2.parsePumpswapInstruction; } });
96
231
  Object.defineProperty(exports, "parseMeteoraDammInstruction", { enumerable: true, get: function () { return mod_js_2.parseMeteoraDammInstruction; } });
232
+ /** Rust `instr` 根模块蛇形命名别名 */
233
+ var rust_aliases_js_3 = require("./instr/rust_aliases.js");
234
+ Object.defineProperty(exports, "parse_instruction_unified", { enumerable: true, get: function () { return rust_aliases_js_3.parse_instruction_unified; } });
235
+ Object.defineProperty(exports, "parse_pumpfun_instruction", { enumerable: true, get: function () { return rust_aliases_js_3.parse_pumpfun_instruction; } });
236
+ Object.defineProperty(exports, "parse_pumpswap_instruction", { enumerable: true, get: function () { return rust_aliases_js_3.parse_pumpswap_instruction; } });
237
+ Object.defineProperty(exports, "parse_meteora_damm_instruction", { enumerable: true, get: function () { return rust_aliases_js_3.parse_meteora_damm_instruction; } });
97
238
  exports.programIds = __importStar(require("./instr/program_ids.js"));
98
239
  var client_js_1 = require("./grpc/client.js");
99
240
  Object.defineProperty(exports, "YellowstoneGrpc", { enumerable: true, get: function () { return client_js_1.YellowstoneGrpc; } });
241
+ var geyser_connect_js_1 = require("./grpc/geyser_connect.js");
242
+ Object.defineProperty(exports, "connectYellowstoneGeyser", { enumerable: true, get: function () { return geyser_connect_js_1.connectYellowstoneGeyser; } });
243
+ Object.defineProperty(exports, "defaultGeyserConnectConfig", { enumerable: true, get: function () { return geyser_connect_js_1.defaultGeyserConnectConfig; } });
244
+ Object.defineProperty(exports, "geyserGrpcChannelOptions", { enumerable: true, get: function () { return geyser_connect_js_1.geyserGrpcChannelOptions; } });
245
+ /** 与 Rust `sol_parser_sdk::grpc::event_parser` 模块对应 */
246
+ exports.event_parser = __importStar(require("./grpc/event_parser.js"));
247
+ var geyser_connect_js_2 = require("./grpc/geyser_connect.js");
248
+ Object.defineProperty(exports, "connect_yellowstone_geyser", { enumerable: true, get: function () { return geyser_connect_js_2.connectYellowstoneGeyser; } });
249
+ Object.defineProperty(exports, "default_geyser_connect_config", { enumerable: true, get: function () { return geyser_connect_js_2.defaultGeyserConnectConfig; } });
250
+ Object.defineProperty(exports, "geyser_grpc_channel_options", { enumerable: true, get: function () { return geyser_connect_js_2.geyserGrpcChannelOptions; } });
251
+ var index_js_1 = require("./shredstream/index.js");
252
+ Object.defineProperty(exports, "ShredStreamClient", { enumerable: true, get: function () { return index_js_1.ShredStreamClient; } });
253
+ Object.defineProperty(exports, "ShredEventQueue", { enumerable: true, get: function () { return index_js_1.ShredEventQueue; } });
254
+ Object.defineProperty(exports, "dexEventsFromShredWasmTx", { enumerable: true, get: function () { return index_js_1.dexEventsFromShredWasmTx; } });
255
+ Object.defineProperty(exports, "dexEventsFromShredWasmTxWithFullKeys", { enumerable: true, get: function () { return index_js_1.dexEventsFromShredWasmTxWithFullKeys; } });
256
+ Object.defineProperty(exports, "fullAccountKeyStringsFromShredTx", { enumerable: true, get: function () { return index_js_1.fullAccountKeyStringsFromShredTx; } });
257
+ Object.defineProperty(exports, "loadAddressLookupTableAccounts", { enumerable: true, get: function () { return index_js_1.loadAddressLookupTableAccounts; } });
258
+ Object.defineProperty(exports, "bincodeVecEntryCount", { enumerable: true, get: function () { return index_js_1.bincodeVecEntryCount; } });
259
+ Object.defineProperty(exports, "decodeEntriesBincodeFlat", { enumerable: true, get: function () { return index_js_1.decodeEntriesBincodeFlat; } });
260
+ Object.defineProperty(exports, "decodeEntriesBincodeNested", { enumerable: true, get: function () { return index_js_1.decodeEntriesBincodeNested; } });
261
+ Object.defineProperty(exports, "decodeShredstreamEntriesBincode", { enumerable: true, get: function () { return index_js_1.decodeShredstreamEntriesBincode; } });
262
+ Object.defineProperty(exports, "wireBytesToShredWasmTx", { enumerable: true, get: function () { return index_js_1.wireBytesToShredWasmTx; } });
263
+ Object.defineProperty(exports, "defaultShredStreamConfig", { enumerable: true, get: function () { return index_js_1.defaultShredStreamConfig; } });
264
+ Object.defineProperty(exports, "lowLatencyShredStreamConfig", { enumerable: true, get: function () { return index_js_1.lowLatencyShredStreamConfig; } });
265
+ Object.defineProperty(exports, "highThroughputShredStreamConfig", { enumerable: true, get: function () { return index_js_1.highThroughputShredStreamConfig; } });
266
+ var index_js_2 = require("./shredstream/index.js");
267
+ Object.defineProperty(exports, "default_shred_stream_config", { enumerable: true, get: function () { return index_js_2.defaultShredStreamConfig; } });
268
+ Object.defineProperty(exports, "low_latency_shred_stream_config", { enumerable: true, get: function () { return index_js_2.lowLatencyShredStreamConfig; } });
269
+ Object.defineProperty(exports, "high_throughput_shred_stream_config", { enumerable: true, get: function () { return index_js_2.highThroughputShredStreamConfig; } });
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Bonk Launchpad 指令解析
2
+ * Bonk / Raydium Launchpad 指令解析
3
+ *
4
+ * 1) **Program data 日志形载荷**(与 `logs/raydium_launchpad` 一致):前 8 字节为事件 disc,后跟 pool/user/金额…
5
+ * 2) **Anchor 外层指令**:`global:buy` / `sell` / `create_pool` / `migrate_to_amm` 等(sha256 前 8 字节),参数多为 Borsh u64。
3
6
  */
4
7
  import type { DexEvent } from "../core/dex_event.js";
5
8
  export declare function parseBonkInstruction(instructionData: Uint8Array, accounts: string[], signature: string, slot: number, txIndex: number, blockTimeUs: number | undefined, grpcRecvUs: number): DexEvent | null;
@@ -2,51 +2,130 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseBonkInstruction = parseBonkInstruction;
4
4
  const dex_event_js_1 = require("../core/dex_event.js");
5
+ const raydium_launchpad_js_1 = require("../logs/raydium_launchpad.js");
5
6
  const utils_js_1 = require("./utils.js");
6
7
  const Z = (0, dex_event_js_1.defaultPubkey)();
7
- // Discriminators (little-endian u64)
8
- const DISC = {
9
- TRADE: 397092801079849094n, // disc8(2, 3, 4, 5, 6, 7, 8, 9)
10
- POOL_CREATE: 578530140957057025n, // disc8(1, 2, 3, 4, 5, 6, 7, 8)
8
+ /** Anchor `sha256("global:<name>")[0..8]`,与链上 Launchpad / pAMM 系指令一致 */
9
+ const ANCHOR = {
10
+ BUY: [102, 6, 61, 18, 1, 218, 235, 234],
11
+ SELL: [51, 230, 133, 164, 1, 127, 131, 173],
12
+ BUY_EXACT_IN: [250, 234, 13, 123, 213, 156, 19, 236],
13
+ SELL_EXACT_OUT: [95, 200, 71, 34, 8, 9, 11, 166],
14
+ CREATE_POOL: [233, 146, 209, 142, 207, 104, 64, 188],
15
+ MIGRATE_TO_AMM: [207, 82, 192, 145, 254, 207, 145, 223],
11
16
  };
12
- function discEq(data, disc) {
17
+ function discEqU64(data, disc) {
13
18
  if (data.length < 8)
14
19
  return false;
15
20
  const v = (0, utils_js_1.readU64LE)(data, 0);
16
21
  return v === disc;
17
22
  }
18
- function parseBonkInstruction(instructionData, accounts, signature, slot, txIndex, blockTimeUs, grpcRecvUs) {
19
- if (instructionData.length < 8)
20
- return null;
21
- const meta = (0, utils_js_1.ixMeta)(signature, slot, txIndex, blockTimeUs, grpcRecvUs);
22
- if (discEq(instructionData, DISC.TRADE)) {
23
+ function headEq(data, bytes) {
24
+ if (data.length < 8)
25
+ return false;
26
+ for (let i = 0; i < 8; i++)
27
+ if (data[i] !== bytes[i])
28
+ return false;
29
+ return true;
30
+ }
31
+ /** 与 PumpSwap buy/sell 一致:两 u64(base / quote 侧限额) */
32
+ function tradeFromTwoU64(payload, accounts, meta, mode) {
33
+ const a0 = (0, utils_js_1.readU64LE)(payload, 0) ?? 0n;
34
+ const a1 = (0, utils_js_1.readU64LE)(payload, 8) ?? 0n;
35
+ const pool = (0, utils_js_1.getAccount)(accounts, 1) ?? Z;
36
+ const user = (0, utils_js_1.getAccount)(accounts, 0) ?? Z;
37
+ if (mode === "buy") {
23
38
  return {
24
39
  BonkTrade: {
25
40
  metadata: meta,
26
- pool_state: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
27
- user: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
28
- amount_in: 0n,
29
- amount_out: 0n,
41
+ pool_state: pool,
42
+ user,
43
+ amount_in: a1,
44
+ amount_out: a0,
30
45
  is_buy: true,
31
46
  trade_direction: "Buy",
32
47
  exact_in: true,
33
48
  },
34
49
  };
35
50
  }
36
- if (discEq(instructionData, DISC.POOL_CREATE)) {
37
- return {
38
- BonkPoolCreate: {
39
- metadata: meta,
40
- base_mint_param: {
41
- symbol: "BONK",
42
- name: "Bonk Pool",
43
- uri: "https://bonk.com",
44
- decimals: 5,
51
+ return {
52
+ BonkTrade: {
53
+ metadata: meta,
54
+ pool_state: pool,
55
+ user,
56
+ amount_in: a0,
57
+ amount_out: a1,
58
+ is_buy: false,
59
+ trade_direction: "Sell",
60
+ exact_in: true,
61
+ },
62
+ };
63
+ }
64
+ function parseBonkInstruction(instructionData, accounts, signature, slot, txIndex, blockTimeUs, grpcRecvUs) {
65
+ if (instructionData.length < 8)
66
+ return null;
67
+ const meta = (0, utils_js_1.ixMeta)(signature, slot, txIndex, blockTimeUs, grpcRecvUs);
68
+ // --- Program data 事件形(与链上 emit 载荷一致,偶见于外层) ---
69
+ if (discEqU64(instructionData, raydium_launchpad_js_1.BONK_DISC.TRADE)) {
70
+ return (0, raydium_launchpad_js_1.parseBonkTradeFromData)(instructionData.subarray(8), meta);
71
+ }
72
+ if (discEqU64(instructionData, raydium_launchpad_js_1.BONK_DISC.POOL_CREATE)) {
73
+ return (0, raydium_launchpad_js_1.parseBonkPoolCreateFromData)(instructionData.subarray(8), meta);
74
+ }
75
+ if (discEqU64(instructionData, raydium_launchpad_js_1.BONK_DISC.MIGRATE_AMM)) {
76
+ return (0, raydium_launchpad_js_1.parseBonkMigrateAmmFromData)(instructionData.subarray(8), meta);
77
+ }
78
+ const rest = instructionData.subarray(8);
79
+ // --- Anchor:买卖(两 u64) ---
80
+ if (headEq(instructionData, ANCHOR.BUY) || headEq(instructionData, ANCHOR.BUY_EXACT_IN)) {
81
+ if (rest.length < 16)
82
+ return null;
83
+ return tradeFromTwoU64(rest, accounts, meta, "buy");
84
+ }
85
+ if (headEq(instructionData, ANCHOR.SELL) || headEq(instructionData, ANCHOR.SELL_EXACT_OUT)) {
86
+ if (rest.length < 16)
87
+ return null;
88
+ return tradeFromTwoU64(rest, accounts, meta, "sell");
89
+ }
90
+ // --- create_pool:优先按日志形载荷解析;否则用账户兜底 ---
91
+ if (headEq(instructionData, ANCHOR.CREATE_POOL)) {
92
+ const parsed = (0, raydium_launchpad_js_1.parseBonkPoolCreateFromData)(rest, meta);
93
+ if (parsed)
94
+ return parsed;
95
+ if (accounts.length >= 9) {
96
+ return {
97
+ BonkPoolCreate: {
98
+ metadata: meta,
99
+ base_mint_param: {
100
+ symbol: "BONK",
101
+ name: "Bonk Pool",
102
+ uri: "https://bonk.com",
103
+ decimals: 5,
104
+ },
105
+ pool_state: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
106
+ creator: (0, utils_js_1.getAccount)(accounts, 8) ?? Z,
45
107
  },
46
- pool_state: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
47
- creator: (0, utils_js_1.getAccount)(accounts, 8) ?? Z,
48
- },
49
- };
108
+ };
109
+ }
110
+ return null;
111
+ }
112
+ // --- migrate_to_amm ---
113
+ if (headEq(instructionData, ANCHOR.MIGRATE_TO_AMM)) {
114
+ const parsed = (0, raydium_launchpad_js_1.parseBonkMigrateAmmFromData)(rest, meta);
115
+ if (parsed)
116
+ return parsed;
117
+ if (rest.length >= 8 && accounts.length >= 3) {
118
+ return {
119
+ BonkMigrateAmm: {
120
+ metadata: meta,
121
+ old_pool: (0, utils_js_1.getAccount)(accounts, 0) ?? Z,
122
+ new_pool: (0, utils_js_1.getAccount)(accounts, 1) ?? Z,
123
+ user: (0, utils_js_1.getAccount)(accounts, 2) ?? Z,
124
+ liquidity_amount: (0, utils_js_1.readU64LE)(rest, 0) ?? 0n,
125
+ },
126
+ };
127
+ }
128
+ return null;
50
129
  }
51
130
  return null;
52
131
  }
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Meteora DAMM V2 指令解析
3
- * CPI 布局:前 8 字节为外层 Anchor discriminator,8..16 为事件 log discriminator,16.. 为载荷。
3
+ *
4
+ * 1) **外层用户指令**(`@meteora-ag/cp-amm-sdk` / `cp_amm.json`):`swap` / `initialize_pool` / `add_liquidity` / `remove_liquidity` / `remove_all_liquidity` / `create_position` / `close_position` 等
5
+ * 2) **CPI 事件形**:前 8 字节为外层 Anchor discriminator,8..16 为 `emit!` 事件 disc,16.. 为载荷。
4
6
  */
5
7
  import type { DexEvent } from "../core/dex_event.js";
6
- export declare function parseMeteoraDammInstruction(instructionData: Uint8Array, _accounts: string[], signature: string, slot: number, txIndex: number, blockTimeUs: number | undefined, grpcRecvUs: number): DexEvent | null;
8
+ export declare function parseMeteoraDammInstruction(instructionData: Uint8Array, accounts: string[], signature: string, slot: number, txIndex: number, blockTimeUs: number | undefined, grpcRecvUs: number): DexEvent | null;