@vleap/warps-adapter-multiversx 0.2.0-alpha.56 → 0.2.0-alpha.58

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _vleap_warps from '@vleap/warps';
2
- import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
2
+ import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, WarpActionInputType, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
3
  import { NetworkEntrypoint, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction } from '@multiversx/sdk-core';
4
4
  import { WarpAdapterGenericTransaction as WarpAdapterGenericTransaction$1 } from '@vleap/warps/src/types';
5
5
 
@@ -24,6 +24,13 @@ declare const WarpMultiversxConstants: {
24
24
  Decimals: number;
25
25
  };
26
26
  };
27
+ declare const WarpMultiversxInputTypes: {
28
+ Null: string;
29
+ Optional: string;
30
+ List: string;
31
+ Token: string;
32
+ CodeMeta: string;
33
+ };
27
34
  declare enum MultiversxExplorers {
28
35
  MultiversxExplorer = "multiversx_explorer",
29
36
  MultiversxExplorerDevnet = "multiversx_explorer_devnet",
@@ -60,6 +67,11 @@ declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset
60
67
  declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
61
68
  declare const getKnownTokensForChain: (chain: WarpChain, env: WarpChainEnv) => WarpChainAsset[];
62
69
 
70
+ declare const token: (value: string) => string;
71
+ declare const codemeta: (value: string) => string;
72
+ declare const option: (value: WarpNativeValue | null, type: WarpActionInputType) => string;
73
+ declare const list: (values: WarpNativeValue[]) => string;
74
+
63
75
  declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
64
76
  declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
65
77
  declare const list_value: (values: TypedValue[]) => List;
@@ -265,4 +277,4 @@ declare class WarpMultiversxWallet implements AdapterWarpWallet {
265
277
  getAddress(): string | null;
266
278
  }
267
279
 
268
- export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list_value, nothing_value, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
280
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list, list_value, nothing_value, option, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _vleap_warps from '@vleap/warps';
2
- import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
2
+ import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, WarpActionInputType, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
3
  import { NetworkEntrypoint, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction } from '@multiversx/sdk-core';
4
4
  import { WarpAdapterGenericTransaction as WarpAdapterGenericTransaction$1 } from '@vleap/warps/src/types';
5
5
 
@@ -24,6 +24,13 @@ declare const WarpMultiversxConstants: {
24
24
  Decimals: number;
25
25
  };
26
26
  };
27
+ declare const WarpMultiversxInputTypes: {
28
+ Null: string;
29
+ Optional: string;
30
+ List: string;
31
+ Token: string;
32
+ CodeMeta: string;
33
+ };
27
34
  declare enum MultiversxExplorers {
28
35
  MultiversxExplorer = "multiversx_explorer",
29
36
  MultiversxExplorerDevnet = "multiversx_explorer_devnet",
@@ -60,6 +67,11 @@ declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset
60
67
  declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
61
68
  declare const getKnownTokensForChain: (chain: WarpChain, env: WarpChainEnv) => WarpChainAsset[];
62
69
 
70
+ declare const token: (value: string) => string;
71
+ declare const codemeta: (value: string) => string;
72
+ declare const option: (value: WarpNativeValue | null, type: WarpActionInputType) => string;
73
+ declare const list: (values: WarpNativeValue[]) => string;
74
+
63
75
  declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
64
76
  declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
65
77
  declare const list_value: (values: TypedValue[]) => List;
@@ -265,4 +277,4 @@ declare class WarpMultiversxWallet implements AdapterWarpWallet {
265
277
  getAddress(): string | null;
266
278
  }
267
279
 
268
- export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list_value, nothing_value, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
280
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list, list_value, nothing_value, option, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var me=Object.defineProperty;var De=Object.getOwnPropertyDescriptor;var Le=Object.getOwnPropertyNames;var _e=Object.prototype.hasOwnProperty;var Ge=(o,e)=>{for(var t in e)me(o,t,{get:e[t],enumerable:!0})},$e=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Le(e))!_e.call(o,a)&&a!==t&&me(o,a,{get:()=>e[a],enumerable:!(r=De(e,a))||r.enumerable});return o};var He=o=>$e(me({},"__esModule",{value:!0}),o);var ft={};Ge(ft,{ExplorerUrls:()=>L,KnownTokens:()=>he,MultiversxExplorers:()=>Re,MultiversxExplorersConfig:()=>ge,NativeTokenEgld:()=>le,NativeTokenVibe:()=>Oe,VibechainExplorers:()=>Me,WarpMultiversxAbiBuilder:()=>P,WarpMultiversxBrandBuilder:()=>Z,WarpMultiversxBuilder:()=>ee,WarpMultiversxConstants:()=>ze,WarpMultiversxContractLoader:()=>Y,WarpMultiversxDataLoader:()=>te,WarpMultiversxExecutor:()=>re,WarpMultiversxExplorer:()=>ne,WarpMultiversxRegistry:()=>se,WarpMultiversxResults:()=>H,WarpMultiversxSerializer:()=>R,WarpMultiversxWallet:()=>ie,address_value:()=>pt,asset_value:()=>mt,biguint_value:()=>ot,boolean_value:()=>ct,codemeta_value:()=>dt,composite_value:()=>tt,createMultiversxAdapter:()=>oe,findKnownTokenById:()=>fe,getAllMultiversxAdapters:()=>je,getAllMultiversxChainNames:()=>Xe,getKnownTokensForChain:()=>Ke,getMultiversxAdapter:()=>We,getMultiversxEntrypoint:()=>w,getMultiversxRegistryAddress:()=>T,getNormalizedTokenIdentifier:()=>J,getVibechainAdapter:()=>ve,hex_value:()=>ut,isNativeToken:()=>_,list_value:()=>Ze,nothing_value:()=>ht,option_value:()=>Je,optional_value:()=>Ye,string_value:()=>rt,toTypedConfigInfo:()=>we,toTypedRegistryInfo:()=>ae,token_value:()=>lt,u16_value:()=>at,u32_value:()=>st,u64_value:()=>it,u8_value:()=>nt,variadic_value:()=>et});module.exports=He(ft);var Te=require("@vleap/warps");var j=require("@vleap/warps");var F=require("@multiversx/sdk-core"),E=require("@vleap/warps");var K=require("@multiversx/sdk-core"),xe=require("@vleap/warps"),_=o=>!o.includes("-"),J=o=>_(o)?`${o}-000000`:o,w=(o,e,t)=>{let r="warp-sdk",s=t?(0,xe.getProviderUrl)(t,o.name,e,o.defaultApiUrl):o.defaultApiUrl;return e==="devnet"?new K.DevnetEntrypoint({url:s,kind:"api",clientName:r}):e==="testnet"?new K.TestnetEntrypoint({url:s,kind:"api",clientName:r}):new K.MainnetEntrypoint({url:s,kind:"api",clientName:r})};var de=require("@vleap/warps");var Y=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return de.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return de.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var P=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new Y(this.config),this.cache=new E.WarpCache(this.config.cache?.type)}async createInscriptionTransaction(e){let t=(0,E.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new F.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new F.TransferTransactionsFactory({config:r}),s=F.Address.newFromBech32(t),c={protocol:(0,E.getLatestProtocolIdentifier)("abi"),content:e},i=JSON.stringify(c),l=await a.createTransactionForTransfer(s,{receiver:s,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=E.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let c=this.cache.get(r);if(c)return E.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),c}let s=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await s.getTransaction(e),i=await this.createFromTransaction(c);return t&&t.ttl&&i&&this.cache.set(r,i,t.ttl),i}catch(c){return E.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",c),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return F.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(E.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(E.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return F.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return F.AbiRegistry.create(r)}}};var G=require("@multiversx/sdk-core"),q=require("@vleap/warps"),Ee=require("buffer");var Z=class{constructor(e,t){this.config=e;this.chain=t;this.core=new q.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,q.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new G.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new G.TransferTransactionsFactory({config:r}),s=G.Address.newFromBech32(t),c=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(s,{receiver:G.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ee.Buffer.from(c))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return q.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var $=require("@multiversx/sdk-core"),I=require("@vleap/warps");var ee=class extends I.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new I.WarpCache(t.cache?.type),this.core=new I.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,I.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let a=new $.TransactionsFactoryConfig({chainID:this.chain.chainId}),s=new $.TransferTransactionsFactory({config:a}),c=$.Address.newFromBech32(r),i=JSON.stringify(t),l=await s.createTransactionForTransfer(c,{receiver:$.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=I.WarpCacheKey.Warp(this.config.env,t);if(r){let i=this.cache.get(a);if(i)return I.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),i}let c=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await c.getTransaction(t),l=await this.createFromTransaction(i);return r&&r.ttl&&l&&this.cache.set(a,l,r.ttl),l}catch(i){return I.WarpLogger.error("WarpBuilder: Error creating from transaction hash",i),null}}};var D=require("@multiversx/sdk-core"),z=require("@vleap/warps");var Ae=require("@vleap/warps"),be=Ae.WarpChainName.Multiversx,Be=[{chain:be,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:be,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Ie=require("@vleap/warps"),v=Ie.WarpChainName.Multiversx,Ne=[{chain:v,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:v,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:v,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:v,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:v,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:v,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:v,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:v,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:v,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:v,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:v,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:v,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:v,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:v,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:v,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var ke=require("@vleap/warps"),Se=ke.WarpChainName.Multiversx,Ve=[{chain:Se,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Se,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Fe=require("@vleap/warps"),Ue=Fe.WarpChainName.Vibechain,pe=[{chain:Ue,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:Ue,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var he={multiversx:{mainnet:Ne,testnet:Ve,devnet:Be},vibechain:{mainnet:pe,testnet:pe,devnet:pe}},fe=(o,e,t)=>(he[o]?.[e]||[]).find(a=>a.identifier===t)||null,Ke=(o,e)=>he[o]?.[e]||[];var te=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new z.WarpCache(e.cache?.type)}async getAccount(e){let r=await w(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(D.Address.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=w(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(D.Address.newFromBech32(e)),a=t.getFungibleTokensOfAccount(D.Address.newFromBech32(e)),[s,c]=await Promise.all([r,a]),i=s.balance>0?[{...this.chain.nativeToken,amount:s.balance}]:[];return i.push(...c.map(l=>({chain:this.chain.name,identifier:l.token.identifier,name:l.raw.name,symbol:l.raw.ticker,amount:l.amount,decimals:l.raw.decimals,logoUrl:l.raw.assets?.pngUrl||"",price:l.raw.price?Number(l.raw.price):void 0,supply:l.raw.supply?BigInt(l.raw.supply):void 0}))),i}async getAsset(e){let t=z.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let a=fe(this.chain.name,this.config.env,e);if(a)return{chain:this.chain.name,identifier:e,name:a.name,symbol:a.symbol,amount:0n,decimals:a.decimals,logoUrl:a.logoUrl};let s=new D.TokenComputer,c=_(e)?0n:s.extractNonceFromExtendedIdentifier(e),i=new D.Token({identifier:e,nonce:BigInt(c||0)}),l=s.isFungible(i),m=w(this.chain,this.config.env,this.config).createNetworkProvider(),h=J(e),d=await m.doGetGeneric(`tokens/${h}`),x={chain:this.chain.name,identifier:i.identifier,name:d.name,symbol:d.ticker,amount:0n,decimals:d.decimals,logoUrl:d.assets?.pngUrl||"#",price:d.price?Number(d.price):void 0,supply:d.supply?BigInt(d.supply):void 0};return this.cache.set(t,x,z.CacheTtl.OneHour),x}async getAction(e,t=!1){let r=w(this.chain,this.config.env,this.config),a=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:a.hash,receiver:a.receiver.toBech32(),sender:a.sender.toBech32(),value:a.value,function:a.function,status:this.toActionStatus(a),createdAt:this.toActionCreatedAt(a),error:a?.smartContractResults.map(s=>s.raw.returnMessage)[0]||null,tx:a}}async getAccountActions(e,t){let r=w(this.chain,this.config.env,this.config).createNetworkProvider(),a=`accounts/${e}/transactions`,s=new URLSearchParams,c=t?.size||25,i=t?.page||0;if(i>0){let m=i*c;s.append("from",m.toString())}return c!==25&&s.append("size",c.toString()),s.toString()&&(a+=`?${s.toString()}`),(await r.doGetGeneric(a)).map(m=>({chain:this.chain.name,id:m.txHash,receiver:m.receiver,sender:m.sender,value:m.value,function:m.function,status:this.toActionStatus(m),createdAt:this.toActionCreatedAt(m)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};var g=require("@multiversx/sdk-core"),N=require("@vleap/warps");var Q=require("@multiversx/sdk-core"),y=require("@vleap/warps");var n=require("@multiversx/sdk-core"),C=require("@vleap/warps");var Pe=new RegExp(`${C.WarpConstants.ArgParamsSeparator}(.*)`),R=class{constructor(){this.coreSerializer=new C.WarpSerializer}typedToString(e){let t=e.getType();if(t.hasExactClass(n.OptionType.ClassName)||e.hasClassOrSuperclass(n.OptionValue.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(t.hasExactClass(n.OptionalType.ClassName)||e.hasClassOrSuperclass(n.OptionalValue.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(t.hasExactClass(n.ListType.ClassName)||e.hasClassOrSuperclass(n.List.ClassName)){let r=e.getItems(),s=r.map(i=>this.typedToString(i).split(C.WarpConstants.ArgParamsSeparator)[0])[0],c=r.map(i=>this.typedToString(i).split(C.WarpConstants.ArgParamsSeparator)[1]);return`list:${s}:${c.join(",")}`}if(t.hasExactClass(n.VariadicType.ClassName)||e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let r=e.getItems(),s=r.map(i=>this.typedToString(i).split(C.WarpConstants.ArgParamsSeparator)[0])[0],c=r.map(i=>this.typedToString(i).split(C.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${s}:${c.join(",")}`}if(t.hasExactClass(n.CompositeType.ClassName)||e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let r=e.getItems(),a=r.map(l=>this.typedToString(l).split(C.WarpConstants.ArgParamsSeparator)[0]),s=r.map(l=>this.typedToString(l).split(C.WarpConstants.ArgParamsSeparator)[1]),c=a.join(C.WarpConstants.ArgCompositeSeparator),i=s.join(C.WarpConstants.ArgCompositeSeparator);return`composite(${c}):${i}`}if(t.hasExactClass(n.BigUIntType.ClassName)||e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||t.getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(t.hasExactClass(n.U8Type.ClassName)||e.hasClassOrSuperclass(n.U8Value.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(t.hasExactClass(n.U16Type.ClassName)||e.hasClassOrSuperclass(n.U16Value.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(t.hasExactClass(n.U32Type.ClassName)||e.hasClassOrSuperclass(n.U32Value.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(t.hasExactClass(n.U64Type.ClassName)||e.hasClassOrSuperclass(n.U64Value.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(t.hasExactClass(n.StringType.ClassName)||e.hasClassOrSuperclass(n.StringValue.ClassName))return`string:${e.valueOf()}`;if(t.hasExactClass(n.BooleanType.ClassName)||e.hasClassOrSuperclass(n.BooleanValue.ClassName))return`bool:${e.valueOf()}`;if(t.hasExactClass(n.AddressType.ClassName)||e.hasClassOrSuperclass(n.AddressValue.ClassName))return`address:${e.valueOf().toBech32()}`;if(t.hasExactClass(n.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return`token:${e.valueOf()}`;if(t.hasExactClass(n.BytesType.ClassName)||e.hasClassOrSuperclass(n.BytesValue.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(t.hasExactClass(n.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return`codemeta:${e.valueOf().toString()}`;if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),a=e.getFieldValue("token_nonce").valueOf(),s=e.getFieldValue("amount").valueOf();return`asset:${new n.TokenComputer().computeExtendedIdentifier(new n.Token({identifier:r,nonce:BigInt(a)}))}|${s}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(C.WarpConstants.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new n.StringType;if(e==="uint8")return new n.U8Type;if(e==="uint16")return new n.U16Type;if(e==="uint32")return new n.U32Type;if(e==="uint64")return new n.U64Type;if(e==="biguint")return new n.BigUIntType;if(e==="bool")return new n.BooleanType;if(e==="address")return new n.AddressType;if(e==="token")return new n.TokenIdentifierType;if(e==="hex")return new n.BytesType;if(e==="codemeta")return new n.CodeMetadataType;if(e==="asset")return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new n.NothingValue;if(t==="option"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t==="optional"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t==="list"){let[a,s]=r.split(Pe,2),i=s.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.List(this.nativeToType(a),i)}if(t==="variadic"){let[a,s]=r.split(Pe,2),i=s.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),i)}if(t.startsWith("composite")){let a=t.match(/\(([^)]+)\)/)?.[1],s=r.split(C.WarpConstants.ArgCompositeSeparator),c=a.split(C.WarpConstants.ArgCompositeSeparator),i=s.map((m,h)=>this.stringToTyped(`${c[h]}:${m}`)),l=i.map(m=>m.getType());return new n.CompositeValue(new n.CompositeType(...l),i)}if(t==="string")return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t==="uint8")return r?new n.U8Value(Number(r)):new n.NothingValue;if(t==="uint16")return r?new n.U16Value(Number(r)):new n.NothingValue;if(t==="uint32")return r?new n.U32Value(Number(r)):new n.NothingValue;if(t==="uint64")return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t==="biguint")return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t==="bool")return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t==="address")return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t==="token")return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t==="hex")return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t==="codemeta")return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="asset"){let[a,s]=r.split(C.WarpConstants.ArgCompositeSeparator),c=new n.TokenComputer,i=_(a)?J(a):c.extractIdentifierFromExtendedIdentifier(a),l=_(a)?0n:c.extractNonceFromExtendedIdentifier(a);return new n.Struct(this.nativeToType("asset"),[new n.Field(new n.TokenIdentifierValue(i),"token_identifier"),new n.Field(new n.U64Value(BigInt(l)),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(s)),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(n.OptionType.ClassName))return"option:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.OptionalType.ClassName))return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.ListType.ClassName))return"list:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.VariadicType.ClassName))return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.StringType.ClassName))return"string";if(e.hasExactClass(n.U8Type.ClassName))return"uint8";if(e.hasExactClass(n.U16Type.ClassName))return"uint16";if(e.hasExactClass(n.U32Type.ClassName))return"uint32";if(e.hasExactClass(n.U64Type.ClassName))return"uint64";if(e.hasExactClass(n.BigUIntType.ClassName))return"biguint";if(e.hasExactClass(n.BooleanType.ClassName))return"bool";if(e.hasExactClass(n.AddressType.ClassName))return"address";if(e.hasExactClass(n.TokenIdentifierType.ClassName))return"token";if(e.hasExactClass(n.BytesType.ClassName))return"hex";if(e.hasExactClass(n.CodeMetadataType.ClassName))return"codemeta";if(e.hasExactClass(n.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return"asset";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var H=class{constructor(e,t){this.config=e;this.chain=t;this.abi=new P(e,t),this.serializer=new R,this.cache=new y.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,y.findWarpExecutableAction)(e),a=this.cache.get(y.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],s=await this.extractContractResults(e,t,a),c=(0,y.getNextInfo)(this.config,[],e,r,s),i=(0,y.applyResultsToMessages)(e,s.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:(0,y.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:t.hash,tx:t,next:c,values:s.values,valuesRaw:[],results:s.results,messages:i}}async extractContractResults(e,t,r){let{action:a,actionIndex:s}=(0,y.findWarpExecutableAction)(e),c=[],i={};if(!e.results||a.type!=="contract")return{values:c,results:i};if(!Object.values(e.results).some(b=>b.includes("out")||b.includes("event"))){for(let[b,f]of Object.entries(e.results))i[b]=f;return{values:c,results:await(0,y.evaluateResultsCommon)(e,i,s,r,this.config.transform?.runner)}}let m=await this.abi.getAbiForAction(a),h=new Q.TransactionEventsParser({abi:m}),x=new Q.SmartContractTransactionsOutcomeParser({abi:m}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[b,f]of Object.entries(e.results)){if(f.startsWith(y.WarpConstants.Transform.Prefix))continue;if(f.startsWith("input.")){i[b]=f;continue}let V=(0,y.parseResultsOutIndex)(f);if(V!==null&&V!==s){i[b]=null;continue}let[A,B,O]=f.split(".");if(A==="event"){if(!B||isNaN(Number(O)))continue;let U=Number(O),W=(0,Q.findEventsByFirstTopic)(t,B),X=h.parseEvents({events:W})[0],ce=Object.values(X)[U]||null;c.push(ce),i[b]=ce&&ce.valueOf()}else if(A==="out"||A.startsWith("out[")){if(!B)continue;let U=Number(B),W=x.values[U-1]||null;O&&(W=W[O]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),c.push(W),i[b]=W&&W.valueOf()}else i[b]=f}return{values:c,results:await(0,y.evaluateResultsCommon)(e,i,s,r)}}async extractQueryResults(e,t,r,a){let s=t.map(m=>this.serializer.typedToString(m)),c=t.map(m=>this.serializer.typedToNative(m)[1]),i={};if(!e.results)return{values:s,valuesRaw:c,results:i};let l=m=>{let h=m.split(".").slice(1).map(x=>parseInt(x)-1);if(h.length===0)return;let d=c[h[0]];for(let x=1;x<h.length;x++){if(d==null)return;d=d[h[x]]}return d};for(let[m,h]of Object.entries(e.results)){if(h.startsWith(y.WarpConstants.Transform.Prefix))continue;let d=(0,y.parseResultsOutIndex)(h);if(d!==null&&d!==r){i[m]=null;continue}h.startsWith("out.")||h==="out"||h.startsWith("out[")?i[m]=l(h)||null:i[m]=h}return{values:s,valuesRaw:c,results:await(0,y.evaluateResultsCommon)(e,i,r,a)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,s=e.inputs,c=e.meta,i=new Map,l=new Set,m=this;async function h(f,V=[]){if(i.has(f))return i.get(f);if(l.has(f))throw new Error(`Circular dependency detected at action ${f}`);l.add(f);let A=t.actions[f-1];if(!A)throw new Error(`Action ${f} not found`);let B;if(A.type==="query")B=await a.executeQuery(t,f,V);else if(A.type==="collect")B=await a.executeCollect(t,f,V,c);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(i.set(f,B),t.results)for(let O of Object.values(t.results)){let W=String(O).match(/^out\[(\d+)\]/);if(W){let X=parseInt(W[1],10);X!==f&&!i.has(X)&&await h(X)}}return l.delete(f),B}await h(r,s);let d={};for(let f of i.values())for(let[V,A]of Object.entries(f.results))A!==null?d[V]=A:V in d||(d[V]=null);let x=await(0,y.evaluateResultsCommon)(t,d,r,s,this.config.transform?.runner);return{...i.get(r),action:r,results:x}}};var qe="EGLD-000000",re=class{constructor(e,t){this.config=e;this.chain=t;this.serializer=new R,this.abi=new P(this.config,this.chain),this.results=new H(this.config,this.chain)}async createTransaction(e){let t=(0,N.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=g.Address.newFromBech32(t),a=new g.TransactionsFactoryConfig({chainID:e.chain.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,c=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,l=(c?e.transfers[0].amount:0n)+e.value;return await new g.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:g.Address.newFromBech32(e.destination),nativeAmount:l,tokenTransfers:c?[]:this.toTokenTransfers(e.transfers),data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){let t=(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,N.getWarpActionByIndex)(e.warp,e.action),a=g.Address.newFromBech32(t),s=e.args.map(i=>this.serializer.stringToTyped(i)),c=new g.TransactionsFactoryConfig({chainID:e.chain.chainId});return new g.SmartContractTransactionsFactory({config:c}).createTransactionForExecute(a,{contract:g.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,N.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(U=>this.serializer.stringToTyped(U)),s=w(e.chain,this.config.env,this.config),c=g.Address.newFromBech32(e.destination),i=s.createSmartContractController(r),l=i.createQuery({contract:c,function:t.func||"",arguments:a}),m=await i.runQuery(l),h=m.returnCode==="ok",d=new g.ArgSerializer,x=r.getEndpoint(m.function||t.func||""),b=(m.returnDataParts||[]).map(U=>Buffer.from(U)),f=d.buffersToValues(b,x.output),{values:V,valuesRaw:A,results:B}=await this.results.extractQueryResults(e.warp,f,e.action,e.resolvedInputs),O=(0,N.getNextInfo)(this.config,[],e.warp,e.action,B);return{success:h,warp:e.warp,action:e.action,user:(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:O,values:V,valuesRaw:A,results:B,messages:(0,N.applyResultsToMessages)(e.warp,B)}}async signMessage(e,t){let r=g.UserSecretKey.fromString(t);return(await new g.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:qe}:t).map(t=>{let a=new g.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new g.TokenTransfer({token:new g.Token({identifier:t.identifier,nonce:BigInt(a||0)}),amount:t.amount})})}};var ze={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},Re=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Re||{}),Me=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Me||{}),ge={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},L={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var ne=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=ge[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let s=L[t];if(s)return s}if(e){let s=L[e];if(s)return s}let r=this.getPrimaryExplorer();return L[r]||L[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=L[a];s&&(r[a]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=L[a];s&&(r[a]=`${s}/transactions/${e}`)}),r}};var u=require("@multiversx/sdk-core"),S=require("@vleap/warps");var ye={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var T=o=>{if(o==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(o==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ae=o=>({hash:o.hash.toString("hex"),alias:o.alias?.toString()||null,trust:o.trust.toString(),owner:o.owner.toString(),createdAt:o.created_at.toNumber(),upgradedAt:o.upgraded_at?.toNumber(),brand:o.brand?.toString("hex")||null,upgrade:o.upgrade?.toString("hex")||null}),we=o=>({unitPrice:BigInt(o.unit_price.toString()),admins:o.admins.map(e=>e.toBech32())});var se=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new S.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,S.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet),s=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,c=()=>t&&r?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t),u.BytesValue.fromHex(r)]:t?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]:[u.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(T(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:c()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(T(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(T(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(t),u.BytesValue.fromHex(r)]:[u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(T(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(T(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(T(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e),new u.AddressValue(new u.Address(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(T(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(T(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=S.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return S.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let s=u.Address.newFromBech32(T(this.config.env)),c=this.getController(),i=c.createQuery({contract:s,function:"getInfoByAlias",arguments:[u.BytesValue.fromUTF8(e)]}),l=await c.runQuery(i),[m]=c.parseQueryResponse(l),h=m?ae(m):null,d=h?.brand?await this.fetchBrand(h.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:h,brand:d},t.ttl),{registryInfo:h,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=S.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let d=this.cache.get(r);if(d)return S.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),d}let a=u.Address.newFromBech32(T(this.config.env)),s=this.getController(),c=s.createQuery({contract:a,function:"getInfoByHash",arguments:[u.BytesValue.fromHex(e)]}),i=await s.runQuery(c),[l]=s.parseQueryResponse(i),m=l?ae(l):null,h=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:h},t.ttl),{registryInfo:m,brand:h}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(T(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserWarps",arguments:[new u.AddressValue(new u.Address(t))]}),c=await a.runQuery(s),[i]=a.parseQueryResponse(c);return i.map(ae)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(T(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserBrands",arguments:[new u.AddressValue(new u.Address(t))]}),c=await a.runQuery(s),[i]=a.parseQueryResponse(c),l=i.map(d=>d.toString("hex")),m={ttl:365*24*60*60};return(await Promise.all(l.map(d=>this.fetchBrand(d,m)))).filter(d=>d!==null)}catch{return[]}}async fetchBrand(e,t){let r=S.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return S.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let c=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await c.getTransaction(e),l=JSON.parse(i.data.toString());return l.meta={chain:this.chain.name,hash:i.hash,creator:i.sender.toBech32(),createdAt:new Date(i.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=u.Address.newFromBech32(T(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?we(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new u.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=u.AbiRegistry.create(ye);return new u.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=w(this.chain,this.config.env,this.config),t=u.AbiRegistry.create(ye);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var k=require("@multiversx/sdk-core"),M=require("@vleap/warps");var ie=class{constructor(e,t){this.config=e;this.chain=t;this.entry=w(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new M.WarpCache(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=(0,M.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?k.UserSecretKey.fromPem(t):k.UserSecretKey.fromString(t),s=new k.Account(a);if(e.nonce===0n){let c=await this.entry.recallAccountNonce(s.address),i=this.cache.get(`nonce:${s.address.toBech32()}`)||0,l=BigInt(Math.max(i,Number(c)));e.nonce=l}return e.signature=await s.signTransaction(e),this.cache.set(`nonce:${s.address.toBech32()}`,Number(s.nonce),M.CacheTtl.OneHour),e}async signMessage(e){let t=(0,M.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?k.UserSecretKey.fromPem(t):k.UserSecretKey.fromString(t),s=new k.UserSigner(a),c=new TextEncoder().encode(e),i=await s.sign(c);return Buffer.from(i).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=k.Mnemonic.fromString(e).deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:e}}generate(){let e=k.Mnemonic.generate(),t=e.toString(),r=e.deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:t}}getAddress(){return(0,M.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}};var oe=(o,e,t)=>(r,a)=>{let s=t[r.env];return{chain:o,chainInfo:s,prefix:e,builder:()=>new ee(r,s),executor:new re(r,s),results:new H(r,s),serializer:new R,registry:new se(r,s),explorer:new ne(o,r),abiBuilder:()=>new P(r,s),brandBuilder:()=>new Z(r,s),dataLoader:new te(r,s),wallet:new ie(r,s),registerTypes:c=>{c.registerType("token",{stringToNative:i=>i,nativeToString:i=>`token:${i}`}),c.registerType("codemeta",{stringToNative:i=>i,nativeToString:i=>`codemeta:${i}`})}}};var le={chain:j.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},We=oe(j.WarpChainName.Multiversx,"multiversx",{mainnet:{name:j.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:le},testnet:{name:j.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:le},devnet:{name:j.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:le}});var ue=require("@vleap/warps");var Oe={chain:ue.WarpChainName.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},Ce={name:ue.WarpChainName.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:Oe},ve=oe(ue.WarpChainName.Vibechain,"vibe",{mainnet:Ce,testnet:Ce,devnet:Ce});var je=(o,e)=>[We(o,e),ve(o,e)],Xe=()=>[Te.WarpChainName.Multiversx,Te.WarpChainName.Vibechain];var p=require("@multiversx/sdk-core"),Je=(o,e)=>o?p.OptionValue.newProvided(o):e?p.OptionValue.newMissingTyped(e):p.OptionValue.newMissing(),Ye=(o,e)=>o?new p.OptionalValue(o.getType(),o):e?new p.OptionalValue(e):p.OptionalValue.newMissing(),Ze=o=>{if(o.length===0)throw new Error("Cannot create a list from an empty array");let e=o[0].getType();return new p.List(e,o)},et=o=>p.VariadicValue.fromItems(...o),tt=o=>{let e=o.map(t=>t.getType());return new p.CompositeValue(new p.CompositeType(...e),o)},rt=o=>p.StringValue.fromUTF8(o),nt=o=>new p.U8Value(o),at=o=>new p.U16Value(o),st=o=>new p.U32Value(o),it=o=>new p.U64Value(o),ot=o=>new p.BigUIntValue(BigInt(o)),ct=o=>new p.BooleanValue(o),pt=o=>new p.AddressValue(p.Address.newFromBech32(o)),lt=o=>new p.TokenIdentifierValue(o),ut=o=>p.BytesValue.fromHex(o),mt=o=>new p.Struct(new p.StructType("EsdtTokenPayment",[new p.FieldDefinition("token_identifier","",new p.TokenIdentifierType),new p.FieldDefinition("token_nonce","",new p.U64Type),new p.FieldDefinition("amount","",new p.BigUIntType)]),[new p.Field(new p.TokenIdentifierValue(o.token.identifier),"token_identifier"),new p.Field(new p.U64Value(BigInt(o.token.nonce)),"token_nonce"),new p.Field(new p.BigUIntValue(BigInt(o.amount)),"amount")]),dt=o=>new p.CodeMetadataValue(p.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(o,"hex")))),ht=()=>new p.NothingValue;0&&(module.exports={ExplorerUrls,KnownTokens,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenEgld,NativeTokenVibe,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxAdapter,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,getVibechainAdapter,hex_value,isNativeToken,list_value,nothing_value,option_value,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
1
+ "use strict";var fe=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Ke=Object.prototype.hasOwnProperty;var qe=(i,e)=>{for(var t in e)fe(i,t,{get:e[t],enumerable:!0})},ze=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of $e(e))!Ke.call(i,a)&&a!==t&&fe(i,a,{get:()=>e[a],enumerable:!(r=Ge(e,a))||r.enumerable});return i};var Qe=i=>ze(fe({},"__esModule",{value:!0}),i);var xt={};qe(xt,{ExplorerUrls:()=>H,KnownTokens:()=>ye,MultiversxExplorers:()=>Oe,MultiversxExplorersConfig:()=>Ce,NativeTokenEgld:()=>de,NativeTokenVibe:()=>He,VibechainExplorers:()=>Le,WarpMultiversxAbiBuilder:()=>M,WarpMultiversxBrandBuilder:()=>te,WarpMultiversxBuilder:()=>re,WarpMultiversxConstants:()=>Xe,WarpMultiversxContractLoader:()=>ee,WarpMultiversxDataLoader:()=>ne,WarpMultiversxExecutor:()=>ae,WarpMultiversxExplorer:()=>se,WarpMultiversxInputTypes:()=>v,WarpMultiversxRegistry:()=>oe,WarpMultiversxResults:()=>q,WarpMultiversxSerializer:()=>O,WarpMultiversxWallet:()=>ce,address_value:()=>yt,asset_value:()=>Wt,biguint_value:()=>ft,boolean_value:()=>gt,codemeta:()=>rt,codemeta_value:()=>vt,composite_value:()=>pt,createMultiversxAdapter:()=>pe,findKnownTokenById:()=>we,getAllMultiversxAdapters:()=>Ze,getAllMultiversxChainNames:()=>et,getKnownTokensForChain:()=>je,getMultiversxAdapter:()=>Te,getMultiversxEntrypoint:()=>W,getMultiversxRegistryAddress:()=>b,getNormalizedTokenIdentifier:()=>Z,getVibechainAdapter:()=>Ae,hex_value:()=>Ct,isNativeToken:()=>G,list:()=>at,list_value:()=>ot,nothing_value:()=>Tt,option:()=>nt,option_value:()=>st,optional_value:()=>it,string_value:()=>lt,toTypedConfigInfo:()=>ve,toTypedRegistryInfo:()=>ie,token:()=>tt,token_value:()=>wt,u16_value:()=>mt,u32_value:()=>dt,u64_value:()=>ht,u8_value:()=>ut,variadic_value:()=>ct});module.exports=Qe(xt);var Ee=require("@vleap/warps");var J=require("@vleap/warps");var R=require("@multiversx/sdk-core"),S=require("@vleap/warps");var z=require("@multiversx/sdk-core"),be=require("@vleap/warps"),G=i=>!i.includes("-"),Z=i=>G(i)?`${i}-000000`:i,W=(i,e,t)=>{let r="warp-sdk",s=t?(0,be.getProviderUrl)(t,i.name,e,i.defaultApiUrl):i.defaultApiUrl;return e==="devnet"?new z.DevnetEntrypoint({url:s,kind:"api",clientName:r}):e==="testnet"?new z.TestnetEntrypoint({url:s,kind:"api",clientName:r}):new z.MainnetEntrypoint({url:s,kind:"api",clientName:r})};var ge=require("@vleap/warps");var ee=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await W(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return ge.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await W(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return ge.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var M=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new ee(this.config),this.cache=new S.WarpCache(this.config.cache?.type)}async createInscriptionTransaction(e){let t=(0,S.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new R.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new R.TransferTransactionsFactory({config:r}),s=R.Address.newFromBech32(t),c={protocol:(0,S.getLatestProtocolIdentifier)("abi"),content:e},o=JSON.stringify(c),p=await a.createTransactionForTransfer(s,{receiver:s,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return p.gasLimit=p.gasLimit+BigInt(2e6),p}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=S.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let c=this.cache.get(r);if(c)return S.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),c}let s=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await s.getTransaction(e),o=await this.createFromTransaction(c);return t&&t.ttl&&o&&this.cache.set(r,o,t.ttl),o}catch(c){return S.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",c),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return R.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(S.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(S.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return R.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return R.AbiRegistry.create(r)}}};var $=require("@multiversx/sdk-core"),Q=require("@vleap/warps"),Se=require("buffer");var te=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Q.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,Q.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new $.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new $.TransferTransactionsFactory({config:r}),s=$.Address.newFromBech32(t),c=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(s,{receiver:$.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Se.Buffer.from(c))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return Q.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var K=require("@multiversx/sdk-core"),N=require("@vleap/warps");var re=class extends N.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new N.WarpCache(t.cache?.type),this.core=new N.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,N.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let a=new K.TransactionsFactoryConfig({chainID:this.chain.chainId}),s=new K.TransferTransactionsFactory({config:a}),c=K.Address.newFromBech32(r),o=JSON.stringify(t),p=await s.createTransactionForTransfer(c,{receiver:K.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return p.gasLimit=p.gasLimit+BigInt(2e6),p}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=N.WarpCacheKey.Warp(this.config.env,t);if(r){let o=this.cache.get(a);if(o)return N.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let c=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await c.getTransaction(t),p=await this.createFromTransaction(o);return r&&r.ttl&&p&&this.cache.set(a,p,r.ttl),p}catch(o){return N.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var _=require("@multiversx/sdk-core"),j=require("@vleap/warps");var Be=require("@vleap/warps"),Ie=Be.WarpChainName.Multiversx,Ne=[{chain:Ie,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ie,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Ue=require("@vleap/warps"),E=Ue.WarpChainName.Multiversx,Pe=[{chain:E,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:E,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:E,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:E,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:E,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:E,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:E,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:E,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:E,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:E,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:E,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:E,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:E,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var ke=require("@vleap/warps"),Ve=ke.WarpChainName.Multiversx,Fe=[{chain:Ve,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ve,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Me=require("@vleap/warps"),Re=Me.WarpChainName.Vibechain,me=[{chain:Re,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:Re,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var ye={multiversx:{mainnet:Pe,testnet:Fe,devnet:Ne},vibechain:{mainnet:me,testnet:me,devnet:me}},we=(i,e,t)=>(ye[i]?.[e]||[]).find(a=>a.identifier===t)||null,je=(i,e)=>ye[i]?.[e]||[];var ne=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new j.WarpCache(e.cache?.type)}async getAccount(e){let r=await W(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(_.Address.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=W(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(_.Address.newFromBech32(e)),a=t.getFungibleTokensOfAccount(_.Address.newFromBech32(e)),[s,c]=await Promise.all([r,a]),o=s.balance>0?[{...this.chain.nativeToken,amount:s.balance}]:[];return o.push(...c.map(p=>({chain:this.chain.name,identifier:p.token.identifier,name:p.raw.name,symbol:p.raw.ticker,amount:p.amount,decimals:p.raw.decimals,logoUrl:p.raw.assets?.pngUrl||"",price:p.raw.price?Number(p.raw.price):void 0,supply:p.raw.supply?BigInt(p.raw.supply):void 0}))),o}async getAsset(e){let t=j.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let a=we(this.chain.name,this.config.env,e);if(a)return{chain:this.chain.name,identifier:e,name:a.name,symbol:a.symbol,amount:0n,decimals:a.decimals,logoUrl:a.logoUrl};let s=new _.TokenComputer,c=G(e)?0n:s.extractNonceFromExtendedIdentifier(e),o=new _.Token({identifier:e,nonce:BigInt(c||0)}),p=s.isFungible(o),h=W(this.chain,this.config.env,this.config).createNetworkProvider(),g=Z(e),f=await h.doGetGeneric(`tokens/${g}`),T={chain:this.chain.name,identifier:o.identifier,name:f.name,symbol:f.ticker,amount:0n,decimals:f.decimals,logoUrl:f.assets?.pngUrl||"#",price:f.price?Number(f.price):void 0,supply:f.supply?BigInt(f.supply):void 0};return this.cache.set(t,T,j.CacheTtl.OneHour),T}async getAction(e,t=!1){let r=W(this.chain,this.config.env,this.config),a=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:a.hash,receiver:a.receiver.toBech32(),sender:a.sender.toBech32(),value:a.value,function:a.function,status:this.toActionStatus(a),createdAt:this.toActionCreatedAt(a),error:a?.smartContractResults.map(s=>s.raw.returnMessage)[0]||null,tx:a}}async getAccountActions(e,t){let r=W(this.chain,this.config.env,this.config).createNetworkProvider(),a=`accounts/${e}/transactions`,s=new URLSearchParams,c=t?.size||25,o=t?.page||0;if(o>0){let h=o*c;s.append("from",h.toString())}return c!==25&&s.append("size",c.toString()),s.toString()&&(a+=`?${s.toString()}`),(await r.doGetGeneric(a)).map(h=>({chain:this.chain.name,id:h.txHash,receiver:h.receiver,sender:h.sender,value:h.value,function:h.function,status:this.toActionStatus(h),createdAt:this.toActionCreatedAt(h)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};var w=require("@multiversx/sdk-core"),U=require("@vleap/warps");var X=require("@multiversx/sdk-core"),C=require("@vleap/warps");var n=require("@multiversx/sdk-core"),_e=require("@vleap/warps");var d={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:i=>i.config.user?.wallets?.[i.chain]},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:i=>i.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:i=>i.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},m={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex"};var Xe={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},v={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},Oe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Oe||{}),Le=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Le||{}),Ce={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},H={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var De=new RegExp(`${d.ArgParamsSeparator}(.*)`),O=class{constructor(){this.coreSerializer=new _e.WarpSerializer}typedToString(e){let t=e.getType();if(t.hasExactClass(n.OptionType.ClassName)||e.hasClassOrSuperclass(n.OptionValue.ClassName)){if(!e.isSet())return m.Option+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return m.Option+d.ArgParamsSeparator+r}if(t.hasExactClass(n.VariadicType.ClassName)||e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let r=e.getItems(),s=r.map(o=>this.typedToString(o).split(d.ArgParamsSeparator)[0])[0],c=r.map(o=>this.typedToString(o).split(d.ArgParamsSeparator)[1]);return m.Vector+d.ArgParamsSeparator+s+d.ArgParamsSeparator+c.join(d.ArgListSeparator)}if(t.hasExactClass(n.OptionalType.ClassName)||e.hasClassOrSuperclass(n.OptionalValue.ClassName)){if(!e.isSet())return v.Optional+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return v.Optional+d.ArgParamsSeparator+r}if(t.hasExactClass(n.ListType.ClassName)||e.hasClassOrSuperclass(n.List.ClassName)){let r=e.getItems(),s=r.map(o=>this.typedToString(o).split(d.ArgParamsSeparator)[0])[0],c=r.map(o=>this.typedToString(o).split(d.ArgParamsSeparator)[1]);return v.List+d.ArgParamsSeparator+s+d.ArgParamsSeparator+c.join(d.ArgListSeparator)}if(t.hasExactClass(n.CompositeType.ClassName)||e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let r=e.getItems(),a=r.map(p=>this.typedToString(p).split(d.ArgParamsSeparator)[0]),s=r.map(p=>this.typedToString(p).split(d.ArgParamsSeparator)[1]),c=a.join(d.ArgCompositeSeparator),o=s.join(d.ArgCompositeSeparator);return`${m.Tuple}(${c})${d.ArgParamsSeparator}${o}`}if(t.hasExactClass(n.BigUIntType.ClassName)||e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||t.getName()==="BigUint")return m.Biguint+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(n.U8Type.ClassName)||e.hasClassOrSuperclass(n.U8Value.ClassName))return m.Uint8+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U16Type.ClassName)||e.hasClassOrSuperclass(n.U16Value.ClassName))return m.Uint16+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U32Type.ClassName)||e.hasClassOrSuperclass(n.U32Value.ClassName))return m.Uint32+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U64Type.ClassName)||e.hasClassOrSuperclass(n.U64Value.ClassName))return m.Uint64+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(n.StringType.ClassName)||e.hasClassOrSuperclass(n.StringValue.ClassName))return m.String+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.BooleanType.ClassName)||e.hasClassOrSuperclass(n.BooleanValue.ClassName))return m.Bool+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.AddressType.ClassName)||e.hasClassOrSuperclass(n.AddressValue.ClassName))return m.Address+d.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(n.BytesType.ClassName)||e.hasClassOrSuperclass(n.BytesValue.ClassName))return m.Hex+d.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),a=e.getFieldValue("token_nonce").valueOf(),s=e.getFieldValue("amount").valueOf(),o=new n.TokenComputer().computeExtendedIdentifier(new n.Token({identifier:r,nonce:BigInt(a)}));return m.Asset+d.ArgParamsSeparator+o+d.ArgCompositeSeparator+s}if(t.hasExactClass(n.StructType.ClassName)||e.hasClassOrSuperclass(n.Struct.ClassName)){let r=e,s=r.getType().getName(),c=r.getFields();if(c.length===0)return`${m.Struct}(${s})${d.ArgParamsSeparator}`;let o=c.map(p=>{let h=p.name,g=p.value,f=g.getType(),T=this.typedToString(g).split(d.ArgParamsSeparator)[1];return`(${h}${d.ArgParamsSeparator}${this.typeToString(f)})${T}`});return`${m.Struct}(${s})${d.ArgParamsSeparator}${o.join(d.ArgListSeparator)}`}if(t.hasExactClass(n.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return v.Token+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return v.CodeMeta+d.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(m.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(d.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e.startsWith(m.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new n.StructType(r,[])}if(e===m.String)return new n.StringType;if(e===m.Uint8)return new n.U8Type;if(e===m.Uint16)return new n.U16Type;if(e===m.Uint32)return new n.U32Type;if(e===m.Uint64)return new n.U64Type;if(e===m.Biguint)return new n.BigUIntType;if(e===m.Bool)return new n.BooleanType;if(e===m.Address)return new n.AddressType;if(e===m.Hex)return new n.BytesType;if(e===m.Asset)return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);if(e===v.Token)return new n.TokenIdentifierType;if(e===v.CodeMeta)return new n.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===m.Option){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t===m.Vector){let[a,s]=r.split(De,2),o=s.split(d.ArgListSeparator).map(p=>this.stringToTyped(`${a}:${p}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),o)}if(t.startsWith(m.Tuple)){let a=t.match(/\(([^)]+)\)/)?.[1],s=r.split(d.ArgCompositeSeparator),c=a.split(d.ArgCompositeSeparator),o=s.map((h,g)=>this.stringToTyped(c[g]+d.ArgParamsSeparator+h)),p=o.map(h=>h.getType());return new n.CompositeValue(new n.CompositeType(...p),o)}if(t.startsWith(m.Struct)){let a=t.match(/\(([^)]+)\)/),s=a?a[1]:"CustomStruct";if(!r)return new n.Struct(new n.StructType(s,[]),[]);let c=r.split(d.ArgListSeparator),o=[],p=[];return c.forEach(h=>{let g=h.match(new RegExp(`^\\(([^${d.ArgParamsSeparator}]+)${d.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(g){let[,f,T,A]=g,y=this.stringToTyped(`${T}${d.ArgParamsSeparator}${A}`);o.push(new n.FieldDefinition(f,"",y.getType())),p.push(new n.Field(y,f))}}),new n.Struct(new n.StructType(s,o),p)}if(t===m.String)return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t===m.Uint8)return r?new n.U8Value(Number(r)):new n.NothingValue;if(t===m.Uint16)return r?new n.U16Value(Number(r)):new n.NothingValue;if(t===m.Uint32)return r?new n.U32Value(Number(r)):new n.NothingValue;if(t===m.Uint64)return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t===m.Biguint)return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t===m.Bool)return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t===m.Address)return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t===m.Hex)return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t===m.Asset){let[a,s]=r.split(d.ArgCompositeSeparator),c=new n.TokenComputer,o=G(a)?Z(a):c.extractIdentifierFromExtendedIdentifier(a),p=G(a)?0n:c.extractNonceFromExtendedIdentifier(a);return new n.Struct(this.nativeToType("asset"),[new n.Field(new n.TokenIdentifierValue(o),"token_identifier"),new n.Field(new n.U64Value(BigInt(p)),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(s)),"amount")])}if(t===v.Null)return new n.NothingValue;if(t===v.Optional){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t===v.List){let[a,s]=r.split(De,2),o=s.split(d.ArgListSeparator).map(p=>this.stringToTyped(a+d.ArgParamsSeparator+p));return new n.List(this.nativeToType(a),o)}if(t===v.Token)return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t===v.CodeMeta)return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(n.OptionType.ClassName))return m.Option+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.VariadicType.ClassName))return m.Vector+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.StringType.ClassName))return m.String;if(e.hasExactClass(n.U8Type.ClassName))return m.Uint8;if(e.hasExactClass(n.U16Type.ClassName))return m.Uint16;if(e.hasExactClass(n.U32Type.ClassName))return m.Uint32;if(e.hasExactClass(n.U64Type.ClassName))return m.Uint64;if(e.hasExactClass(n.BigUIntType.ClassName))return m.Biguint;if(e.hasExactClass(n.BooleanType.ClassName))return m.Bool;if(e.hasExactClass(n.AddressType.ClassName))return m.Address;if(e.hasExactClass(n.BytesType.ClassName))return m.Hex;if(e.hasExactClass(n.TokenIdentifierType.ClassName))return v.Token;if(e.hasExactClass(n.OptionalType.ClassName))return v.Optional+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.ListType.ClassName))return v.List+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.CodeMetadataType.ClassName))return v.CodeMeta;if(e.hasExactClass(n.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return m.Asset;if(e.hasExactClass(n.StructType.ClassName))return`${m.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var q=class{constructor(e,t){this.config=e;this.chain=t;this.abi=new M(e,t),this.serializer=new O,this.cache=new C.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,C.findWarpExecutableAction)(e),a=this.cache.get(C.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],s=await this.extractContractResults(e,t,a),c=(0,C.getNextInfo)(this.config,[],e,r,s),o=(0,C.applyResultsToMessages)(e,s.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:(0,C.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:t.hash,tx:t,next:c,values:s.values,valuesRaw:[],results:s.results,messages:o}}async extractContractResults(e,t,r){let{action:a,actionIndex:s}=(0,C.findWarpExecutableAction)(e),c=[],o={};if(!e.results||a.type!=="contract")return{values:c,results:o};if(!Object.values(e.results).some(A=>A.includes("out")||A.includes("event"))){for(let[A,y]of Object.entries(e.results))o[A]=y;return{values:c,results:await(0,C.evaluateResultsCommon)(e,o,s,r,this.config.transform?.runner)}}let h=await this.abi.getAbiForAction(a),g=new X.TransactionEventsParser({abi:h}),T=new X.SmartContractTransactionsOutcomeParser({abi:h}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[A,y]of Object.entries(e.results)){if(y.startsWith(C.WarpConstants.Transform.Prefix))continue;if(y.startsWith("input.")){o[A]=y;continue}let k=(0,C.parseResultsOutIndex)(y);if(k!==null&&k!==s){o[A]=null;continue}let[I,B,D]=y.split(".");if(I==="event"){if(!B||isNaN(Number(D)))continue;let F=Number(D),x=(0,X.findEventsByFirstTopic)(t,B),Y=g.parseEvents({events:x})[0],ue=Object.values(Y)[F]||null;c.push(ue),o[A]=ue&&ue.valueOf()}else if(I==="out"||I.startsWith("out[")){if(!B)continue;let F=Number(B),x=T.values[F-1]||null;D&&(x=x[D]||null),x&&typeof x=="object"&&(x="toFixed"in x?x.toFixed():x.valueOf()),c.push(x),o[A]=x&&x.valueOf()}else o[A]=y}return{values:c,results:await(0,C.evaluateResultsCommon)(e,o,s,r)}}async extractQueryResults(e,t,r,a){let s=t.map(h=>this.serializer.typedToString(h)),c=t.map(h=>this.serializer.typedToNative(h)[1]),o={};if(!e.results)return{values:s,valuesRaw:c,results:o};let p=h=>{let g=h.split(".").slice(1).map(T=>parseInt(T)-1);if(g.length===0)return;let f=c[g[0]];for(let T=1;T<g.length;T++){if(f==null)return;f=f[g[T]]}return f};for(let[h,g]of Object.entries(e.results)){if(g.startsWith(C.WarpConstants.Transform.Prefix))continue;let f=(0,C.parseResultsOutIndex)(g);if(f!==null&&f!==r){o[h]=null;continue}g.startsWith("out.")||g==="out"||g.startsWith("out[")?o[h]=p(g)||null:o[h]=g}return{values:s,valuesRaw:c,results:await(0,C.evaluateResultsCommon)(e,o,r,a)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,s=e.inputs,c=e.meta,o=new Map,p=new Set,h=this;async function g(y,k=[]){if(o.has(y))return o.get(y);if(p.has(y))throw new Error(`Circular dependency detected at action ${y}`);p.add(y);let I=t.actions[y-1];if(!I)throw new Error(`Action ${y} not found`);let B;if(I.type==="query")B=await a.executeQuery(t,y,k);else if(I.type==="collect")B=await a.executeCollect(t,y,k,c);else throw new Error(`Unsupported or interactive action type: ${I.type}`);if(o.set(y,B),t.results)for(let D of Object.values(t.results)){let x=String(D).match(/^out\[(\d+)\]/);if(x){let Y=parseInt(x[1],10);Y!==y&&!o.has(Y)&&await g(Y)}}return p.delete(y),B}await g(r,s);let f={};for(let y of o.values())for(let[k,I]of Object.entries(y.results))I!==null?f[k]=I:k in f||(f[k]=null);let T=await(0,C.evaluateResultsCommon)(t,f,r,s,this.config.transform?.runner);return{...o.get(r),action:r,results:T}}};var Je="EGLD-000000",ae=class{constructor(e,t){this.config=e;this.chain=t;this.serializer=new O,this.abi=new M(this.config,this.chain),this.results=new q(this.config,this.chain)}async createTransaction(e){let t=(0,U.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=w.Address.newFromBech32(t),a=new w.TransactionsFactoryConfig({chainID:e.chain.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,c=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,p=(c?e.transfers[0].amount:0n)+e.value;return await new w.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:w.Address.newFromBech32(e.destination),nativeAmount:p,tokenTransfers:c?[]:this.toTokenTransfers(e.transfers),data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){let t=(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,U.getWarpActionByIndex)(e.warp,e.action),a=w.Address.newFromBech32(t),s=e.args.map(o=>this.serializer.stringToTyped(o)),c=new w.TransactionsFactoryConfig({chainID:e.chain.chainId});return new w.SmartContractTransactionsFactory({config:c}).createTransactionForExecute(a,{contract:w.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,U.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(F=>this.serializer.stringToTyped(F)),s=W(e.chain,this.config.env,this.config),c=w.Address.newFromBech32(e.destination),o=s.createSmartContractController(r),p=o.createQuery({contract:c,function:t.func||"",arguments:a}),h=await o.runQuery(p),g=h.returnCode==="ok",f=new w.ArgSerializer,T=r.getEndpoint(h.function||t.func||""),A=(h.returnDataParts||[]).map(F=>Buffer.from(F)),y=f.buffersToValues(A,T.output),{values:k,valuesRaw:I,results:B}=await this.results.extractQueryResults(e.warp,y,e.action,e.resolvedInputs),D=(0,U.getNextInfo)(this.config,[],e.warp,e.action,B);return{success:g,warp:e.warp,action:e.action,user:(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:D,values:k,valuesRaw:I,results:B,messages:(0,U.applyResultsToMessages)(e.warp,B)}}async signMessage(e,t){let r=w.UserSecretKey.fromString(t);return(await new w.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Je}:t).map(t=>{let a=new w.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new w.TokenTransfer({token:new w.Token({identifier:t.identifier,nonce:BigInt(a||0)}),amount:t.amount})})}};var se=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ce[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let s=H[t];if(s)return s}if(e){let s=H[e];if(s)return s}let r=this.getPrimaryExplorer();return H[r]||H[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=H[a];s&&(r[a]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=H[a];s&&(r[a]=`${s}/transactions/${e}`)}),r}};var u=require("@multiversx/sdk-core"),P=require("@vleap/warps");var We={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var b=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ie=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),ve=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var oe=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new P.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,P.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet),s=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,c=()=>t&&r?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t),u.BytesValue.fromHex(r)]:t?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]:[u.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:c()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(t),u.BytesValue.fromHex(r)]:[u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e),new u.AddressValue(new u.Address(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=P.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return P.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let s=u.Address.newFromBech32(b(this.config.env)),c=this.getController(),o=c.createQuery({contract:s,function:"getInfoByAlias",arguments:[u.BytesValue.fromUTF8(e)]}),p=await c.runQuery(o),[h]=c.parseQueryResponse(p),g=h?ie(h):null,f=g?.brand?await this.fetchBrand(g.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:g,brand:f},t.ttl),{registryInfo:g,brand:f}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=P.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let f=this.cache.get(r);if(f)return P.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),f}let a=u.Address.newFromBech32(b(this.config.env)),s=this.getController(),c=s.createQuery({contract:a,function:"getInfoByHash",arguments:[u.BytesValue.fromHex(e)]}),o=await s.runQuery(c),[p]=s.parseQueryResponse(o),h=p?ie(p):null,g=h?.brand?await this.fetchBrand(h.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:h,brand:g},t.ttl),{registryInfo:h,brand:g}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserWarps",arguments:[new u.AddressValue(new u.Address(t))]}),c=await a.runQuery(s),[o]=a.parseQueryResponse(c);return o.map(ie)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserBrands",arguments:[new u.AddressValue(new u.Address(t))]}),c=await a.runQuery(s),[o]=a.parseQueryResponse(c),p=o.map(f=>f.toString("hex")),h={ttl:365*24*60*60};return(await Promise.all(p.map(f=>this.fetchBrand(f,h)))).filter(f=>f!==null)}catch{return[]}}async fetchBrand(e,t){let r=P.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return P.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let c=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await c.getTransaction(e),p=JSON.parse(o.data.toString());return p.meta={chain:this.chain.name,hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,p,t.ttl),p}catch{return null}}async loadRegistryConfigs(){let e=u.Address.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?ve(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new u.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=u.AbiRegistry.create(We);return new u.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=W(this.chain,this.config.env,this.config),t=u.AbiRegistry.create(We);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var V=require("@multiversx/sdk-core"),L=require("@vleap/warps");var ce=class{constructor(e,t){this.config=e;this.chain=t;this.entry=W(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new L.WarpCache(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=(0,L.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?V.UserSecretKey.fromPem(t):V.UserSecretKey.fromString(t),s=new V.Account(a);if(e.nonce===0n){let c=await this.entry.recallAccountNonce(s.address),o=this.cache.get(`nonce:${s.address.toBech32()}`)||0,p=BigInt(Math.max(o,Number(c)));e.nonce=p}return e.signature=await s.signTransaction(e),this.cache.set(`nonce:${s.address.toBech32()}`,Number(s.nonce),L.CacheTtl.OneHour),e}async signMessage(e){let t=(0,L.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?V.UserSecretKey.fromPem(t):V.UserSecretKey.fromString(t),s=new V.UserSigner(a),c=new TextEncoder().encode(e),o=await s.sign(c);return Buffer.from(o).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=V.Mnemonic.fromString(e).deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:e}}generate(){let e=V.Mnemonic.generate(),t=e.toString(),r=e.deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:t}}getAddress(){return(0,L.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}};var pe=(i,e,t)=>(r,a)=>{let s=t[r.env];return{chain:i,chainInfo:s,prefix:e,builder:()=>new re(r,s),executor:new ae(r,s),results:new q(r,s),serializer:new O,registry:new oe(r,s),explorer:new se(i,r),abiBuilder:()=>new M(r,s),brandBuilder:()=>new te(r,s),dataLoader:new ne(r,s),wallet:new ce(r,s),registerTypes:c=>{c.registerType("token",{stringToNative:o=>o,nativeToString:o=>`token:${o}`}),c.registerType("codemeta",{stringToNative:o=>o,nativeToString:o=>`codemeta:${o}`})}}};var de={chain:J.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},Te=pe(J.WarpChainName.Multiversx,"multiversx",{mainnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de},testnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de},devnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de}});var he=require("@vleap/warps");var He={chain:he.WarpChainName.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},xe={name:he.WarpChainName.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:He},Ae=pe(he.WarpChainName.Vibechain,"vibe",{mainnet:xe,testnet:xe,devnet:xe});var Ze=(i,e)=>[Te(i,e),Ae(i,e)],et=()=>[Ee.WarpChainName.Multiversx,Ee.WarpChainName.Vibechain];var le=require("@vleap/warps");var tt=i=>new le.WarpSerializer().nativeToString(v.Token,i),rt=i=>new le.WarpSerializer().nativeToString(v.CodeMeta,i),nt=(i,e)=>new le.WarpSerializer().nativeToString(v.Optional,i),at=i=>new le.WarpSerializer().nativeToString(v.List,i);var l=require("@multiversx/sdk-core"),st=(i,e)=>i?l.OptionValue.newProvided(i):e?l.OptionValue.newMissingTyped(e):l.OptionValue.newMissing(),it=(i,e)=>i?new l.OptionalValue(i.getType(),i):e?new l.OptionalValue(e):l.OptionalValue.newMissing(),ot=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new l.List(e,i)},ct=i=>l.VariadicValue.fromItems(...i),pt=i=>{let e=i.map(t=>t.getType());return new l.CompositeValue(new l.CompositeType(...e),i)},lt=i=>l.StringValue.fromUTF8(i),ut=i=>new l.U8Value(i),mt=i=>new l.U16Value(i),dt=i=>new l.U32Value(i),ht=i=>new l.U64Value(i),ft=i=>new l.BigUIntValue(BigInt(i)),gt=i=>new l.BooleanValue(i),yt=i=>new l.AddressValue(l.Address.newFromBech32(i)),wt=i=>new l.TokenIdentifierValue(i),Ct=i=>l.BytesValue.fromHex(i),Wt=i=>new l.Struct(new l.StructType("EsdtTokenPayment",[new l.FieldDefinition("token_identifier","",new l.TokenIdentifierType),new l.FieldDefinition("token_nonce","",new l.U64Type),new l.FieldDefinition("amount","",new l.BigUIntType)]),[new l.Field(new l.TokenIdentifierValue(i.token.identifier),"token_identifier"),new l.Field(new l.U64Value(BigInt(i.token.nonce)),"token_nonce"),new l.Field(new l.BigUIntValue(BigInt(i.amount)),"amount")]),vt=i=>new l.CodeMetadataValue(l.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Tt=()=>new l.NothingValue;0&&(module.exports={ExplorerUrls,KnownTokens,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenEgld,NativeTokenVibe,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxAdapter,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,getVibechainAdapter,hex_value,isNativeToken,list,list_value,nothing_value,option,option_value,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{WarpChainName as vt}from"@vleap/warps";import{WarpChainName as P}from"@vleap/warps";import{AbiRegistry as ee,Address as Nt,TransactionsFactoryConfig as St,TransferTransactionsFactory as kt}from"@multiversx/sdk-core";import{getLatestProtocolIdentifier as Vt,getWarpWalletAddressFromConfig as Ut,WarpCache as Ft,WarpCacheKey as Pt,WarpConstants as Ue,WarpLogger as Fe}from"@vleap/warps";import{DevnetEntrypoint as bt,MainnetEntrypoint as At,TestnetEntrypoint as Bt}from"@multiversx/sdk-core";import{getProviderUrl as It}from"@vleap/warps";var k=i=>!i.includes("-"),M=i=>k(i)?`${i}-000000`:i,h=(i,e,t)=>{let r="warp-sdk",a=t?It(t,i.name,e,i.defaultApiUrl):i.defaultApiUrl;return e==="devnet"?new bt({url:a,kind:"api",clientName:r}):e==="testnet"?new Bt({url:a,kind:"api",clientName:r}):new At({url:a,kind:"api",clientName:r})};import{WarpLogger as Ve}from"@vleap/warps";var O=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await h(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return Ve.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await h(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return Ve.error("WarpContractLoader: getVerificationInfo error",r),null}}};var I=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new O(this.config),this.cache=new Ft(this.config.cache?.type)}async createInscriptionTransaction(e){let t=Ut(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new St({chainID:this.chain.chainId}),n=new kt({config:r}),a=Nt.newFromBech32(t),o={protocol:Vt("abi"),content:e},s=JSON.stringify(o),c=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Pt.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return Fe.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=h(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return Fe.error("WarpAbiBuilder: Error creating from transaction hash",o),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return ee.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Ue.IdentifierType.Hash)){let t=e.abi.split(Ue.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return ee.create(r.content)}else{let r=await(await fetch(e.abi)).json();return ee.create(r)}}};import{Address as Pe,TransactionsFactoryConfig as Rt,TransferTransactionsFactory as Mt}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Ot,WarpBrandBuilder as Dt,WarpLogger as Lt}from"@vleap/warps";import{Buffer as _t}from"buffer";var D=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Dt(e)}async createInscriptionTransaction(e){let t=Ot(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Rt({chainID:this.chain.chainId}),n=new Mt({config:r}),a=Pe.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:Pe.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(_t.from(o))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=h(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Lt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as Re,TransactionsFactoryConfig as Gt,TransferTransactionsFactory as $t}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Ht,WarpBuilder as Me,WarpCache as Kt,WarpCacheKey as qt,WarpLogger as Oe}from"@vleap/warps";var L=class extends Me{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new Kt(t.cache?.type),this.core=new Me(t)}async createInscriptionTransaction(t){let r=Ht(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new Gt({chainID:this.chain.chainId}),a=new $t({config:n}),o=Re.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:Re.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=qt.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Oe.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=h(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Oe.error("WarpBuilder: Error creating from transaction hash",s),null}}};import{Address as te,Token as Jt,TokenComputer as Yt}from"@multiversx/sdk-core";import{CacheTtl as Zt,WarpCache as er,WarpCacheKey as tr}from"@vleap/warps";import{WarpChainName as zt}from"@vleap/warps";var De=zt.Multiversx,Le=[{chain:De,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:De,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Qt}from"@vleap/warps";var y=Qt.Multiversx,_e=[{chain:y,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:y,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:y,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:y,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:y,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:y,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:y,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:y,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:y,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:y,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:y,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:y,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:y,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:y,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:y,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as jt}from"@vleap/warps";var Ge=jt.Multiversx,$e=[{chain:Ge,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ge,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Xt}from"@vleap/warps";var He=Xt.Vibechain,_=[{chain:He,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:He,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var Ke={multiversx:{mainnet:_e,testnet:$e,devnet:Le},vibechain:{mainnet:_,testnet:_,devnet:_}},qe=(i,e,t)=>(Ke[i]?.[e]||[]).find(n=>n.identifier===t)||null,va=(i,e)=>Ke[i]?.[e]||[];var G=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new er(e.cache?.type)}async getAccount(e){let r=await h(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(te.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=h(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(te.newFromBech32(e)),n=t.getFungibleTokensOfAccount(te.newFromBech32(e)),[a,o]=await Promise.all([r,n]),s=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return s.push(...o.map(c=>({chain:this.chain.name,identifier:c.token.identifier,name:c.raw.name,symbol:c.raw.ticker,amount:c.amount,decimals:c.raw.decimals,logoUrl:c.raw.assets?.pngUrl||"",price:c.raw.price?Number(c.raw.price):void 0,supply:c.raw.supply?BigInt(c.raw.supply):void 0}))),s}async getAsset(e){let t=tr.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=qe(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let a=new Yt,o=k(e)?0n:a.extractNonceFromExtendedIdentifier(e),s=new Jt({identifier:e,nonce:BigInt(o||0)}),c=a.isFungible(s),p=h(this.chain,this.config.env,this.config).createNetworkProvider(),u=M(e),l=await p.doGetGeneric(`tokens/${u}`),w={chain:this.chain.name,identifier:s.identifier,name:l.name,symbol:l.ticker,amount:0n,decimals:l.decimals,logoUrl:l.assets?.pngUrl||"#",price:l.price?Number(l.price):void 0,supply:l.supply?BigInt(l.supply):void 0};return this.cache.set(t,w,Zt.OneHour),w}async getAction(e,t=!1){let r=h(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(a=>a.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=h(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,o=t?.size||25,s=t?.page||0;if(s>0){let p=s*o;a.append("from",p.toString())}return o!==25&&a.append("size",o.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(p=>({chain:this.chain.name,id:p.txHash,receiver:p.receiver,sender:p.sender,value:p.value,function:p.function,status:this.toActionStatus(p),createdAt:this.toActionCreatedAt(p)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};import{Address as F,ArgSerializer as fr,SmartContractTransactionsFactory as gr,Token as yr,TokenComputer as wr,TokenTransfer as Wr,TransactionsFactoryConfig as dt,TransferTransactionsFactory as Cr,UserSecretKey as vr,UserSigner as Tr}from"@multiversx/sdk-core";import{applyResultsToMessages as xr,getNextInfo as Er,getWarpActionByIndex as We,getWarpWalletAddressFromConfig as Ce}from"@vleap/warps";import{findEventsByFirstTopic as or,SmartContractTransactionsOutcomeParser as cr,TransactionEventsParser as pr}from"@multiversx/sdk-core";import{applyResultsToMessages as lr,evaluateResultsCommon as q,findWarpExecutableAction as lt,getNextInfo as ur,getWarpWalletAddressFromConfig as mr,parseResultsOutIndex as ut,WarpCache as dr,WarpCacheKey as hr,WarpConstants as mt}from"@vleap/warps";import{Address as rr,AddressType as re,AddressValue as ze,BigUIntType as $,BigUIntValue as ne,BooleanType as ae,BooleanValue as Qe,BytesType as se,BytesValue as je,CodeMetadata as nr,CodeMetadataType as ie,CodeMetadataValue as Xe,CompositeType as oe,CompositeValue as Je,Field as ce,FieldDefinition as pe,List as Ye,ListType as Ze,NothingValue as x,OptionalType as et,OptionalValue as le,OptionType as tt,OptionValue as ue,StringType as me,StringValue as rt,Struct as ar,StructType as nt,Token as sr,TokenComputer as at,TokenIdentifierType as H,TokenIdentifierValue as de,U16Type as he,U16Value as st,U32Type as fe,U32Value as it,U64Type as K,U64Value as ge,U8Type as ye,U8Value as ot,VariadicType as we,VariadicValue as ct}from"@multiversx/sdk-core";import{WarpConstants as E,WarpSerializer as ir}from"@vleap/warps";var pt=new RegExp(`${E.ArgParamsSeparator}(.*)`),N=class{constructor(){this.coreSerializer=new ir}typedToString(e){let t=e.getType();if(t.hasExactClass(tt.ClassName)||e.hasClassOrSuperclass(ue.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(t.hasExactClass(et.ClassName)||e.hasClassOrSuperclass(le.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(t.hasExactClass(Ze.ClassName)||e.hasClassOrSuperclass(Ye.ClassName)){let r=e.getItems(),a=r.map(s=>this.typedToString(s).split(E.ArgParamsSeparator)[0])[0],o=r.map(s=>this.typedToString(s).split(E.ArgParamsSeparator)[1]);return`list:${a}:${o.join(",")}`}if(t.hasExactClass(we.ClassName)||e.hasClassOrSuperclass(ct.ClassName)){let r=e.getItems(),a=r.map(s=>this.typedToString(s).split(E.ArgParamsSeparator)[0])[0],o=r.map(s=>this.typedToString(s).split(E.ArgParamsSeparator)[1]);return`variadic:${a}:${o.join(",")}`}if(t.hasExactClass(oe.ClassName)||e.hasClassOrSuperclass(Je.ClassName)){let r=e.getItems(),n=r.map(c=>this.typedToString(c).split(E.ArgParamsSeparator)[0]),a=r.map(c=>this.typedToString(c).split(E.ArgParamsSeparator)[1]),o=n.join(E.ArgCompositeSeparator),s=a.join(E.ArgCompositeSeparator);return`composite(${o}):${s}`}if(t.hasExactClass($.ClassName)||e.hasClassOrSuperclass(ne.ClassName)||t.getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(t.hasExactClass(ye.ClassName)||e.hasClassOrSuperclass(ot.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(t.hasExactClass(he.ClassName)||e.hasClassOrSuperclass(st.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(t.hasExactClass(fe.ClassName)||e.hasClassOrSuperclass(it.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(t.hasExactClass(K.ClassName)||e.hasClassOrSuperclass(ge.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(t.hasExactClass(me.ClassName)||e.hasClassOrSuperclass(rt.ClassName))return`string:${e.valueOf()}`;if(t.hasExactClass(ae.ClassName)||e.hasClassOrSuperclass(Qe.ClassName))return`bool:${e.valueOf()}`;if(t.hasExactClass(re.ClassName)||e.hasClassOrSuperclass(ze.ClassName))return`address:${e.valueOf().toBech32()}`;if(t.hasExactClass(H.ClassName)||e.hasClassOrSuperclass(de.ClassName))return`token:${e.valueOf()}`;if(t.hasExactClass(se.ClassName)||e.hasClassOrSuperclass(je.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(t.hasExactClass(ie.ClassName)||e.hasClassOrSuperclass(Xe.ClassName))return`codemeta:${e.valueOf().toString()}`;if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf();return`asset:${new at().computeExtendedIdentifier(new sr({identifier:r,nonce:BigInt(n)}))}|${a}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new oe(...t.split(E.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new me;if(e==="uint8")return new ye;if(e==="uint16")return new he;if(e==="uint32")return new fe;if(e==="uint64")return new K;if(e==="biguint")return new $;if(e==="bool")return new ae;if(e==="address")return new re;if(e==="token")return new H;if(e==="hex")return new se;if(e==="codemeta")return new ie;if(e==="asset")return new nt("EsdtTokenPayment",[new pe("token_identifier","",new H),new pe("token_nonce","",new K),new pe("amount","",new $)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new x;if(t==="option"){let n=this.stringToTyped(r);return n instanceof x?ue.newMissingTyped(n.getType()):ue.newProvided(n)}if(t==="optional"){let n=this.stringToTyped(r);return n instanceof x?le.newMissing():new le(n.getType(),n)}if(t==="list"){let[n,a]=r.split(pt,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Ye(this.nativeToType(n),s)}if(t==="variadic"){let[n,a]=r.split(pt,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new ct(new we(this.nativeToType(n)),s)}if(t.startsWith("composite")){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(E.ArgCompositeSeparator),o=n.split(E.ArgCompositeSeparator),s=a.map((p,u)=>this.stringToTyped(`${o[u]}:${p}`)),c=s.map(p=>p.getType());return new Je(new oe(...c),s)}if(t==="string")return r?rt.fromUTF8(r):new x;if(t==="uint8")return r?new ot(Number(r)):new x;if(t==="uint16")return r?new st(Number(r)):new x;if(t==="uint32")return r?new it(Number(r)):new x;if(t==="uint64")return r?new ge(BigInt(r)):new x;if(t==="biguint")return r?new ne(BigInt(r)):new x;if(t==="bool")return r?new Qe(typeof r=="boolean"?r:r==="true"):new x;if(t==="address")return r?new ze(rr.newFromBech32(r)):new x;if(t==="token")return r?new de(r):new x;if(t==="hex")return r?je.fromHex(r):new x;if(t==="codemeta")return new Xe(nr.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="asset"){let[n,a]=r.split(E.ArgCompositeSeparator),o=new at,s=k(n)?M(n):o.extractIdentifierFromExtendedIdentifier(n),c=k(n)?0n:o.extractNonceFromExtendedIdentifier(n);return new ar(this.nativeToType("asset"),[new ce(new de(s),"token_identifier"),new ce(new ge(BigInt(c)),"token_nonce"),new ce(new ne(BigInt(a)),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(tt.ClassName))return"option:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(et.ClassName))return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(Ze.ClassName))return"list:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(we.ClassName))return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(me.ClassName))return"string";if(e.hasExactClass(ye.ClassName))return"uint8";if(e.hasExactClass(he.ClassName))return"uint16";if(e.hasExactClass(fe.ClassName))return"uint32";if(e.hasExactClass(K.ClassName))return"uint64";if(e.hasExactClass($.ClassName))return"biguint";if(e.hasExactClass(ae.ClassName))return"bool";if(e.hasExactClass(re.ClassName))return"address";if(e.hasExactClass(H.ClassName))return"token";if(e.hasExactClass(se.ClassName))return"hex";if(e.hasExactClass(ie.ClassName))return"codemeta";if(e.hasExactClass(nt.ClassName)&&e.getClassName()==="EsdtTokenPayment")return"asset";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var V=class{constructor(e,t){this.config=e;this.chain=t;this.abi=new I(e,t),this.serializer=new N,this.cache=new dr(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=lt(e),n=this.cache.get(hr.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=ur(this.config,[],e,r,a),s=lr(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:mr(this.config,this.chain.name),txHash:t.hash,tx:t,next:o,values:a.values,valuesRaw:[],results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=lt(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(C=>C.includes("out")||C.includes("event"))){for(let[C,m]of Object.entries(e.results))s[C]=m;return{values:o,results:await q(e,s,a,r,this.config.transform?.runner)}}let p=await this.abi.getAbiForAction(n),u=new pr({abi:p}),w=new cr({abi:p}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[C,m]of Object.entries(e.results)){if(m.startsWith(mt.Transform.Prefix))continue;if(m.startsWith("input.")){s[C]=m;continue}let b=ut(m);if(b!==null&&b!==a){s[C]=null;continue}let[v,T,B]=m.split(".");if(v==="event"){if(!T||isNaN(Number(B)))continue;let A=Number(B),g=or(t,T),U=u.parseEvents({events:g})[0],R=Object.values(U)[A]||null;o.push(R),s[C]=R&&R.valueOf()}else if(v==="out"||v.startsWith("out[")){if(!T)continue;let A=Number(T),g=w.values[A-1]||null;B&&(g=g[B]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),o.push(g),s[C]=g&&g.valueOf()}else s[C]=m}return{values:o,results:await q(e,s,a,r)}}async extractQueryResults(e,t,r,n){let a=t.map(p=>this.serializer.typedToString(p)),o=t.map(p=>this.serializer.typedToNative(p)[1]),s={};if(!e.results)return{values:a,valuesRaw:o,results:s};let c=p=>{let u=p.split(".").slice(1).map(w=>parseInt(w)-1);if(u.length===0)return;let l=o[u[0]];for(let w=1;w<u.length;w++){if(l==null)return;l=l[u[w]]}return l};for(let[p,u]of Object.entries(e.results)){if(u.startsWith(mt.Transform.Prefix))continue;let l=ut(u);if(l!==null&&l!==r){s[p]=null;continue}u.startsWith("out.")||u==="out"||u.startsWith("out[")?s[p]=c(u)||null:s[p]=u}return{values:a,valuesRaw:o,results:await q(e,s,r,n)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,p=this;async function u(m,b=[]){if(s.has(m))return s.get(m);if(c.has(m))throw new Error(`Circular dependency detected at action ${m}`);c.add(m);let v=t.actions[m-1];if(!v)throw new Error(`Action ${m} not found`);let T;if(v.type==="query")T=await n.executeQuery(t,m,b);else if(v.type==="collect")T=await n.executeCollect(t,m,b,o);else throw new Error(`Unsupported or interactive action type: ${v.type}`);if(s.set(m,T),t.results)for(let B of Object.values(t.results)){let g=String(B).match(/^out\[(\d+)\]/);if(g){let U=parseInt(g[1],10);U!==m&&!s.has(U)&&await u(U)}}return c.delete(m),T}await u(r,a);let l={};for(let m of s.values())for(let[b,v]of Object.entries(m.results))v!==null?l[b]=v:b in l||(l[b]=null);let w=await q(t,l,r,a,this.config.transform?.runner);return{...s.get(r),action:r,results:w}}};var br="EGLD-000000",z=class{constructor(e,t){this.config=e;this.chain=t;this.serializer=new N,this.abi=new I(this.config,this.chain),this.results=new V(this.config,this.chain)}async createTransaction(e){let t=We(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=Ce(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new dt({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,o=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,c=(o?e.transfers[0].amount:0n)+e.value;return await new Cr({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:c,tokenTransfers:o?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=Ce(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=We(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new dt({chainID:e.chain.chainId});return new gr({config:o}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=We(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(A=>this.serializer.stringToTyped(A)),a=h(e.chain,this.config.env,this.config),o=F.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),p=await s.runQuery(c),u=p.returnCode==="ok",l=new fr,w=r.getEndpoint(p.function||t.func||""),C=(p.returnDataParts||[]).map(A=>Buffer.from(A)),m=l.buffersToValues(C,w.output),{values:b,valuesRaw:v,results:T}=await this.results.extractQueryResults(e.warp,m,e.action,e.resolvedInputs),B=Er(this.config,[],e.warp,e.action,T);return{success:u,warp:e.warp,action:e.action,user:Ce(this.config,e.chain.name),txHash:null,tx:null,next:B,values:b,valuesRaw:v,results:T,messages:xr(e.warp,T)}}async signMessage(e,t){let r=vr.fromString(t);return(await new Tr(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:br}:t).map(t=>{let n=new wr().extractNonceFromExtendedIdentifier(t.identifier);return new Wr({token:new yr({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var bs={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},Ar=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Ar||{}),Br=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Br||{}),ht={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},S={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var Q=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=ht[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let a=S[t];if(a)return a}if(e){let a=S[e];if(a)return a}let r=this.getPrimaryExplorer();return S[r]||S[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=S[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=S[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as gt,Address as d,AddressValue as Te,BytesValue as f,SmartContractTransactionsFactory as Nr,TransactionsFactoryConfig as Sr}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as kr,WarpCache as Vr,WarpCacheKey as xe,WarpLogger as Ee}from"@vleap/warps";var ve={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var W=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var j=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),ft=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var X=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Vr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=kr(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=d.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[f.fromHex(e),f.fromUTF8(t),f.fromHex(r)]:t?[f.fromHex(e),f.fromUTF8(t)]:[f.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:d.newFromBech32(W(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.newFromBech32(W(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[f.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:d.newFromBech32(W(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[f.fromUTF8(e),f.fromHex(t),f.fromHex(r)]:[f.fromUTF8(e),f.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.newFromBech32(W(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[f.fromHex(e),f.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.newFromBech32(W(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[f.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.newFromBech32(W(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[f.fromHex(e),new Te(new d(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.newFromBech32(W(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[f.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.newFromBech32(W(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[f.fromHex(e),f.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=xe.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ee.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=d.newFromBech32(W(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[f.fromUTF8(e)]}),c=await o.runQuery(s),[p]=o.parseQueryResponse(c),u=p?j(p):null,l=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:l},t.ttl),{registryInfo:u,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=xe.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return Ee.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=d.newFromBech32(W(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[f.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),p=c?j(c):null,u=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:p,brand:u},t.ttl),{registryInfo:p,brand:u}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=d.newFromBech32(W(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new Te(new d(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map(j)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=d.newFromBech32(W(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new Te(new d(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(l=>l.toString("hex")),p={ttl:365*24*60*60};return(await Promise.all(c.map(l=>this.fetchBrand(l,p)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=xe.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ee.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=h(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={chain:this.chain.name,hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=d.newFromBech32(W(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?ft(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new Sr({chainID:this.chain.chainId}),t=gt.create(ve);return new Nr({config:e,abi:t})}getController(){let e=h(this.chain,this.config.env,this.config),t=gt.create(ve);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{Account as Ur,Mnemonic as yt,UserSecretKey as J,UserSigner as Fr}from"@multiversx/sdk-core";import{CacheTtl as Pr,getWarpWalletAddressFromConfig as Rr,getWarpWalletPrivateKeyFromConfig as wt,WarpCache as Mr}from"@vleap/warps";var Y=class{constructor(e,t){this.config=e;this.chain=t;this.entry=h(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new Mr(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=wt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?J.fromPem(t):J.fromString(t),a=new Ur(n);if(e.nonce===0n){let o=await this.entry.recallAccountNonce(a.address),s=this.cache.get(`nonce:${a.address.toBech32()}`)||0,c=BigInt(Math.max(s,Number(o)));e.nonce=c}return e.signature=await a.signTransaction(e),this.cache.set(`nonce:${a.address.toBech32()}`,Number(a.nonce),Pr.OneHour),e}async signMessage(e){let t=wt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?J.fromPem(t):J.fromString(t),a=new Fr(n),o=new TextEncoder().encode(e),s=await a.sign(o);return Buffer.from(s).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=yt.fromString(e).deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=yt.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAddress(){return Rr(this.config,this.chain.name)}};var Z=(i,e,t)=>(r,n)=>{let a=t[r.env];return{chain:i,chainInfo:a,prefix:e,builder:()=>new L(r,a),executor:new z(r,a),results:new V(r,a),serializer:new N,registry:new X(r,a),explorer:new Q(i,r),abiBuilder:()=>new I(r,a),brandBuilder:()=>new D(r,a),dataLoader:new G(r,a),wallet:new Y(r,a),registerTypes:o=>{o.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),o.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`})}}};var be={chain:P.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},Wt=Z(P.Multiversx,"multiversx",{mainnet:{name:P.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:be},testnet:{name:P.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:be},devnet:{name:P.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:be}});import{WarpChainName as Be}from"@vleap/warps";var Or={chain:Be.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},Ae={name:Be.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:Or},Ct=Z(Be.Vibechain,"vibe",{mainnet:Ae,testnet:Ae,devnet:Ae});var ki=(i,e)=>[Wt(i,e),Ct(i,e)],Vi=()=>[vt.Multiversx,vt.Vibechain];import{Address as Dr,AddressValue as Lr,BigUIntType as _r,BigUIntValue as Tt,BooleanValue as Gr,BytesValue as $r,CodeMetadata as Hr,CodeMetadataValue as Kr,CompositeType as qr,CompositeValue as zr,Field as Ie,FieldDefinition as Ne,List as Qr,NothingValue as jr,OptionalValue as Se,OptionValue as ke,StringValue as Xr,Struct as Jr,StructType as Yr,TokenIdentifierType as Zr,TokenIdentifierValue as xt,U16Value as en,U32Value as tn,U64Type as rn,U64Value as Et,U8Value as nn,VariadicValue as an}from"@multiversx/sdk-core";var qi=(i,e)=>i?ke.newProvided(i):e?ke.newMissingTyped(e):ke.newMissing(),zi=(i,e)=>i?new Se(i.getType(),i):e?new Se(e):Se.newMissing(),Qi=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new Qr(e,i)},ji=i=>an.fromItems(...i),Xi=i=>{let e=i.map(t=>t.getType());return new zr(new qr(...e),i)},Ji=i=>Xr.fromUTF8(i),Yi=i=>new nn(i),Zi=i=>new en(i),eo=i=>new tn(i),to=i=>new Et(i),ro=i=>new Tt(BigInt(i)),no=i=>new Gr(i),ao=i=>new Lr(Dr.newFromBech32(i)),so=i=>new xt(i),io=i=>$r.fromHex(i),oo=i=>new Jr(new Yr("EsdtTokenPayment",[new Ne("token_identifier","",new Zr),new Ne("token_nonce","",new rn),new Ne("amount","",new _r)]),[new Ie(new xt(i.token.identifier),"token_identifier"),new Ie(new Et(BigInt(i.token.nonce)),"token_nonce"),new Ie(new Tt(BigInt(i.amount)),"amount")]),co=i=>new Kr(Hr.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),po=()=>new jr;export{S as ExplorerUrls,Ke as KnownTokens,Ar as MultiversxExplorers,ht as MultiversxExplorersConfig,be as NativeTokenEgld,Or as NativeTokenVibe,Br as VibechainExplorers,I as WarpMultiversxAbiBuilder,D as WarpMultiversxBrandBuilder,L as WarpMultiversxBuilder,bs as WarpMultiversxConstants,O as WarpMultiversxContractLoader,G as WarpMultiversxDataLoader,z as WarpMultiversxExecutor,Q as WarpMultiversxExplorer,X as WarpMultiversxRegistry,V as WarpMultiversxResults,N as WarpMultiversxSerializer,Y as WarpMultiversxWallet,ao as address_value,oo as asset_value,ro as biguint_value,no as boolean_value,co as codemeta_value,Xi as composite_value,Z as createMultiversxAdapter,qe as findKnownTokenById,ki as getAllMultiversxAdapters,Vi as getAllMultiversxChainNames,va as getKnownTokensForChain,Wt as getMultiversxAdapter,h as getMultiversxEntrypoint,W as getMultiversxRegistryAddress,M as getNormalizedTokenIdentifier,Ct as getVibechainAdapter,io as hex_value,k as isNativeToken,Qi as list_value,po as nothing_value,qi as option_value,zi as optional_value,Ji as string_value,ft as toTypedConfigInfo,j as toTypedRegistryInfo,so as token_value,Zi as u16_value,eo as u32_value,to as u64_value,Yi as u8_value,ji as variadic_value};
1
+ import{WarpChainName as Et}from"@vleap/warps";import{WarpChainName as O}from"@vleap/warps";import{AbiRegistry as oe,Address as Vt,TransactionsFactoryConfig as kt,TransferTransactionsFactory as Ft}from"@multiversx/sdk-core";import{getLatestProtocolIdentifier as Rt,getWarpWalletAddressFromConfig as Mt,WarpCache as Ot,WarpCacheKey as Lt,WarpConstants as Oe,WarpLogger as Le}from"@vleap/warps";import{DevnetEntrypoint as Bt,MainnetEntrypoint as Nt,TestnetEntrypoint as Ut}from"@multiversx/sdk-core";import{getProviderUrl as Pt}from"@vleap/warps";var k=i=>!i.includes("-"),D=i=>k(i)?`${i}-000000`:i,g=(i,e,t)=>{let r="warp-sdk",a=t?Pt(t,i.name,e,i.defaultApiUrl):i.defaultApiUrl;return e==="devnet"?new Bt({url:a,kind:"api",clientName:r}):e==="testnet"?new Ut({url:a,kind:"api",clientName:r}):new Nt({url:a,kind:"api",clientName:r})};import{WarpLogger as Me}from"@vleap/warps";var _=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await g(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return Me.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await g(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return Me.error("WarpContractLoader: getVerificationInfo error",r),null}}};var N=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new _(this.config),this.cache=new Ot(this.config.cache?.type)}async createInscriptionTransaction(e){let t=Mt(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new kt({chainID:this.chain.chainId}),n=new Ft({config:r}),a=Vt.newFromBech32(t),o={protocol:Rt("abi"),content:e},s=JSON.stringify(o),c=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Lt.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return Le.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=g(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return Le.error("WarpAbiBuilder: Error creating from transaction hash",o),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return oe.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Oe.IdentifierType.Hash)){let t=e.abi.split(Oe.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return oe.create(r.content)}else{let r=await(await fetch(e.abi)).json();return oe.create(r)}}};import{Address as De,TransactionsFactoryConfig as Dt,TransferTransactionsFactory as _t}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Ht,WarpBrandBuilder as Gt,WarpLogger as $t}from"@vleap/warps";import{Buffer as Kt}from"buffer";var H=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Gt(e)}async createInscriptionTransaction(e){let t=Ht(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Dt({chainID:this.chain.chainId}),n=new _t({config:r}),a=De.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:De.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Kt.from(o))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=g(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return $t.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as _e,TransactionsFactoryConfig as qt,TransferTransactionsFactory as zt}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Qt,WarpBuilder as He,WarpCache as jt,WarpCacheKey as Xt,WarpLogger as Ge}from"@vleap/warps";var G=class extends He{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new jt(t.cache?.type),this.core=new He(t)}async createInscriptionTransaction(t){let r=Qt(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new qt({chainID:this.chain.chainId}),a=new zt({config:n}),o=_e.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:_e.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=Xt.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Ge.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=g(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Ge.error("WarpBuilder: Error creating from transaction hash",s),null}}};import{Address as ce,Token as tr,TokenComputer as rr}from"@multiversx/sdk-core";import{CacheTtl as nr,WarpCache as ar,WarpCacheKey as sr}from"@vleap/warps";import{WarpChainName as Jt}from"@vleap/warps";var $e=Jt.Multiversx,Ke=[{chain:$e,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:$e,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Yt}from"@vleap/warps";var T=Yt.Multiversx,qe=[{chain:T,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:T,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:T,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:T,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:T,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:T,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:T,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:T,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:T,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:T,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:T,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:T,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:T,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:T,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:T,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as Zt}from"@vleap/warps";var ze=Zt.Multiversx,Qe=[{chain:ze,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:ze,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as er}from"@vleap/warps";var je=er.Vibechain,$=[{chain:je,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:je,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var Xe={multiversx:{mainnet:qe,testnet:Qe,devnet:Ke},vibechain:{mainnet:$,testnet:$,devnet:$}},Je=(i,e,t)=>(Xe[i]?.[e]||[]).find(n=>n.identifier===t)||null,Aa=(i,e)=>Xe[i]?.[e]||[];var K=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new ar(e.cache?.type)}async getAccount(e){let r=await g(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(ce.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=g(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(ce.newFromBech32(e)),n=t.getFungibleTokensOfAccount(ce.newFromBech32(e)),[a,o]=await Promise.all([r,n]),s=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return s.push(...o.map(c=>({chain:this.chain.name,identifier:c.token.identifier,name:c.raw.name,symbol:c.raw.ticker,amount:c.amount,decimals:c.raw.decimals,logoUrl:c.raw.assets?.pngUrl||"",price:c.raw.price?Number(c.raw.price):void 0,supply:c.raw.supply?BigInt(c.raw.supply):void 0}))),s}async getAsset(e){let t=sr.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=Je(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let a=new rr,o=k(e)?0n:a.extractNonceFromExtendedIdentifier(e),s=new tr({identifier:e,nonce:BigInt(o||0)}),c=a.isFungible(s),u=g(this.chain,this.config.env,this.config).createNetworkProvider(),d=D(e),m=await u.doGetGeneric(`tokens/${d}`),C={chain:this.chain.name,identifier:s.identifier,name:m.name,symbol:m.ticker,amount:0n,decimals:m.decimals,logoUrl:m.assets?.pngUrl||"#",price:m.price?Number(m.price):void 0,supply:m.supply?BigInt(m.supply):void 0};return this.cache.set(t,C,nr.OneHour),C}async getAction(e,t=!1){let r=g(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(a=>a.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=g(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,o=t?.size||25,s=t?.page||0;if(s>0){let u=s*o;a.append("from",u.toString())}return o!==25&&a.append("size",o.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(u=>({chain:this.chain.name,id:u.txHash,receiver:u.receiver,sender:u.sender,value:u.value,function:u.function,status:this.toActionStatus(u),createdAt:this.toActionCreatedAt(u)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};import{Address as M,ArgSerializer as Wr,SmartContractTransactionsFactory as vr,Token as Tr,TokenComputer as xr,TokenTransfer as Ar,TransactionsFactoryConfig as wt,TransferTransactionsFactory as Er,UserSecretKey as br,UserSigner as Sr}from"@multiversx/sdk-core";import{applyResultsToMessages as Ir,getNextInfo as Br,getWarpActionByIndex as Ae,getWarpWalletAddressFromConfig as Ee}from"@vleap/warps";import{findEventsByFirstTopic as mr,SmartContractTransactionsOutcomeParser as dr,TransactionEventsParser as hr}from"@multiversx/sdk-core";import{applyResultsToMessages as fr,evaluateResultsCommon as Y,findWarpExecutableAction as ft,getNextInfo as gr,getWarpWalletAddressFromConfig as yr,parseResultsOutIndex as gt,WarpCache as wr,WarpCacheKey as Cr,WarpConstants as yt}from"@vleap/warps";import{Address as cr,AddressType as pe,AddressValue as Ze,BigUIntType as q,BigUIntValue as le,BooleanType as ue,BooleanValue as et,BytesType as me,BytesValue as tt,CodeMetadata as pr,CodeMetadataType as de,CodeMetadataValue as rt,CompositeType as he,CompositeValue as nt,Field as z,FieldDefinition as Q,List as at,ListType as st,NothingValue as b,OptionalType as it,OptionalValue as fe,OptionType as ot,OptionValue as ge,StringType as ye,StringValue as ct,Struct as j,StructType as V,Token as lr,TokenComputer as pt,TokenIdentifierType as X,TokenIdentifierValue as we,U16Type as Ce,U16Value as lt,U32Type as We,U32Value as ut,U64Type as J,U64Value as ve,U8Type as Te,U8Value as mt,VariadicType as xe,VariadicValue as dt}from"@multiversx/sdk-core";import{WarpSerializer as ur}from"@vleap/warps";var l={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:i=>i.config.user?.wallets?.[i.chain]},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:i=>i.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:i=>i.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},p={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex"};var _a={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},y={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},ir=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(ir||{}),or=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(or||{}),Ye={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},P={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var ht=new RegExp(`${l.ArgParamsSeparator}(.*)`),U=class{constructor(){this.coreSerializer=new ur}typedToString(e){let t=e.getType();if(t.hasExactClass(ot.ClassName)||e.hasClassOrSuperclass(ge.ClassName)){if(!e.isSet())return p.Option+l.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return p.Option+l.ArgParamsSeparator+r}if(t.hasExactClass(xe.ClassName)||e.hasClassOrSuperclass(dt.ClassName)){let r=e.getItems(),a=r.map(s=>this.typedToString(s).split(l.ArgParamsSeparator)[0])[0],o=r.map(s=>this.typedToString(s).split(l.ArgParamsSeparator)[1]);return p.Vector+l.ArgParamsSeparator+a+l.ArgParamsSeparator+o.join(l.ArgListSeparator)}if(t.hasExactClass(it.ClassName)||e.hasClassOrSuperclass(fe.ClassName)){if(!e.isSet())return y.Optional+l.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return y.Optional+l.ArgParamsSeparator+r}if(t.hasExactClass(st.ClassName)||e.hasClassOrSuperclass(at.ClassName)){let r=e.getItems(),a=r.map(s=>this.typedToString(s).split(l.ArgParamsSeparator)[0])[0],o=r.map(s=>this.typedToString(s).split(l.ArgParamsSeparator)[1]);return y.List+l.ArgParamsSeparator+a+l.ArgParamsSeparator+o.join(l.ArgListSeparator)}if(t.hasExactClass(he.ClassName)||e.hasClassOrSuperclass(nt.ClassName)){let r=e.getItems(),n=r.map(c=>this.typedToString(c).split(l.ArgParamsSeparator)[0]),a=r.map(c=>this.typedToString(c).split(l.ArgParamsSeparator)[1]),o=n.join(l.ArgCompositeSeparator),s=a.join(l.ArgCompositeSeparator);return`${p.Tuple}(${o})${l.ArgParamsSeparator}${s}`}if(t.hasExactClass(q.ClassName)||e.hasClassOrSuperclass(le.ClassName)||t.getName()==="BigUint")return p.Biguint+l.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(Te.ClassName)||e.hasClassOrSuperclass(mt.ClassName))return p.Uint8+l.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ce.ClassName)||e.hasClassOrSuperclass(lt.ClassName))return p.Uint16+l.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(We.ClassName)||e.hasClassOrSuperclass(ut.ClassName))return p.Uint32+l.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(J.ClassName)||e.hasClassOrSuperclass(ve.ClassName))return p.Uint64+l.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(ye.ClassName)||e.hasClassOrSuperclass(ct.ClassName))return p.String+l.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(ue.ClassName)||e.hasClassOrSuperclass(et.ClassName))return p.Bool+l.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(pe.ClassName)||e.hasClassOrSuperclass(Ze.ClassName))return p.Address+l.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(me.ClassName)||e.hasClassOrSuperclass(tt.ClassName))return p.Hex+l.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf(),s=new pt().computeExtendedIdentifier(new lr({identifier:r,nonce:BigInt(n)}));return p.Asset+l.ArgParamsSeparator+s+l.ArgCompositeSeparator+a}if(t.hasExactClass(V.ClassName)||e.hasClassOrSuperclass(j.ClassName)){let r=e,a=r.getType().getName(),o=r.getFields();if(o.length===0)return`${p.Struct}(${a})${l.ArgParamsSeparator}`;let s=o.map(c=>{let u=c.name,d=c.value,m=d.getType(),C=this.typedToString(d).split(l.ArgParamsSeparator)[1];return`(${u}${l.ArgParamsSeparator}${this.typeToString(m)})${C}`});return`${p.Struct}(${a})${l.ArgParamsSeparator}${s.join(l.ArgListSeparator)}`}if(t.hasExactClass(X.ClassName)||e.hasClassOrSuperclass(we.ClassName))return y.Token+l.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(de.ClassName)||e.hasClassOrSuperclass(rt.ClassName))return y.CodeMeta+l.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(p.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];return new he(...t.split(l.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e.startsWith(p.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new V(r,[])}if(e===p.String)return new ye;if(e===p.Uint8)return new Te;if(e===p.Uint16)return new Ce;if(e===p.Uint32)return new We;if(e===p.Uint64)return new J;if(e===p.Biguint)return new q;if(e===p.Bool)return new ue;if(e===p.Address)return new pe;if(e===p.Hex)return new me;if(e===p.Asset)return new V("EsdtTokenPayment",[new Q("token_identifier","",new X),new Q("token_nonce","",new J),new Q("amount","",new q)]);if(e===y.Token)return new X;if(e===y.CodeMeta)return new de;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===p.Option){let n=this.stringToTyped(r);return n instanceof b?ge.newMissingTyped(n.getType()):ge.newProvided(n)}if(t===p.Vector){let[n,a]=r.split(ht,2),s=a.split(l.ArgListSeparator).map(c=>this.stringToTyped(`${n}:${c}`));return new dt(new xe(this.nativeToType(n)),s)}if(t.startsWith(p.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(l.ArgCompositeSeparator),o=n.split(l.ArgCompositeSeparator),s=a.map((u,d)=>this.stringToTyped(o[d]+l.ArgParamsSeparator+u)),c=s.map(u=>u.getType());return new nt(new he(...c),s)}if(t.startsWith(p.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new j(new V(a,[]),[]);let o=r.split(l.ArgListSeparator),s=[],c=[];return o.forEach(u=>{let d=u.match(new RegExp(`^\\(([^${l.ArgParamsSeparator}]+)${l.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(d){let[,m,C,v]=d,h=this.stringToTyped(`${C}${l.ArgParamsSeparator}${v}`);s.push(new Q(m,"",h.getType())),c.push(new z(h,m))}}),new j(new V(a,s),c)}if(t===p.String)return r?ct.fromUTF8(r):new b;if(t===p.Uint8)return r?new mt(Number(r)):new b;if(t===p.Uint16)return r?new lt(Number(r)):new b;if(t===p.Uint32)return r?new ut(Number(r)):new b;if(t===p.Uint64)return r?new ve(BigInt(r)):new b;if(t===p.Biguint)return r?new le(BigInt(r)):new b;if(t===p.Bool)return r?new et(typeof r=="boolean"?r:r==="true"):new b;if(t===p.Address)return r?new Ze(cr.newFromBech32(r)):new b;if(t===p.Hex)return r?tt.fromHex(r):new b;if(t===p.Asset){let[n,a]=r.split(l.ArgCompositeSeparator),o=new pt,s=k(n)?D(n):o.extractIdentifierFromExtendedIdentifier(n),c=k(n)?0n:o.extractNonceFromExtendedIdentifier(n);return new j(this.nativeToType("asset"),[new z(new we(s),"token_identifier"),new z(new ve(BigInt(c)),"token_nonce"),new z(new le(BigInt(a)),"amount")])}if(t===y.Null)return new b;if(t===y.Optional){let n=this.stringToTyped(r);return n instanceof b?fe.newMissing():new fe(n.getType(),n)}if(t===y.List){let[n,a]=r.split(ht,2),s=a.split(l.ArgListSeparator).map(c=>this.stringToTyped(n+l.ArgParamsSeparator+c));return new at(this.nativeToType(n),s)}if(t===y.Token)return r?new we(r):new b;if(t===y.CodeMeta)return new rt(pr.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(ot.ClassName))return p.Option+l.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(xe.ClassName))return p.Vector+l.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(ye.ClassName))return p.String;if(e.hasExactClass(Te.ClassName))return p.Uint8;if(e.hasExactClass(Ce.ClassName))return p.Uint16;if(e.hasExactClass(We.ClassName))return p.Uint32;if(e.hasExactClass(J.ClassName))return p.Uint64;if(e.hasExactClass(q.ClassName))return p.Biguint;if(e.hasExactClass(ue.ClassName))return p.Bool;if(e.hasExactClass(pe.ClassName))return p.Address;if(e.hasExactClass(me.ClassName))return p.Hex;if(e.hasExactClass(X.ClassName))return y.Token;if(e.hasExactClass(it.ClassName))return y.Optional+l.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(st.ClassName))return y.List+l.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(de.ClassName))return y.CodeMeta;if(e.hasExactClass(V.ClassName)&&e.getClassName()==="EsdtTokenPayment")return p.Asset;if(e.hasExactClass(V.ClassName))return`${p.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var F=class{constructor(e,t){this.config=e;this.chain=t;this.abi=new N(e,t),this.serializer=new U,this.cache=new wr(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=ft(e),n=this.cache.get(Cr.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=gr(this.config,[],e,r,a),s=fr(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:yr(this.config,this.chain.name),txHash:t.hash,tx:t,next:o,values:a.values,valuesRaw:[],results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=ft(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(v=>v.includes("out")||v.includes("event"))){for(let[v,h]of Object.entries(e.results))s[v]=h;return{values:o,results:await Y(e,s,a,r,this.config.transform?.runner)}}let u=await this.abi.getAbiForAction(n),d=new hr({abi:u}),C=new dr({abi:u}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[v,h]of Object.entries(e.results)){if(h.startsWith(yt.Transform.Prefix))continue;if(h.startsWith("input.")){s[v]=h;continue}let S=gt(h);if(S!==null&&S!==a){s[v]=null;continue}let[A,E,B]=h.split(".");if(A==="event"){if(!E||isNaN(Number(B)))continue;let I=Number(B),W=mr(t,E),R=d.parseEvents({events:W})[0],L=Object.values(R)[I]||null;o.push(L),s[v]=L&&L.valueOf()}else if(A==="out"||A.startsWith("out[")){if(!E)continue;let I=Number(E),W=C.values[I-1]||null;B&&(W=W[B]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),o.push(W),s[v]=W&&W.valueOf()}else s[v]=h}return{values:o,results:await Y(e,s,a,r)}}async extractQueryResults(e,t,r,n){let a=t.map(u=>this.serializer.typedToString(u)),o=t.map(u=>this.serializer.typedToNative(u)[1]),s={};if(!e.results)return{values:a,valuesRaw:o,results:s};let c=u=>{let d=u.split(".").slice(1).map(C=>parseInt(C)-1);if(d.length===0)return;let m=o[d[0]];for(let C=1;C<d.length;C++){if(m==null)return;m=m[d[C]]}return m};for(let[u,d]of Object.entries(e.results)){if(d.startsWith(yt.Transform.Prefix))continue;let m=gt(d);if(m!==null&&m!==r){s[u]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?s[u]=c(d)||null:s[u]=d}return{values:a,valuesRaw:o,results:await Y(e,s,r,n)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,u=this;async function d(h,S=[]){if(s.has(h))return s.get(h);if(c.has(h))throw new Error(`Circular dependency detected at action ${h}`);c.add(h);let A=t.actions[h-1];if(!A)throw new Error(`Action ${h} not found`);let E;if(A.type==="query")E=await n.executeQuery(t,h,S);else if(A.type==="collect")E=await n.executeCollect(t,h,S,o);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(s.set(h,E),t.results)for(let B of Object.values(t.results)){let W=String(B).match(/^out\[(\d+)\]/);if(W){let R=parseInt(W[1],10);R!==h&&!s.has(R)&&await d(R)}}return c.delete(h),E}await d(r,a);let m={};for(let h of s.values())for(let[S,A]of Object.entries(h.results))A!==null?m[S]=A:S in m||(m[S]=null);let C=await Y(t,m,r,a,this.config.transform?.runner);return{...s.get(r),action:r,results:C}}};var Nr="EGLD-000000",Z=class{constructor(e,t){this.config=e;this.chain=t;this.serializer=new U,this.abi=new N(this.config,this.chain),this.results=new F(this.config,this.chain)}async createTransaction(e){let t=Ae(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=Ee(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=M.newFromBech32(t),n=new wt({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,o=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,c=(o?e.transfers[0].amount:0n)+e.value;return await new Er({config:n}).createTransactionForTransfer(r,{receiver:M.newFromBech32(e.destination),nativeAmount:c,tokenTransfers:o?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=Ee(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=Ae(e.warp,e.action),n=M.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new wt({chainID:e.chain.chainId});return new vr({config:o}).createTransactionForExecute(n,{contract:M.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=Ae(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(I=>this.serializer.stringToTyped(I)),a=g(e.chain,this.config.env,this.config),o=M.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),u=await s.runQuery(c),d=u.returnCode==="ok",m=new Wr,C=r.getEndpoint(u.function||t.func||""),v=(u.returnDataParts||[]).map(I=>Buffer.from(I)),h=m.buffersToValues(v,C.output),{values:S,valuesRaw:A,results:E}=await this.results.extractQueryResults(e.warp,h,e.action,e.resolvedInputs),B=Br(this.config,[],e.warp,e.action,E);return{success:d,warp:e.warp,action:e.action,user:Ee(this.config,e.chain.name),txHash:null,tx:null,next:B,values:S,valuesRaw:A,results:E,messages:Ir(e.warp,E)}}async signMessage(e,t){let r=br.fromString(t);return(await new Sr(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Nr}:t).map(t=>{let n=new xr().extractNonceFromExtendedIdentifier(t.identifier);return new Ar({token:new Tr({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ee=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ye[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let a=P[t];if(a)return a}if(e){let a=P[e];if(a)return a}let r=this.getPrimaryExplorer();return P[r]||P[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=P[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=P[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Wt,Address as f,AddressValue as Se,BytesValue as w,SmartContractTransactionsFactory as Pr,TransactionsFactoryConfig as Vr}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as kr,WarpCache as Fr,WarpCacheKey as Ie,WarpLogger as Be}from"@vleap/warps";var be={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var x=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var te=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),Ct=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var re=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Fr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=kr(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=f.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[w.fromHex(e),w.fromUTF8(t),w.fromHex(r)]:t?[w.fromHex(e),w.fromUTF8(t)]:[w.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:f.newFromBech32(x(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:f.newFromBech32(x(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[w.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:f.newFromBech32(x(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[w.fromUTF8(e),w.fromHex(t),w.fromHex(r)]:[w.fromUTF8(e),w.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:f.newFromBech32(x(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e),w.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:f.newFromBech32(x(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[w.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:f.newFromBech32(x(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[w.fromHex(e),new Se(new f(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:f.newFromBech32(x(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=f.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:f.newFromBech32(x(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e),w.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=Ie.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Be.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=f.newFromBech32(x(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[w.fromUTF8(e)]}),c=await o.runQuery(s),[u]=o.parseQueryResponse(c),d=u?te(u):null,m=d?.brand?await this.fetchBrand(d.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:d,brand:m},t.ttl),{registryInfo:d,brand:m}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=Ie.RegistryInfo(this.config.env,e);if(t){let m=this.cache.get(r);if(m)return Be.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),m}let n=f.newFromBech32(x(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[w.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),u=c?te(c):null,d=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:d},t.ttl),{registryInfo:u,brand:d}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=f.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new Se(new f(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map(te)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=f.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new Se(new f(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(m=>m.toString("hex")),u={ttl:365*24*60*60};return(await Promise.all(c.map(m=>this.fetchBrand(m,u)))).filter(m=>m!==null)}catch{return[]}}async fetchBrand(e,t){let r=Ie.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Be.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=g(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={chain:this.chain.name,hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=f.newFromBech32(x(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Ct(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new Vr({chainID:this.chain.chainId}),t=Wt.create(be);return new Pr({config:e,abi:t})}getController(){let e=g(this.chain,this.config.env,this.config),t=Wt.create(be);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{Account as Rr,Mnemonic as vt,UserSecretKey as ne,UserSigner as Mr}from"@multiversx/sdk-core";import{CacheTtl as Or,getWarpWalletAddressFromConfig as Lr,getWarpWalletPrivateKeyFromConfig as Tt,WarpCache as Dr}from"@vleap/warps";var ae=class{constructor(e,t){this.config=e;this.chain=t;this.entry=g(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new Dr(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=Tt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?ne.fromPem(t):ne.fromString(t),a=new Rr(n);if(e.nonce===0n){let o=await this.entry.recallAccountNonce(a.address),s=this.cache.get(`nonce:${a.address.toBech32()}`)||0,c=BigInt(Math.max(s,Number(o)));e.nonce=c}return e.signature=await a.signTransaction(e),this.cache.set(`nonce:${a.address.toBech32()}`,Number(a.nonce),Or.OneHour),e}async signMessage(e){let t=Tt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?ne.fromPem(t):ne.fromString(t),a=new Mr(n),o=new TextEncoder().encode(e),s=await a.sign(o);return Buffer.from(s).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=vt.fromString(e).deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=vt.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAddress(){return Lr(this.config,this.chain.name)}};var se=(i,e,t)=>(r,n)=>{let a=t[r.env];return{chain:i,chainInfo:a,prefix:e,builder:()=>new G(r,a),executor:new Z(r,a),results:new F(r,a),serializer:new U,registry:new re(r,a),explorer:new ee(i,r),abiBuilder:()=>new N(r,a),brandBuilder:()=>new H(r,a),dataLoader:new K(r,a),wallet:new ae(r,a),registerTypes:o=>{o.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),o.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`})}}};var Ne={chain:O.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},xt=se(O.Multiversx,"multiversx",{mainnet:{name:O.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne},testnet:{name:O.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne},devnet:{name:O.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne}});import{WarpChainName as Pe}from"@vleap/warps";var _r={chain:Pe.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},Ue={name:Pe.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:_r},At=se(Pe.Vibechain,"vibe",{mainnet:Ue,testnet:Ue,devnet:Ue});var Mi=(i,e)=>[xt(i,e),At(i,e)],Oi=()=>[Et.Multiversx,Et.Vibechain];import{WarpSerializer as ie}from"@vleap/warps";var Yi=i=>new ie().nativeToString(y.Token,i),Zi=i=>new ie().nativeToString(y.CodeMeta,i),eo=(i,e)=>new ie().nativeToString(y.Optional,i),to=i=>new ie().nativeToString(y.List,i);import{Address as Hr,AddressValue as Gr,BigUIntType as $r,BigUIntValue as bt,BooleanValue as Kr,BytesValue as qr,CodeMetadata as zr,CodeMetadataValue as Qr,CompositeType as jr,CompositeValue as Xr,Field as Ve,FieldDefinition as ke,List as Jr,NothingValue as Yr,OptionalValue as Fe,OptionValue as Re,StringValue as Zr,Struct as en,StructType as tn,TokenIdentifierType as rn,TokenIdentifierValue as St,U16Value as nn,U32Value as an,U64Type as sn,U64Value as It,U8Value as on,VariadicValue as cn}from"@multiversx/sdk-core";var oo=(i,e)=>i?Re.newProvided(i):e?Re.newMissingTyped(e):Re.newMissing(),co=(i,e)=>i?new Fe(i.getType(),i):e?new Fe(e):Fe.newMissing(),po=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new Jr(e,i)},lo=i=>cn.fromItems(...i),uo=i=>{let e=i.map(t=>t.getType());return new Xr(new jr(...e),i)},mo=i=>Zr.fromUTF8(i),ho=i=>new on(i),fo=i=>new nn(i),go=i=>new an(i),yo=i=>new It(i),wo=i=>new bt(BigInt(i)),Co=i=>new Kr(i),Wo=i=>new Gr(Hr.newFromBech32(i)),vo=i=>new St(i),To=i=>qr.fromHex(i),xo=i=>new en(new tn("EsdtTokenPayment",[new ke("token_identifier","",new rn),new ke("token_nonce","",new sn),new ke("amount","",new $r)]),[new Ve(new St(i.token.identifier),"token_identifier"),new Ve(new It(BigInt(i.token.nonce)),"token_nonce"),new Ve(new bt(BigInt(i.amount)),"amount")]),Ao=i=>new Qr(zr.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Eo=()=>new Yr;export{P as ExplorerUrls,Xe as KnownTokens,ir as MultiversxExplorers,Ye as MultiversxExplorersConfig,Ne as NativeTokenEgld,_r as NativeTokenVibe,or as VibechainExplorers,N as WarpMultiversxAbiBuilder,H as WarpMultiversxBrandBuilder,G as WarpMultiversxBuilder,_a as WarpMultiversxConstants,_ as WarpMultiversxContractLoader,K as WarpMultiversxDataLoader,Z as WarpMultiversxExecutor,ee as WarpMultiversxExplorer,y as WarpMultiversxInputTypes,re as WarpMultiversxRegistry,F as WarpMultiversxResults,U as WarpMultiversxSerializer,ae as WarpMultiversxWallet,Wo as address_value,xo as asset_value,wo as biguint_value,Co as boolean_value,Zi as codemeta,Ao as codemeta_value,uo as composite_value,se as createMultiversxAdapter,Je as findKnownTokenById,Mi as getAllMultiversxAdapters,Oi as getAllMultiversxChainNames,Aa as getKnownTokensForChain,xt as getMultiversxAdapter,g as getMultiversxEntrypoint,x as getMultiversxRegistryAddress,D as getNormalizedTokenIdentifier,At as getVibechainAdapter,To as hex_value,k as isNativeToken,to as list,po as list_value,Eo as nothing_value,eo as option,oo as option_value,co as optional_value,mo as string_value,Ct as toTypedConfigInfo,te as toTypedRegistryInfo,Yi as token,vo as token_value,fo as u16_value,go as u32_value,yo as u64_value,ho as u8_value,lo as variadic_value};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vleap/warps-adapter-multiversx",
3
- "version": "0.2.0-alpha.56",
3
+ "version": "0.2.0-alpha.58",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -38,6 +38,6 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@multiversx/sdk-core": "^15.1.1",
41
- "@vleap/warps": "^3.0.0-alpha.107"
41
+ "@vleap/warps": "^3.0.0-alpha.110"
42
42
  }
43
43
  }