@clawnch/clawncher-sdk 0.1.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 (98) hide show
  1. package/README.md +603 -0
  2. package/dist/abis.d.ts +935 -0
  3. package/dist/abis.d.ts.map +1 -0
  4. package/dist/abis.js +486 -0
  5. package/dist/abis.js.map +1 -0
  6. package/dist/addresses.d.ts +51 -0
  7. package/dist/addresses.d.ts.map +1 -0
  8. package/dist/addresses.js +80 -0
  9. package/dist/addresses.js.map +1 -0
  10. package/dist/api-deployer-types.d.ts +165 -0
  11. package/dist/api-deployer-types.d.ts.map +1 -0
  12. package/dist/api-deployer-types.js +9 -0
  13. package/dist/api-deployer-types.js.map +1 -0
  14. package/dist/api-deployer.d.ts +114 -0
  15. package/dist/api-deployer.d.ts.map +1 -0
  16. package/dist/api-deployer.js +309 -0
  17. package/dist/api-deployer.js.map +1 -0
  18. package/dist/claimer.d.ts +197 -0
  19. package/dist/claimer.d.ts.map +1 -0
  20. package/dist/claimer.js +311 -0
  21. package/dist/claimer.js.map +1 -0
  22. package/dist/deployer.d.ts +229 -0
  23. package/dist/deployer.d.ts.map +1 -0
  24. package/dist/deployer.js +305 -0
  25. package/dist/deployer.js.map +1 -0
  26. package/dist/erc8004-types.d.ts +94 -0
  27. package/dist/erc8004-types.d.ts.map +1 -0
  28. package/dist/erc8004-types.js +8 -0
  29. package/dist/erc8004-types.js.map +1 -0
  30. package/dist/errors.d.ts +62 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +75 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/index.d.ts +204 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +358 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/liquidity-types.d.ts +198 -0
  39. package/dist/liquidity-types.d.ts.map +1 -0
  40. package/dist/liquidity-types.js +8 -0
  41. package/dist/liquidity-types.js.map +1 -0
  42. package/dist/liquidity.d.ts +111 -0
  43. package/dist/liquidity.d.ts.map +1 -0
  44. package/dist/liquidity.js +608 -0
  45. package/dist/liquidity.js.map +1 -0
  46. package/dist/molten-types.d.ts +282 -0
  47. package/dist/molten-types.d.ts.map +1 -0
  48. package/dist/molten-types.js +8 -0
  49. package/dist/molten-types.js.map +1 -0
  50. package/dist/molten.d.ts +336 -0
  51. package/dist/molten.d.ts.map +1 -0
  52. package/dist/molten.js +560 -0
  53. package/dist/molten.js.map +1 -0
  54. package/dist/portfolio.d.ts +129 -0
  55. package/dist/portfolio.d.ts.map +1 -0
  56. package/dist/portfolio.js +218 -0
  57. package/dist/portfolio.js.map +1 -0
  58. package/dist/reader.d.ts +249 -0
  59. package/dist/reader.d.ts.map +1 -0
  60. package/dist/reader.js +488 -0
  61. package/dist/reader.js.map +1 -0
  62. package/dist/swap-types.d.ts +159 -0
  63. package/dist/swap-types.d.ts.map +1 -0
  64. package/dist/swap-types.js +22 -0
  65. package/dist/swap-types.js.map +1 -0
  66. package/dist/swap.d.ts +762 -0
  67. package/dist/swap.d.ts.map +1 -0
  68. package/dist/swap.js +345 -0
  69. package/dist/swap.js.map +1 -0
  70. package/dist/token-verification-data.d.ts +4 -0
  71. package/dist/token-verification-data.d.ts.map +1 -0
  72. package/dist/token-verification-data.js +6 -0
  73. package/dist/token-verification-data.js.map +1 -0
  74. package/dist/types.d.ts +244 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +5 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/uniswap-abis.d.ts +470 -0
  79. package/dist/uniswap-abis.d.ts.map +1 -0
  80. package/dist/uniswap-abis.js +322 -0
  81. package/dist/uniswap-abis.js.map +1 -0
  82. package/dist/uniswap-addresses.d.ts +38 -0
  83. package/dist/uniswap-addresses.d.ts.map +1 -0
  84. package/dist/uniswap-addresses.js +67 -0
  85. package/dist/uniswap-addresses.js.map +1 -0
  86. package/dist/vanity.d.ts +115 -0
  87. package/dist/vanity.d.ts.map +1 -0
  88. package/dist/vanity.js +166 -0
  89. package/dist/vanity.js.map +1 -0
  90. package/dist/verify.d.ts +88 -0
  91. package/dist/verify.d.ts.map +1 -0
  92. package/dist/verify.js +181 -0
  93. package/dist/verify.js.map +1 -0
  94. package/dist/watcher.d.ts +112 -0
  95. package/dist/watcher.d.ts.map +1 -0
  96. package/dist/watcher.js +132 -0
  97. package/dist/watcher.js.map +1 -0
  98. package/package.json +59 -0
@@ -0,0 +1,229 @@
1
+ /**
2
+ * ClawnchDeployer - Token deployment via Clanker's approved Uniswap V4 infrastructure
3
+ *
4
+ * v3: Wraps clanker-sdk/v4 internally while maintaining the Clawncher API.
5
+ * Tokens deployed through this SDK are immediately tradeable on Uniswap.
6
+ *
7
+ * Fee structure (Clanker infrastructure):
8
+ * - 1% LP fee per swap
9
+ * - 80% to reward recipients (configurable)
10
+ * - 20% protocol (Clanker)
11
+ */
12
+ import { type WalletClient, type PublicClient, type Chain, type Account, type Transport, type Hash, type Address } from 'viem';
13
+ import { type NetworkName } from './addresses.js';
14
+ /**
15
+ * Fee preference for reward recipients
16
+ */
17
+ export type FeePreference = 'Clawnch' | 'Paired' | 'Both';
18
+ /**
19
+ * Reward recipient configuration
20
+ */
21
+ export interface RewardRecipient {
22
+ recipient: Address;
23
+ admin: Address;
24
+ /** Basis points (100 = 1%, max 10000 = 100%) */
25
+ bps: number;
26
+ /** Which token to receive fees in (default: 'Clawnch' = the launched token) */
27
+ feePreference?: FeePreference;
28
+ }
29
+ /**
30
+ * Vault configuration (optional)
31
+ */
32
+ export interface VaultConfig {
33
+ /** Percentage of token supply for vault (1-90%) */
34
+ percentage: number;
35
+ /** Lockup duration in seconds (minimum 7 days = 604800) */
36
+ lockupDuration: number;
37
+ /** Vesting duration in seconds after lockup (0 = instant unlock after lockup) */
38
+ vestingDuration?: number;
39
+ /** Recipient who can claim after lockup */
40
+ recipient: Address;
41
+ }
42
+ /**
43
+ * AirdropV2 configuration (optional)
44
+ */
45
+ export interface AirdropConfig {
46
+ /** Percentage of token supply for airdrop (1-90%) */
47
+ percentage: number;
48
+ /** Admin who can update merkle root */
49
+ admin: Address;
50
+ /** Merkle root for claims (can be bytes32(0) initially) */
51
+ merkleRoot: `0x${string}`;
52
+ /** Lockup duration in seconds (minimum 1 day) */
53
+ lockupDuration: number;
54
+ /** Vesting duration in seconds (0 = instant) */
55
+ vestingDuration: number;
56
+ }
57
+ /**
58
+ * DevBuy configuration (optional - buy tokens at launch with ETH)
59
+ * Tokens are transferred immediately to recipient (no vesting)
60
+ */
61
+ export interface DevBuyConfig {
62
+ /** ETH amount to spend on dev buy */
63
+ ethAmount: bigint;
64
+ /** Recipient of purchased tokens */
65
+ recipient: Address;
66
+ }
67
+ /**
68
+ * Token metadata
69
+ */
70
+ export interface TokenMetadata {
71
+ description?: string;
72
+ socialMediaUrls?: Array<{
73
+ platform: string;
74
+ url: string;
75
+ }>;
76
+ }
77
+ /**
78
+ * Token context
79
+ */
80
+ export interface TokenContext {
81
+ interface?: string;
82
+ platform?: string;
83
+ messageId?: string;
84
+ id?: string;
85
+ }
86
+ /**
87
+ * Token deployment options
88
+ */
89
+ export interface DeployOptions {
90
+ name: string;
91
+ symbol: string;
92
+ /** Address that can update token metadata */
93
+ tokenAdmin: Address;
94
+ /** Image URL for token */
95
+ image?: string;
96
+ /** Token metadata (description, social links) */
97
+ metadata?: TokenMetadata;
98
+ /** Deployment context */
99
+ context?: TokenContext;
100
+ /** Reward configuration (who receives LP fees) */
101
+ rewards: {
102
+ recipients: RewardRecipient[];
103
+ };
104
+ /** Optional vault allocation */
105
+ vault?: VaultConfig;
106
+ /** Optional airdrop allocation */
107
+ airdrop?: AirdropConfig;
108
+ /** Optional dev buy at launch (instant transfer) */
109
+ devBuy?: DevBuyConfig;
110
+ /**
111
+ * Enable vanity address (default: true)
112
+ * Uses Clanker's remote vanity service (produces "b07" suffix)
113
+ */
114
+ vanity?: boolean;
115
+ /**
116
+ * Simulate deployment without sending transaction.
117
+ * Returns validation result and translated config.
118
+ */
119
+ dryRun?: boolean;
120
+ }
121
+ /**
122
+ * Deployment result
123
+ */
124
+ export interface DeployResult {
125
+ /** Transaction hash (undefined if error or dry run) */
126
+ txHash: Hash | undefined;
127
+ /** Wait for transaction and get token address */
128
+ waitForTransaction: () => Promise<{
129
+ address: Address | undefined;
130
+ }>;
131
+ /** Error if deployment failed */
132
+ error: Error | undefined;
133
+ }
134
+ /**
135
+ * Dry run result (returned when dryRun: true)
136
+ */
137
+ export interface DryRunResult extends DeployResult {
138
+ /** The translated Clanker config (for inspection) */
139
+ translatedConfig: Record<string, unknown>;
140
+ /** Validation passed */
141
+ valid: boolean;
142
+ /** Estimated gas (if publicClient available) */
143
+ estimatedGas?: bigint;
144
+ /** Estimated gas cost in ETH (if gas price available) */
145
+ estimatedCostEth?: string;
146
+ }
147
+ /**
148
+ * Deployer configuration
149
+ */
150
+ export interface DeployerConfig {
151
+ /** Wallet client for signing transactions */
152
+ wallet?: WalletClient<Transport, Chain, Account>;
153
+ /** Public client for reading chain data */
154
+ publicClient?: PublicClient;
155
+ /** Network to deploy on (default: 'mainnet') */
156
+ network?: NetworkName;
157
+ }
158
+ /**
159
+ * ClawnchDeployer - Deploy tokens on Base with Uniswap V4 pools
160
+ *
161
+ * v3: Deploys through Clanker's approved infrastructure for immediate
162
+ * Uniswap tradability. Same API as v2.
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * import { ClawnchDeployer } from '@clawnch/clawncher-sdk';
167
+ * import { createWalletClient, createPublicClient, http } from 'viem';
168
+ * import { privateKeyToAccount } from 'viem/accounts';
169
+ * import { base } from 'viem/chains';
170
+ *
171
+ * const account = privateKeyToAccount('0x...');
172
+ * const wallet = createWalletClient({
173
+ * account,
174
+ * chain: base,
175
+ * transport: http(),
176
+ * });
177
+ * const publicClient = createPublicClient({
178
+ * chain: base,
179
+ * transport: http(),
180
+ * });
181
+ *
182
+ * const deployer = new ClawnchDeployer({
183
+ * wallet,
184
+ * publicClient,
185
+ * network: 'mainnet',
186
+ * });
187
+ *
188
+ * const result = await deployer.deploy({
189
+ * name: 'My Token',
190
+ * symbol: 'MYTKN',
191
+ * tokenAdmin: account.address,
192
+ * rewards: {
193
+ * recipients: [{
194
+ * recipient: account.address,
195
+ * admin: account.address,
196
+ * bps: 10000,
197
+ * feePreference: 'Paired',
198
+ * }],
199
+ * },
200
+ * });
201
+ *
202
+ * const { address } = await result.waitForTransaction();
203
+ * console.log('Token deployed:', address);
204
+ * ```
205
+ */
206
+ export declare class ClawnchDeployer {
207
+ private readonly clanker;
208
+ readonly wallet?: WalletClient<Transport, Chain, Account>;
209
+ readonly publicClient?: PublicClient;
210
+ readonly network: NetworkName;
211
+ constructor(config: DeployerConfig);
212
+ /**
213
+ * Get contract addresses for configured network
214
+ */
215
+ getAddresses(): import("./addresses.js").NetworkAddresses;
216
+ /**
217
+ * Get the chain for the configured network
218
+ */
219
+ getChain(): Chain;
220
+ /**
221
+ * Check if deployer is properly configured
222
+ */
223
+ isConfigured(): boolean;
224
+ /**
225
+ * Deploy a new token
226
+ */
227
+ deploy(options: DeployOptions): Promise<DeployResult>;
228
+ }
229
+ //# sourceMappingURL=deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * ClawnchDeployer - Token deployment via Clanker's approved Uniswap V4 infrastructure
3
+ *
4
+ * v3: Wraps clanker-sdk/v4 internally while maintaining the Clawncher API.
5
+ * Tokens deployed through this SDK are immediately tradeable on Uniswap.
6
+ *
7
+ * Fee structure (Clanker infrastructure):
8
+ * - 1% LP fee per swap
9
+ * - 80% to reward recipients (configurable)
10
+ * - 20% protocol (Clanker)
11
+ */
12
+ import { formatEther, } from 'viem';
13
+ import { Clanker } from 'clanker-sdk/v4';
14
+ import { POOL_POSITIONS } from 'clanker-sdk';
15
+ import { base, baseSepolia } from 'viem/chains';
16
+ import { getAddresses, getChainId } from './addresses.js';
17
+ import { ClawnchErrorCode, ClawnchDeployError } from './errors.js';
18
+ // ============================================================================
19
+ // Internal helpers
20
+ // ============================================================================
21
+ /**
22
+ * Translate our fee preference to Clanker's token field
23
+ * Our: 'Clawnch' | 'Paired' | 'Both'
24
+ * Clanker: 'Clanker' | 'Paired' | 'Both'
25
+ */
26
+ function translateFeePreference(pref) {
27
+ switch (pref) {
28
+ case 'Clawnch': return 'Clanker';
29
+ case 'Paired': return 'Paired';
30
+ case 'Both': return 'Both';
31
+ default: return 'Clanker'; // default: receive fees in the launched token
32
+ }
33
+ }
34
+ function errorResult(code, message, cause) {
35
+ return {
36
+ txHash: undefined,
37
+ waitForTransaction: async () => ({ address: undefined }),
38
+ error: new ClawnchDeployError(code, message, cause),
39
+ };
40
+ }
41
+ // ============================================================================
42
+ // ClawnchDeployer
43
+ // ============================================================================
44
+ /**
45
+ * ClawnchDeployer - Deploy tokens on Base with Uniswap V4 pools
46
+ *
47
+ * v3: Deploys through Clanker's approved infrastructure for immediate
48
+ * Uniswap tradability. Same API as v2.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * import { ClawnchDeployer } from '@clawnch/clawncher-sdk';
53
+ * import { createWalletClient, createPublicClient, http } from 'viem';
54
+ * import { privateKeyToAccount } from 'viem/accounts';
55
+ * import { base } from 'viem/chains';
56
+ *
57
+ * const account = privateKeyToAccount('0x...');
58
+ * const wallet = createWalletClient({
59
+ * account,
60
+ * chain: base,
61
+ * transport: http(),
62
+ * });
63
+ * const publicClient = createPublicClient({
64
+ * chain: base,
65
+ * transport: http(),
66
+ * });
67
+ *
68
+ * const deployer = new ClawnchDeployer({
69
+ * wallet,
70
+ * publicClient,
71
+ * network: 'mainnet',
72
+ * });
73
+ *
74
+ * const result = await deployer.deploy({
75
+ * name: 'My Token',
76
+ * symbol: 'MYTKN',
77
+ * tokenAdmin: account.address,
78
+ * rewards: {
79
+ * recipients: [{
80
+ * recipient: account.address,
81
+ * admin: account.address,
82
+ * bps: 10000,
83
+ * feePreference: 'Paired',
84
+ * }],
85
+ * },
86
+ * });
87
+ *
88
+ * const { address } = await result.waitForTransaction();
89
+ * console.log('Token deployed:', address);
90
+ * ```
91
+ */
92
+ export class ClawnchDeployer {
93
+ clanker;
94
+ wallet;
95
+ publicClient;
96
+ network;
97
+ constructor(config) {
98
+ this.wallet = config.wallet;
99
+ this.publicClient = config.publicClient;
100
+ this.network = config.network ?? 'mainnet';
101
+ // Initialize Clanker SDK with same clients
102
+ this.clanker = new Clanker({
103
+ wallet: config.wallet,
104
+ publicClient: config.publicClient,
105
+ });
106
+ }
107
+ /**
108
+ * Get contract addresses for configured network
109
+ */
110
+ getAddresses() {
111
+ return getAddresses(this.network);
112
+ }
113
+ /**
114
+ * Get the chain for the configured network
115
+ */
116
+ getChain() {
117
+ return this.network === 'mainnet' ? base : baseSepolia;
118
+ }
119
+ /**
120
+ * Check if deployer is properly configured
121
+ */
122
+ isConfigured() {
123
+ const addresses = this.getAddresses();
124
+ return !!(addresses.clawnch.factory &&
125
+ addresses.clawnch.factory !== '0x0000000000000000000000000000000000000000' &&
126
+ this.wallet);
127
+ }
128
+ /**
129
+ * Deploy a new token
130
+ */
131
+ async deploy(options) {
132
+ if (!this.wallet) {
133
+ return errorResult(ClawnchErrorCode.WALLET_NOT_CONFIGURED, 'Wallet not configured');
134
+ }
135
+ try {
136
+ // ====================================================================
137
+ // 1. Validate inputs
138
+ // ====================================================================
139
+ if (!options.rewards.recipients.length) {
140
+ return errorResult(ClawnchErrorCode.INVALID_BPS, 'At least one reward recipient is required');
141
+ }
142
+ const totalBps = options.rewards.recipients.reduce((sum, r) => sum + r.bps, 0);
143
+ if (totalBps !== 10000) {
144
+ return errorResult(ClawnchErrorCode.INVALID_BPS, `Reward bps must sum to 10000, got ${totalBps}`);
145
+ }
146
+ if (options.vault && (options.vault.percentage < 1 || options.vault.percentage > 90)) {
147
+ return errorResult(ClawnchErrorCode.INVALID_BPS, 'Vault percentage must be between 1 and 90');
148
+ }
149
+ // ====================================================================
150
+ // 2. Build translated Clanker config
151
+ // ====================================================================
152
+ const chainId = getChainId(this.network);
153
+ // Translate reward recipients
154
+ const clankerRewards = {
155
+ recipients: options.rewards.recipients.map(r => ({
156
+ recipient: r.recipient,
157
+ admin: r.admin,
158
+ bps: r.bps,
159
+ token: translateFeePreference(r.feePreference),
160
+ })),
161
+ };
162
+ // Build base config
163
+ const clankerConfig = {
164
+ name: options.name,
165
+ symbol: options.symbol,
166
+ tokenAdmin: options.tokenAdmin,
167
+ chainId,
168
+ vanity: options.vanity !== false, // default true
169
+ rewards: clankerRewards,
170
+ fees: { type: 'static', clankerFee: 100, pairedFee: 100 },
171
+ pool: { positions: POOL_POSITIONS.Standard },
172
+ context: {
173
+ interface: 'Clawncher SDK',
174
+ ...(options.context || {}),
175
+ },
176
+ };
177
+ // Image
178
+ if (options.image) {
179
+ clankerConfig.image = options.image;
180
+ }
181
+ // Metadata
182
+ if (options.metadata) {
183
+ clankerConfig.metadata = {
184
+ description: options.metadata.description,
185
+ socialMediaUrls: options.metadata.socialMediaUrls,
186
+ };
187
+ }
188
+ // Vault
189
+ if (options.vault && options.vault.percentage > 0) {
190
+ clankerConfig.vault = {
191
+ percentage: options.vault.percentage,
192
+ lockupDuration: options.vault.lockupDuration,
193
+ vestingDuration: options.vault.vestingDuration ?? 0,
194
+ recipient: options.vault.recipient,
195
+ };
196
+ }
197
+ // Airdrop
198
+ if (options.airdrop && options.airdrop.percentage > 0) {
199
+ clankerConfig.airdrop = {
200
+ amount: options.airdrop.percentage, // Clanker uses 'amount' not 'percentage'
201
+ admin: options.airdrop.admin,
202
+ merkleRoot: options.airdrop.merkleRoot,
203
+ lockupDuration: options.airdrop.lockupDuration,
204
+ vestingDuration: options.airdrop.vestingDuration,
205
+ };
206
+ }
207
+ // DevBuy (bigint -> decimal number for Clanker)
208
+ if (options.devBuy && options.devBuy.ethAmount > 0n) {
209
+ clankerConfig.devBuy = {
210
+ ethAmount: Number(formatEther(options.devBuy.ethAmount)),
211
+ recipient: options.devBuy.recipient,
212
+ };
213
+ }
214
+ // ====================================================================
215
+ // 3. Dry run: return config without deploying
216
+ // ====================================================================
217
+ if (options.dryRun) {
218
+ const dryResult = {
219
+ txHash: undefined,
220
+ waitForTransaction: async () => ({ address: undefined }),
221
+ error: undefined,
222
+ translatedConfig: clankerConfig,
223
+ valid: true,
224
+ };
225
+ // Attempt gas estimation if publicClient is available
226
+ if (this.publicClient) {
227
+ try {
228
+ const gasPrice = await this.publicClient.getGasPrice();
229
+ // Use a conservative estimate for token deployment (~500k gas)
230
+ // Actual estimation requires simulating the factory call which
231
+ // needs the full deployment config assembled by Clanker SDK
232
+ const estimatedGas = 500000n;
233
+ dryResult.estimatedGas = estimatedGas;
234
+ dryResult.estimatedCostEth = formatEther(gasPrice * estimatedGas);
235
+ }
236
+ catch {
237
+ // Gas estimation failed, return without it
238
+ }
239
+ }
240
+ return dryResult;
241
+ }
242
+ // ====================================================================
243
+ // 4. Deploy via Clanker SDK
244
+ // ====================================================================
245
+ const result = await this.clanker.deploy(clankerConfig);
246
+ // Clanker returns { error } on the result object instead of throwing
247
+ if (result.error) {
248
+ const cause = result.error instanceof Error ? result.error : undefined;
249
+ const errMsg = cause ? cause.message : String(result.error);
250
+ return errorResult(ClawnchErrorCode.DEPLOY_FAILED, errMsg, cause);
251
+ }
252
+ return {
253
+ txHash: result.txHash,
254
+ waitForTransaction: async () => {
255
+ if (!result.waitForTransaction) {
256
+ return { address: undefined };
257
+ }
258
+ // ClankerResult<{ address }> resolves to either:
259
+ // { address: '0x...', error?: undefined } — success
260
+ // { address?: undefined, error: ClankerError } — failure
261
+ const txResult = await result.waitForTransaction();
262
+ if (txResult && typeof txResult === 'object' && 'error' in txResult && txResult.error) {
263
+ const cause = txResult.error instanceof Error ? txResult.error : undefined;
264
+ const msg = cause ? cause.message : String(txResult.error);
265
+ throw new ClawnchDeployError(ClawnchErrorCode.TX_REVERTED, `Transaction failed: ${msg}`, cause);
266
+ }
267
+ if (txResult && typeof txResult === 'object' && 'address' in txResult) {
268
+ return { address: txResult.address };
269
+ }
270
+ return { address: undefined };
271
+ },
272
+ error: undefined,
273
+ };
274
+ }
275
+ catch (err) {
276
+ // If it's already a ClawnchDeployError, preserve it
277
+ if (err instanceof ClawnchDeployError) {
278
+ return {
279
+ txHash: undefined,
280
+ waitForTransaction: async () => ({ address: undefined }),
281
+ error: err,
282
+ };
283
+ }
284
+ // Classify common RPC/network errors
285
+ const errMsg = err instanceof Error ? err.message : String(err);
286
+ const cause = err instanceof Error ? err : undefined;
287
+ let code = ClawnchErrorCode.DEPLOY_FAILED;
288
+ if (errMsg.includes('insufficient funds') || errMsg.includes('exceeds balance')) {
289
+ code = ClawnchErrorCode.INSUFFICIENT_FUNDS;
290
+ }
291
+ else if (errMsg.includes('timeout') || errMsg.includes('ETIMEDOUT')) {
292
+ code = ClawnchErrorCode.TIMEOUT;
293
+ }
294
+ else if (errMsg.includes('could not coalesce') || errMsg.includes('missing revert data') || errMsg.includes('RPC')) {
295
+ code = ClawnchErrorCode.RPC_ERROR;
296
+ }
297
+ return {
298
+ txHash: undefined,
299
+ waitForTransaction: async () => ({ address: undefined }),
300
+ error: new ClawnchDeployError(code, errMsg, cause),
301
+ };
302
+ }
303
+ }
304
+ }
305
+ //# sourceMappingURL=deployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * ERC-8004 Types
3
+ *
4
+ * ERC-8004 is a protocol for discovering and trusting AI agents across organizational boundaries.
5
+ * https://eips.ethereum.org/EIPS/eip-8004
6
+ */
7
+ export type ERC8004TrustModels = 'reputation' | 'crypto-economic' | 'tee-attestation';
8
+ export type ERC8004ChainId = 'eip155:1' | 'eip155:11155111' | 'eip155:8453' | 'eip155:84532' | 'eip155:59144' | 'eip155:11155420' | 'eip155:80002' | 'solana:101' | 'solana:102';
9
+ export interface ERC8004Endpoint {
10
+ name: string;
11
+ endpoint: string;
12
+ version?: string;
13
+ description?: string;
14
+ }
15
+ export interface ERC8004Wallet {
16
+ chain: ERC8004ChainId;
17
+ address: string;
18
+ description?: string;
19
+ }
20
+ export interface ERC8004Registration {
21
+ agentId: number;
22
+ agentRegistry: ERC8004ChainId;
23
+ timestamp: string;
24
+ blockNumber?: number;
25
+ transactionHash?: string;
26
+ }
27
+ export interface ERC8004Skill {
28
+ namespace: string;
29
+ skill: string;
30
+ domain?: string;
31
+ }
32
+ export interface ERC8004Domain {
33
+ category: string;
34
+ subcategory?: string;
35
+ }
36
+ export interface ERC8004ReputationScore {
37
+ overall: number;
38
+ totalRatings: number;
39
+ breakdown?: {
40
+ reliability?: number;
41
+ quality?: number;
42
+ responsiveness?: number;
43
+ };
44
+ }
45
+ export interface ERC8004Agent {
46
+ id: string;
47
+ name: string;
48
+ description: string;
49
+ image: string;
50
+ active: boolean;
51
+ endpoints: ERC8004Endpoint[];
52
+ wallets: ERC8004Wallet[];
53
+ registrations: ERC8004Registration[];
54
+ supportedTrust: ERC8004TrustModels[];
55
+ skills?: ERC8004Skill[];
56
+ domains?: ERC8004Domain[];
57
+ reputation?: ERC8004ReputationScore;
58
+ metadata?: Record<string, unknown>;
59
+ }
60
+ export interface ERC8004AgentCard {
61
+ name: string;
62
+ description: string;
63
+ url: string;
64
+ version: string;
65
+ capabilities?: {
66
+ streaming?: boolean;
67
+ pushNotifications?: boolean;
68
+ };
69
+ defaultApiVersion?: string;
70
+ skills?: string[];
71
+ }
72
+ export interface ERC8004SearchFilters {
73
+ name?: string;
74
+ active?: boolean;
75
+ trustModel?: ERC8004TrustModels;
76
+ chainId?: ERC8004ChainId;
77
+ skills?: string[];
78
+ domains?: string[];
79
+ limit?: number;
80
+ offset?: number;
81
+ }
82
+ export interface ERC8004SearchResult {
83
+ agents: ERC8004Agent[];
84
+ total: number;
85
+ hasMore: boolean;
86
+ }
87
+ export interface ERC8004RegistryConfig {
88
+ chainId: ERC8004ChainId;
89
+ identityRegistryAddress: string;
90
+ reputationRegistryAddress?: string;
91
+ validationRegistryAddress?: string;
92
+ blockNumber?: number;
93
+ }
94
+ //# sourceMappingURL=erc8004-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc8004-types.d.ts","sourceRoot":"","sources":["../src/erc8004-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ERC-8004 Types
3
+ *
4
+ * ERC-8004 is a protocol for discovering and trusting AI agents across organizational boundaries.
5
+ * https://eips.ethereum.org/EIPS/eip-8004
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=erc8004-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc8004-types.js","sourceRoot":"","sources":["../src/erc8004-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}