@webacy-xyz/sdk-threat 1.0.1

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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +288 -0
  3. package/dist/cjs/client.js +165 -0
  4. package/dist/cjs/client.js.map +1 -0
  5. package/dist/cjs/index.js +33 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/package.json +1 -0
  8. package/dist/cjs/resources/account-trace.js +75 -0
  9. package/dist/cjs/resources/account-trace.js.map +1 -0
  10. package/dist/cjs/resources/addresses.js +162 -0
  11. package/dist/cjs/resources/addresses.js.map +1 -0
  12. package/dist/cjs/resources/contracts.js +187 -0
  13. package/dist/cjs/resources/contracts.js.map +1 -0
  14. package/dist/cjs/resources/index.js +18 -0
  15. package/dist/cjs/resources/index.js.map +1 -0
  16. package/dist/cjs/resources/ledger.js +123 -0
  17. package/dist/cjs/resources/ledger.js.map +1 -0
  18. package/dist/cjs/resources/url.js +92 -0
  19. package/dist/cjs/resources/url.js.map +1 -0
  20. package/dist/cjs/resources/usage.js +124 -0
  21. package/dist/cjs/resources/usage.js.map +1 -0
  22. package/dist/cjs/resources/wallets.js +122 -0
  23. package/dist/cjs/resources/wallets.js.map +1 -0
  24. package/dist/cjs/types/account-trace.js +3 -0
  25. package/dist/cjs/types/account-trace.js.map +1 -0
  26. package/dist/cjs/types/address.js +3 -0
  27. package/dist/cjs/types/address.js.map +1 -0
  28. package/dist/cjs/types/contract.js +3 -0
  29. package/dist/cjs/types/contract.js.map +1 -0
  30. package/dist/cjs/types/index.js +3 -0
  31. package/dist/cjs/types/index.js.map +1 -0
  32. package/dist/cjs/types/ledger.js +3 -0
  33. package/dist/cjs/types/ledger.js.map +1 -0
  34. package/dist/cjs/types/url.js +3 -0
  35. package/dist/cjs/types/url.js.map +1 -0
  36. package/dist/cjs/types/usage.js +3 -0
  37. package/dist/cjs/types/usage.js.map +1 -0
  38. package/dist/cjs/types/wallet.js +3 -0
  39. package/dist/cjs/types/wallet.js.map +1 -0
  40. package/dist/esm/client.js +161 -0
  41. package/dist/esm/client.js.map +1 -0
  42. package/dist/esm/index.js +7 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/package.json +1 -0
  45. package/dist/esm/resources/account-trace.js +71 -0
  46. package/dist/esm/resources/account-trace.js.map +1 -0
  47. package/dist/esm/resources/addresses.js +158 -0
  48. package/dist/esm/resources/addresses.js.map +1 -0
  49. package/dist/esm/resources/contracts.js +183 -0
  50. package/dist/esm/resources/contracts.js.map +1 -0
  51. package/dist/esm/resources/index.js +8 -0
  52. package/dist/esm/resources/index.js.map +1 -0
  53. package/dist/esm/resources/ledger.js +119 -0
  54. package/dist/esm/resources/ledger.js.map +1 -0
  55. package/dist/esm/resources/url.js +88 -0
  56. package/dist/esm/resources/url.js.map +1 -0
  57. package/dist/esm/resources/usage.js +120 -0
  58. package/dist/esm/resources/usage.js.map +1 -0
  59. package/dist/esm/resources/wallets.js +118 -0
  60. package/dist/esm/resources/wallets.js.map +1 -0
  61. package/dist/esm/types/account-trace.js +2 -0
  62. package/dist/esm/types/account-trace.js.map +1 -0
  63. package/dist/esm/types/address.js +2 -0
  64. package/dist/esm/types/address.js.map +1 -0
  65. package/dist/esm/types/contract.js +2 -0
  66. package/dist/esm/types/contract.js.map +1 -0
  67. package/dist/esm/types/index.js +2 -0
  68. package/dist/esm/types/index.js.map +1 -0
  69. package/dist/esm/types/ledger.js +2 -0
  70. package/dist/esm/types/ledger.js.map +1 -0
  71. package/dist/esm/types/url.js +2 -0
  72. package/dist/esm/types/url.js.map +1 -0
  73. package/dist/esm/types/usage.js +2 -0
  74. package/dist/esm/types/usage.js.map +1 -0
  75. package/dist/esm/types/wallet.js +2 -0
  76. package/dist/esm/types/wallet.js.map +1 -0
  77. package/dist/types/client.d.ts +145 -0
  78. package/dist/types/client.d.ts.map +1 -0
  79. package/dist/types/index.d.ts +5 -0
  80. package/dist/types/index.d.ts.map +1 -0
  81. package/dist/types/resources/account-trace.d.ts +59 -0
  82. package/dist/types/resources/account-trace.d.ts.map +1 -0
  83. package/dist/types/resources/addresses.d.ts +118 -0
  84. package/dist/types/resources/addresses.d.ts.map +1 -0
  85. package/dist/types/resources/contracts.d.ts +148 -0
  86. package/dist/types/resources/contracts.d.ts.map +1 -0
  87. package/dist/types/resources/index.d.ts +8 -0
  88. package/dist/types/resources/index.d.ts.map +1 -0
  89. package/dist/types/resources/ledger.d.ts +107 -0
  90. package/dist/types/resources/ledger.d.ts.map +1 -0
  91. package/dist/types/resources/url.d.ts +69 -0
  92. package/dist/types/resources/url.d.ts.map +1 -0
  93. package/dist/types/resources/usage.d.ts +99 -0
  94. package/dist/types/resources/usage.d.ts.map +1 -0
  95. package/dist/types/resources/wallets.d.ts +93 -0
  96. package/dist/types/resources/wallets.d.ts.map +1 -0
  97. package/dist/types/types/account-trace.d.ts +68 -0
  98. package/dist/types/types/account-trace.d.ts.map +1 -0
  99. package/dist/types/types/address.d.ts +266 -0
  100. package/dist/types/types/address.d.ts.map +1 -0
  101. package/dist/types/types/contract.d.ts +169 -0
  102. package/dist/types/types/contract.d.ts.map +1 -0
  103. package/dist/types/types/index.d.ts +8 -0
  104. package/dist/types/types/index.d.ts.map +1 -0
  105. package/dist/types/types/ledger.d.ts +106 -0
  106. package/dist/types/types/ledger.d.ts.map +1 -0
  107. package/dist/types/types/url.d.ts +39 -0
  108. package/dist/types/types/url.d.ts.map +1 -0
  109. package/dist/types/types/usage.d.ts +74 -0
  110. package/dist/types/types/usage.d.ts.map +1 -0
  111. package/dist/types/types/wallet.d.ts +129 -0
  112. package/dist/types/types/wallet.d.ts.map +1 -0
  113. package/package.json +74 -0
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddressesResource = void 0;
4
+ const sdk_core_1 = require("@webacy-xyz/sdk-core");
5
+ /**
6
+ * Resource for address risk analysis
7
+ *
8
+ * Provides comprehensive security analysis for blockchain addresses including:
9
+ * - Overall risk scoring
10
+ * - Risk categorization and tagging
11
+ * - Sanctions screening
12
+ * - Address poisoning detection
13
+ * - Fund flow analysis
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // Analyze an address
18
+ * const risk = await client.addresses.analyze('0x...', { chain: Chain.ETH });
19
+ *
20
+ * // Check sanctions
21
+ * const sanctioned = await client.addresses.checkSanctioned('0x...', { chain: Chain.ETH });
22
+ *
23
+ * // With default chain configured, chain can be omitted
24
+ * const client = new ThreatClient({ apiKey: '...', defaultChain: Chain.ETH });
25
+ * const risk = await client.addresses.analyze('0x...'); // Uses ETH
26
+ * ```
27
+ */
28
+ class AddressesResource extends sdk_core_1.BaseResource {
29
+ /**
30
+ * Analyze an address for security risks
31
+ *
32
+ * Returns comprehensive risk analysis including:
33
+ * - Overall risk score (0-100)
34
+ * - Risk tags and categories
35
+ * - Detailed analysis data (optional)
36
+ * - Deployer risk for contracts (optional)
37
+ *
38
+ * @param address - Address to analyze
39
+ * @param options - Analysis options (chain is optional if defaultChain is set)
40
+ * @returns Address risk analysis result
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Basic analysis
45
+ * const risk = await client.addresses.analyze('0x742d35Cc...', {
46
+ * chain: Chain.ETH,
47
+ * });
48
+ * console.log(`Risk score: ${risk.overallRisk}`);
49
+ *
50
+ * // With default chain, options can be omitted
51
+ * const risk = await client.addresses.analyze('0x742d35Cc...');
52
+ *
53
+ * // With specific modules
54
+ * const risk = await client.addresses.analyze('0x...', {
55
+ * chain: Chain.ETH,
56
+ * modules: [RiskModule.SANCTIONS_COMPLIANCE, RiskModule.FUND_FLOW_SCREENING],
57
+ * });
58
+ *
59
+ * // With detailed response and deployer risk
60
+ * const risk = await client.addresses.analyze('0x...', {
61
+ * chain: Chain.ETH,
62
+ * detailed: true,
63
+ * deployerRisk: true,
64
+ * });
65
+ * ```
66
+ */
67
+ async analyze(address, options = {}) {
68
+ const chain = this.resolveChain(options);
69
+ this.validateAddress(address, chain);
70
+ const queryParams = new URLSearchParams();
71
+ queryParams.append('chain', chain);
72
+ if (options.modules && options.modules.length > 0) {
73
+ for (const module of options.modules) {
74
+ queryParams.append('modules', module);
75
+ }
76
+ }
77
+ if (options.detailed !== undefined) {
78
+ queryParams.append('detailed', String(options.detailed));
79
+ }
80
+ if (options.deployerRisk !== undefined) {
81
+ queryParams.append('deployer_risk', String(options.deployerRisk));
82
+ }
83
+ const response = await this.httpClient.get(`/addresses/${encodeURIComponent(address)}?${queryParams.toString()}`, {
84
+ timeout: options.timeout,
85
+ signal: options.signal,
86
+ });
87
+ return response.data;
88
+ }
89
+ /**
90
+ * Check if an address is sanctioned
91
+ *
92
+ * Screens the address against known sanctions lists including OFAC.
93
+ *
94
+ * @param address - Address to check
95
+ * @param options - Request options (chain is optional if defaultChain is set)
96
+ * @returns Sanctions check result
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const result = await client.addresses.checkSanctioned('0x...', {
101
+ * chain: Chain.ETH,
102
+ * });
103
+ *
104
+ * // With default chain configured
105
+ * const result = await client.addresses.checkSanctioned('0x...');
106
+ *
107
+ * if (result.is_sanctioned) {
108
+ * console.error('Address is sanctioned!');
109
+ * console.log('Details:', result.sanction_details);
110
+ * }
111
+ * ```
112
+ */
113
+ async checkSanctioned(address, options = {}) {
114
+ const chain = this.resolveChain(options);
115
+ this.validateAddress(address, chain);
116
+ const queryParams = new URLSearchParams();
117
+ queryParams.append('chain', chain);
118
+ const response = await this.httpClient.get(`/addresses/sanctioned/${encodeURIComponent(address)}?${queryParams.toString()}`, {
119
+ timeout: options.timeout,
120
+ signal: options.signal,
121
+ });
122
+ return response.data;
123
+ }
124
+ /**
125
+ * Check for address poisoning attacks
126
+ *
127
+ * Detects if an address has been targeted by address poisoning
128
+ * (dust attack) attempts.
129
+ *
130
+ * @param address - Address to check
131
+ * @param options - Request options (chain is optional if defaultChain is set)
132
+ * @returns Poisoning detection result
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const result = await client.addresses.checkPoisoning('0x...', {
137
+ * chain: Chain.ETH,
138
+ * });
139
+ *
140
+ * // With default chain configured
141
+ * const result = await client.addresses.checkPoisoning('0x...');
142
+ *
143
+ * if (result.is_poisoned) {
144
+ * console.warn('Address poisoning detected!');
145
+ * console.log('Similar addresses:', result.poisoning_details?.similar_addresses);
146
+ * }
147
+ * ```
148
+ */
149
+ async checkPoisoning(address, options = {}) {
150
+ const chain = this.resolveChain(options);
151
+ this.validateAddress(address, chain);
152
+ const queryParams = new URLSearchParams();
153
+ queryParams.append('chain', chain);
154
+ const response = await this.httpClient.get(`/addresses/${encodeURIComponent(address)}/poisoning?${queryParams.toString()}`, {
155
+ timeout: options.timeout,
156
+ signal: options.signal,
157
+ });
158
+ return response.data;
159
+ }
160
+ }
161
+ exports.AddressesResource = AddressesResource;
162
+ //# sourceMappingURL=addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/resources/addresses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractsResource = void 0;
4
+ const sdk_core_1 = require("@webacy-xyz/sdk-core");
5
+ /**
6
+ * Resource for smart contract security analysis
7
+ *
8
+ * Provides comprehensive contract analysis including:
9
+ * - Static and dynamic code analysis
10
+ * - Vulnerability detection
11
+ * - Source code verification
12
+ * - Tax/fee detection
13
+ * - Deployer risk analysis
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // Analyze a contract
18
+ * const risk = await client.contracts.analyze('0x...', { chain: Chain.ETH });
19
+ *
20
+ * // Get source code
21
+ * const source = await client.contracts.getSourceCode('0x...', { chain: Chain.ETH });
22
+ *
23
+ * // With default chain configured, chain can be omitted
24
+ * const client = new ThreatClient({ apiKey: '...', defaultChain: Chain.ETH });
25
+ * const risk = await client.contracts.analyze('0x...'); // Uses ETH
26
+ * ```
27
+ */
28
+ class ContractsResource extends sdk_core_1.BaseResource {
29
+ /**
30
+ * Analyze a smart contract for security risks
31
+ *
32
+ * Returns comprehensive analysis including:
33
+ * - Risk score and categorization
34
+ * - Vulnerability detection
35
+ * - Source code analysis (if verified)
36
+ * - Similar contracts
37
+ * - Deployer risk (optional)
38
+ *
39
+ * @param address - Contract address
40
+ * @param options - Analysis options (chain is optional if defaultChain is set)
41
+ * @returns Contract risk analysis result
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const result = await client.contracts.analyze('0xContract...', {
46
+ * chain: Chain.ETH,
47
+ * });
48
+ *
49
+ * // With default chain, options can be omitted
50
+ * const result = await client.contracts.analyze('0xContract...');
51
+ *
52
+ * console.log(`Risk score: ${result.score}`);
53
+ * console.log(`Tags: ${result.tags.map(t => t.name).join(', ')}`);
54
+ *
55
+ * // Check for vulnerabilities
56
+ * if (result.source_code_analysis && 'vulnerabilities' in result.source_code_analysis) {
57
+ * for (const vuln of result.source_code_analysis.vulnerabilities) {
58
+ * console.warn(`${vuln.severity}: ${vuln.title}`);
59
+ * }
60
+ * }
61
+ * ```
62
+ */
63
+ async analyze(address, options = {}) {
64
+ const chain = this.resolveChain(options);
65
+ this.validateAddress(address, chain);
66
+ const queryParams = new URLSearchParams();
67
+ queryParams.append('chain', chain);
68
+ if (options.deployerRisk !== undefined) {
69
+ queryParams.append('deployer_risk', String(options.deployerRisk));
70
+ }
71
+ const response = await this.httpClient.get(`/contracts/${encodeURIComponent(address)}?${queryParams.toString()}`, {
72
+ timeout: options.timeout,
73
+ signal: options.signal,
74
+ });
75
+ return response.data;
76
+ }
77
+ /**
78
+ * Get contract source code
79
+ *
80
+ * Returns source code and metadata for verified contracts.
81
+ *
82
+ * @param address - Contract address
83
+ * @param options - Request options (chain is optional if defaultChain is set)
84
+ * @returns Contract source code and metadata
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const source = await client.contracts.getSourceCode('0x...', {
89
+ * chain: Chain.ETH,
90
+ * });
91
+ *
92
+ * // With default chain configured
93
+ * const source = await client.contracts.getSourceCode('0x...');
94
+ *
95
+ * if (source.is_verified) {
96
+ * console.log(`Contract: ${source.contract_name}`);
97
+ * console.log(`Compiler: ${source.compiler_version}`);
98
+ * } else {
99
+ * console.log('Contract source not verified');
100
+ * }
101
+ * ```
102
+ */
103
+ async getSourceCode(address, options = {}) {
104
+ const chain = this.resolveChain(options);
105
+ this.validateAddress(address, chain);
106
+ const queryParams = new URLSearchParams();
107
+ queryParams.append('chain', chain);
108
+ const response = await this.httpClient.get(`/contracts/${encodeURIComponent(address)}/source-code?${queryParams.toString()}`, {
109
+ timeout: options.timeout,
110
+ signal: options.signal,
111
+ });
112
+ return response.data;
113
+ }
114
+ /**
115
+ * Get token buy/sell taxes
116
+ *
117
+ * Analyzes token contracts for buy and sell taxes.
118
+ *
119
+ * @param address - Token contract address
120
+ * @param options - Request options (chain is optional if defaultChain is set)
121
+ * @returns Tax information
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * const taxes = await client.contracts.getTaxes('0x...', {
126
+ * chain: Chain.ETH,
127
+ * });
128
+ *
129
+ * // With default chain configured
130
+ * const taxes = await client.contracts.getTaxes('0x...');
131
+ *
132
+ * if (taxes.buyTaxPercentage !== null || taxes.sellTaxPercentage !== null) {
133
+ * console.log(`Buy tax: ${taxes.buyTaxPercentage}%`);
134
+ * console.log(`Sell tax: ${taxes.sellTaxPercentage}%`);
135
+ * }
136
+ * ```
137
+ */
138
+ async getTaxes(address, options = {}) {
139
+ const chain = this.resolveChain(options);
140
+ this.validateAddress(address, chain);
141
+ const queryParams = new URLSearchParams();
142
+ queryParams.append('chain', chain);
143
+ const response = await this.httpClient.get(`/contracts/taxes/${encodeURIComponent(address)}?${queryParams.toString()}`, {
144
+ timeout: options.timeout,
145
+ signal: options.signal,
146
+ });
147
+ return response.data;
148
+ }
149
+ /**
150
+ * Analyze Solidity source code
151
+ *
152
+ * Analyzes raw Solidity source code for vulnerabilities
153
+ * without requiring deployment.
154
+ *
155
+ * @param request - Analysis request with source code
156
+ * @returns Analysis results
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const result = await client.contracts.analyzeSolidity({
161
+ * source_code: `
162
+ * pragma solidity ^0.8.0;
163
+ * contract MyToken {
164
+ * // ...
165
+ * }
166
+ * `,
167
+ * compiler_version: '0.8.19',
168
+ * });
169
+ *
170
+ * if (result.success && result.results) {
171
+ * console.log(`Security score: ${result.results.security_score}`);
172
+ * for (const vuln of result.results.vulnerabilities) {
173
+ * console.warn(`${vuln.severity}: ${vuln.title}`);
174
+ * }
175
+ * }
176
+ * ```
177
+ */
178
+ async analyzeSolidity(request, options) {
179
+ const response = await this.httpClient.post('/contracts/solidity-detector', request, {
180
+ timeout: options?.timeout,
181
+ signal: options?.signal,
182
+ });
183
+ return response.data;
184
+ }
185
+ }
186
+ exports.ContractsResource = ContractsResource;
187
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/resources/contracts.ts"],"names":[],"mappings":";;;AAAA,mDAAkE;AAYlE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,iBAAkB,SAAQ,uBAAY;IACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,KAAK,CAAC,OAAO,CACX,OAAe,EACf,UAAmC,EAAE;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnC,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,QAAQ,GAAuC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAC5E,cAAc,kBAAkB,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,EACrE;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,UAA6B,EAAE;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAA6C,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAClF,cAAc,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,WAAW,CAAC,QAAQ,EAAE,EAAE,EACjF;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,UAAsB,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAmC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxE,oBAAoB,kBAAkB,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,EAC3E;YACE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,eAAe,CACnB,OAAgC,EAChC,OAAoD;QAEpD,MAAM,QAAQ,GAA2C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACjF,8BAA8B,EAC9B,OAAO,EACP;YACE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAjMD,8CAiMC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsageResource = exports.AccountTraceResource = exports.LedgerResource = exports.WalletsResource = exports.UrlResource = exports.ContractsResource = exports.AddressesResource = void 0;
4
+ var addresses_1 = require("./addresses");
5
+ Object.defineProperty(exports, "AddressesResource", { enumerable: true, get: function () { return addresses_1.AddressesResource; } });
6
+ var contracts_1 = require("./contracts");
7
+ Object.defineProperty(exports, "ContractsResource", { enumerable: true, get: function () { return contracts_1.ContractsResource; } });
8
+ var url_1 = require("./url");
9
+ Object.defineProperty(exports, "UrlResource", { enumerable: true, get: function () { return url_1.UrlResource; } });
10
+ var wallets_1 = require("./wallets");
11
+ Object.defineProperty(exports, "WalletsResource", { enumerable: true, get: function () { return wallets_1.WalletsResource; } });
12
+ var ledger_1 = require("./ledger");
13
+ Object.defineProperty(exports, "LedgerResource", { enumerable: true, get: function () { return ledger_1.LedgerResource; } });
14
+ var account_trace_1 = require("./account-trace");
15
+ Object.defineProperty(exports, "AccountTraceResource", { enumerable: true, get: function () { return account_trace_1.AccountTraceResource; } });
16
+ var usage_1 = require("./usage");
17
+ Object.defineProperty(exports, "UsageResource", { enumerable: true, get: function () { return usage_1.UsageResource; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resources/index.ts"],"names":[],"mappings":";;;AAAA,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,6BAAoC;AAA3B,kGAAA,WAAW,OAAA;AACpB,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,iDAAuD;AAA9C,qHAAA,oBAAoB,OAAA;AAC7B,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LedgerResource = void 0;
4
+ /**
5
+ * Resource for hardware wallet transaction scanning
6
+ *
7
+ * Provides security analysis for transactions before signing on
8
+ * hardware wallets (Ledger devices).
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // Scan a transaction before signing
13
+ * const result = await client.ledger.scanTransaction('ethereum', {
14
+ * tx: { from: '0x...', raw: '0x...' },
15
+ * chain: 1,
16
+ * });
17
+ *
18
+ * if (!result.is_safe) {
19
+ * console.error('Transaction may be risky!');
20
+ * }
21
+ * ```
22
+ */
23
+ class LedgerResource {
24
+ httpClient;
25
+ constructor(httpClient) {
26
+ this.httpClient = httpClient;
27
+ }
28
+ /**
29
+ * Scan a transaction before signing
30
+ *
31
+ * Analyzes a transaction for security risks before signing
32
+ * on a hardware wallet.
33
+ *
34
+ * @param family - Ledger device family (ethereum, solana, bitcoin)
35
+ * @param request - Transaction scan request
36
+ * @param options - Request options
37
+ * @returns Security analysis result
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const result = await client.ledger.scanTransaction('ethereum', {
42
+ * tx: {
43
+ * from: '0xYourWallet...',
44
+ * raw: '0xEncodedTransaction...',
45
+ * },
46
+ * chain: 1, // Ethereum mainnet
47
+ * });
48
+ *
49
+ * if (!result.is_safe) {
50
+ * console.error(`Risk level: ${result.risk_level}`);
51
+ * for (const risk of result.risks) {
52
+ * console.warn(`${risk.level}: ${risk.description}`);
53
+ * }
54
+ * }
55
+ *
56
+ * // Check decoded data
57
+ * if (result.decoded?.function_name) {
58
+ * console.log(`Function: ${result.decoded.function_name}`);
59
+ * }
60
+ * ```
61
+ */
62
+ async scanTransaction(family, request, options) {
63
+ const response = await this.httpClient.post(`/ledger/${family}/scan/tx`, request, {
64
+ timeout: options?.timeout,
65
+ signal: options?.signal,
66
+ });
67
+ return response.data;
68
+ }
69
+ /**
70
+ * Scan EIP-712 typed data before signing
71
+ *
72
+ * Analyzes EIP-712 structured data for security risks
73
+ * before signing on a hardware wallet.
74
+ *
75
+ * @param family - Ledger device family
76
+ * @param request - EIP-712 scan request
77
+ * @param options - Request options
78
+ * @returns Security analysis result
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const result = await client.ledger.scanEip712('ethereum', {
83
+ * signer: '0xYourWallet...',
84
+ * typedData: {
85
+ * domain: {
86
+ * name: 'MyDApp',
87
+ * version: '1',
88
+ * chainId: 1,
89
+ * verifyingContract: '0x...',
90
+ * },
91
+ * message: {
92
+ * // Message content
93
+ * },
94
+ * primaryType: 'Order',
95
+ * types: {
96
+ * EIP712Domain: [
97
+ * { name: 'name', type: 'string' },
98
+ * // ...
99
+ * ],
100
+ * Order: [
101
+ * { name: 'maker', type: 'address' },
102
+ * // ...
103
+ * ],
104
+ * },
105
+ * },
106
+ * chain: 1,
107
+ * });
108
+ *
109
+ * if (!result.is_safe) {
110
+ * console.error('EIP-712 data may be risky!');
111
+ * }
112
+ * ```
113
+ */
114
+ async scanEip712(family, request, options) {
115
+ const response = await this.httpClient.post(`/ledger/${family}/scan/eip-712`, request, {
116
+ timeout: options?.timeout,
117
+ signal: options?.signal,
118
+ });
119
+ return response.data;
120
+ }
121
+ }
122
+ exports.LedgerResource = LedgerResource;
123
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/resources/ledger.ts"],"names":[],"mappings":";;;AASA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,cAAc;IACI;IAA7B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,KAAK,CAAC,eAAe,CACnB,MAAoB,EACpB,OAA0B,EAC1B,OAA2B;QAE3B,MAAM,QAAQ,GAAqC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAC3E,WAAW,MAAM,UAAU,EAC3B,OAAO,EACP;YACE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,KAAK,CAAC,UAAU,CACd,MAAoB,EACpB,OAA4B,EAC5B,OAA2B;QAE3B,MAAM,QAAQ,GAAqC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAC3E,WAAW,MAAM,eAAe,EAChC,OAAO,EACP;YACE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAnHD,wCAmHC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UrlResource = void 0;
4
+ const sdk_core_1 = require("@webacy-xyz/sdk-core");
5
+ /**
6
+ * Resource for URL safety analysis
7
+ *
8
+ * Provides URL risk assessment to identify phishing sites,
9
+ * malicious domains, and other web-based threats.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const result = await client.url.check('https://suspicious-site.com');
14
+ * if (result.prediction === 'malicious') {
15
+ * console.warn('URL is malicious!');
16
+ * }
17
+ * ```
18
+ */
19
+ class UrlResource {
20
+ httpClient;
21
+ constructor(httpClient) {
22
+ this.httpClient = httpClient;
23
+ }
24
+ /**
25
+ * Check if a URL is safe
26
+ *
27
+ * Analyzes a URL for phishing, malware, and other threats.
28
+ *
29
+ * @param url - URL to check
30
+ * @param options - Request options
31
+ * @returns URL safety analysis result
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const result = await client.url.check('https://example.com');
36
+ *
37
+ * if (result.prediction === 'malicious') {
38
+ * console.error('URL is potentially dangerous!');
39
+ * console.log('Details:', result.details);
40
+ * } else if (result.prediction === 'benign') {
41
+ * console.log('URL appears safe');
42
+ * }
43
+ *
44
+ * // Check blacklist/whitelist status
45
+ * if (result.blacklist === 'true') {
46
+ * console.error('URL is blacklisted');
47
+ * }
48
+ * if (result.whitelist === 'true') {
49
+ * console.log('URL is whitelisted');
50
+ * }
51
+ * ```
52
+ */
53
+ async check(url, options) {
54
+ if (!(0, sdk_core_1.isValidUrl)(url)) {
55
+ throw new sdk_core_1.ValidationError(`Invalid URL: "${url}". Please provide a valid HTTP or HTTPS URL.`);
56
+ }
57
+ const response = await this.httpClient.post('/url', { url }, {
58
+ timeout: options?.timeout,
59
+ signal: options?.signal,
60
+ });
61
+ return response.data;
62
+ }
63
+ /**
64
+ * Add a URL to the database
65
+ *
66
+ * Report a URL to be analyzed and added to the threat database.
67
+ *
68
+ * @param url - URL to add
69
+ * @param options - Request options
70
+ * @returns Addition result
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const result = await client.url.add('https://phishing-site.com');
75
+ * if (result.success) {
76
+ * console.log('URL reported successfully');
77
+ * }
78
+ * ```
79
+ */
80
+ async add(url, options) {
81
+ if (!(0, sdk_core_1.isValidUrl)(url)) {
82
+ throw new sdk_core_1.ValidationError(`Invalid URL: "${url}". Please provide a valid HTTP or HTTPS URL.`);
83
+ }
84
+ const response = await this.httpClient.post('/url/add', { url }, {
85
+ timeout: options?.timeout,
86
+ signal: options?.signal,
87
+ });
88
+ return response.data;
89
+ }
90
+ }
91
+ exports.UrlResource = UrlResource;
92
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/resources/url.ts"],"names":[],"mappings":";;;AAAA,mDAA6F;AAG7F;;;;;;;;;;;;;GAaG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,OAAyB;QAChD,IAAI,CAAC,IAAA,qBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,0BAAe,CAAC,iBAAiB,GAAG,8CAA8C,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,QAAQ,GAAkC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACxE,MAAM,EACN,EAAE,GAAG,EAAE,EACP;YACE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,OAAyB;QAC9C,IAAI,CAAC,IAAA,qBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,0BAAe,CAAC,iBAAiB,GAAG,8CAA8C,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,QAAQ,GAAiC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACvE,UAAU,EACV,EAAE,GAAG,EAAE,EACP;YACE,OAAO,EAAE,OAAO,EAAE,OAAO;YACzB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAlFD,kCAkFC"}