@vleap/warps-adapter-solana 0.1.0-beta.5 → 0.1.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +112 -85
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -81
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WarpChainAsset, AdapterFactory, WarpChain, WarpChainEnv, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpOutput, Warp, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpNativeValue, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WarpAdapterGenericTransaction } from '@vleap/warps';
|
|
1
|
+
import { WarpChainAsset, AdapterFactory, WarpChain, WarpChainEnv, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpOutput, Warp, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpNativeValue, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WalletProvider, WarpAdapterGenericTransaction } from '@vleap/warps';
|
|
2
2
|
import { Transaction } from '@solana/web3.js';
|
|
3
3
|
|
|
4
4
|
declare const NativeTokenSol: WarpChainAsset;
|
|
@@ -166,7 +166,11 @@ declare class WarpSolanaWallet implements AdapterWarpWallet {
|
|
|
166
166
|
private config;
|
|
167
167
|
private chain;
|
|
168
168
|
private connection;
|
|
169
|
-
|
|
169
|
+
private walletProvider;
|
|
170
|
+
private cachedAddress;
|
|
171
|
+
private cachedPublicKey;
|
|
172
|
+
constructor(config: WarpClientConfig, chain: WarpChainInfo, walletProvider?: WalletProvider);
|
|
173
|
+
private initializeCache;
|
|
170
174
|
signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
|
|
171
175
|
signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]>;
|
|
172
176
|
signMessage(message: string): Promise<string>;
|
|
@@ -184,7 +188,6 @@ declare class WarpSolanaWallet implements AdapterWarpWallet {
|
|
|
184
188
|
};
|
|
185
189
|
getAddress(): string | null;
|
|
186
190
|
getPublicKey(): string | null;
|
|
187
|
-
private getKeypair;
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
export { type ExplorerName, ExplorerUrls, KnownTokens, NativeTokenSol, SolanaExplorerMap, SolanaExplorerNames, SolanaExplorerUrls, SolanaExplorers, type TokenBalance, type TokenMetadata, WarpSolanaConstants, WarpSolanaDataLoader, WarpSolanaExecutor, WarpSolanaExplorer, WarpSolanaOutput, WarpSolanaSerializer, WarpSolanaWallet, findKnownTokenById, getKnownTokensForChain, getSolanaAdapter };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { WarpChainAsset, AdapterFactory, WarpChain, WarpChainEnv, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpOutput, Warp, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpNativeValue, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WarpAdapterGenericTransaction } from '@vleap/warps';
|
|
1
|
+
import { WarpChainAsset, AdapterFactory, WarpChain, WarpChainEnv, AdapterWarpDataLoader, WarpClientConfig, WarpChainInfo, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpOutput, Warp, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpNativeValue, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WalletProvider, WarpAdapterGenericTransaction } from '@vleap/warps';
|
|
2
2
|
import { Transaction } from '@solana/web3.js';
|
|
3
3
|
|
|
4
4
|
declare const NativeTokenSol: WarpChainAsset;
|
|
@@ -166,7 +166,11 @@ declare class WarpSolanaWallet implements AdapterWarpWallet {
|
|
|
166
166
|
private config;
|
|
167
167
|
private chain;
|
|
168
168
|
private connection;
|
|
169
|
-
|
|
169
|
+
private walletProvider;
|
|
170
|
+
private cachedAddress;
|
|
171
|
+
private cachedPublicKey;
|
|
172
|
+
constructor(config: WarpClientConfig, chain: WarpChainInfo, walletProvider?: WalletProvider);
|
|
173
|
+
private initializeCache;
|
|
170
174
|
signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
|
|
171
175
|
signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]>;
|
|
172
176
|
signMessage(message: string): Promise<string>;
|
|
@@ -184,7 +188,6 @@ declare class WarpSolanaWallet implements AdapterWarpWallet {
|
|
|
184
188
|
};
|
|
185
189
|
getAddress(): string | null;
|
|
186
190
|
getPublicKey(): string | null;
|
|
187
|
-
private getKeypair;
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
export { type ExplorerName, ExplorerUrls, KnownTokens, NativeTokenSol, SolanaExplorerMap, SolanaExplorerNames, SolanaExplorerUrls, SolanaExplorers, type TokenBalance, type TokenMetadata, WarpSolanaConstants, WarpSolanaDataLoader, WarpSolanaExecutor, WarpSolanaExplorer, WarpSolanaOutput, WarpSolanaSerializer, WarpSolanaWallet, findKnownTokenById, getKnownTokensForChain, getSolanaAdapter };
|
package/dist/index.js
CHANGED
|
@@ -51,7 +51,7 @@ __export(index_exports, {
|
|
|
51
51
|
module.exports = __toCommonJS(index_exports);
|
|
52
52
|
|
|
53
53
|
// src/chains/solana.ts
|
|
54
|
-
var
|
|
54
|
+
var import_warps8 = require("@vleap/warps");
|
|
55
55
|
|
|
56
56
|
// src/WarpSolanaDataLoader.ts
|
|
57
57
|
var import_warps2 = require("@vleap/warps");
|
|
@@ -1271,20 +1271,41 @@ var WarpSolanaExplorer = class {
|
|
|
1271
1271
|
};
|
|
1272
1272
|
|
|
1273
1273
|
// src/WarpSolanaWallet.ts
|
|
1274
|
-
var
|
|
1274
|
+
var bip392 = __toESM(require("@scure/bip39"), 1);
|
|
1275
|
+
var import_english = require("@scure/bip39/wordlists/english.js");
|
|
1276
|
+
var import_web36 = require("@solana/web3.js");
|
|
1277
|
+
var import_warps7 = require("@vleap/warps");
|
|
1278
|
+
var import_bs583 = __toESM(require("bs58"), 1);
|
|
1279
|
+
|
|
1280
|
+
// src/providers/SolanaWalletProvider.ts
|
|
1275
1281
|
var import_web35 = require("@solana/web3.js");
|
|
1276
1282
|
var bip39 = __toESM(require("@scure/bip39"), 1);
|
|
1277
|
-
var import_english = require("@scure/bip39/wordlists/english.js");
|
|
1278
1283
|
var import_bs582 = __toESM(require("bs58"), 1);
|
|
1279
|
-
var
|
|
1280
|
-
|
|
1284
|
+
var import_warps6 = require("@vleap/warps");
|
|
1285
|
+
var SolanaWalletProvider = class {
|
|
1286
|
+
constructor(config, chain, connection) {
|
|
1281
1287
|
this.config = config;
|
|
1282
1288
|
this.chain = chain;
|
|
1283
|
-
|
|
1284
|
-
this.
|
|
1289
|
+
this.connection = connection;
|
|
1290
|
+
this.keypair = null;
|
|
1291
|
+
}
|
|
1292
|
+
async getAddress() {
|
|
1293
|
+
try {
|
|
1294
|
+
const keypair = this.getKeypair();
|
|
1295
|
+
return keypair.publicKey.toBase58();
|
|
1296
|
+
} catch {
|
|
1297
|
+
return null;
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
async getPublicKey() {
|
|
1301
|
+
try {
|
|
1302
|
+
const keypair = this.getKeypair();
|
|
1303
|
+
return keypair.publicKey.toBase58();
|
|
1304
|
+
} catch {
|
|
1305
|
+
return null;
|
|
1306
|
+
}
|
|
1285
1307
|
}
|
|
1286
1308
|
async signTransaction(tx) {
|
|
1287
|
-
if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
|
|
1288
1309
|
const keypair = this.getKeypair();
|
|
1289
1310
|
if (tx instanceof import_web35.VersionedTransaction) {
|
|
1290
1311
|
tx.sign([keypair]);
|
|
@@ -1311,28 +1332,6 @@ var WarpSolanaWallet = class {
|
|
|
1311
1332
|
}
|
|
1312
1333
|
throw new Error("Invalid transaction format");
|
|
1313
1334
|
}
|
|
1314
|
-
async signTransactions(txs) {
|
|
1315
|
-
if (txs.length === 0) return [];
|
|
1316
|
-
const keypair = this.getKeypair();
|
|
1317
|
-
return Promise.all(
|
|
1318
|
-
txs.map(async (tx) => {
|
|
1319
|
-
if (tx instanceof import_web35.VersionedTransaction) {
|
|
1320
|
-
tx.sign([keypair]);
|
|
1321
|
-
return tx;
|
|
1322
|
-
}
|
|
1323
|
-
if (tx instanceof import_web35.Transaction) {
|
|
1324
|
-
tx.sign(keypair);
|
|
1325
|
-
return tx;
|
|
1326
|
-
}
|
|
1327
|
-
if (tx.transaction && typeof tx.transaction === "object") {
|
|
1328
|
-
const transaction = import_web35.Transaction.from(tx.transaction);
|
|
1329
|
-
transaction.sign(keypair);
|
|
1330
|
-
return { ...tx, transaction: transaction.serialize() };
|
|
1331
|
-
}
|
|
1332
|
-
throw new Error("Invalid transaction format");
|
|
1333
|
-
})
|
|
1334
|
-
);
|
|
1335
|
-
}
|
|
1336
1335
|
async signMessage(message) {
|
|
1337
1336
|
const keypair = this.getKeypair();
|
|
1338
1337
|
const messageBytes = new TextEncoder().encode(message);
|
|
@@ -1349,26 +1348,90 @@ var WarpSolanaWallet = class {
|
|
|
1349
1348
|
const signature = nacl.sign.detached(messageBytes, privateKeyBytes);
|
|
1350
1349
|
return import_bs582.default.encode(signature);
|
|
1351
1350
|
}
|
|
1351
|
+
getKeypairInstance() {
|
|
1352
|
+
return this.getKeypair();
|
|
1353
|
+
}
|
|
1354
|
+
getKeypair() {
|
|
1355
|
+
if (this.keypair) return this.keypair;
|
|
1356
|
+
const privateKey = (0, import_warps6.getWarpWalletPrivateKeyFromConfig)(this.config, this.chain.name);
|
|
1357
|
+
if (privateKey) {
|
|
1358
|
+
try {
|
|
1359
|
+
const secretKey = import_bs582.default.decode(privateKey);
|
|
1360
|
+
if (secretKey.length === 64) {
|
|
1361
|
+
this.keypair = import_web35.Keypair.fromSecretKey(secretKey);
|
|
1362
|
+
return this.keypair;
|
|
1363
|
+
} else if (secretKey.length === 32) {
|
|
1364
|
+
this.keypair = import_web35.Keypair.fromSeed(secretKey);
|
|
1365
|
+
return this.keypair;
|
|
1366
|
+
} else {
|
|
1367
|
+
throw new Error(`Invalid private key length: expected 32 or 64 bytes, got ${secretKey.length}`);
|
|
1368
|
+
}
|
|
1369
|
+
} catch (error) {
|
|
1370
|
+
if (error instanceof Error) {
|
|
1371
|
+
throw new Error(`Invalid private key format: ${error.message}`);
|
|
1372
|
+
}
|
|
1373
|
+
throw new Error("Invalid private key format");
|
|
1374
|
+
}
|
|
1375
|
+
}
|
|
1376
|
+
const mnemonic = (0, import_warps6.getWarpWalletMnemonicFromConfig)(this.config, this.chain.name);
|
|
1377
|
+
if (mnemonic) {
|
|
1378
|
+
const seed = bip39.mnemonicToSeedSync(mnemonic);
|
|
1379
|
+
this.keypair = import_web35.Keypair.fromSeed(seed.slice(0, 32));
|
|
1380
|
+
return this.keypair;
|
|
1381
|
+
}
|
|
1382
|
+
throw new Error("No private key or mnemonic provided");
|
|
1383
|
+
}
|
|
1384
|
+
};
|
|
1385
|
+
|
|
1386
|
+
// src/WarpSolanaWallet.ts
|
|
1387
|
+
var WarpSolanaWallet = class {
|
|
1388
|
+
constructor(config, chain, walletProvider) {
|
|
1389
|
+
this.config = config;
|
|
1390
|
+
this.chain = chain;
|
|
1391
|
+
this.cachedAddress = null;
|
|
1392
|
+
this.cachedPublicKey = null;
|
|
1393
|
+
const providerConfig = (0, import_warps7.getProviderConfig)(config, chain.name, config.env, chain.defaultApiUrl);
|
|
1394
|
+
this.connection = new import_web36.Connection(providerConfig.url, "confirmed");
|
|
1395
|
+
this.walletProvider = walletProvider || new SolanaWalletProvider(config, chain, this.connection);
|
|
1396
|
+
this.initializeCache();
|
|
1397
|
+
}
|
|
1398
|
+
initializeCache() {
|
|
1399
|
+
(0, import_warps7.initializeWalletCache)(this.walletProvider).then((cache) => {
|
|
1400
|
+
this.cachedAddress = cache.address;
|
|
1401
|
+
this.cachedPublicKey = cache.publicKey;
|
|
1402
|
+
});
|
|
1403
|
+
}
|
|
1404
|
+
async signTransaction(tx) {
|
|
1405
|
+
if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
|
|
1406
|
+
return await this.walletProvider.signTransaction(tx);
|
|
1407
|
+
}
|
|
1408
|
+
async signTransactions(txs) {
|
|
1409
|
+
if (txs.length === 0) return [];
|
|
1410
|
+
return Promise.all(txs.map(async (tx) => this.signTransaction(tx)));
|
|
1411
|
+
}
|
|
1412
|
+
async signMessage(message) {
|
|
1413
|
+
return await this.walletProvider.signMessage(message);
|
|
1414
|
+
}
|
|
1352
1415
|
async sendTransaction(tx) {
|
|
1353
1416
|
if (!tx || typeof tx !== "object") throw new Error("Invalid transaction object");
|
|
1354
1417
|
let transaction;
|
|
1355
|
-
if (tx instanceof
|
|
1418
|
+
if (tx instanceof import_web36.VersionedTransaction) {
|
|
1356
1419
|
transaction = tx;
|
|
1357
|
-
} else if (tx instanceof
|
|
1420
|
+
} else if (tx instanceof import_web36.Transaction) {
|
|
1358
1421
|
transaction = tx;
|
|
1359
1422
|
} else if (tx.transaction) {
|
|
1360
|
-
if (tx.transaction instanceof
|
|
1423
|
+
if (tx.transaction instanceof import_web36.Transaction) {
|
|
1361
1424
|
transaction = tx.transaction;
|
|
1362
|
-
} else if (tx.transaction instanceof
|
|
1425
|
+
} else if (tx.transaction instanceof import_web36.VersionedTransaction) {
|
|
1363
1426
|
transaction = tx.transaction;
|
|
1364
1427
|
} else if (typeof tx.transaction === "object") {
|
|
1365
1428
|
try {
|
|
1366
|
-
transaction =
|
|
1429
|
+
transaction = import_web36.Transaction.from(tx.transaction);
|
|
1367
1430
|
} catch {
|
|
1368
1431
|
throw new Error("Invalid transaction format");
|
|
1369
1432
|
}
|
|
1370
1433
|
} else if (Buffer.isBuffer(tx.transaction) || typeof tx.transaction === "string") {
|
|
1371
|
-
transaction =
|
|
1434
|
+
transaction = import_web36.Transaction.from(tx.transaction);
|
|
1372
1435
|
} else {
|
|
1373
1436
|
throw new Error("Transaction must be signed before sending");
|
|
1374
1437
|
}
|
|
@@ -1385,65 +1448,29 @@ var WarpSolanaWallet = class {
|
|
|
1385
1448
|
return Promise.all(txs.map(async (tx) => this.sendTransaction(tx)));
|
|
1386
1449
|
}
|
|
1387
1450
|
create(mnemonic) {
|
|
1388
|
-
const seed =
|
|
1389
|
-
const keypair =
|
|
1451
|
+
const seed = bip392.mnemonicToSeedSync(mnemonic);
|
|
1452
|
+
const keypair = import_web36.Keypair.fromSeed(seed.slice(0, 32));
|
|
1390
1453
|
return {
|
|
1391
1454
|
address: keypair.publicKey.toBase58(),
|
|
1392
|
-
privateKey:
|
|
1455
|
+
privateKey: import_bs583.default.encode(keypair.secretKey),
|
|
1393
1456
|
mnemonic
|
|
1394
1457
|
};
|
|
1395
1458
|
}
|
|
1396
1459
|
generate() {
|
|
1397
|
-
const keypair =
|
|
1460
|
+
const keypair = import_web36.Keypair.generate();
|
|
1398
1461
|
const entropy = keypair.secretKey.slice(0, 16);
|
|
1399
|
-
const mnemonic =
|
|
1462
|
+
const mnemonic = bip392.entropyToMnemonic(entropy, import_english.wordlist);
|
|
1400
1463
|
return {
|
|
1401
1464
|
address: keypair.publicKey.toBase58(),
|
|
1402
|
-
privateKey:
|
|
1465
|
+
privateKey: import_bs583.default.encode(keypair.secretKey),
|
|
1403
1466
|
mnemonic
|
|
1404
1467
|
};
|
|
1405
1468
|
}
|
|
1406
1469
|
getAddress() {
|
|
1407
|
-
|
|
1408
|
-
const keypair = this.getKeypair();
|
|
1409
|
-
return keypair.publicKey.toBase58();
|
|
1410
|
-
} catch {
|
|
1411
|
-
return null;
|
|
1412
|
-
}
|
|
1470
|
+
return this.cachedAddress;
|
|
1413
1471
|
}
|
|
1414
1472
|
getPublicKey() {
|
|
1415
|
-
|
|
1416
|
-
const keypair = this.getKeypair();
|
|
1417
|
-
return keypair.publicKey.toBase58();
|
|
1418
|
-
} catch {
|
|
1419
|
-
return null;
|
|
1420
|
-
}
|
|
1421
|
-
}
|
|
1422
|
-
getKeypair() {
|
|
1423
|
-
const privateKey = (0, import_warps6.getWarpWalletPrivateKeyFromConfig)(this.config, this.chain.name);
|
|
1424
|
-
if (privateKey) {
|
|
1425
|
-
try {
|
|
1426
|
-
const secretKey = import_bs582.default.decode(privateKey);
|
|
1427
|
-
if (secretKey.length === 64) {
|
|
1428
|
-
return import_web35.Keypair.fromSecretKey(secretKey);
|
|
1429
|
-
} else if (secretKey.length === 32) {
|
|
1430
|
-
return import_web35.Keypair.fromSeed(secretKey);
|
|
1431
|
-
} else {
|
|
1432
|
-
throw new Error(`Invalid private key length: expected 32 or 64 bytes, got ${secretKey.length}`);
|
|
1433
|
-
}
|
|
1434
|
-
} catch (error) {
|
|
1435
|
-
if (error instanceof Error) {
|
|
1436
|
-
throw new Error(`Invalid private key format: ${error.message}`);
|
|
1437
|
-
}
|
|
1438
|
-
throw new Error("Invalid private key format");
|
|
1439
|
-
}
|
|
1440
|
-
}
|
|
1441
|
-
const mnemonic = (0, import_warps6.getWarpWalletMnemonicFromConfig)(this.config, this.chain.name);
|
|
1442
|
-
if (mnemonic) {
|
|
1443
|
-
const seed = bip39.mnemonicToSeedSync(mnemonic);
|
|
1444
|
-
return import_web35.Keypair.fromSeed(seed.slice(0, 32));
|
|
1445
|
-
}
|
|
1446
|
-
throw new Error("No private key or mnemonic provided");
|
|
1473
|
+
return this.cachedPublicKey;
|
|
1447
1474
|
}
|
|
1448
1475
|
};
|
|
1449
1476
|
|
|
@@ -1469,16 +1496,16 @@ var createSolanaAdapter = (chainName, chainInfos) => {
|
|
|
1469
1496
|
|
|
1470
1497
|
// src/chains/solana.ts
|
|
1471
1498
|
var NativeTokenSol = {
|
|
1472
|
-
chain:
|
|
1499
|
+
chain: import_warps8.WarpChainName.Solana,
|
|
1473
1500
|
identifier: "SOL",
|
|
1474
1501
|
symbol: "SOL",
|
|
1475
1502
|
name: "Solana",
|
|
1476
1503
|
decimals: 9,
|
|
1477
1504
|
logoUrl: "https://joai.ai/images/tokens/sol.svg"
|
|
1478
1505
|
};
|
|
1479
|
-
var getSolanaAdapter = createSolanaAdapter(
|
|
1506
|
+
var getSolanaAdapter = createSolanaAdapter(import_warps8.WarpChainName.Solana, {
|
|
1480
1507
|
mainnet: {
|
|
1481
|
-
name:
|
|
1508
|
+
name: import_warps8.WarpChainName.Solana,
|
|
1482
1509
|
displayName: "Solana Mainnet",
|
|
1483
1510
|
chainId: "101",
|
|
1484
1511
|
blockTime: 400,
|
|
@@ -1488,7 +1515,7 @@ var getSolanaAdapter = createSolanaAdapter(import_warps7.WarpChainName.Solana, {
|
|
|
1488
1515
|
nativeToken: NativeTokenSol
|
|
1489
1516
|
},
|
|
1490
1517
|
testnet: {
|
|
1491
|
-
name:
|
|
1518
|
+
name: import_warps8.WarpChainName.Solana,
|
|
1492
1519
|
displayName: "Solana Testnet",
|
|
1493
1520
|
chainId: "103",
|
|
1494
1521
|
blockTime: 400,
|
|
@@ -1498,7 +1525,7 @@ var getSolanaAdapter = createSolanaAdapter(import_warps7.WarpChainName.Solana, {
|
|
|
1498
1525
|
nativeToken: NativeTokenSol
|
|
1499
1526
|
},
|
|
1500
1527
|
devnet: {
|
|
1501
|
-
name:
|
|
1528
|
+
name: import_warps8.WarpChainName.Solana,
|
|
1502
1529
|
displayName: "Solana Devnet",
|
|
1503
1530
|
chainId: "103",
|
|
1504
1531
|
blockTime: 400,
|