@cyberdrk/onchain 0.1.0 → 0.1.8

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 (50) hide show
  1. package/SKILL.md +160 -0
  2. package/dist/cli/program.d.ts.map +1 -1
  3. package/dist/cli/program.js +2 -0
  4. package/dist/cli/program.js.map +1 -1
  5. package/dist/cli/setup-wizard.d.ts.map +1 -1
  6. package/dist/cli/setup-wizard.js +15 -0
  7. package/dist/cli/setup-wizard.js.map +1 -1
  8. package/dist/cli/shared.d.ts.map +1 -1
  9. package/dist/cli/shared.js +2 -0
  10. package/dist/cli/shared.js.map +1 -1
  11. package/dist/commands/setup.d.ts.map +1 -1
  12. package/dist/commands/setup.js +2 -0
  13. package/dist/commands/setup.js.map +1 -1
  14. package/dist/commands/tx.d.ts +4 -0
  15. package/dist/commands/tx.d.ts.map +1 -0
  16. package/dist/commands/tx.js +208 -0
  17. package/dist/commands/tx.js.map +1 -0
  18. package/dist/lib/config.d.ts +2 -0
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js.map +1 -1
  21. package/dist/lib/credentials.d.ts +4 -0
  22. package/dist/lib/credentials.d.ts.map +1 -1
  23. package/dist/lib/credentials.js +8 -0
  24. package/dist/lib/credentials.js.map +1 -1
  25. package/dist/lib/mixins/etherscan.d.ts +10 -0
  26. package/dist/lib/mixins/etherscan.d.ts.map +1 -0
  27. package/dist/lib/mixins/etherscan.js +275 -0
  28. package/dist/lib/mixins/etherscan.js.map +1 -0
  29. package/dist/lib/mixins/solscan.d.ts +7 -0
  30. package/dist/lib/mixins/solscan.d.ts.map +1 -0
  31. package/dist/lib/mixins/solscan.js +99 -0
  32. package/dist/lib/mixins/solscan.js.map +1 -0
  33. package/dist/lib/onchain-client-base.d.ts +2 -0
  34. package/dist/lib/onchain-client-base.d.ts.map +1 -1
  35. package/dist/lib/onchain-client-base.js +4 -0
  36. package/dist/lib/onchain-client-base.js.map +1 -1
  37. package/dist/lib/onchain-client-types.d.ts +63 -0
  38. package/dist/lib/onchain-client-types.d.ts.map +1 -1
  39. package/dist/lib/onchain-client.d.ts +4 -2
  40. package/dist/lib/onchain-client.d.ts.map +1 -1
  41. package/dist/lib/onchain-client.js +3 -1
  42. package/dist/lib/onchain-client.js.map +1 -1
  43. package/dist/lib/utils/formatters.d.ts.map +1 -1
  44. package/dist/lib/utils/formatters.js +6 -0
  45. package/dist/lib/utils/formatters.js.map +1 -1
  46. package/dist/lib/utils/tx-hash.d.ts +36 -0
  47. package/dist/lib/utils/tx-hash.d.ts.map +1 -0
  48. package/dist/lib/utils/tx-hash.js +93 -0
  49. package/dist/lib/utils/tx-hash.js.map +1 -0
  50. package/package.json +5 -3
@@ -3,13 +3,15 @@ import { type CoinbaseMethods } from './mixins/coinbase.js';
3
3
  import { type CoinGeckoMethods } from './mixins/coingecko.js';
4
4
  import { type CoinMarketCapMethods } from './mixins/coinmarketcap.js';
5
5
  import { type DeBankMethods } from './mixins/debank.js';
6
+ import { type EtherscanMethods } from './mixins/etherscan.js';
6
7
  import { type HeliusMethods } from './mixins/helius.js';
7
8
  import { type PolymarketMethods } from './mixins/polymarket.js';
9
+ import { type SolscanMethods } from './mixins/solscan.js';
8
10
  import type { AbstractConstructor } from './onchain-client-base.js';
9
11
  import { OnchainClientBase } from './onchain-client-base.js';
10
- type OnchainClientInstance = OnchainClientBase & CoinGeckoMethods & CoinMarketCapMethods & DeBankMethods & HeliusMethods & CoinbaseMethods & BinanceMethods & PolymarketMethods;
12
+ type OnchainClientInstance = OnchainClientBase & CoinGeckoMethods & CoinMarketCapMethods & DeBankMethods & HeliusMethods & CoinbaseMethods & BinanceMethods & PolymarketMethods & EtherscanMethods & SolscanMethods;
11
13
  declare const MixedOnchainClient: AbstractConstructor<OnchainClientInstance>;
12
14
  export declare class OnchainClient extends MixedOnchainClient {
13
15
  }
14
- export type { BalanceResult, CexBalance, CexBalanceResult, CexHistoryResult, CexTrade, ChainType, DefiPosition, DefiResult, EvmChain, HistoryResult, MarketOverview, MarketResult, NftAsset, NftResult, OnchainClientOptions, PolymarketDetailResult, PolymarketMarket, PolymarketResult, PriceResult, PricesResult, SupportedChain, TokenBalance, TokenPrice, Transaction, } from './onchain-client-types.js';
16
+ export type { BalanceResult, CexBalance, CexBalanceResult, CexHistoryResult, CexTrade, ChainType, DefiPosition, DefiResult, EtherscanChain, EvmChain, HistoryResult, InternalTransaction, MarketOverview, MarketResult, MultiChainTxSearchResult, NftAsset, NftResult, OnchainClientOptions, PolymarketDetailResult, PolymarketMarket, PolymarketResult, PriceResult, PricesResult, SupportedChain, TokenBalance, TokenPrice, TokenTransfer, Transaction, TransactionDetail, TransactionDetailResult, } from './onchain-client-types.js';
15
17
  //# sourceMappingURL=onchain-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onchain-client.d.ts","sourceRoot":"","sources":["../../src/lib/onchain-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,KAAK,oBAAoB,EAAqB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,KAAK,qBAAqB,GAAG,iBAAiB,GAC5C,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,eAAe,GACf,cAAc,GACd,iBAAiB,CAAC;AAGpB,QAAA,MAAM,kBAAkB,EAEnB,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AAEhD,qBAAa,aAAc,SAAQ,kBAAkB;CAAG;AAGxD,YAAY,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"onchain-client.d.ts","sourceRoot":"","sources":["../../src/lib/onchain-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,KAAK,oBAAoB,EAAqB,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,KAAK,qBAAqB,GAAG,iBAAiB,GAC5C,gBAAgB,GAChB,oBAAoB,GACpB,aAAa,GACb,aAAa,GACb,eAAe,GACf,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC;AAGjB,QAAA,MAAM,kBAAkB,EAMnB,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;AAEhD,qBAAa,aAAc,SAAQ,kBAAkB;CAAG;AAGxD,YAAY,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,wBAAwB,EACxB,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC"}
@@ -3,11 +3,13 @@ import { withCoinbase } from './mixins/coinbase.js';
3
3
  import { withCoinGecko } from './mixins/coingecko.js';
4
4
  import { withCoinMarketCap } from './mixins/coinmarketcap.js';
5
5
  import { withDeBank } from './mixins/debank.js';
6
+ import { withEtherscan } from './mixins/etherscan.js';
6
7
  import { withHelius } from './mixins/helius.js';
7
8
  import { withPolymarket } from './mixins/polymarket.js';
9
+ import { withSolscan } from './mixins/solscan.js';
8
10
  import { OnchainClientBase } from './onchain-client-base.js';
9
11
  // Compose all mixins
10
- const MixedOnchainClient = withPolymarket(withBinance(withCoinbase(withHelius(withDeBank(withCoinMarketCap(withCoinGecko(OnchainClientBase)))))));
12
+ const MixedOnchainClient = withSolscan(withEtherscan(withPolymarket(withBinance(withCoinbase(withHelius(withDeBank(withCoinMarketCap(withCoinGecko(OnchainClientBase)))))))));
11
13
  export class OnchainClient extends MixedOnchainClient {
12
14
  }
13
15
  //# sourceMappingURL=onchain-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"onchain-client.js","sourceRoot":"","sources":["../../src/lib/onchain-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAwB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAA6B,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAA0B,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAW7D,qBAAqB;AACrB,MAAM,kBAAkB,GAAG,cAAc,CACvC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;AAEhD,MAAM,OAAO,aAAc,SAAQ,kBAAkB;CAAG"}
1
+ {"version":3,"file":"onchain-client.js","sourceRoot":"","sources":["../../src/lib/onchain-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAwB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAA6B,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAyB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAsB,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAA0B,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAuB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa7D,qBAAqB;AACrB,MAAM,kBAAkB,GAAG,WAAW,CACpC,aAAa,CACX,cAAc,CACZ,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvG,CACF,CAC4C,CAAC;AAEhD,MAAM,OAAO,aAAc,SAAQ,kBAAkB;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAmBnG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAOxG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAuB5G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAkB9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiCrD"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAmBnG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAOxG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAuB5G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAkB9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAuCrD"}
@@ -139,6 +139,7 @@ export function formatRelativeTime(timestamp) {
139
139
  */
140
140
  export function formatChainName(chain) {
141
141
  const chainNames = {
142
+ // DeBank chain identifiers
142
143
  eth: 'Ethereum',
143
144
  bsc: 'BNB Chain',
144
145
  polygon: 'Polygon',
@@ -167,6 +168,11 @@ export function formatChainName(chain) {
167
168
  okc: 'OKC',
168
169
  heco: 'HECO',
169
170
  solana: 'Solana',
171
+ // Etherscan chain identifiers
172
+ ethereum: 'Ethereum',
173
+ arbitrum: 'Arbitrum',
174
+ optimism: 'Optimism',
175
+ avalanche: 'Avalanche',
170
176
  };
171
177
  return chainNames[chain] ?? chain.toUpperCase();
172
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Transaction hash detection and validation utilities
3
+ */
4
+ import type { EtherscanChain } from '../onchain-client-types.js';
5
+ export type TxHashType = 'evm' | 'solana' | 'unknown';
6
+ export interface ParsedTxInput {
7
+ hash: string;
8
+ chain?: EtherscanChain | 'solana';
9
+ type: TxHashType;
10
+ }
11
+ /**
12
+ * Check if a string is a valid EVM transaction hash
13
+ */
14
+ export declare function isEvmTxHash(hash: string): boolean;
15
+ /**
16
+ * Check if a string is a valid Solana signature
17
+ */
18
+ export declare function isSolanaSignature(signature: string): boolean;
19
+ /**
20
+ * Detect the type of transaction hash/signature
21
+ */
22
+ export declare function detectTxHashType(hash: string): TxHashType;
23
+ /**
24
+ * Truncate a hash for display (e.g., 0x1234...abcd or 5VERv8...xyz123)
25
+ * Handles both EVM hashes (0x prefix) and Solana signatures (no prefix)
26
+ */
27
+ export declare function truncateHash(hash: string, chars?: number): string;
28
+ /**
29
+ * Parse a transaction input which can be either:
30
+ * - A raw transaction hash (EVM or Solana)
31
+ * - A block explorer URL (etherscan, basescan, solscan, etc.)
32
+ *
33
+ * Returns the extracted hash and detected chain (if from URL)
34
+ */
35
+ export declare function parseTxInput(input: string): ParsedTxInput;
36
+ //# sourceMappingURL=tx-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-hash.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/tx-hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC;CAClB;AAiCD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAQzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAoBzD"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Transaction hash detection and validation utilities
3
+ */
4
+ // Explorer URL patterns mapped to chains
5
+ const EXPLORER_PATTERNS = [
6
+ // Ethereum
7
+ { pattern: /^https?:\/\/(?:www\.)?etherscan\.io\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'ethereum' },
8
+ // Polygon
9
+ { pattern: /^https?:\/\/(?:www\.)?polygonscan\.com\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'polygon' },
10
+ // BSC
11
+ { pattern: /^https?:\/\/(?:www\.)?bscscan\.com\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'bsc' },
12
+ // Arbitrum
13
+ { pattern: /^https?:\/\/(?:www\.)?arbiscan\.io\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'arbitrum' },
14
+ // Base
15
+ { pattern: /^https?:\/\/(?:www\.)?basescan\.org\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'base' },
16
+ // Optimism
17
+ { pattern: /^https?:\/\/(?:www\.)?optimistic\.etherscan\.io\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'optimism' },
18
+ // Avalanche
19
+ { pattern: /^https?:\/\/(?:www\.)?snowtrace\.io\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'avalanche' },
20
+ // Fantom
21
+ { pattern: /^https?:\/\/(?:www\.)?ftmscan\.com\/tx\/(0x[a-fA-F0-9]{64})/, chain: 'fantom' },
22
+ // Solana (Solscan)
23
+ { pattern: /^https?:\/\/(?:www\.)?solscan\.io\/tx\/([1-9A-HJ-NP-Za-km-z]{43,88})/, chain: 'solana' },
24
+ // Solana (Explorer)
25
+ { pattern: /^https?:\/\/(?:www\.)?explorer\.solana\.com\/tx\/([1-9A-HJ-NP-Za-km-z]{43,88})/, chain: 'solana' },
26
+ ];
27
+ // EVM transaction hashes: 0x prefix + 64 hex characters
28
+ const EVM_TX_HASH_REGEX = /^0x[a-fA-F0-9]{64}$/;
29
+ // Solana signatures: Base58 encoded, 43-88 characters (length varies based on leading zeros)
30
+ // Base58 alphabet: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
31
+ const SOLANA_BASE58_REGEX = /^[1-9A-HJ-NP-Za-km-z]{43,88}$/;
32
+ /**
33
+ * Check if a string is a valid EVM transaction hash
34
+ */
35
+ export function isEvmTxHash(hash) {
36
+ return EVM_TX_HASH_REGEX.test(hash);
37
+ }
38
+ /**
39
+ * Check if a string is a valid Solana signature
40
+ */
41
+ export function isSolanaSignature(signature) {
42
+ return SOLANA_BASE58_REGEX.test(signature);
43
+ }
44
+ /**
45
+ * Detect the type of transaction hash/signature
46
+ */
47
+ export function detectTxHashType(hash) {
48
+ if (isEvmTxHash(hash)) {
49
+ return 'evm';
50
+ }
51
+ if (isSolanaSignature(hash)) {
52
+ return 'solana';
53
+ }
54
+ return 'unknown';
55
+ }
56
+ /**
57
+ * Truncate a hash for display (e.g., 0x1234...abcd or 5VERv8...xyz123)
58
+ * Handles both EVM hashes (0x prefix) and Solana signatures (no prefix)
59
+ */
60
+ export function truncateHash(hash, chars = 6) {
61
+ if (hash.length <= chars * 2 + 3) {
62
+ return hash;
63
+ }
64
+ const prefixLen = hash.startsWith('0x') ? 2 : 0;
65
+ return `${hash.slice(0, chars + prefixLen)}...${hash.slice(-chars)}`;
66
+ }
67
+ /**
68
+ * Parse a transaction input which can be either:
69
+ * - A raw transaction hash (EVM or Solana)
70
+ * - A block explorer URL (etherscan, basescan, solscan, etc.)
71
+ *
72
+ * Returns the extracted hash and detected chain (if from URL)
73
+ */
74
+ export function parseTxInput(input) {
75
+ const trimmed = input.trim();
76
+ // Check if it's a URL
77
+ if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
78
+ for (const { pattern, chain } of EXPLORER_PATTERNS) {
79
+ const match = trimmed.match(pattern);
80
+ if (match?.[1]) {
81
+ const hash = match[1];
82
+ const type = chain === 'solana' ? 'solana' : 'evm';
83
+ return { hash, chain, type };
84
+ }
85
+ }
86
+ // URL didn't match any known pattern
87
+ return { hash: trimmed, type: 'unknown' };
88
+ }
89
+ // It's a raw hash
90
+ const type = detectTxHashType(trimmed);
91
+ return { hash: trimmed, type };
92
+ }
93
+ //# sourceMappingURL=tx-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-hash.js","sourceRoot":"","sources":["../../../src/lib/utils/tx-hash.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyberdrk/onchain",
3
- "version": "0.1.0",
3
+ "version": "0.1.8",
4
4
  "description": "CLI tool for crypto portfolio tracking, market data, and CEX history",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,7 +12,8 @@
12
12
  "dist",
13
13
  "README.md",
14
14
  "CHANGELOG.md",
15
- "LICENSE"
15
+ "LICENSE",
16
+ "SKILL.md"
16
17
  ],
17
18
  "repository": {
18
19
  "type": "git",
@@ -73,5 +74,6 @@
73
74
  },
74
75
  "engines": {
75
76
  "node": ">=22"
76
- }
77
+ },
78
+ "packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501"
77
79
  }