tx-indexer 0.4.1 → 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/README.md +1 -1
- package/dist/client.js +11 -9
- package/dist/client.js.map +1 -1
- package/dist/index.js +11 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ console.log(tx.classification.receiver); // receiver address
|
|
|
40
40
|
## Transaction Types
|
|
41
41
|
|
|
42
42
|
- `transfer` - Wallet-to-wallet transfers
|
|
43
|
-
- `swap` - Token exchanges (Jupiter, Raydium, Orca)
|
|
43
|
+
- `swap` - Token exchanges (pattern-based detection works with any DEX, higher confidence for known protocols like Jupiter, Raydium, Orca)
|
|
44
44
|
- `nft_mint` - NFT minting (Metaplex, Candy Machine, Bubblegum)
|
|
45
45
|
- `stake_deposit` - SOL staking deposits
|
|
46
46
|
- `stake_withdraw` - SOL staking withdrawals
|
package/dist/client.js
CHANGED
|
@@ -706,7 +706,7 @@ var TransferClassifier = class {
|
|
|
706
706
|
sender,
|
|
707
707
|
receiver,
|
|
708
708
|
counterparty: {
|
|
709
|
-
type: "
|
|
709
|
+
type: "unknown",
|
|
710
710
|
address: receiver,
|
|
711
711
|
name: `${receiver.slice(0, 8)}...`
|
|
712
712
|
},
|
|
@@ -877,19 +877,19 @@ var SwapClassifier = class {
|
|
|
877
877
|
priority = 80;
|
|
878
878
|
classify(context) {
|
|
879
879
|
const { legs, tx } = context;
|
|
880
|
-
const hasDexProtocol = isDexProtocolById(tx.protocol?.id);
|
|
881
|
-
if (!hasDexProtocol) {
|
|
882
|
-
return null;
|
|
883
|
-
}
|
|
884
880
|
const feeLeg = legs.find(
|
|
885
881
|
(leg) => leg.role === "fee" && leg.side === "debit"
|
|
886
882
|
);
|
|
887
883
|
const initiator = feeLeg?.accountId.replace("external:", "") ?? null;
|
|
884
|
+
if (!initiator) {
|
|
885
|
+
return null;
|
|
886
|
+
}
|
|
887
|
+
const initiatorAccountId = `external:${initiator}`;
|
|
888
888
|
const tokensOut = legs.filter(
|
|
889
|
-
(leg) => leg.accountId
|
|
889
|
+
(leg) => leg.accountId === initiatorAccountId && leg.side === "debit" && (leg.role === "sent" || leg.role === "protocol_deposit")
|
|
890
890
|
);
|
|
891
891
|
const tokensIn = legs.filter(
|
|
892
|
-
(leg) => leg.accountId
|
|
892
|
+
(leg) => leg.accountId === initiatorAccountId && leg.side === "credit" && (leg.role === "received" || leg.role === "protocol_withdraw")
|
|
893
893
|
);
|
|
894
894
|
if (tokensOut.length === 0 || tokensIn.length === 0) {
|
|
895
895
|
return null;
|
|
@@ -899,6 +899,8 @@ var SwapClassifier = class {
|
|
|
899
899
|
if (tokenOut.amount.token.symbol === tokenIn.amount.token.symbol) {
|
|
900
900
|
return null;
|
|
901
901
|
}
|
|
902
|
+
const hasDexProtocol = isDexProtocolById(tx.protocol?.id);
|
|
903
|
+
const confidence = hasDexProtocol ? 0.95 : 0.75;
|
|
902
904
|
return {
|
|
903
905
|
primaryType: "swap",
|
|
904
906
|
primaryAmount: tokenOut.amount,
|
|
@@ -906,7 +908,7 @@ var SwapClassifier = class {
|
|
|
906
908
|
sender: initiator,
|
|
907
909
|
receiver: initiator,
|
|
908
910
|
counterparty: null,
|
|
909
|
-
confidence
|
|
911
|
+
confidence,
|
|
910
912
|
isRelevant: true,
|
|
911
913
|
metadata: {
|
|
912
914
|
swap_type: "token_to_token",
|
|
@@ -1038,7 +1040,7 @@ var SolanaPayClassifier = class {
|
|
|
1038
1040
|
counterparty: receiver ? {
|
|
1039
1041
|
address: receiver,
|
|
1040
1042
|
name: memo.merchant ?? void 0,
|
|
1041
|
-
type: memo.merchant ? "merchant" : "
|
|
1043
|
+
type: memo.merchant ? "merchant" : "unknown"
|
|
1042
1044
|
} : null,
|
|
1043
1045
|
confidence: 0.98,
|
|
1044
1046
|
isRelevant: true,
|