@vleap/warps-adapter-solana 0.1.0-beta.1 → 0.1.0-beta.2

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.js CHANGED
@@ -50,8 +50,11 @@ __export(index_exports, {
50
50
  });
51
51
  module.exports = __toCommonJS(index_exports);
52
52
 
53
+ // src/chains/solana.ts
54
+ var import_warps7 = require("@vleap/warps");
55
+
53
56
  // src/WarpSolanaDataLoader.ts
54
- var import_warps = require("@vleap/warps");
57
+ var import_warps2 = require("@vleap/warps");
55
58
  var import_web3 = require("@solana/web3.js");
56
59
  var import_spl_token = require("@solana/spl-token");
57
60
 
@@ -111,7 +114,8 @@ var SolanaExplorerNames = {
111
114
  var SolanaExplorerUrls = ExplorerUrls;
112
115
 
113
116
  // src/tokens/solana.ts
114
- var SolanaChain = "solana";
117
+ var import_warps = require("@vleap/warps");
118
+ var SolanaChain = import_warps.WarpChainName.Solana;
115
119
  var SolanaTokens = [
116
120
  {
117
121
  chain: SolanaChain,
@@ -168,9 +172,9 @@ var WarpSolanaDataLoader = class {
168
172
  constructor(config, chain) {
169
173
  this.config = config;
170
174
  this.chain = chain;
171
- const providerConfig = (0, import_warps.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
175
+ const providerConfig = (0, import_warps2.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
172
176
  this.connection = new import_web3.Connection(providerConfig.url, "confirmed");
173
- this.cache = new import_warps.WarpCache(config.cache?.type);
177
+ this.cache = new import_warps2.WarpCache(config.cache?.type);
174
178
  }
175
179
  async getAccount(address) {
176
180
  try {
@@ -213,7 +217,7 @@ var WarpSolanaDataLoader = class {
213
217
  if (identifier === this.chain.nativeToken.identifier || identifier === "SOL") {
214
218
  return this.chain.nativeToken;
215
219
  }
216
- const cacheKey = import_warps.WarpCacheKey.Asset(this.config.env, this.chain.name, identifier);
220
+ const cacheKey = import_warps2.WarpCacheKey.Asset(this.config.env, this.chain.name, identifier);
217
221
  const cachedAsset = this.cache.get(cacheKey);
218
222
  if (cachedAsset) {
219
223
  return cachedAsset;
@@ -241,7 +245,7 @@ var WarpSolanaDataLoader = class {
241
245
  decimals: metadata.decimals,
242
246
  logoUrl: metadata.logoUrl
243
247
  };
244
- this.cache.set(cacheKey, asset, import_warps.CacheTtl.OneHour);
248
+ this.cache.set(cacheKey, asset, import_warps2.CacheTtl.OneHour);
245
249
  return asset;
246
250
  } catch (error) {
247
251
  return null;
@@ -372,21 +376,21 @@ var WarpSolanaDataLoader = class {
372
376
  };
373
377
 
374
378
  // src/WarpSolanaExecutor.ts
375
- var import_warps4 = require("@vleap/warps");
379
+ var import_warps5 = require("@vleap/warps");
376
380
  var import_web34 = require("@solana/web3.js");
377
381
  var import_spl_token2 = require("@solana/spl-token");
378
382
 
379
383
  // src/WarpSolanaOutput.ts
380
- var import_warps3 = require("@vleap/warps");
384
+ var import_warps4 = require("@vleap/warps");
381
385
  var import_web33 = require("@solana/web3.js");
382
386
 
383
387
  // src/WarpSolanaSerializer.ts
384
- var import_warps2 = require("@vleap/warps");
388
+ var import_warps3 = require("@vleap/warps");
385
389
  var import_web32 = require("@solana/web3.js");
386
390
  var import_bs58 = __toESM(require("bs58"), 1);
387
391
  var WarpSolanaSerializer = class {
388
392
  constructor() {
389
- this.coreSerializer = new import_warps2.WarpSerializer();
393
+ this.coreSerializer = new import_warps3.WarpSerializer();
390
394
  }
391
395
  typedToString(value) {
392
396
  if (value && typeof value === "object" && "toBase58" in value && typeof value.toBase58 === "function") {
@@ -431,15 +435,15 @@ var WarpSolanaSerializer = class {
431
435
  if (typeof value === "object" && value !== null && "identifier" in value && "amount" in value) {
432
436
  const asset = value;
433
437
  if (asset.decimals !== void 0) {
434
- return `asset:${asset.identifier}${import_warps2.WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}${import_warps2.WarpConstants.ArgCompositeSeparator}${asset.decimals}`;
438
+ return `asset:${asset.identifier}${import_warps3.WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}${import_warps3.WarpConstants.ArgCompositeSeparator}${asset.decimals}`;
435
439
  }
436
- return `asset:${asset.identifier}${import_warps2.WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}`;
440
+ return `asset:${asset.identifier}${import_warps3.WarpConstants.ArgCompositeSeparator}${asset.amount.toString()}`;
437
441
  }
438
442
  if (Array.isArray(value)) {
439
443
  if (value.length === 0) return `list:string:`;
440
- const types = value.map((item) => this.typedToString(item).split(import_warps2.WarpConstants.ArgParamsSeparator)[0]);
444
+ const types = value.map((item) => this.typedToString(item).split(import_warps3.WarpConstants.ArgParamsSeparator)[0]);
441
445
  const type = types[0];
442
- const values = value.map((item) => this.typedToString(item).split(import_warps2.WarpConstants.ArgParamsSeparator)[1]);
446
+ const values = value.map((item) => this.typedToString(item).split(import_warps3.WarpConstants.ArgParamsSeparator)[1]);
443
447
  return `list:${type}:${values.join(",")}`;
444
448
  }
445
449
  if (value === null || value === void 0) {
@@ -449,8 +453,8 @@ var WarpSolanaSerializer = class {
449
453
  }
450
454
  typedToNative(value) {
451
455
  const stringValue = this.typedToString(value);
452
- const [type, ...valueParts] = stringValue.split(import_warps2.WarpConstants.ArgParamsSeparator);
453
- const nativeValue = valueParts.join(import_warps2.WarpConstants.ArgParamsSeparator);
456
+ const [type, ...valueParts] = stringValue.split(import_warps3.WarpConstants.ArgParamsSeparator);
457
+ const nativeValue = valueParts.join(import_warps3.WarpConstants.ArgParamsSeparator);
454
458
  return [type, this.parseNativeValue(type, nativeValue)];
455
459
  }
456
460
  nativeToTyped(type, value) {
@@ -506,7 +510,7 @@ var WarpSolanaSerializer = class {
506
510
  }
507
511
  }
508
512
  stringToTyped(value) {
509
- const parts = value.split(import_warps2.WarpConstants.ArgParamsSeparator, 2);
513
+ const parts = value.split(import_warps3.WarpConstants.ArgParamsSeparator, 2);
510
514
  if (parts.length < 2) {
511
515
  return value;
512
516
  }
@@ -528,7 +532,7 @@ var WarpSolanaSerializer = class {
528
532
  case "hex":
529
533
  return stringValue;
530
534
  case "asset":
531
- const assetParts = stringValue.split(import_warps2.WarpConstants.ArgCompositeSeparator);
535
+ const assetParts = stringValue.split(import_warps3.WarpConstants.ArgCompositeSeparator);
532
536
  const identifier = assetParts[0] || "";
533
537
  const amount = assetParts[1] ? BigInt(assetParts[1]) : 0n;
534
538
  const decimals = assetParts[2] ? parseInt(assetParts[2], 10) : void 0;
@@ -571,13 +575,13 @@ var WarpSolanaOutput = class {
571
575
  this.config = config;
572
576
  this.chain = chain;
573
577
  this.serializer = new WarpSolanaSerializer();
574
- const providerConfig = (0, import_warps3.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
578
+ const providerConfig = (0, import_warps4.getProviderConfig)(this.config, this.chain.name, this.config.env, this.chain.defaultApiUrl);
575
579
  this.connection = new import_web33.Connection(providerConfig.url, "confirmed");
576
- this.cache = new import_warps3.WarpCache(config.cache?.type);
580
+ this.cache = new import_warps4.WarpCache(config.cache?.type);
577
581
  }
578
582
  async getActionExecution(warp, actionIndex, tx) {
579
- const inputs = this.cache.get(import_warps3.WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || "", actionIndex)) ?? [];
580
- const resolvedInputs = (0, import_warps3.extractResolvedInputValues)(inputs);
583
+ const inputs = this.cache.get(import_warps4.WarpCacheKey.WarpExecutable(this.config.env, warp.meta?.hash || "", actionIndex)) ?? [];
584
+ const resolvedInputs = (0, import_warps4.extractResolvedInputValues)(inputs);
581
585
  if (!tx) {
582
586
  return this.createFailedExecution(warp, actionIndex, resolvedInputs);
583
587
  }
@@ -594,7 +598,7 @@ var WarpSolanaOutput = class {
594
598
  status: "error",
595
599
  warp,
596
600
  action: actionIndex,
597
- user: (0, import_warps3.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
601
+ user: (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
598
602
  txHash: "",
599
603
  tx: null,
600
604
  next: null,
@@ -616,7 +620,7 @@ var WarpSolanaOutput = class {
616
620
  status: success ? "success" : "error",
617
621
  warp,
618
622
  action: actionIndex,
619
- user: (0, import_warps3.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
623
+ user: (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
620
624
  txHash: transactionHash,
621
625
  tx,
622
626
  next: null,
@@ -646,7 +650,7 @@ var WarpSolanaOutput = class {
646
650
  status: success ? "success" : "error",
647
651
  warp,
648
652
  action: actionIndex,
649
- user: (0, import_warps3.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
653
+ user: (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, this.chain.name),
650
654
  txHash: signature,
651
655
  tx: {
652
656
  signature,
@@ -683,8 +687,8 @@ var WarpSolanaOutput = class {
683
687
  return value;
684
688
  };
685
689
  for (const [key, path] of Object.entries(warp.output)) {
686
- if (path.startsWith(import_warps3.WarpConstants.Transform.Prefix)) continue;
687
- const currentActionIndex = (0, import_warps3.parseOutputOutIndex)(path);
690
+ if (path.startsWith(import_warps4.WarpConstants.Transform.Prefix)) continue;
691
+ const currentActionIndex = (0, import_warps4.parseOutputOutIndex)(path);
688
692
  if (currentActionIndex !== null && currentActionIndex !== actionIndex) {
689
693
  output[key] = null;
690
694
  continue;
@@ -695,7 +699,7 @@ var WarpSolanaOutput = class {
695
699
  output[key] = path;
696
700
  }
697
701
  }
698
- return { values, output: await (0, import_warps3.evaluateOutputCommon)(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) };
702
+ return { values, output: await (0, import_warps4.evaluateOutputCommon)(warp, output, actionIndex, inputs, this.serializer.coreSerializer, this.config) };
699
703
  }
700
704
  async getTransactionStatus(txHash) {
701
705
  try {
@@ -743,12 +747,12 @@ var WarpSolanaExecutor = class {
743
747
  this.config = config;
744
748
  this.chain = chain;
745
749
  this.serializer = new WarpSolanaSerializer();
746
- const providerConfig = (0, import_warps4.getProviderConfig)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
750
+ const providerConfig = (0, import_warps5.getProviderConfig)(this.config, chain.name, this.config.env, this.chain.defaultApiUrl);
747
751
  this.connection = new import_web34.Connection(providerConfig.url, "confirmed");
748
752
  this.output = new WarpSolanaOutput(config, this.chain);
749
753
  }
750
754
  async createTransaction(executable) {
751
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
755
+ const action = (0, import_warps5.getWarpActionByIndex)(executable.warp, executable.action);
752
756
  let tx = null;
753
757
  if (action.type === "transfer") {
754
758
  tx = await this.createTransferTransaction(executable);
@@ -763,7 +767,7 @@ var WarpSolanaExecutor = class {
763
767
  return tx;
764
768
  }
765
769
  async createTransferTransaction(executable) {
766
- const userWallet = (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
770
+ const userWallet = (0, import_warps5.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
767
771
  if (!userWallet) throw new Error("WarpSolanaExecutor: createTransfer - user address not set");
768
772
  let destinationPubkey;
769
773
  try {
@@ -804,9 +808,9 @@ var WarpSolanaExecutor = class {
804
808
  return this.setTransactionDefaults(transaction, fromPubkey);
805
809
  }
806
810
  async createContractCallTransaction(executable) {
807
- const userWallet = (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
811
+ const userWallet = (0, import_warps5.getWarpWalletAddressFromConfig)(this.config, executable.chain.name);
808
812
  if (!userWallet) throw new Error("WarpSolanaExecutor: createContractCall - user address not set");
809
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
813
+ const action = (0, import_warps5.getWarpActionByIndex)(executable.warp, executable.action);
810
814
  if (!action || !("func" in action) || !action.func) throw new Error("WarpSolanaExecutor: Contract action must have a function name");
811
815
  let programId;
812
816
  try {
@@ -1019,7 +1023,7 @@ var WarpSolanaExecutor = class {
1019
1023
  return this.setTransactionDefaults(transaction, fromPubkey);
1020
1024
  }
1021
1025
  async executeQuery(executable) {
1022
- const action = (0, import_warps4.getWarpActionByIndex)(executable.warp, executable.action);
1026
+ const action = (0, import_warps5.getWarpActionByIndex)(executable.warp, executable.action);
1023
1027
  if (action.type !== "query") throw new Error(`WarpSolanaExecutor: Invalid action type for executeQuery: ${action.type}`);
1024
1028
  if (!action.func) throw new Error("WarpSolanaExecutor: Query action must have a function name");
1025
1029
  let queryAddress;
@@ -1071,23 +1075,23 @@ var WarpSolanaExecutor = class {
1071
1075
  executable.action,
1072
1076
  executable.resolvedInputs
1073
1077
  );
1074
- const next = (0, import_warps4.getNextInfo)(this.config, [], executable.warp, executable.action, output);
1078
+ const next = (0, import_warps5.getNextInfo)(this.config, [], executable.warp, executable.action, output);
1075
1079
  const destinationInput = executable.resolvedInputs.find(
1076
1080
  (i) => i.input.position === "receiver" || i.input.position === "destination"
1077
1081
  );
1078
1082
  const destination = destinationInput?.value || executable.destination;
1079
- const resolvedInputs = (0, import_warps4.extractResolvedInputValues)(executable.resolvedInputs);
1083
+ const resolvedInputs = (0, import_warps5.extractResolvedInputValues)(executable.resolvedInputs);
1080
1084
  return {
1081
1085
  status: isSuccess ? "success" : "error",
1082
1086
  warp: executable.warp,
1083
1087
  action: executable.action,
1084
- user: (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1088
+ user: (0, import_warps5.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1085
1089
  txHash: null,
1086
1090
  tx: null,
1087
1091
  next,
1088
1092
  values,
1089
1093
  output: { ...output, _DATA: decodedResult },
1090
- messages: (0, import_warps4.applyOutputToMessages)(executable.warp, output, this.config),
1094
+ messages: (0, import_warps5.applyOutputToMessages)(executable.warp, output, this.config),
1091
1095
  destination,
1092
1096
  resolvedInputs
1093
1097
  };
@@ -1097,12 +1101,12 @@ var WarpSolanaExecutor = class {
1097
1101
  (i) => i.input.position === "receiver" || i.input.position === "destination"
1098
1102
  );
1099
1103
  const destination = destinationInput?.value || executable.destination;
1100
- const resolvedInputs = (0, import_warps4.extractResolvedInputValues)(executable.resolvedInputs);
1104
+ const resolvedInputs = (0, import_warps5.extractResolvedInputValues)(executable.resolvedInputs);
1101
1105
  return {
1102
1106
  status: "error",
1103
1107
  warp: executable.warp,
1104
1108
  action: executable.action,
1105
- user: (0, import_warps4.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1109
+ user: (0, import_warps5.getWarpWalletAddressFromConfig)(this.config, executable.chain.name),
1106
1110
  txHash: null,
1107
1111
  tx: null,
1108
1112
  next: null,
@@ -1289,7 +1293,7 @@ var WarpSolanaExplorer = class {
1289
1293
  };
1290
1294
 
1291
1295
  // src/WarpSolanaWallet.ts
1292
- var import_warps5 = require("@vleap/warps");
1296
+ var import_warps6 = require("@vleap/warps");
1293
1297
  var import_web35 = require("@solana/web3.js");
1294
1298
  var bip39 = __toESM(require("@scure/bip39"), 1);
1295
1299
  var import_english = require("@scure/bip39/wordlists/english");
@@ -1298,7 +1302,7 @@ var WarpSolanaWallet = class {
1298
1302
  constructor(config, chain) {
1299
1303
  this.config = config;
1300
1304
  this.chain = chain;
1301
- const providerConfig = (0, import_warps5.getProviderConfig)(config, chain.name, config.env, chain.defaultApiUrl);
1305
+ const providerConfig = (0, import_warps6.getProviderConfig)(config, chain.name, config.env, chain.defaultApiUrl);
1302
1306
  this.connection = new import_web35.Connection(providerConfig.url, "confirmed");
1303
1307
  }
1304
1308
  async signTransaction(tx) {
@@ -1438,7 +1442,7 @@ var WarpSolanaWallet = class {
1438
1442
  }
1439
1443
  }
1440
1444
  getKeypair() {
1441
- const privateKey = (0, import_warps5.getWarpWalletPrivateKeyFromConfig)(this.config, this.chain.name);
1445
+ const privateKey = (0, import_warps6.getWarpWalletPrivateKeyFromConfig)(this.config, this.chain.name);
1442
1446
  if (privateKey) {
1443
1447
  try {
1444
1448
  const secretKey = import_bs582.default.decode(privateKey);
@@ -1456,7 +1460,7 @@ var WarpSolanaWallet = class {
1456
1460
  throw new Error("Invalid private key format");
1457
1461
  }
1458
1462
  }
1459
- const mnemonic = (0, import_warps5.getWarpWalletMnemonicFromConfig)(this.config, this.chain.name);
1463
+ const mnemonic = (0, import_warps6.getWarpWalletMnemonicFromConfig)(this.config, this.chain.name);
1460
1464
  if (mnemonic) {
1461
1465
  const seed = bip39.mnemonicToSeedSync(mnemonic);
1462
1466
  return import_web35.Keypair.fromSeed(seed.slice(0, 32));
@@ -1487,16 +1491,16 @@ var createSolanaAdapter = (chainName, chainInfos) => {
1487
1491
 
1488
1492
  // src/chains/solana.ts
1489
1493
  var NativeTokenSol = {
1490
- chain: "solana",
1494
+ chain: import_warps7.WarpChainName.Solana,
1491
1495
  identifier: "SOL",
1492
1496
  symbol: "SOL",
1493
1497
  name: "Solana",
1494
1498
  decimals: 9,
1495
1499
  logoUrl: "https://vleap.ai/images/tokens/sol.svg"
1496
1500
  };
1497
- var getSolanaAdapter = createSolanaAdapter("solana", {
1501
+ var getSolanaAdapter = createSolanaAdapter(import_warps7.WarpChainName.Solana, {
1498
1502
  mainnet: {
1499
- name: "solana",
1503
+ name: import_warps7.WarpChainName.Solana,
1500
1504
  displayName: "Solana Mainnet",
1501
1505
  chainId: "101",
1502
1506
  blockTime: 400,
@@ -1506,7 +1510,7 @@ var getSolanaAdapter = createSolanaAdapter("solana", {
1506
1510
  nativeToken: NativeTokenSol
1507
1511
  },
1508
1512
  testnet: {
1509
- name: "solana",
1513
+ name: import_warps7.WarpChainName.Solana,
1510
1514
  displayName: "Solana Testnet",
1511
1515
  chainId: "103",
1512
1516
  blockTime: 400,
@@ -1516,7 +1520,7 @@ var getSolanaAdapter = createSolanaAdapter("solana", {
1516
1520
  nativeToken: NativeTokenSol
1517
1521
  },
1518
1522
  devnet: {
1519
- name: "solana",
1523
+ name: import_warps7.WarpChainName.Solana,
1520
1524
  displayName: "Solana Devnet",
1521
1525
  chainId: "103",
1522
1526
  blockTime: 400,