@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,158 @@
1
+ import { BaseResource } from '@webacy-xyz/sdk-core';
2
+ /**
3
+ * Resource for address risk analysis
4
+ *
5
+ * Provides comprehensive security analysis for blockchain addresses including:
6
+ * - Overall risk scoring
7
+ * - Risk categorization and tagging
8
+ * - Sanctions screening
9
+ * - Address poisoning detection
10
+ * - Fund flow analysis
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Analyze an address
15
+ * const risk = await client.addresses.analyze('0x...', { chain: Chain.ETH });
16
+ *
17
+ * // Check sanctions
18
+ * const sanctioned = await client.addresses.checkSanctioned('0x...', { chain: Chain.ETH });
19
+ *
20
+ * // With default chain configured, chain can be omitted
21
+ * const client = new ThreatClient({ apiKey: '...', defaultChain: Chain.ETH });
22
+ * const risk = await client.addresses.analyze('0x...'); // Uses ETH
23
+ * ```
24
+ */
25
+ export class AddressesResource extends BaseResource {
26
+ /**
27
+ * Analyze an address for security risks
28
+ *
29
+ * Returns comprehensive risk analysis including:
30
+ * - Overall risk score (0-100)
31
+ * - Risk tags and categories
32
+ * - Detailed analysis data (optional)
33
+ * - Deployer risk for contracts (optional)
34
+ *
35
+ * @param address - Address to analyze
36
+ * @param options - Analysis options (chain is optional if defaultChain is set)
37
+ * @returns Address risk analysis result
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // Basic analysis
42
+ * const risk = await client.addresses.analyze('0x742d35Cc...', {
43
+ * chain: Chain.ETH,
44
+ * });
45
+ * console.log(`Risk score: ${risk.overallRisk}`);
46
+ *
47
+ * // With default chain, options can be omitted
48
+ * const risk = await client.addresses.analyze('0x742d35Cc...');
49
+ *
50
+ * // With specific modules
51
+ * const risk = await client.addresses.analyze('0x...', {
52
+ * chain: Chain.ETH,
53
+ * modules: [RiskModule.SANCTIONS_COMPLIANCE, RiskModule.FUND_FLOW_SCREENING],
54
+ * });
55
+ *
56
+ * // With detailed response and deployer risk
57
+ * const risk = await client.addresses.analyze('0x...', {
58
+ * chain: Chain.ETH,
59
+ * detailed: true,
60
+ * deployerRisk: true,
61
+ * });
62
+ * ```
63
+ */
64
+ async analyze(address, options = {}) {
65
+ const chain = this.resolveChain(options);
66
+ this.validateAddress(address, chain);
67
+ const queryParams = new URLSearchParams();
68
+ queryParams.append('chain', chain);
69
+ if (options.modules && options.modules.length > 0) {
70
+ for (const module of options.modules) {
71
+ queryParams.append('modules', module);
72
+ }
73
+ }
74
+ if (options.detailed !== undefined) {
75
+ queryParams.append('detailed', String(options.detailed));
76
+ }
77
+ if (options.deployerRisk !== undefined) {
78
+ queryParams.append('deployer_risk', String(options.deployerRisk));
79
+ }
80
+ const response = await this.httpClient.get(`/addresses/${encodeURIComponent(address)}?${queryParams.toString()}`, {
81
+ timeout: options.timeout,
82
+ signal: options.signal,
83
+ });
84
+ return response.data;
85
+ }
86
+ /**
87
+ * Check if an address is sanctioned
88
+ *
89
+ * Screens the address against known sanctions lists including OFAC.
90
+ *
91
+ * @param address - Address to check
92
+ * @param options - Request options (chain is optional if defaultChain is set)
93
+ * @returns Sanctions check result
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const result = await client.addresses.checkSanctioned('0x...', {
98
+ * chain: Chain.ETH,
99
+ * });
100
+ *
101
+ * // With default chain configured
102
+ * const result = await client.addresses.checkSanctioned('0x...');
103
+ *
104
+ * if (result.is_sanctioned) {
105
+ * console.error('Address is sanctioned!');
106
+ * console.log('Details:', result.sanction_details);
107
+ * }
108
+ * ```
109
+ */
110
+ async checkSanctioned(address, options = {}) {
111
+ const chain = this.resolveChain(options);
112
+ this.validateAddress(address, chain);
113
+ const queryParams = new URLSearchParams();
114
+ queryParams.append('chain', chain);
115
+ const response = await this.httpClient.get(`/addresses/sanctioned/${encodeURIComponent(address)}?${queryParams.toString()}`, {
116
+ timeout: options.timeout,
117
+ signal: options.signal,
118
+ });
119
+ return response.data;
120
+ }
121
+ /**
122
+ * Check for address poisoning attacks
123
+ *
124
+ * Detects if an address has been targeted by address poisoning
125
+ * (dust attack) attempts.
126
+ *
127
+ * @param address - Address to check
128
+ * @param options - Request options (chain is optional if defaultChain is set)
129
+ * @returns Poisoning detection result
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const result = await client.addresses.checkPoisoning('0x...', {
134
+ * chain: Chain.ETH,
135
+ * });
136
+ *
137
+ * // With default chain configured
138
+ * const result = await client.addresses.checkPoisoning('0x...');
139
+ *
140
+ * if (result.is_poisoned) {
141
+ * console.warn('Address poisoning detected!');
142
+ * console.log('Similar addresses:', result.poisoning_details?.similar_addresses);
143
+ * }
144
+ * ```
145
+ */
146
+ async checkPoisoning(address, options = {}) {
147
+ const chain = this.resolveChain(options);
148
+ this.validateAddress(address, chain);
149
+ const queryParams = new URLSearchParams();
150
+ queryParams.append('chain', chain);
151
+ const response = await this.httpClient.get(`/addresses/${encodeURIComponent(address)}/poisoning?${queryParams.toString()}`, {
152
+ timeout: options.timeout,
153
+ signal: options.signal,
154
+ });
155
+ return response.data;
156
+ }
157
+ }
158
+ //# 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,183 @@
1
+ import { BaseResource } from '@webacy-xyz/sdk-core';
2
+ /**
3
+ * Resource for smart contract security analysis
4
+ *
5
+ * Provides comprehensive contract analysis including:
6
+ * - Static and dynamic code analysis
7
+ * - Vulnerability detection
8
+ * - Source code verification
9
+ * - Tax/fee detection
10
+ * - Deployer risk analysis
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Analyze a contract
15
+ * const risk = await client.contracts.analyze('0x...', { chain: Chain.ETH });
16
+ *
17
+ * // Get source code
18
+ * const source = await client.contracts.getSourceCode('0x...', { chain: Chain.ETH });
19
+ *
20
+ * // With default chain configured, chain can be omitted
21
+ * const client = new ThreatClient({ apiKey: '...', defaultChain: Chain.ETH });
22
+ * const risk = await client.contracts.analyze('0x...'); // Uses ETH
23
+ * ```
24
+ */
25
+ export class ContractsResource extends BaseResource {
26
+ /**
27
+ * Analyze a smart contract for security risks
28
+ *
29
+ * Returns comprehensive analysis including:
30
+ * - Risk score and categorization
31
+ * - Vulnerability detection
32
+ * - Source code analysis (if verified)
33
+ * - Similar contracts
34
+ * - Deployer risk (optional)
35
+ *
36
+ * @param address - Contract address
37
+ * @param options - Analysis options (chain is optional if defaultChain is set)
38
+ * @returns Contract risk analysis result
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const result = await client.contracts.analyze('0xContract...', {
43
+ * chain: Chain.ETH,
44
+ * });
45
+ *
46
+ * // With default chain, options can be omitted
47
+ * const result = await client.contracts.analyze('0xContract...');
48
+ *
49
+ * console.log(`Risk score: ${result.score}`);
50
+ * console.log(`Tags: ${result.tags.map(t => t.name).join(', ')}`);
51
+ *
52
+ * // Check for vulnerabilities
53
+ * if (result.source_code_analysis && 'vulnerabilities' in result.source_code_analysis) {
54
+ * for (const vuln of result.source_code_analysis.vulnerabilities) {
55
+ * console.warn(`${vuln.severity}: ${vuln.title}`);
56
+ * }
57
+ * }
58
+ * ```
59
+ */
60
+ async analyze(address, options = {}) {
61
+ const chain = this.resolveChain(options);
62
+ this.validateAddress(address, chain);
63
+ const queryParams = new URLSearchParams();
64
+ queryParams.append('chain', chain);
65
+ if (options.deployerRisk !== undefined) {
66
+ queryParams.append('deployer_risk', String(options.deployerRisk));
67
+ }
68
+ const response = await this.httpClient.get(`/contracts/${encodeURIComponent(address)}?${queryParams.toString()}`, {
69
+ timeout: options.timeout,
70
+ signal: options.signal,
71
+ });
72
+ return response.data;
73
+ }
74
+ /**
75
+ * Get contract source code
76
+ *
77
+ * Returns source code and metadata for verified contracts.
78
+ *
79
+ * @param address - Contract address
80
+ * @param options - Request options (chain is optional if defaultChain is set)
81
+ * @returns Contract source code and metadata
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const source = await client.contracts.getSourceCode('0x...', {
86
+ * chain: Chain.ETH,
87
+ * });
88
+ *
89
+ * // With default chain configured
90
+ * const source = await client.contracts.getSourceCode('0x...');
91
+ *
92
+ * if (source.is_verified) {
93
+ * console.log(`Contract: ${source.contract_name}`);
94
+ * console.log(`Compiler: ${source.compiler_version}`);
95
+ * } else {
96
+ * console.log('Contract source not verified');
97
+ * }
98
+ * ```
99
+ */
100
+ async getSourceCode(address, options = {}) {
101
+ const chain = this.resolveChain(options);
102
+ this.validateAddress(address, chain);
103
+ const queryParams = new URLSearchParams();
104
+ queryParams.append('chain', chain);
105
+ const response = await this.httpClient.get(`/contracts/${encodeURIComponent(address)}/source-code?${queryParams.toString()}`, {
106
+ timeout: options.timeout,
107
+ signal: options.signal,
108
+ });
109
+ return response.data;
110
+ }
111
+ /**
112
+ * Get token buy/sell taxes
113
+ *
114
+ * Analyzes token contracts for buy and sell taxes.
115
+ *
116
+ * @param address - Token contract address
117
+ * @param options - Request options (chain is optional if defaultChain is set)
118
+ * @returns Tax information
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * const taxes = await client.contracts.getTaxes('0x...', {
123
+ * chain: Chain.ETH,
124
+ * });
125
+ *
126
+ * // With default chain configured
127
+ * const taxes = await client.contracts.getTaxes('0x...');
128
+ *
129
+ * if (taxes.buyTaxPercentage !== null || taxes.sellTaxPercentage !== null) {
130
+ * console.log(`Buy tax: ${taxes.buyTaxPercentage}%`);
131
+ * console.log(`Sell tax: ${taxes.sellTaxPercentage}%`);
132
+ * }
133
+ * ```
134
+ */
135
+ async getTaxes(address, options = {}) {
136
+ const chain = this.resolveChain(options);
137
+ this.validateAddress(address, chain);
138
+ const queryParams = new URLSearchParams();
139
+ queryParams.append('chain', chain);
140
+ const response = await this.httpClient.get(`/contracts/taxes/${encodeURIComponent(address)}?${queryParams.toString()}`, {
141
+ timeout: options.timeout,
142
+ signal: options.signal,
143
+ });
144
+ return response.data;
145
+ }
146
+ /**
147
+ * Analyze Solidity source code
148
+ *
149
+ * Analyzes raw Solidity source code for vulnerabilities
150
+ * without requiring deployment.
151
+ *
152
+ * @param request - Analysis request with source code
153
+ * @returns Analysis results
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const result = await client.contracts.analyzeSolidity({
158
+ * source_code: `
159
+ * pragma solidity ^0.8.0;
160
+ * contract MyToken {
161
+ * // ...
162
+ * }
163
+ * `,
164
+ * compiler_version: '0.8.19',
165
+ * });
166
+ *
167
+ * if (result.success && result.results) {
168
+ * console.log(`Security score: ${result.results.security_score}`);
169
+ * for (const vuln of result.results.vulnerabilities) {
170
+ * console.warn(`${vuln.severity}: ${vuln.title}`);
171
+ * }
172
+ * }
173
+ * ```
174
+ */
175
+ async analyzeSolidity(request, options) {
176
+ const response = await this.httpClient.post('/contracts/solidity-detector', request, {
177
+ timeout: options?.timeout,
178
+ signal: options?.signal,
179
+ });
180
+ return response.data;
181
+ }
182
+ }
183
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/resources/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { AddressesResource } from './addresses.js';
2
+ export { ContractsResource } from './contracts.js';
3
+ export { UrlResource } from './url.js';
4
+ export { WalletsResource } from './wallets.js';
5
+ export { LedgerResource } from './ledger.js';
6
+ export { AccountTraceResource } from './account-trace.js';
7
+ export { UsageResource } from './usage.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Resource for hardware wallet transaction scanning
3
+ *
4
+ * Provides security analysis for transactions before signing on
5
+ * hardware wallets (Ledger devices).
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Scan a transaction before signing
10
+ * const result = await client.ledger.scanTransaction('ethereum', {
11
+ * tx: { from: '0x...', raw: '0x...' },
12
+ * chain: 1,
13
+ * });
14
+ *
15
+ * if (!result.is_safe) {
16
+ * console.error('Transaction may be risky!');
17
+ * }
18
+ * ```
19
+ */
20
+ export class LedgerResource {
21
+ httpClient;
22
+ constructor(httpClient) {
23
+ this.httpClient = httpClient;
24
+ }
25
+ /**
26
+ * Scan a transaction before signing
27
+ *
28
+ * Analyzes a transaction for security risks before signing
29
+ * on a hardware wallet.
30
+ *
31
+ * @param family - Ledger device family (ethereum, solana, bitcoin)
32
+ * @param request - Transaction scan request
33
+ * @param options - Request options
34
+ * @returns Security analysis result
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const result = await client.ledger.scanTransaction('ethereum', {
39
+ * tx: {
40
+ * from: '0xYourWallet...',
41
+ * raw: '0xEncodedTransaction...',
42
+ * },
43
+ * chain: 1, // Ethereum mainnet
44
+ * });
45
+ *
46
+ * if (!result.is_safe) {
47
+ * console.error(`Risk level: ${result.risk_level}`);
48
+ * for (const risk of result.risks) {
49
+ * console.warn(`${risk.level}: ${risk.description}`);
50
+ * }
51
+ * }
52
+ *
53
+ * // Check decoded data
54
+ * if (result.decoded?.function_name) {
55
+ * console.log(`Function: ${result.decoded.function_name}`);
56
+ * }
57
+ * ```
58
+ */
59
+ async scanTransaction(family, request, options) {
60
+ const response = await this.httpClient.post(`/ledger/${family}/scan/tx`, request, {
61
+ timeout: options?.timeout,
62
+ signal: options?.signal,
63
+ });
64
+ return response.data;
65
+ }
66
+ /**
67
+ * Scan EIP-712 typed data before signing
68
+ *
69
+ * Analyzes EIP-712 structured data for security risks
70
+ * before signing on a hardware wallet.
71
+ *
72
+ * @param family - Ledger device family
73
+ * @param request - EIP-712 scan request
74
+ * @param options - Request options
75
+ * @returns Security analysis result
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const result = await client.ledger.scanEip712('ethereum', {
80
+ * signer: '0xYourWallet...',
81
+ * typedData: {
82
+ * domain: {
83
+ * name: 'MyDApp',
84
+ * version: '1',
85
+ * chainId: 1,
86
+ * verifyingContract: '0x...',
87
+ * },
88
+ * message: {
89
+ * // Message content
90
+ * },
91
+ * primaryType: 'Order',
92
+ * types: {
93
+ * EIP712Domain: [
94
+ * { name: 'name', type: 'string' },
95
+ * // ...
96
+ * ],
97
+ * Order: [
98
+ * { name: 'maker', type: 'address' },
99
+ * // ...
100
+ * ],
101
+ * },
102
+ * },
103
+ * chain: 1,
104
+ * });
105
+ *
106
+ * if (!result.is_safe) {
107
+ * console.error('EIP-712 data may be risky!');
108
+ * }
109
+ * ```
110
+ */
111
+ async scanEip712(family, request, options) {
112
+ const response = await this.httpClient.post(`/ledger/${family}/scan/eip-712`, request, {
113
+ timeout: options?.timeout,
114
+ signal: options?.signal,
115
+ });
116
+ return response.data;
117
+ }
118
+ }
119
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/resources/ledger.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,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"}
@@ -0,0 +1,88 @@
1
+ import { ValidationError, isValidUrl } from '@webacy-xyz/sdk-core';
2
+ /**
3
+ * Resource for URL safety analysis
4
+ *
5
+ * Provides URL risk assessment to identify phishing sites,
6
+ * malicious domains, and other web-based threats.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const result = await client.url.check('https://suspicious-site.com');
11
+ * if (result.prediction === 'malicious') {
12
+ * console.warn('URL is malicious!');
13
+ * }
14
+ * ```
15
+ */
16
+ export class UrlResource {
17
+ httpClient;
18
+ constructor(httpClient) {
19
+ this.httpClient = httpClient;
20
+ }
21
+ /**
22
+ * Check if a URL is safe
23
+ *
24
+ * Analyzes a URL for phishing, malware, and other threats.
25
+ *
26
+ * @param url - URL to check
27
+ * @param options - Request options
28
+ * @returns URL safety analysis result
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const result = await client.url.check('https://example.com');
33
+ *
34
+ * if (result.prediction === 'malicious') {
35
+ * console.error('URL is potentially dangerous!');
36
+ * console.log('Details:', result.details);
37
+ * } else if (result.prediction === 'benign') {
38
+ * console.log('URL appears safe');
39
+ * }
40
+ *
41
+ * // Check blacklist/whitelist status
42
+ * if (result.blacklist === 'true') {
43
+ * console.error('URL is blacklisted');
44
+ * }
45
+ * if (result.whitelist === 'true') {
46
+ * console.log('URL is whitelisted');
47
+ * }
48
+ * ```
49
+ */
50
+ async check(url, options) {
51
+ if (!isValidUrl(url)) {
52
+ throw new ValidationError(`Invalid URL: "${url}". Please provide a valid HTTP or HTTPS URL.`);
53
+ }
54
+ const response = await this.httpClient.post('/url', { url }, {
55
+ timeout: options?.timeout,
56
+ signal: options?.signal,
57
+ });
58
+ return response.data;
59
+ }
60
+ /**
61
+ * Add a URL to the database
62
+ *
63
+ * Report a URL to be analyzed and added to the threat database.
64
+ *
65
+ * @param url - URL to add
66
+ * @param options - Request options
67
+ * @returns Addition result
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const result = await client.url.add('https://phishing-site.com');
72
+ * if (result.success) {
73
+ * console.log('URL reported successfully');
74
+ * }
75
+ * ```
76
+ */
77
+ async add(url, options) {
78
+ if (!isValidUrl(url)) {
79
+ throw new ValidationError(`Invalid URL: "${url}". Please provide a valid HTTP or HTTPS URL.`);
80
+ }
81
+ const response = await this.httpClient.post('/url/add', { url }, {
82
+ timeout: options?.timeout,
83
+ signal: options?.signal,
84
+ });
85
+ return response.data;
86
+ }
87
+ }
88
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/resources/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG7F;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,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,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,eAAe,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,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,eAAe,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"}