@vleap/warps-adapter-multiversx 0.2.0-beta.85 → 0.2.0-beta.86

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,18 +1,17 @@
1
1
  import * as _vleap_warps from '@vleap/warps';
2
- import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WalletProvider, WarpNativeValue, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpOutput, AdapterTypeRegistry as AdapterTypeRegistry$1, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
- import { NetworkEntrypoint, Transaction, Account, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry } from '@multiversx/sdk-core';
2
+ import { WarpChain, WarpChainEnv, WarpChainInfo, ChainAdapterFactory, WarpChainAsset, WarpClientConfig, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpOutput, AdapterTypeRegistry as AdapterTypeRegistry$1, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WarpWalletDetails } from '@vleap/warps';
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, AdapterTypeRegistry } from '@vleap/warps/src/types';
5
5
 
6
- declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
7
6
  declare const getAllMultiversxChainNames: () => WarpChain[];
8
7
 
9
- declare const createMultiversxAdapter: (chainName: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
8
+ declare const createMultiversxAdapter: (chainName: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => ChainAdapterFactory;
10
9
 
11
10
  declare const NativeTokenEgld: WarpChainAsset;
12
- declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
11
+ declare const MultiversxAdapter: _vleap_warps.ChainAdapterFactory;
13
12
 
14
13
  declare const NativeTokenVibe: WarpChainAsset;
15
- declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
14
+ declare const VibechainAdapter: _vleap_warps.ChainAdapterFactory;
16
15
 
17
16
  declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
18
17
 
@@ -63,31 +62,7 @@ declare const getMultiversxEntrypoint: (chainInfo: WarpChainInfo, env: WarpChain
63
62
  declare const toTypedRegistryInfo: (registryInfo: any) => WarpRegistryInfo;
64
63
  declare const toTypedConfigInfo: (configInfo: any) => WarpRegistryConfigInfo;
65
64
 
66
- declare class PrivateKeyWalletProvider implements WalletProvider {
67
- private config;
68
- private chain;
69
- private account;
70
- constructor(config: WarpClientConfig, chain: WarpChainInfo);
71
- getAddress(): Promise<string | null>;
72
- getPublicKey(): Promise<string | null>;
73
- signTransaction(tx: Transaction): Promise<Transaction>;
74
- signMessage(message: string): Promise<string>;
75
- getAccountInstance(): Account;
76
- private getAccount;
77
- }
78
-
79
- declare class MnemonicWalletProvider implements WalletProvider {
80
- private config;
81
- private chain;
82
- private account;
83
- constructor(config: WarpClientConfig, chain: WarpChainInfo);
84
- getAddress(): Promise<string | null>;
85
- getPublicKey(): Promise<string | null>;
86
- signTransaction(tx: Transaction): Promise<Transaction>;
87
- signMessage(message: string): Promise<string>;
88
- getAccountInstance(): Account;
89
- private getAccount;
90
- }
65
+ declare const getAllMultiversxAdapters: () => ChainAdapterFactory[];
91
66
 
92
67
  declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset[]>>;
93
68
  declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
@@ -299,26 +274,18 @@ declare class WarpMultiversxWallet implements AdapterWarpWallet {
299
274
  private walletProvider;
300
275
  private cachedAddress;
301
276
  private cachedPublicKey;
302
- constructor(config: WarpClientConfig, chain: WarpChainInfo, walletProvider?: WalletProvider);
303
- private createDefaultProvider;
277
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
278
+ private createProvider;
304
279
  private initializeCache;
305
280
  signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
306
281
  signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]>;
307
282
  signMessage(message: string): Promise<string>;
308
283
  sendTransactions(txs: WarpAdapterGenericTransaction[]): Promise<string[]>;
309
284
  sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string>;
310
- create(mnemonic: string): {
311
- address: string;
312
- privateKey: string;
313
- mnemonic: string;
314
- };
315
- generate(): {
316
- address: string;
317
- privateKey: string;
318
- mnemonic: string;
319
- };
285
+ create(mnemonic: string): WarpWalletDetails;
286
+ generate(): WarpWalletDetails;
320
287
  getAddress(): string | null;
321
288
  getPublicKey(): string | null;
322
289
  }
323
290
 
324
- export { type ExplorerName, ExplorerUrls, KnownTokens, MnemonicWalletProvider, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, PrivateKeyWalletProvider, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxOutput, WarpMultiversxRegistry, 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_value, optional, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
291
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxAdapter, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainAdapter, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxOutput, WarpMultiversxRegistry, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, hex_value, isNativeToken, list, list_value, nothing_value, option_value, optional, 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,18 +1,17 @@
1
1
  import * as _vleap_warps from '@vleap/warps';
2
- import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WalletProvider, WarpNativeValue, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpOutput, AdapterTypeRegistry as AdapterTypeRegistry$1, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
- import { NetworkEntrypoint, Transaction, Account, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry } from '@multiversx/sdk-core';
2
+ import { WarpChain, WarpChainEnv, WarpChainInfo, ChainAdapterFactory, WarpChainAsset, WarpClientConfig, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpActionExecutionResult, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpOutput, AdapterTypeRegistry as AdapterTypeRegistry$1, WarpActionIndex, WarpAdapterGenericRemoteTransaction, ResolvedInput, WarpExecutionOutput, AdapterWarpSerializer, WarpSerializer, WarpActionInputType, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet, WarpWalletDetails } from '@vleap/warps';
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, AdapterTypeRegistry } from '@vleap/warps/src/types';
5
5
 
6
- declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
7
6
  declare const getAllMultiversxChainNames: () => WarpChain[];
8
7
 
9
- declare const createMultiversxAdapter: (chainName: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
8
+ declare const createMultiversxAdapter: (chainName: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => ChainAdapterFactory;
10
9
 
11
10
  declare const NativeTokenEgld: WarpChainAsset;
12
- declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
11
+ declare const MultiversxAdapter: _vleap_warps.ChainAdapterFactory;
13
12
 
14
13
  declare const NativeTokenVibe: WarpChainAsset;
15
- declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
14
+ declare const VibechainAdapter: _vleap_warps.ChainAdapterFactory;
16
15
 
17
16
  declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
18
17
 
@@ -63,31 +62,7 @@ declare const getMultiversxEntrypoint: (chainInfo: WarpChainInfo, env: WarpChain
63
62
  declare const toTypedRegistryInfo: (registryInfo: any) => WarpRegistryInfo;
64
63
  declare const toTypedConfigInfo: (configInfo: any) => WarpRegistryConfigInfo;
65
64
 
66
- declare class PrivateKeyWalletProvider implements WalletProvider {
67
- private config;
68
- private chain;
69
- private account;
70
- constructor(config: WarpClientConfig, chain: WarpChainInfo);
71
- getAddress(): Promise<string | null>;
72
- getPublicKey(): Promise<string | null>;
73
- signTransaction(tx: Transaction): Promise<Transaction>;
74
- signMessage(message: string): Promise<string>;
75
- getAccountInstance(): Account;
76
- private getAccount;
77
- }
78
-
79
- declare class MnemonicWalletProvider implements WalletProvider {
80
- private config;
81
- private chain;
82
- private account;
83
- constructor(config: WarpClientConfig, chain: WarpChainInfo);
84
- getAddress(): Promise<string | null>;
85
- getPublicKey(): Promise<string | null>;
86
- signTransaction(tx: Transaction): Promise<Transaction>;
87
- signMessage(message: string): Promise<string>;
88
- getAccountInstance(): Account;
89
- private getAccount;
90
- }
65
+ declare const getAllMultiversxAdapters: () => ChainAdapterFactory[];
91
66
 
92
67
  declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset[]>>;
93
68
  declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
@@ -299,26 +274,18 @@ declare class WarpMultiversxWallet implements AdapterWarpWallet {
299
274
  private walletProvider;
300
275
  private cachedAddress;
301
276
  private cachedPublicKey;
302
- constructor(config: WarpClientConfig, chain: WarpChainInfo, walletProvider?: WalletProvider);
303
- private createDefaultProvider;
277
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
278
+ private createProvider;
304
279
  private initializeCache;
305
280
  signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
306
281
  signTransactions(txs: WarpAdapterGenericTransaction[]): Promise<WarpAdapterGenericTransaction[]>;
307
282
  signMessage(message: string): Promise<string>;
308
283
  sendTransactions(txs: WarpAdapterGenericTransaction[]): Promise<string[]>;
309
284
  sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string>;
310
- create(mnemonic: string): {
311
- address: string;
312
- privateKey: string;
313
- mnemonic: string;
314
- };
315
- generate(): {
316
- address: string;
317
- privateKey: string;
318
- mnemonic: string;
319
- };
285
+ create(mnemonic: string): WarpWalletDetails;
286
+ generate(): WarpWalletDetails;
320
287
  getAddress(): string | null;
321
288
  getPublicKey(): string | null;
322
289
  }
323
290
 
324
- export { type ExplorerName, ExplorerUrls, KnownTokens, MnemonicWalletProvider, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, PrivateKeyWalletProvider, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxOutput, WarpMultiversxRegistry, 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_value, optional, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
291
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxAdapter, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainAdapter, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxOutput, WarpMultiversxRegistry, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, hex_value, isNativeToken, list, list_value, nothing_value, option_value, optional, 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 Te=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Ze=(s,e)=>{for(var t in e)Te(s,t,{get:e[t],enumerable:!0})},et=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Je(e))!Ye.call(s,n)&&n!==t&&Te(s,n,{get:()=>e[n],enumerable:!(r=Xe(e,n))||r.enumerable});return s};var tt=s=>et(Te({},"__esModule",{value:!0}),s);var Nt={};Ze(Nt,{ExplorerUrls:()=>G,KnownTokens:()=>xe,MnemonicWalletProvider:()=>Q,MultiversxExplorers:()=>$e,MultiversxExplorersConfig:()=>Ee,NativeTokenEgld:()=>we,NativeTokenVibe:()=>je,PrivateKeyWalletProvider:()=>J,VibechainExplorers:()=>Ke,WarpMultiversxAbiBuilder:()=>O,WarpMultiversxBrandBuilder:()=>se,WarpMultiversxBuilder:()=>oe,WarpMultiversxConstants:()=>nt,WarpMultiversxContractLoader:()=>ie,WarpMultiversxDataLoader:()=>ce,WarpMultiversxExecutor:()=>pe,WarpMultiversxExplorer:()=>le,WarpMultiversxInputTypes:()=>w,WarpMultiversxOutput:()=>j,WarpMultiversxRegistry:()=>me,WarpMultiversxSerializer:()=>M,WarpMultiversxWallet:()=>he,address_value:()=>Et,asset_value:()=>It,biguint_value:()=>xt,boolean_value:()=>At,codemeta:()=>lt,codemeta_value:()=>Bt,composite_value:()=>yt,createMultiversxAdapter:()=>ge,findKnownTokenById:()=>Ae,getAllMultiversxAdapters:()=>ot,getAllMultiversxChainNames:()=>ct,getKnownTokensForChain:()=>rt,getMultiversxAdapter:()=>Ie,getMultiversxEntrypoint:()=>C,getMultiversxRegistryAddress:()=>I,getNormalizedTokenIdentifier:()=>ae,getVibechainAdapter:()=>Pe,hex_value:()=>St,isNativeToken:()=>K,list:()=>mt,list_value:()=>gt,nothing_value:()=>Pt,option_value:()=>dt,optional:()=>ut,optional_value:()=>ht,string_value:()=>vt,toTypedConfigInfo:()=>Se,toTypedRegistryInfo:()=>ue,token:()=>pt,token_value:()=>bt,u16_value:()=>Wt,u32_value:()=>Tt,u64_value:()=>Ct,u8_value:()=>wt,variadic_value:()=>ft});module.exports=tt(Nt);var Ne=require("@vleap/warps");var re=require("@vleap/warps");var qe=require("@vleap/warps");var F=require("@multiversx/sdk-core"),E=require("@vleap/warps");var Y=require("@multiversx/sdk-core"),Ve=require("@vleap/warps"),K=s=>!s.includes("-"),ae=s=>K(s)?`${s}-000000`:s,C=(s,e,t)=>{let r="warp-sdk",i=t?(0,Ve.getProviderConfig)(t,s.name,e,s.defaultApiUrl):{url:s.defaultApiUrl},o=i.url,p={headers:i.headers};return e==="devnet"?new Y.DevnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p}):e==="testnet"?new Y.TestnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p}):new Y.MainnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p})};var Ce=require("@vleap/warps");var ie=class{constructor(e){this.config=e}async getContract(e,t){try{let i=await C(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return Ce.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let i=await C(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return Ce.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var O=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new ie(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}),n=new F.TransferTransactionsFactory({config:r}),i=F.Address.newFromBech32(t),o={protocol:(0,E.getLatestProtocolIdentifier)("abi"),content:e},p=JSON.stringify(o),c=await n.createTransactionForTransfer(i,{receiver:i,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(p))});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,identifier:(0,E.createWarpIdentifier)(this.chain.name,"hash",e.hash),query:null,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 o=this.cache.get(r);if(o)return E.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let i=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(e),p=await this.createFromTransaction(o);return t&&t.ttl&&p&&this.cache.set(r,p,t.ttl),p}catch(o){return E.WarpLogger.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 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 z=require("@multiversx/sdk-core"),D=require("@vleap/warps"),Ue=require("buffer");var se=class{constructor(e,t){this.config=e;this.chain=t;this.core=new D.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,D.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new z.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new z.TransferTransactionsFactory({config:r}),i=z.Address.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(i,{receiver:z.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ue.Buffer.from(o))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:(0,D.createWarpIdentifier)(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return D.WarpLogger.error("BrandBuilder: Error creating from transaction hash",n),null}}};var q=require("@multiversx/sdk-core"),P=require("@vleap/warps");var oe=class extends P.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new P.WarpCache(t.cache?.type),this.core=new P.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,P.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new q.TransactionsFactoryConfig({chainID:this.chain.chainId}),i=new q.TransferTransactionsFactory({config:n}),o=q.Address.newFromBech32(r),p=JSON.stringify(t),c=await i.createTransactionForTransfer(o,{receiver:q.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(p))});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,identifier:(0,P.createWarpIdentifier)(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=P.WarpCacheKey.Warp(this.config.env,t);if(r){let p=this.cache.get(n);if(p)return P.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),p}let o=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let p=await o.getTransaction(t),c=await this.createFromTransaction(p);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(p){return P.WarpLogger.error("WarpBuilder: Error creating from transaction hash",p),null}}};var _=require("@multiversx/sdk-core"),Z=require("@vleap/warps");var Fe=require("@vleap/warps"),ke=Fe.WarpChainName.Multiversx,Oe=[{chain:ke,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:ke,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"),S=Me.WarpChainName.Multiversx,Re=[{chain:S,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:S,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:S,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:S,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:S,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:S,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:S,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:S,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:S,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:S,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:S,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:S,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:S,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:S,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:S,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var De=require("@vleap/warps"),Le=De.WarpChainName.Multiversx,_e=[{chain:Le,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Le,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var He=require("@vleap/warps"),Ge=He.WarpChainName.Vibechain,fe=[{chain:Ge,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},{chain:Ge,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"}];var xe={multiversx:{mainnet:Re,testnet:_e,devnet:Oe},vibechain:{mainnet:fe,testnet:fe,devnet:fe}},Ae=(s,e,t)=>(xe[s]?.[e]||[]).find(n=>n.identifier===t)||null,rt=(s,e)=>xe[s]?.[e]||[];var ce=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Z.WarpCache(e.cache?.type)}async getAccount(e){let r=await C(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=C(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(_.Address.newFromBech32(e)),n=t.getFungibleTokensOfAccount(_.Address.newFromBech32(e)),[i,o]=await Promise.all([r,n]),p=i.balance>0?[{...this.chain.nativeToken,amount:i.balance}]:[];return p.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}))),p}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 n=Ae(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 i=new _.TokenComputer,o=K(e)?0n:i.extractNonceFromExtendedIdentifier(e),p=new _.Token({identifier:e,nonce:BigInt(o||0)}),c=i.isFungible(p),f=C(this.chain,this.config.env,this.config).createNetworkProvider(),g=ae(e),d=await f.doGetGeneric(`tokens/${g}`),T={chain:this.chain.name,identifier:p.identifier,name:d.name,symbol:d.ticker,amount:0n,decimals:d.decimals,logoUrl:d.assets?.pngUrl||null,price:d.price?Number(d.price):void 0,supply:d.supply?BigInt(d.supply):void 0};return this.cache.set(t,T,Z.CacheTtl.OneHour),T}async getAction(e,t=!1){let r=C(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(i=>i.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=C(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,i=new URLSearchParams,o=t?.size||25,p=t?.page||0;if(p>0){let f=p*o;i.append("from",f.toString())}return o!==25&&i.append("size",o.toString()),i.toString()&&(n+=`?${i.toString()}`),(await r.doGetGeneric(n)).map(f=>({chain:this.chain.name,id:f.txHash,receiver:f.receiver,sender:f.sender,value:f.value,function:f.function,status:this.toActionStatus(f),createdAt:this.toActionCreatedAt(f)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};var x=require("@multiversx/sdk-core"),N=require("@vleap/warps");var ee=require("@multiversx/sdk-core"),W=require("@vleap/warps");var a=require("@multiversx/sdk-core"),ze=require("@vleap/warps");var h={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:s=>s.config.user?.wallets?.[s.adapter.chainInfo.name]},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:s=>{if(!s.adapter.wallet)return null;try{return s.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:s=>s.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:s=>s.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"},Alerts:{TriggerEventPrefix:"event"}},u={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 nt={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},w={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},$e=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))($e||{}),Ke=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Ke||{}),Ee={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},G={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 at=new RegExp(`${h.ArgParamsSeparator}(.*)`),M=class{constructor(e){this.coreSerializer=new ze.WarpSerializer(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(a.OptionType.ClassName)||e.hasClassOrSuperclass(a.OptionValue.ClassName)){if(!e.isSet())return u.Option+h.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return u.Option+h.ArgParamsSeparator+r}if(t.hasExactClass(a.VariadicType.ClassName)||e.hasClassOrSuperclass(a.VariadicValue.ClassName)){let r=e.getItems();if(r.length===0){let g=this.typeToString(t.getFirstTypeParameter());return u.Vector+h.ArgParamsSeparator+g+h.ArgParamsSeparator}let n=r.map(g=>this.typedToString(g));if(n.every(g=>g.startsWith(u.Tuple)))return u.Vector+h.ArgParamsSeparator+n.join(",");let i=n[0],o=i.indexOf(h.ArgParamsSeparator),p=i.substring(0,o),c=n.map(g=>{let d=g.indexOf(h.ArgParamsSeparator);return g.substring(d+1)}),f=p.startsWith(u.Struct)?h.ArgStructSeparator:h.ArgListSeparator;return u.Vector+h.ArgParamsSeparator+p+h.ArgParamsSeparator+c.join(f)}if(t.hasExactClass(a.OptionalType.ClassName)||e.hasClassOrSuperclass(a.OptionalValue.ClassName)){if(!e.isSet())return w.Optional+h.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return w.Optional+h.ArgParamsSeparator+r}if(t.hasExactClass(a.ListType.ClassName)||e.hasClassOrSuperclass(a.List.ClassName)){let n=e.getItems().map(c=>this.typedToString(c));if(n.every(c=>c.startsWith(u.Tuple)))return w.List+h.ArgParamsSeparator+n.join(",");let o=n.map(c=>c.split(h.ArgParamsSeparator)[0])[0],p=n.map(c=>c.split(h.ArgParamsSeparator)[1]);return w.List+h.ArgParamsSeparator+o+h.ArgParamsSeparator+p.join(h.ArgListSeparator)}if(t.hasExactClass(a.CompositeType.ClassName)||e.hasClassOrSuperclass(a.CompositeValue.ClassName)){let n=e.getItems().map(i=>{let o=this.typedToString(i),p=o.indexOf(h.ArgParamsSeparator),c=o.substring(0,p),f=o.substring(p+1);return`${c},${f}`});return`${u.Tuple}(${n.join(",")})`}if(t.hasExactClass(a.BigUIntType.ClassName)||e.hasClassOrSuperclass(a.BigUIntValue.ClassName)||t.getName()==="BigUint")return u.Biguint+h.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.U8Type.ClassName)||e.hasClassOrSuperclass(a.U8Value.ClassName))return u.Uint8+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U16Type.ClassName)||e.hasClassOrSuperclass(a.U16Value.ClassName))return u.Uint16+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U32Type.ClassName)||e.hasClassOrSuperclass(a.U32Value.ClassName))return u.Uint32+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U64Type.ClassName)||e.hasClassOrSuperclass(a.U64Value.ClassName))return u.Uint64+h.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.StringType.ClassName)||e.hasClassOrSuperclass(a.StringValue.ClassName))return u.String+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.BooleanType.ClassName)||e.hasClassOrSuperclass(a.BooleanValue.ClassName))return u.Bool+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.AddressType.ClassName)||e.hasClassOrSuperclass(a.AddressValue.ClassName))return u.Address+h.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(a.BytesType.ClassName)||e.hasClassOrSuperclass(a.BytesValue.ClassName))return u.Hex+h.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),i=e.getFieldValue("amount").valueOf(),p=new a.TokenComputer().computeExtendedIdentifier(new a.Token({identifier:r,nonce:BigInt(n)}));return u.Asset+h.ArgParamsSeparator+p+h.ArgCompositeSeparator+i}if(t.hasExactClass(a.StructType.ClassName)||e.hasClassOrSuperclass(a.Struct.ClassName)){let r=e,i=r.getType().getName(),o=r.getFields();if(o.length===0)return`${u.Struct}(${i})${h.ArgParamsSeparator}`;let p=o.map(c=>{let f=c.value.getType(),d=this.typedToString(c.value).split(h.ArgParamsSeparator),T=d.length>2?d.slice(2).join(h.ArgParamsSeparator):d[1]||"";return`(${c.name}${h.ArgParamsSeparator}${this.typeToString(f)})${T}`});return`${u.Struct}(${i})${h.ArgParamsSeparator}${p.join(h.ArgListSeparator)}`}if(t.hasExactClass(a.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(a.TokenIdentifierValue.ClassName))return w.Token+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(a.CodeMetadataValue.ClassName))return w.CodeMeta+h.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){if(e.startsWith(u.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(u.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let i=0;i<r.length;i+=2)n.push(r[i]);return new a.CompositeType(...n.map(i=>this.nativeToType(i)))}if(e.startsWith(u.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 a.StructType(r,[])}if(e===u.String)return new a.StringType;if(e===u.Uint8)return new a.U8Type;if(e===u.Uint16)return new a.U16Type;if(e===u.Uint32)return new a.U32Type;if(e===u.Uint64)return new a.U64Type;if(e===u.Biguint)return new a.BigUIntType;if(e===u.Bool)return new a.BooleanType;if(e===u.Address)return new a.AddressType;if(e===u.Hex)return new a.BytesType;if(e===u.Asset)return new a.StructType("EsdtTokenPayment",[new a.FieldDefinition("token_identifier","",new a.TokenIdentifierType),new a.FieldDefinition("token_nonce","",new a.U64Type),new a.FieldDefinition("amount","",new a.BigUIntType)]);if(e===w.Token)return new a.TokenIdentifierType;if(e===w.CodeMeta)return new a.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===u.Option){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionValue.newMissingTyped(n.getType()):a.OptionValue.newProvided(n)}if(t===u.Vector){let n=r.indexOf(h.ArgParamsSeparator),i=r.substring(0,n),o=r.substring(n+1);if(i.startsWith(u.Tuple)){let d=o.split(",").map(T=>this.stringToTyped(T));return new a.VariadicValue(new a.VariadicType(this.nativeToType(i)),d)}if(o.includes("tuple(")){let g=this.splitTupleStrings(o),d=g.map(A=>this.stringToTyped(A)),b=g[0].match(/^(tuple\([^)]+\))/),y=b?b[1]:"tuple";return new a.VariadicValue(new a.VariadicType(this.nativeToType(y)),d)}let p=i.startsWith(u.Struct)?h.ArgStructSeparator:h.ArgListSeparator,f=o.split(p).map(g=>this.stringToTyped(`${i}:${g}`));return new a.VariadicValue(new a.VariadicType(this.nativeToType(i)),f)}if(t.startsWith(u.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let i=n.split(","),o=[];for(let c=0;c<i.length;c+=2){let f=i[c],g=i[c+1];o.push(this.stringToTyped(`${f}:${g}`))}let p=o.map(c=>c.getType());return new a.CompositeValue(new a.CompositeType(...p),o)}if(t.startsWith(u.Struct)){let n=t.match(/\(([^)]+)\)/),i=n?n[1]:"CustomStruct";if(!r)return new a.Struct(new a.StructType(i,[]),[]);let o=r.split(h.ArgListSeparator),p=[],c=[];return o.forEach(f=>{let g=f.match(new RegExp(`^\\(([^${h.ArgParamsSeparator}]+)${h.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(g){let[,d,T,b]=g,y=this.stringToTyped(`${T}${h.ArgParamsSeparator}${b}`);p.push(new a.FieldDefinition(d,"",y.getType())),c.push(new a.Field(y,d))}}),new a.Struct(new a.StructType(i,p),c)}if(t===u.String)return r?a.StringValue.fromUTF8(r):new a.NothingValue;if(t===u.Uint8)return r?new a.U8Value(Number(r)):new a.NothingValue;if(t===u.Uint16)return r?new a.U16Value(Number(r)):new a.NothingValue;if(t===u.Uint32)return r?new a.U32Value(Number(r)):new a.NothingValue;if(t===u.Uint64)return r?new a.U64Value(BigInt(r)):new a.NothingValue;if(t===u.Biguint)return r?new a.BigUIntValue(BigInt(r)):new a.NothingValue;if(t===u.Bool)return r?new a.BooleanValue(typeof r=="boolean"?r:r==="true"):new a.NothingValue;if(t===u.Address)return r?new a.AddressValue(a.Address.newFromBech32(r)):new a.NothingValue;if(t===u.Hex)return r?a.BytesValue.fromHex(r):new a.NothingValue;if(t===u.Asset){let[n,i]=r.split(h.ArgCompositeSeparator),o=new a.TokenComputer,p=K(n)?ae(n):o.extractIdentifierFromExtendedIdentifier(n),c=K(n)?0n:o.extractNonceFromExtendedIdentifier(n);return new a.Struct(this.nativeToType("asset"),[new a.Field(new a.TokenIdentifierValue(p),"token_identifier"),new a.Field(new a.U64Value(BigInt(c)),"token_nonce"),new a.Field(new a.BigUIntValue(BigInt(i)),"amount")])}if(t===w.Null)return new a.NothingValue;if(t===w.Optional){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionalValue.newMissing():new a.OptionalValue(n.getType(),n)}if(t===w.List){let[n,i]=r.split(at,2),p=i.split(h.ArgListSeparator).map(c=>this.stringToTyped(n+h.ArgParamsSeparator+c));return new a.List(this.nativeToType(n),p)}if(t===w.Token)return r?new a.TokenIdentifierValue(r):new a.NothingValue;if(t===w.CodeMeta)return new a.CodeMetadataValue(a.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let i=0;i<e.length;i++){let o=e[i];if(o==="(")n++;else if(o===")")n--;else if(o===","&&n===0){t.push(r.trim()),r="";continue}r+=o}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(a.OptionType.ClassName))return u.Option+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.VariadicType.ClassName))return u.Vector+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.StringType.ClassName))return u.String;if(e.hasExactClass(a.U8Type.ClassName))return u.Uint8;if(e.hasExactClass(a.U16Type.ClassName))return u.Uint16;if(e.hasExactClass(a.U32Type.ClassName))return u.Uint32;if(e.hasExactClass(a.U64Type.ClassName))return u.Uint64;if(e.hasExactClass(a.BigUIntType.ClassName))return u.Biguint;if(e.hasExactClass(a.BooleanType.ClassName))return u.Bool;if(e.hasExactClass(a.AddressType.ClassName))return u.Address;if(e.hasExactClass(a.BytesType.ClassName))return u.Hex;if(e.hasExactClass(a.TokenIdentifierType.ClassName))return w.Token;if(e.hasExactClass(a.OptionalType.ClassName))return w.Optional+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.ListType.ClassName))return w.List+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.CodeMetadataType.ClassName))return w.CodeMeta;if(e.hasExactClass(a.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return u.Asset;if(e.hasExactClass(a.StructType.ClassName))return`${u.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var j=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new O(e,t),this.serializer=new M({typeRegistry:this.typeRegistry}),this.cache=new W.WarpCache(e.cache?.type)}async getActionExecution(e,t,r){let n=this.cache.get(W.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",t))??[],i=await this.extractContractOutput(e,t,r,n),o=(0,W.getNextInfo)(this.config,[],e,t,i.output),p=(0,W.applyOutputToMessages)(e,i.output,this.config),c=(0,W.extractResolvedInputValues)(n);return{status:r.status.isSuccessful()?"success":"error",warp:e,action:t,user:(0,W.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:r.hash,tx:r,next:o,values:i.values,output:i.output,messages:p,destination:null,resolvedInputs:c}}async extractContractOutput(e,t,r,n){let i=(0,W.getWarpActionByIndex)(e,t),o=[],p=[],c={};if(!e.output||i.type!=="contract")return{values:{string:o,native:p,mapped:{}},output:c};if(!Object.values(e.output).some(y=>y.includes("out")||y.includes("event"))){for(let[y,A]of Object.entries(e.output))c[y]=A;return{values:{string:o,native:p,mapped:{}},output:await(0,W.evaluateOutputCommon)(e,c,t,n,this.serializer.coreSerializer,this.config)}}let g=await this.abi.getAbiForAction(i),d=new ee.TransactionEventsParser({abi:g}),b=new ee.SmartContractTransactionsOutcomeParser({abi:g}).parseExecute({transactionOnNetwork:r,function:i.func||void 0});for(let[y,A]of Object.entries(e.output)){if(A.startsWith(W.WarpConstants.Transform.Prefix))continue;if(A.startsWith("input.")){c[y]=A;continue}let B=(0,W.parseOutputOutIndex)(A);if(B!==null&&B!==t){c[y]=null;continue}let[k,H,$]=A.split(".");if(k==="event"){if(!H||isNaN(Number($)))continue;let L=Number($),v=(0,ee.findEventsByFirstTopic)(r,H),Qe=d.parseEvents({events:v})[0],ne=Object.values(Qe)[L]||null;o.push(String(ne)),p.push(ne),c[y]=ne&&ne.valueOf()}else if(k==="out"||k.startsWith("out[")){if(!H)continue;let L=Number(H),v=b.values[L-1]||null;$&&(v=v[$]||null),v&&typeof v=="object"&&(v="toFixed"in v?v.toFixed():v.valueOf()),o.push(String(v)),p.push(v),c[y]=v&&v.valueOf()}else c[y]=A}return{values:{string:o,native:p,mapped:{}},output:await(0,W.evaluateOutputCommon)(e,c,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let i=t.map(g=>this.serializer.typedToString(g)),o=t.map(g=>this.serializer.typedToNative(g)[1]),p={string:i,native:o,mapped:{}},c={};if(!e.output)return{values:p,output:c};let f=g=>{let d=g.split(".").slice(1).map(b=>parseInt(b)-1);if(d.length===0)return;let T=o[d[0]];for(let b=1;b<d.length;b++){if(T==null)return;T=T[d[b]]}return T};for(let[g,d]of Object.entries(e.output)){if(d.startsWith(W.WarpConstants.Transform.Prefix))continue;let T=(0,W.parseOutputOutIndex)(d);if(T!==null&&T!==r){c[g]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?c[g]=f(d)||null:c[g]=d}return c=await(0,W.evaluateOutputCommon)(e,c,r,n,this.serializer.coreSerializer,this.config),{values:p,output:c}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,i=e.inputs,o=e.meta,p=new Map,c=new Set,f=this;async function g(y,A=[]){if(p.has(y))return p.get(y);if(c.has(y))throw new Error(`Circular dependency detected at action ${y}`);c.add(y);let B=t.actions[y-1];if(!B)throw new Error(`Action ${y} not found`);let k;if(B.type==="query")k=await n.executeQuery(t,y,A);else if(B.type==="collect")k=await n.executeCollect(t,y,A,o);else throw new Error(`Unsupported or interactive action type: ${B.type}`);if(p.set(y,k),t.output)for(let H of Object.values(t.output)){let L=String(H).match(/^out\[(\d+)\]/);if(L){let v=parseInt(L[1],10);v!==y&&!p.has(v)&&await g(v)}}return c.delete(y),k}await g(r,i);let d={};for(let y of p.values())for(let[A,B]of Object.entries(y.output))B!==null?d[A]=B:A in d||(d[A]=null);let T=await(0,W.evaluateOutputCommon)(t,d,r,i,this.serializer.coreSerializer,this.config);return{...p.get(r),action:r,output:T}}};var it="EGLD-000000",pe=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new M({typeRegistry:this.typeRegistry}),this.abi=new O(this.config,this.chain),this.output=new j(this.config,this.chain,this.typeRegistry)}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){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=x.Address.newFromBech32(t),n=new x.TransactionsFactoryConfig({chainID:e.chain.chainId}),i=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 x.TransferTransactionsFactory({config:n}).createTransactionForTransfer(r,{receiver:x.Address.newFromBech32(e.destination),nativeAmount:c,tokenTransfers:o?[]:this.toTokenTransfers(e.transfers),data:i?new Uint8Array(i):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");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),n=x.Address.newFromBech32(t),i=e.args.map(p=>this.serializer.stringToTyped(p)),o=new x.TransactionsFactoryConfig({chainID:e.chain.chainId});return new x.SmartContractTransactionsFactory({config:o}).createTransactionForExecute(n,{contract:x.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:i,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");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),n=e.args.map(v=>this.serializer.stringToTyped(v)),i=C(e.chain,this.config.env,this.config),o=x.Address.newFromBech32(e.destination),p=i.createSmartContractController(r),c=p.createQuery({contract:o,function:t.func||"",arguments:n}),f=await p.runQuery(c),g=f.returnCode==="ok",d=new x.ArgSerializer,T=r.getEndpoint(f.function||t.func||""),b=(f.returnDataParts||[]).map(v=>Buffer.from(v)),y=d.buffersToValues(b,T.output),{values:A,output:B}=await this.output.extractQueryOutput(e.warp,y,e.action,e.resolvedInputs),k=(0,N.getNextInfo)(this.config,[],e.warp,e.action,B),$=e.resolvedInputs.find(v=>v.input.position==="receiver"||v.input.position==="destination")?.value||e.destination,L=(0,N.extractResolvedInputValues)(e.resolvedInputs);return{status:g?"success":"error",warp:e.warp,action:e.action,user:(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:k,values:A,output:{...B,_DATA:y},messages:(0,N.applyOutputToMessages)(e.warp,B,this.config),destination:$,resolvedInputs:L}}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:it}:t).map(t=>{let n=new x.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new x.TokenTransfer({token:new x.Token({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var le=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ee[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 i=G[t];if(i)return i}if(e){let i=G[e];if(i)return i}let r=this.getPrimaryExplorer();return G[r]||G[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 i=G[n];i&&(r[n]=`${i}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let i=G[n];i&&(r[n]=`${i}/transactions/${e}`)}),r}};var m=require("@multiversx/sdk-core"),V=require("@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 I=s=>{if(s==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(s==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ue=s=>({hash:s.hash.toString("hex"),alias:s.alias?.toString()||null,trust:s.trust.toString(),owner:s.owner.toString(),createdAt:s.created_at.toNumber(),upgradedAt:s.upgraded_at?.toNumber(),brand:s.brand?.toString("hex")||null,upgrade:s.upgrade?.toString("hex")||null}),Se=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(e=>e.toBech32())});var me=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new V.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,V.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 n=m.Address.newFromBech32(this.userWallet),i=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t),m.BytesValue.fromHex(r)]:t?[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t)]:[m.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:m.Address.newFromBech32(I(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[m.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 n=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:m.Address.newFromBech32(I(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[m.BytesValue.fromUTF8(e),m.BytesValue.fromHex(t),m.BytesValue.fromHex(r)]:[m.BytesValue.fromUTF8(e),m.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[m.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[m.BytesValue.fromHex(e),new m.AddressValue(new m.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=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e),m.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=V.WarpCacheKey.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return V.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let i=m.Address.newFromBech32(I(this.config.env)),o=this.getController(),p=o.createQuery({contract:i,function:"getInfoByAlias",arguments:[m.BytesValue.fromUTF8(e)]}),c=await o.runQuery(p),[f]=o.parseQueryResponse(c),g=f?ue(f):null,d=g?.brand?await this.fetchBrand(g.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:g,brand:d},t.ttl),{registryInfo:g,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=V.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let d=this.cache.get(r);if(d)return V.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),d}let n=m.Address.newFromBech32(I(this.config.env)),i=this.getController(),o=i.createQuery({contract:n,function:"getInfoByHash",arguments:[m.BytesValue.fromHex(e)]}),p=await i.runQuery(o),[c]=i.parseQueryResponse(p),f=c?ue(c):null,g=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:g},t.ttl),{registryInfo:f,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=m.Address.newFromBech32(I(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserWarps",arguments:[new m.AddressValue(new m.Address(t))]}),o=await n.runQuery(i),[p]=n.parseQueryResponse(o);return p.map(ue)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(I(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserBrands",arguments:[new m.AddressValue(new m.Address(t))]}),o=await n.runQuery(i),[p]=n.parseQueryResponse(o),c=p.map(d=>d.toString("hex")),f={ttl:365*24*60*60};return(await Promise.all(c.map(d=>this.fetchBrand(d,f)))).filter(d=>d!==null)}catch{return[]}}async fetchBrand(e,t){let r=V.WarpCacheKey.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return V.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let p=await o.getTransaction(e),c=JSON.parse(p.data.toString());return c.meta={query:null,chain:this.chain.name,identifier:(0,V.createWarpIdentifier)(this.chain.name,"hash",e),hash:p.hash,creator:p.sender.toBech32(),createdAt:new Date(p.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=m.Address.newFromBech32(I(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Se(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new m.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=m.AbiRegistry.create(be);return new m.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=C(this.chain,this.config.env,this.config),t=m.AbiRegistry.create(be);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var de=require("@multiversx/sdk-core"),U=require("@vleap/warps");var te=require("@multiversx/sdk-core"),ye=require("@vleap/warps"),Q=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,ye.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new te.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}getAccount(){if(this.account)return this.account;let e=(0,ye.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=te.Mnemonic.fromString(e).deriveKey(0);return this.account=new te.Account(r),this.account}};var X=require("@multiversx/sdk-core"),ve=require("@vleap/warps"),J=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,ve.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new X.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}getAccount(){if(this.account)return this.account;let e=(0,ve.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?X.UserSecretKey.fromPem(e):X.UserSecretKey.fromString(e);return this.account=new X.Account(r),this.account}};var he=class{constructor(e,t,r){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=C(t,e.env,e),this.cache=new U.WarpCache(e.cache?.type),this.walletProvider=r||this.createDefaultProvider(),this.initializeCache()}createDefaultProvider(){return(0,U.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name)?new J(this.config,this.chain):(0,U.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name)?new Q(this.config,this.chain):null}initializeCache(){(0,U.initializeWalletCache)(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof J||this.walletProvider instanceof Q){let r=this.walletProvider.getAccountInstance();if(e.nonce===0n){let n=await this.entry.recallAccountNonce(r.address),i=this.cache.get(`nonce:${r.address.toBech32()}`)||0,o=BigInt(Math.max(i,Number(n)));e.nonce=o}}else if(e.nonce===0n&&this.cachedAddress){let r=de.Address.newFromBech32(this.cachedAddress),n=await this.entry.recallAccountNonce(r),i=this.cache.get(`nonce:${this.cachedAddress}`)||0,o=BigInt(Math.max(i,Number(n)));e.nonce=o}let t=await this.walletProvider.signTransaction(e);if(this.walletProvider instanceof J||this.walletProvider instanceof Q){let r=this.walletProvider.getAccountInstance(),n=Number(r.nonce)+1;this.cache.set(`nonce:${r.address.toBech32()}`,n,U.CacheTtl.OneMinute)}else if(this.cachedAddress){let r=e.nonce?Number(e.nonce):0;this.cache.set(`nonce:${this.cachedAddress}`,r+1,U.CacheTtl.OneMinute)}return t}async signTransactions(e){return Promise.all(e.map(async t=>this.signTransaction(t)))}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}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=de.Mnemonic.fromString(e).deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=de.Mnemonic.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 this.cachedAddress}getPublicKey(){return this.cachedPublicKey}};var ge=(s,e)=>(t,r)=>{let n=e[t.env],i=new qe.WarpTypeRegistry;return i.registerType("token",{stringToNative:o=>o,nativeToString:o=>`token:${o}`}),i.registerType("codemeta",{stringToNative:o=>o,nativeToString:o=>`codemeta:${o}`}),i.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new oe(t,n),executor:new pe(t,n,i),output:new j(t,n,i),serializer:new M({typeRegistry:i}),registry:new me(t,n),explorer:new le(s,t),abiBuilder:()=>new O(t,n),brandBuilder:()=>new se(t,n),dataLoader:new ce(t,n),wallet:new he(t,n)}};var we={chain:re.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://joai.ai/images/tokens/egld.svg"},Ie=ge(re.WarpChainName.Multiversx,{mainnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:we},testnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:we},devnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:we}});var We=require("@vleap/warps");var je={chain:We.WarpChainName.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},Be={name:We.WarpChainName.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/vibechain.svg",nativeToken:je},Pe=ge(We.WarpChainName.Vibechain,{mainnet:Be,testnet:Be,devnet:Be});var ot=(s,e)=>[Ie(s,e),Pe(s,e)],ct=()=>[Ne.WarpChainName.Multiversx,Ne.WarpChainName.Vibechain];var R=require("@vleap/warps");var pt=s=>new R.WarpSerializer().nativeToString(w.Token,s),lt=s=>new R.WarpSerializer().nativeToString(w.CodeMeta,s),ut=(s,e)=>{if(e===null)return w.Optional+R.WarpConstants.ArgParamsSeparator;let t=s(e),r=t.indexOf(R.WarpConstants.ArgParamsSeparator),n=t.substring(0,r),i=t.substring(r+1);return w.Optional+R.WarpConstants.ArgParamsSeparator+n+R.WarpConstants.ArgParamsSeparator+i},mt=s=>new R.WarpSerializer().nativeToString(w.List,s);var l=require("@multiversx/sdk-core"),dt=(s,e)=>s?l.OptionValue.newProvided(s):e?l.OptionValue.newMissingTyped(e):l.OptionValue.newMissing(),ht=(s,e)=>s?new l.OptionalValue(s.getType(),s):e?new l.OptionalValue(e):l.OptionalValue.newMissing(),gt=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let e=s[0].getType();return new l.List(e,s)},ft=s=>l.VariadicValue.fromItems(...s),yt=s=>{let e=s.map(t=>t.getType());return new l.CompositeValue(new l.CompositeType(...e),s)},vt=s=>l.StringValue.fromUTF8(s),wt=s=>new l.U8Value(s),Wt=s=>new l.U16Value(s),Tt=s=>new l.U32Value(s),Ct=s=>new l.U64Value(s),xt=s=>new l.BigUIntValue(BigInt(s)),At=s=>new l.BooleanValue(s),Et=s=>new l.AddressValue(l.Address.newFromBech32(s)),bt=s=>new l.TokenIdentifierValue(s),St=s=>l.BytesValue.fromHex(s),It=s=>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(s.token.identifier),"token_identifier"),new l.Field(new l.U64Value(BigInt(s.token.nonce)),"token_nonce"),new l.Field(new l.BigUIntValue(BigInt(s.amount)),"amount")]),Bt=s=>new l.CodeMetadataValue(l.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),Pt=()=>new l.NothingValue;0&&(module.exports={ExplorerUrls,KnownTokens,MnemonicWalletProvider,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenEgld,NativeTokenVibe,PrivateKeyWalletProvider,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxOutput,WarpMultiversxRegistry,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_value,optional,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
1
+ "use strict";var We=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Ye=Object.prototype.hasOwnProperty;var Ze=(s,e)=>{for(var t in e)We(s,t,{get:e[t],enumerable:!0})},et=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Je(e))!Ye.call(s,n)&&n!==t&&We(s,n,{get:()=>e[n],enumerable:!(r=Xe(e,n))||r.enumerable});return s};var tt=s=>et(We({},"__esModule",{value:!0}),s);var Nt={};Ze(Nt,{ExplorerUrls:()=>H,KnownTokens:()=>xe,MultiversxAdapter:()=>Ie,MultiversxExplorers:()=>Ge,MultiversxExplorersConfig:()=>be,NativeTokenEgld:()=>ve,NativeTokenVibe:()=>je,VibechainAdapter:()=>Pe,VibechainExplorers:()=>Ke,WarpMultiversxAbiBuilder:()=>O,WarpMultiversxBrandBuilder:()=>se,WarpMultiversxBuilder:()=>oe,WarpMultiversxConstants:()=>at,WarpMultiversxContractLoader:()=>ie,WarpMultiversxDataLoader:()=>ce,WarpMultiversxExecutor:()=>pe,WarpMultiversxExplorer:()=>le,WarpMultiversxInputTypes:()=>w,WarpMultiversxOutput:()=>Q,WarpMultiversxRegistry:()=>me,WarpMultiversxSerializer:()=>M,WarpMultiversxWallet:()=>de,address_value:()=>bt,asset_value:()=>It,biguint_value:()=>xt,boolean_value:()=>At,codemeta:()=>lt,codemeta_value:()=>Bt,composite_value:()=>yt,createMultiversxAdapter:()=>he,findKnownTokenById:()=>Ae,getAllMultiversxAdapters:()=>ct,getAllMultiversxChainNames:()=>rt,getKnownTokensForChain:()=>nt,getMultiversxEntrypoint:()=>C,getMultiversxRegistryAddress:()=>I,getNormalizedTokenIdentifier:()=>ae,hex_value:()=>St,isNativeToken:()=>z,list:()=>mt,list_value:()=>gt,nothing_value:()=>Pt,option_value:()=>dt,optional:()=>ut,optional_value:()=>ht,string_value:()=>vt,toTypedConfigInfo:()=>Se,toTypedRegistryInfo:()=>ue,token:()=>pt,token_value:()=>Et,u16_value:()=>Wt,u32_value:()=>Tt,u64_value:()=>Ct,u8_value:()=>wt,variadic_value:()=>ft});module.exports=tt(Nt);var Te=require("@vleap/warps"),rt=()=>[Te.WarpChainName.Multiversx,Te.WarpChainName.Vibechain];var qe=require("@vleap/warps");var k=require("@multiversx/sdk-core"),b=require("@vleap/warps");var J=require("@multiversx/sdk-core"),Ne=require("@vleap/warps"),z=s=>!s.includes("-"),ae=s=>z(s)?`${s}-000000`:s,C=(s,e,t)=>{let r="warp-sdk",i=t?(0,Ne.getProviderConfig)(t,s.name,e,s.defaultApiUrl):{url:s.defaultApiUrl},o=i.url,p={headers:i.headers};return e==="devnet"?new J.DevnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p}):e==="testnet"?new J.TestnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p}):new J.MainnetEntrypoint({url:o,kind:"api",clientName:r,networkProviderConfig:p})};var Ce=require("@vleap/warps");var ie=class{constructor(e){this.config=e}async getContract(e,t){try{let i=await C(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return Ce.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let i=await C(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return Ce.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var O=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new ie(this.config),this.cache=new b.WarpCache(this.config.cache?.type)}async createInscriptionTransaction(e){let t=(0,b.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new k.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new k.TransferTransactionsFactory({config:r}),i=k.Address.newFromBech32(t),o={protocol:(0,b.getLatestProtocolIdentifier)("abi"),content:e},p=JSON.stringify(o),c=await n.createTransactionForTransfer(i,{receiver:i,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(p))});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,identifier:(0,b.createWarpIdentifier)(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=b.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return b.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let i=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(e),p=await this.createFromTransaction(o);return t&&t.ttl&&p&&this.cache.set(r,p,t.ttl),p}catch(o){return b.WarpLogger.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 k.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(b.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(b.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return k.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return k.AbiRegistry.create(r)}}};var q=require("@multiversx/sdk-core"),L=require("@vleap/warps"),Ve=require("buffer");var se=class{constructor(e,t){this.config=e;this.chain=t;this.core=new L.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,L.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new q.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new q.TransferTransactionsFactory({config:r}),i=q.Address.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(i,{receiver:q.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ve.Buffer.from(o))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:(0,L.createWarpIdentifier)(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return L.WarpLogger.error("BrandBuilder: Error creating from transaction hash",n),null}}};var j=require("@multiversx/sdk-core"),P=require("@vleap/warps");var oe=class extends P.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new P.WarpCache(t.cache?.type),this.core=new P.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,P.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new j.TransactionsFactoryConfig({chainID:this.chain.chainId}),i=new j.TransferTransactionsFactory({config:n}),o=j.Address.newFromBech32(r),p=JSON.stringify(t),c=await i.createTransactionForTransfer(o,{receiver:j.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(p))});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,identifier:(0,P.createWarpIdentifier)(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=P.WarpCacheKey.Warp(this.config.env,t);if(r){let p=this.cache.get(n);if(p)return P.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),p}let o=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let p=await o.getTransaction(t),c=await this.createFromTransaction(p);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(p){return P.WarpLogger.error("WarpBuilder: Error creating from transaction hash",p),null}}};var _=require("@multiversx/sdk-core"),Y=require("@vleap/warps");var ke=require("@vleap/warps"),Ue=ke.WarpChainName.Multiversx,Fe=[{chain:Ue,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ue,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Oe=require("@vleap/warps"),S=Oe.WarpChainName.Multiversx,Me=[{chain:S,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:S,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:S,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:S,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:S,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:S,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:S,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:S,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:S,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:S,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:S,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:S,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:S,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:S,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:S,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var De=require("@vleap/warps"),Re=De.WarpChainName.Multiversx,Le=[{chain:Re,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Re,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var He=require("@vleap/warps"),_e=He.WarpChainName.Vibechain,ge=[{chain:_e,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},{chain:_e,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"}];var xe={multiversx:{mainnet:Me,testnet:Le,devnet:Fe},vibechain:{mainnet:ge,testnet:ge,devnet:ge}},Ae=(s,e,t)=>(xe[s]?.[e]||[]).find(n=>n.identifier===t)||null,nt=(s,e)=>xe[s]?.[e]||[];var ce=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Y.WarpCache(e.cache?.type)}async getAccount(e){let r=await C(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=C(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(_.Address.newFromBech32(e)),n=t.getFungibleTokensOfAccount(_.Address.newFromBech32(e)),[i,o]=await Promise.all([r,n]),p=i.balance>0?[{...this.chain.nativeToken,amount:i.balance}]:[];return p.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}))),p}async getAsset(e){let t=Y.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=Ae(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 i=new _.TokenComputer,o=z(e)?0n:i.extractNonceFromExtendedIdentifier(e),p=new _.Token({identifier:e,nonce:BigInt(o||0)}),c=i.isFungible(p),f=C(this.chain,this.config.env,this.config).createNetworkProvider(),g=ae(e),d=await f.doGetGeneric(`tokens/${g}`),T={chain:this.chain.name,identifier:p.identifier,name:d.name,symbol:d.ticker,amount:0n,decimals:d.decimals,logoUrl:d.assets?.pngUrl||null,price:d.price?Number(d.price):void 0,supply:d.supply?BigInt(d.supply):void 0};return this.cache.set(t,T,Y.CacheTtl.OneHour),T}async getAction(e,t=!1){let r=C(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(i=>i.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=C(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,i=new URLSearchParams,o=t?.size||25,p=t?.page||0;if(p>0){let f=p*o;i.append("from",f.toString())}return o!==25&&i.append("size",o.toString()),i.toString()&&(n+=`?${i.toString()}`),(await r.doGetGeneric(n)).map(f=>({chain:this.chain.name,id:f.txHash,receiver:f.receiver,sender:f.sender,value:f.value,function:f.function,status:this.toActionStatus(f),createdAt:this.toActionCreatedAt(f)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};var x=require("@multiversx/sdk-core"),N=require("@vleap/warps");var Z=require("@multiversx/sdk-core"),W=require("@vleap/warps");var a=require("@multiversx/sdk-core"),$e=require("@vleap/warps");var h={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:s=>s.config.user?.wallets?.[s.adapter.chainInfo.name]},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:s=>{if(!s.adapter.wallet)return null;try{return s.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:s=>s.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:s=>s.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"},Alerts:{TriggerEventPrefix:"event"}},u={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 at={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},w={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},Ge=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Ge||{}),Ke=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Ke||{}),be={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 it=new RegExp(`${h.ArgParamsSeparator}(.*)`),M=class{constructor(e){this.coreSerializer=new $e.WarpSerializer(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(a.OptionType.ClassName)||e.hasClassOrSuperclass(a.OptionValue.ClassName)){if(!e.isSet())return u.Option+h.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return u.Option+h.ArgParamsSeparator+r}if(t.hasExactClass(a.VariadicType.ClassName)||e.hasClassOrSuperclass(a.VariadicValue.ClassName)){let r=e.getItems();if(r.length===0){let g=this.typeToString(t.getFirstTypeParameter());return u.Vector+h.ArgParamsSeparator+g+h.ArgParamsSeparator}let n=r.map(g=>this.typedToString(g));if(n.every(g=>g.startsWith(u.Tuple)))return u.Vector+h.ArgParamsSeparator+n.join(",");let i=n[0],o=i.indexOf(h.ArgParamsSeparator),p=i.substring(0,o),c=n.map(g=>{let d=g.indexOf(h.ArgParamsSeparator);return g.substring(d+1)}),f=p.startsWith(u.Struct)?h.ArgStructSeparator:h.ArgListSeparator;return u.Vector+h.ArgParamsSeparator+p+h.ArgParamsSeparator+c.join(f)}if(t.hasExactClass(a.OptionalType.ClassName)||e.hasClassOrSuperclass(a.OptionalValue.ClassName)){if(!e.isSet())return w.Optional+h.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return w.Optional+h.ArgParamsSeparator+r}if(t.hasExactClass(a.ListType.ClassName)||e.hasClassOrSuperclass(a.List.ClassName)){let n=e.getItems().map(c=>this.typedToString(c));if(n.every(c=>c.startsWith(u.Tuple)))return w.List+h.ArgParamsSeparator+n.join(",");let o=n.map(c=>c.split(h.ArgParamsSeparator)[0])[0],p=n.map(c=>c.split(h.ArgParamsSeparator)[1]);return w.List+h.ArgParamsSeparator+o+h.ArgParamsSeparator+p.join(h.ArgListSeparator)}if(t.hasExactClass(a.CompositeType.ClassName)||e.hasClassOrSuperclass(a.CompositeValue.ClassName)){let n=e.getItems().map(i=>{let o=this.typedToString(i),p=o.indexOf(h.ArgParamsSeparator),c=o.substring(0,p),f=o.substring(p+1);return`${c},${f}`});return`${u.Tuple}(${n.join(",")})`}if(t.hasExactClass(a.BigUIntType.ClassName)||e.hasClassOrSuperclass(a.BigUIntValue.ClassName)||t.getName()==="BigUint")return u.Biguint+h.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.U8Type.ClassName)||e.hasClassOrSuperclass(a.U8Value.ClassName))return u.Uint8+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U16Type.ClassName)||e.hasClassOrSuperclass(a.U16Value.ClassName))return u.Uint16+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U32Type.ClassName)||e.hasClassOrSuperclass(a.U32Value.ClassName))return u.Uint32+h.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U64Type.ClassName)||e.hasClassOrSuperclass(a.U64Value.ClassName))return u.Uint64+h.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.StringType.ClassName)||e.hasClassOrSuperclass(a.StringValue.ClassName))return u.String+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.BooleanType.ClassName)||e.hasClassOrSuperclass(a.BooleanValue.ClassName))return u.Bool+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.AddressType.ClassName)||e.hasClassOrSuperclass(a.AddressValue.ClassName))return u.Address+h.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(a.BytesType.ClassName)||e.hasClassOrSuperclass(a.BytesValue.ClassName))return u.Hex+h.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),i=e.getFieldValue("amount").valueOf(),p=new a.TokenComputer().computeExtendedIdentifier(new a.Token({identifier:r,nonce:BigInt(n)}));return u.Asset+h.ArgParamsSeparator+p+h.ArgCompositeSeparator+i}if(t.hasExactClass(a.StructType.ClassName)||e.hasClassOrSuperclass(a.Struct.ClassName)){let r=e,i=r.getType().getName(),o=r.getFields();if(o.length===0)return`${u.Struct}(${i})${h.ArgParamsSeparator}`;let p=o.map(c=>{let f=c.value.getType(),d=this.typedToString(c.value).split(h.ArgParamsSeparator),T=d.length>2?d.slice(2).join(h.ArgParamsSeparator):d[1]||"";return`(${c.name}${h.ArgParamsSeparator}${this.typeToString(f)})${T}`});return`${u.Struct}(${i})${h.ArgParamsSeparator}${p.join(h.ArgListSeparator)}`}if(t.hasExactClass(a.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(a.TokenIdentifierValue.ClassName))return w.Token+h.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(a.CodeMetadataValue.ClassName))return w.CodeMeta+h.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){if(e.startsWith(u.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(u.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let i=0;i<r.length;i+=2)n.push(r[i]);return new a.CompositeType(...n.map(i=>this.nativeToType(i)))}if(e.startsWith(u.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 a.StructType(r,[])}if(e===u.String)return new a.StringType;if(e===u.Uint8)return new a.U8Type;if(e===u.Uint16)return new a.U16Type;if(e===u.Uint32)return new a.U32Type;if(e===u.Uint64)return new a.U64Type;if(e===u.Biguint)return new a.BigUIntType;if(e===u.Bool)return new a.BooleanType;if(e===u.Address)return new a.AddressType;if(e===u.Hex)return new a.BytesType;if(e===u.Asset)return new a.StructType("EsdtTokenPayment",[new a.FieldDefinition("token_identifier","",new a.TokenIdentifierType),new a.FieldDefinition("token_nonce","",new a.U64Type),new a.FieldDefinition("amount","",new a.BigUIntType)]);if(e===w.Token)return new a.TokenIdentifierType;if(e===w.CodeMeta)return new a.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===u.Option){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionValue.newMissingTyped(n.getType()):a.OptionValue.newProvided(n)}if(t===u.Vector){let n=r.indexOf(h.ArgParamsSeparator),i=r.substring(0,n),o=r.substring(n+1);if(i.startsWith(u.Tuple)){let d=o.split(",").map(T=>this.stringToTyped(T));return new a.VariadicValue(new a.VariadicType(this.nativeToType(i)),d)}if(o.includes("tuple(")){let g=this.splitTupleStrings(o),d=g.map(A=>this.stringToTyped(A)),E=g[0].match(/^(tuple\([^)]+\))/),y=E?E[1]:"tuple";return new a.VariadicValue(new a.VariadicType(this.nativeToType(y)),d)}let p=i.startsWith(u.Struct)?h.ArgStructSeparator:h.ArgListSeparator,f=o.split(p).map(g=>this.stringToTyped(`${i}:${g}`));return new a.VariadicValue(new a.VariadicType(this.nativeToType(i)),f)}if(t.startsWith(u.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let i=n.split(","),o=[];for(let c=0;c<i.length;c+=2){let f=i[c],g=i[c+1];o.push(this.stringToTyped(`${f}:${g}`))}let p=o.map(c=>c.getType());return new a.CompositeValue(new a.CompositeType(...p),o)}if(t.startsWith(u.Struct)){let n=t.match(/\(([^)]+)\)/),i=n?n[1]:"CustomStruct";if(!r)return new a.Struct(new a.StructType(i,[]),[]);let o=r.split(h.ArgListSeparator),p=[],c=[];return o.forEach(f=>{let g=f.match(new RegExp(`^\\(([^${h.ArgParamsSeparator}]+)${h.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(g){let[,d,T,E]=g,y=this.stringToTyped(`${T}${h.ArgParamsSeparator}${E}`);p.push(new a.FieldDefinition(d,"",y.getType())),c.push(new a.Field(y,d))}}),new a.Struct(new a.StructType(i,p),c)}if(t===u.String)return r?a.StringValue.fromUTF8(r):new a.NothingValue;if(t===u.Uint8)return r?new a.U8Value(Number(r)):new a.NothingValue;if(t===u.Uint16)return r?new a.U16Value(Number(r)):new a.NothingValue;if(t===u.Uint32)return r?new a.U32Value(Number(r)):new a.NothingValue;if(t===u.Uint64)return r?new a.U64Value(BigInt(r)):new a.NothingValue;if(t===u.Biguint)return r?new a.BigUIntValue(BigInt(r)):new a.NothingValue;if(t===u.Bool)return r?new a.BooleanValue(typeof r=="boolean"?r:r==="true"):new a.NothingValue;if(t===u.Address)return r?new a.AddressValue(a.Address.newFromBech32(r)):new a.NothingValue;if(t===u.Hex)return r?a.BytesValue.fromHex(r):new a.NothingValue;if(t===u.Asset){let[n,i]=r.split(h.ArgCompositeSeparator),o=new a.TokenComputer,p=z(n)?ae(n):o.extractIdentifierFromExtendedIdentifier(n),c=z(n)?0n:o.extractNonceFromExtendedIdentifier(n);return new a.Struct(this.nativeToType("asset"),[new a.Field(new a.TokenIdentifierValue(p),"token_identifier"),new a.Field(new a.U64Value(BigInt(c)),"token_nonce"),new a.Field(new a.BigUIntValue(BigInt(i)),"amount")])}if(t===w.Null)return new a.NothingValue;if(t===w.Optional){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionalValue.newMissing():new a.OptionalValue(n.getType(),n)}if(t===w.List){let[n,i]=r.split(it,2),p=i.split(h.ArgListSeparator).map(c=>this.stringToTyped(n+h.ArgParamsSeparator+c));return new a.List(this.nativeToType(n),p)}if(t===w.Token)return r?new a.TokenIdentifierValue(r):new a.NothingValue;if(t===w.CodeMeta)return new a.CodeMetadataValue(a.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let i=0;i<e.length;i++){let o=e[i];if(o==="(")n++;else if(o===")")n--;else if(o===","&&n===0){t.push(r.trim()),r="";continue}r+=o}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(a.OptionType.ClassName))return u.Option+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.VariadicType.ClassName))return u.Vector+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.StringType.ClassName))return u.String;if(e.hasExactClass(a.U8Type.ClassName))return u.Uint8;if(e.hasExactClass(a.U16Type.ClassName))return u.Uint16;if(e.hasExactClass(a.U32Type.ClassName))return u.Uint32;if(e.hasExactClass(a.U64Type.ClassName))return u.Uint64;if(e.hasExactClass(a.BigUIntType.ClassName))return u.Biguint;if(e.hasExactClass(a.BooleanType.ClassName))return u.Bool;if(e.hasExactClass(a.AddressType.ClassName))return u.Address;if(e.hasExactClass(a.BytesType.ClassName))return u.Hex;if(e.hasExactClass(a.TokenIdentifierType.ClassName))return w.Token;if(e.hasExactClass(a.OptionalType.ClassName))return w.Optional+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.ListType.ClassName))return w.List+h.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.CodeMetadataType.ClassName))return w.CodeMeta;if(e.hasExactClass(a.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return u.Asset;if(e.hasExactClass(a.StructType.ClassName))return`${u.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var Q=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new O(e,t),this.serializer=new M({typeRegistry:this.typeRegistry}),this.cache=new W.WarpCache(e.cache?.type)}async getActionExecution(e,t,r){let n=this.cache.get(W.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",t))??[],i=await this.extractContractOutput(e,t,r,n),o=(0,W.getNextInfo)(this.config,[],e,t,i.output),p=(0,W.applyOutputToMessages)(e,i.output,this.config),c=(0,W.extractResolvedInputValues)(n);return{status:r.status.isSuccessful()?"success":"error",warp:e,action:t,user:(0,W.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:r.hash,tx:r,next:o,values:i.values,output:i.output,messages:p,destination:null,resolvedInputs:c}}async extractContractOutput(e,t,r,n){let i=(0,W.getWarpActionByIndex)(e,t),o=[],p=[],c={};if(!e.output||i.type!=="contract")return{values:{string:o,native:p,mapped:{}},output:c};if(!Object.values(e.output).some(y=>y.includes("out")||y.includes("event"))){for(let[y,A]of Object.entries(e.output))c[y]=A;return{values:{string:o,native:p,mapped:{}},output:await(0,W.evaluateOutputCommon)(e,c,t,n,this.serializer.coreSerializer,this.config)}}let g=await this.abi.getAbiForAction(i),d=new Z.TransactionEventsParser({abi:g}),E=new Z.SmartContractTransactionsOutcomeParser({abi:g}).parseExecute({transactionOnNetwork:r,function:i.func||void 0});for(let[y,A]of Object.entries(e.output)){if(A.startsWith(W.WarpConstants.Transform.Prefix))continue;if(A.startsWith("input.")){c[y]=A;continue}let B=(0,W.parseOutputOutIndex)(A);if(B!==null&&B!==t){c[y]=null;continue}let[U,K,$]=A.split(".");if(U==="event"){if(!K||isNaN(Number($)))continue;let D=Number($),v=(0,Z.findEventsByFirstTopic)(r,K),Qe=d.parseEvents({events:v})[0],ne=Object.values(Qe)[D]||null;o.push(String(ne)),p.push(ne),c[y]=ne&&ne.valueOf()}else if(U==="out"||U.startsWith("out[")){if(!K)continue;let D=Number(K),v=E.values[D-1]||null;$&&(v=v[$]||null),v&&typeof v=="object"&&(v="toFixed"in v?v.toFixed():v.valueOf()),o.push(String(v)),p.push(v),c[y]=v&&v.valueOf()}else c[y]=A}return{values:{string:o,native:p,mapped:{}},output:await(0,W.evaluateOutputCommon)(e,c,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let i=t.map(g=>this.serializer.typedToString(g)),o=t.map(g=>this.serializer.typedToNative(g)[1]),p={string:i,native:o,mapped:{}},c={};if(!e.output)return{values:p,output:c};let f=g=>{let d=g.split(".").slice(1).map(E=>parseInt(E)-1);if(d.length===0)return;let T=o[d[0]];for(let E=1;E<d.length;E++){if(T==null)return;T=T[d[E]]}return T};for(let[g,d]of Object.entries(e.output)){if(d.startsWith(W.WarpConstants.Transform.Prefix))continue;let T=(0,W.parseOutputOutIndex)(d);if(T!==null&&T!==r){c[g]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?c[g]=f(d)||null:c[g]=d}return c=await(0,W.evaluateOutputCommon)(e,c,r,n,this.serializer.coreSerializer,this.config),{values:p,output:c}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,i=e.inputs,o=e.meta,p=new Map,c=new Set,f=this;async function g(y,A=[]){if(p.has(y))return p.get(y);if(c.has(y))throw new Error(`Circular dependency detected at action ${y}`);c.add(y);let B=t.actions[y-1];if(!B)throw new Error(`Action ${y} not found`);let U;if(B.type==="query")U=await n.executeQuery(t,y,A);else if(B.type==="collect")U=await n.executeCollect(t,y,A,o);else throw new Error(`Unsupported or interactive action type: ${B.type}`);if(p.set(y,U),t.output)for(let K of Object.values(t.output)){let D=String(K).match(/^out\[(\d+)\]/);if(D){let v=parseInt(D[1],10);v!==y&&!p.has(v)&&await g(v)}}return c.delete(y),U}await g(r,i);let d={};for(let y of p.values())for(let[A,B]of Object.entries(y.output))B!==null?d[A]=B:A in d||(d[A]=null);let T=await(0,W.evaluateOutputCommon)(t,d,r,i,this.serializer.coreSerializer,this.config);return{...p.get(r),action:r,output:T}}};var st="EGLD-000000",pe=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new M({typeRegistry:this.typeRegistry}),this.abi=new O(this.config,this.chain),this.output=new Q(this.config,this.chain,this.typeRegistry)}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){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=x.Address.newFromBech32(t),n=new x.TransactionsFactoryConfig({chainID:e.chain.chainId}),i=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 x.TransferTransactionsFactory({config:n}).createTransactionForTransfer(r,{receiver:x.Address.newFromBech32(e.destination),nativeAmount:c,tokenTransfers:o?[]:this.toTokenTransfers(e.transfers),data:i?new Uint8Array(i):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");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),n=x.Address.newFromBech32(t),i=e.args.map(p=>this.serializer.stringToTyped(p)),o=new x.TransactionsFactoryConfig({chainID:e.chain.chainId});return new x.SmartContractTransactionsFactory({config:o}).createTransactionForExecute(n,{contract:x.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:i,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");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),n=e.args.map(v=>this.serializer.stringToTyped(v)),i=C(e.chain,this.config.env,this.config),o=x.Address.newFromBech32(e.destination),p=i.createSmartContractController(r),c=p.createQuery({contract:o,function:t.func||"",arguments:n}),f=await p.runQuery(c),g=f.returnCode==="ok",d=new x.ArgSerializer,T=r.getEndpoint(f.function||t.func||""),E=(f.returnDataParts||[]).map(v=>Buffer.from(v)),y=d.buffersToValues(E,T.output),{values:A,output:B}=await this.output.extractQueryOutput(e.warp,y,e.action,e.resolvedInputs),U=(0,N.getNextInfo)(this.config,[],e.warp,e.action,B),$=e.resolvedInputs.find(v=>v.input.position==="receiver"||v.input.position==="destination")?.value||e.destination,D=(0,N.extractResolvedInputValues)(e.resolvedInputs);return{status:g?"success":"error",warp:e.warp,action:e.action,user:(0,N.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:U,values:A,output:{...B,_DATA:y},messages:(0,N.applyOutputToMessages)(e.warp,B,this.config),destination:$,resolvedInputs:D}}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:st}:t).map(t=>{let n=new x.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new x.TokenTransfer({token:new x.Token({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var le=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=be[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 i=H[t];if(i)return i}if(e){let i=H[e];if(i)return i}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(n=>{let i=H[n];i&&(r[n]=`${i}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let i=H[n];i&&(r[n]=`${i}/transactions/${e}`)}),r}};var m=require("@multiversx/sdk-core"),V=require("@vleap/warps");var Ee={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 I=s=>{if(s==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(s==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ue=s=>({hash:s.hash.toString("hex"),alias:s.alias?.toString()||null,trust:s.trust.toString(),owner:s.owner.toString(),createdAt:s.created_at.toNumber(),upgradedAt:s.upgraded_at?.toNumber(),brand:s.brand?.toString("hex")||null,upgrade:s.upgrade?.toString("hex")||null}),Se=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(e=>e.toBech32())});var me=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new V.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,V.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 n=m.Address.newFromBech32(this.userWallet),i=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t),m.BytesValue.fromHex(r)]:t?[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t)]:[m.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:m.Address.newFromBech32(I(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[m.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 n=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:m.Address.newFromBech32(I(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[m.BytesValue.fromUTF8(e),m.BytesValue.fromHex(t),m.BytesValue.fromHex(r)]:[m.BytesValue.fromUTF8(e),m.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e),m.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[m.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[m.BytesValue.fromHex(e),new m.AddressValue(new m.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=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.Address.newFromBech32(I(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.Address.newFromBech32(I(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[m.BytesValue.fromHex(e),m.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=V.WarpCacheKey.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return V.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let i=m.Address.newFromBech32(I(this.config.env)),o=this.getController(),p=o.createQuery({contract:i,function:"getInfoByAlias",arguments:[m.BytesValue.fromUTF8(e)]}),c=await o.runQuery(p),[f]=o.parseQueryResponse(c),g=f?ue(f):null,d=g?.brand?await this.fetchBrand(g.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:g,brand:d},t.ttl),{registryInfo:g,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=V.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let d=this.cache.get(r);if(d)return V.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),d}let n=m.Address.newFromBech32(I(this.config.env)),i=this.getController(),o=i.createQuery({contract:n,function:"getInfoByHash",arguments:[m.BytesValue.fromHex(e)]}),p=await i.runQuery(o),[c]=i.parseQueryResponse(p),f=c?ue(c):null,g=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:g},t.ttl),{registryInfo:f,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=m.Address.newFromBech32(I(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserWarps",arguments:[new m.AddressValue(new m.Address(t))]}),o=await n.runQuery(i),[p]=n.parseQueryResponse(o);return p.map(ue)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.Address.newFromBech32(I(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserBrands",arguments:[new m.AddressValue(new m.Address(t))]}),o=await n.runQuery(i),[p]=n.parseQueryResponse(o),c=p.map(d=>d.toString("hex")),f={ttl:365*24*60*60};return(await Promise.all(c.map(d=>this.fetchBrand(d,f)))).filter(d=>d!==null)}catch{return[]}}async fetchBrand(e,t){let r=V.WarpCacheKey.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return V.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=C(this.chain,this.config.env,this.config).createNetworkProvider();try{let p=await o.getTransaction(e),c=JSON.parse(p.data.toString());return c.meta={query:null,chain:this.chain.name,identifier:(0,V.createWarpIdentifier)(this.chain.name,"hash",e),hash:p.hash,creator:p.sender.toBech32(),createdAt:new Date(p.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=m.Address.newFromBech32(I(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Se(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new m.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=m.AbiRegistry.create(Ee);return new m.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=C(this.chain,this.config.env,this.config),t=m.AbiRegistry.create(Ee);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var ze=require("@multiversx/sdk-core"),X=require("@vleap/warps");var G=require("@multiversx/sdk-core"),fe=require("@vleap/warps"),ee=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,fe.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new G.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}create(e){let r=G.Mnemonic.fromString(e).deriveKey(0),n=r.hex();return{provider:"mnemonic",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=G.Mnemonic.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{provider:"mnemonic",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAccount(){if(this.account)return this.account;let e=(0,fe.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=G.Mnemonic.fromString(e).deriveKey(0);return this.account=new G.Account(r),this.account}};var F=require("@multiversx/sdk-core"),ye=require("@vleap/warps"),te=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,ye.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new F.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}create(e){let r=F.Mnemonic.fromString(e).deriveKey(0),n=r.hex();return{provider:"privateKey",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=F.Mnemonic.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{provider:"privateKey",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAccount(){if(this.account)return this.account;let e=(0,ye.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?F.UserSecretKey.fromPem(e):F.UserSecretKey.fromString(e);return this.account=new F.Account(r),this.account}};var de=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=C(t,e.env,e),this.cache=new X.WarpCache(e.cache?.type),this.walletProvider=this.createProvider(),this.initializeCache()}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];if(!e)return null;if(typeof e=="string")throw new Error(`Wallet can not be used for signing: ${e}`);let r=this.config.walletProviders?.[this.chain.name]?.[e.provider];if(r)return r(this.config,this.chain);if(e.provider==="privateKey")return new te(this.config,this.chain);if(e.provider==="mnemonic")return new ee(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e.provider}`)}initializeCache(){(0,X.initializeWalletCache)(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof te||this.walletProvider instanceof ee){let r=this.walletProvider.getAccountInstance();if(e.nonce===0n){let n=await this.entry.recallAccountNonce(r.address),i=this.cache.get(`nonce:${r.address.toBech32()}`)||0,o=BigInt(Math.max(i,Number(n)));e.nonce=o}}else if(e.nonce===0n&&this.cachedAddress){let r=ze.Address.newFromBech32(this.cachedAddress),n=await this.entry.recallAccountNonce(r),i=this.cache.get(`nonce:${this.cachedAddress}`)||0,o=BigInt(Math.max(i,Number(n)));e.nonce=o}let t=await this.walletProvider.signTransaction(e);if(this.walletProvider instanceof te||this.walletProvider instanceof ee){let r=this.walletProvider.getAccountInstance(),n=Number(r.nonce)+1;this.cache.set(`nonce:${r.address.toBech32()}`,n,X.CacheTtl.OneMinute)}else if(this.cachedAddress){let r=e.nonce?Number(e.nonce):0;this.cache.set(`nonce:${this.cachedAddress}`,r+1,X.CacheTtl.OneMinute)}return t}async signTransactions(e){return Promise.all(e.map(async t=>this.signTransaction(t)))}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}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){if(!this.walletProvider)throw new Error("No wallet provider available");return this.walletProvider.create(e)}generate(){if(!this.walletProvider)throw new Error("No wallet provider available");return this.walletProvider.generate()}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}};var he=(s,e)=>(t,r)=>{let n=e[t.env],i=new qe.WarpTypeRegistry;return i.registerType("token",{stringToNative:o=>o,nativeToString:o=>`token:${o}`}),i.registerType("codemeta",{stringToNative:o=>o,nativeToString:o=>`codemeta:${o}`}),i.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new oe(t,n),executor:new pe(t,n,i),output:new Q(t,n,i),serializer:new M({typeRegistry:i}),registry:new me(t,n),explorer:new le(s,t),abiBuilder:()=>new O(t,n),brandBuilder:()=>new se(t,n),dataLoader:new ce(t,n),wallet:new de(t,n)}};var re=require("@vleap/warps");var ve={chain:re.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://joai.ai/images/tokens/egld.svg"},Ie=he(re.WarpChainName.Multiversx,{mainnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:ve},testnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:ve},devnet:{name:re.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:ve}});var we=require("@vleap/warps");var je={chain:we.WarpChainName.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},Be={name:we.WarpChainName.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/vibechain.svg",nativeToken:je},Pe=he(we.WarpChainName.Vibechain,{mainnet:Be,testnet:Be,devnet:Be});var ct=()=>[Ie,Pe];var R=require("@vleap/warps");var pt=s=>new R.WarpSerializer().nativeToString(w.Token,s),lt=s=>new R.WarpSerializer().nativeToString(w.CodeMeta,s),ut=(s,e)=>{if(e===null)return w.Optional+R.WarpConstants.ArgParamsSeparator;let t=s(e),r=t.indexOf(R.WarpConstants.ArgParamsSeparator),n=t.substring(0,r),i=t.substring(r+1);return w.Optional+R.WarpConstants.ArgParamsSeparator+n+R.WarpConstants.ArgParamsSeparator+i},mt=s=>new R.WarpSerializer().nativeToString(w.List,s);var l=require("@multiversx/sdk-core"),dt=(s,e)=>s?l.OptionValue.newProvided(s):e?l.OptionValue.newMissingTyped(e):l.OptionValue.newMissing(),ht=(s,e)=>s?new l.OptionalValue(s.getType(),s):e?new l.OptionalValue(e):l.OptionalValue.newMissing(),gt=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let e=s[0].getType();return new l.List(e,s)},ft=s=>l.VariadicValue.fromItems(...s),yt=s=>{let e=s.map(t=>t.getType());return new l.CompositeValue(new l.CompositeType(...e),s)},vt=s=>l.StringValue.fromUTF8(s),wt=s=>new l.U8Value(s),Wt=s=>new l.U16Value(s),Tt=s=>new l.U32Value(s),Ct=s=>new l.U64Value(s),xt=s=>new l.BigUIntValue(BigInt(s)),At=s=>new l.BooleanValue(s),bt=s=>new l.AddressValue(l.Address.newFromBech32(s)),Et=s=>new l.TokenIdentifierValue(s),St=s=>l.BytesValue.fromHex(s),It=s=>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(s.token.identifier),"token_identifier"),new l.Field(new l.U64Value(BigInt(s.token.nonce)),"token_nonce"),new l.Field(new l.BigUIntValue(BigInt(s.amount)),"amount")]),Bt=s=>new l.CodeMetadataValue(l.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),Pt=()=>new l.NothingValue;0&&(module.exports={ExplorerUrls,KnownTokens,MultiversxAdapter,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenEgld,NativeTokenVibe,VibechainAdapter,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxOutput,WarpMultiversxRegistry,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,hex_value,isNativeToken,list,list_value,nothing_value,option_value,optional,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 bt}from"@vleap/warps";import{WarpChainName as G}from"@vleap/warps";import{WarpTypeRegistry as an}from"@vleap/warps";import{AbiRegistry as le,Address as Ft,TransactionsFactoryConfig as Ot,TransferTransactionsFactory as Mt}from"@multiversx/sdk-core";import{createWarpIdentifier as Rt,getLatestProtocolIdentifier as Lt,getWarpWalletAddressFromConfig as Dt,WarpCache as _t,WarpCacheKey as Gt,WarpConstants as _e,WarpLogger as Ge}from"@vleap/warps";import{DevnetEntrypoint as Nt,MainnetEntrypoint as Vt,TestnetEntrypoint as Ut}from"@multiversx/sdk-core";import{getProviderConfig as kt}from"@vleap/warps";var F=i=>!i.includes("-"),H=i=>F(i)?`${i}-000000`:i,w=(i,e,t)=>{let r="warp-sdk",a=t?kt(t,i.name,e,i.defaultApiUrl):{url:i.defaultApiUrl},s=a.url,c={headers:a.headers};return e==="devnet"?new Nt({url:s,kind:"api",clientName:r,networkProviderConfig:c}):e==="testnet"?new Ut({url:s,kind:"api",clientName:r,networkProviderConfig:c}):new Vt({url:s,kind:"api",clientName:r,networkProviderConfig:c})};import{WarpLogger as De}from"@vleap/warps";var $=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return De.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return De.error("WarpContractLoader: getVerificationInfo error",r),null}}};var B=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new $(this.config),this.cache=new _t(this.config.cache?.type)}async createInscriptionTransaction(e){let t=Dt(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new Ot({chainID:this.chain.chainId}),n=new Mt({config:r}),a=Ft.newFromBech32(t),s={protocol:Lt("abi"),content:e},c=JSON.stringify(s),o=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(c))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}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,identifier:Rt(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Gt.WarpAbi(this.config.env,e);if(t){let s=this.cache.get(r);if(s)return Ge.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),s}let a=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await a.getTransaction(e),c=await this.createFromTransaction(s);return t&&t.ttl&&c&&this.cache.set(r,c,t.ttl),c}catch(s){return Ge.error("WarpAbiBuilder: Error creating from transaction hash",s),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 le.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(_e.IdentifierType.Hash)){let t=e.abi.split(_e.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return le.create(r.content)}else{let r=await(await fetch(e.abi)).json();return le.create(r)}}};import{Address as He,TransactionsFactoryConfig as Ht,TransferTransactionsFactory as $t}from"@multiversx/sdk-core";import{createWarpIdentifier as Kt,getWarpWalletAddressFromConfig as zt,WarpBrandBuilder as qt,WarpLogger as jt}from"@vleap/warps";import{Buffer as Qt}from"buffer";var K=class{constructor(e,t){this.config=e;this.chain=t;this.core=new qt(e)}async createInscriptionTransaction(e){let t=zt(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Ht({chainID:this.chain.chainId}),n=new $t({config:r}),a=He.newFromBech32(t),s=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:He.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Qt.from(s))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:Kt(this.chain.name,"hash",e.hash),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 n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return jt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as $e,TransactionsFactoryConfig as Xt,TransferTransactionsFactory as Jt}from"@multiversx/sdk-core";import{createWarpIdentifier as Yt,getWarpWalletAddressFromConfig as Zt,WarpBuilder as Ke,WarpCache as er,WarpCacheKey as tr,WarpLogger as ze}from"@vleap/warps";var z=class extends Ke{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new er(t.cache?.type),this.core=new Ke(t)}async createInscriptionTransaction(t){let r=Zt(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new Xt({chainID:this.chain.chainId}),a=new Jt({config:n}),s=$e.newFromBech32(r),c=JSON.stringify(t),o=await a.createTransactionForTransfer(s,{receiver:$e.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(c))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:Yt(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=tr.Warp(this.config.env,t);if(r){let c=this.cache.get(n);if(c)return ze.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),c}let s=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await s.getTransaction(t),o=await this.createFromTransaction(c);return r&&r.ttl&&o&&this.cache.set(n,o,r.ttl),o}catch(c){return ze.error("WarpBuilder: Error creating from transaction hash",c),null}}};import{Address as ue,Token as sr,TokenComputer as or}from"@multiversx/sdk-core";import{CacheTtl as cr,WarpCache as pr,WarpCacheKey as lr}from"@vleap/warps";import{WarpChainName as rr}from"@vleap/warps";var qe=rr.Multiversx,je=[{chain:qe,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:qe,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as nr}from"@vleap/warps";var x=nr.Multiversx,Qe=[{chain:x,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:x,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:x,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:x,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:x,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:x,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:x,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:x,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:x,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:x,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:x,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:x,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:x,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:x,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:x,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as ar}from"@vleap/warps";var Xe=ar.Multiversx,Je=[{chain:Xe,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Xe,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as ir}from"@vleap/warps";var Ye=ir.Vibechain,q=[{chain:Ye,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},{chain:Ye,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"}];var Ze={multiversx:{mainnet:Qe,testnet:Je,devnet:je},vibechain:{mainnet:q,testnet:q,devnet:q}},et=(i,e,t)=>(Ze[i]?.[e]||[]).find(n=>n.identifier===t)||null,Ga=(i,e)=>Ze[i]?.[e]||[];var j=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new pr(e.cache?.type)}async getAccount(e){let r=await w(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(ue.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(ue.newFromBech32(e)),n=t.getFungibleTokensOfAccount(ue.newFromBech32(e)),[a,s]=await Promise.all([r,n]),c=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return c.push(...s.map(o=>({chain:this.chain.name,identifier:o.token.identifier,name:o.raw.name,symbol:o.raw.ticker,amount:o.amount,decimals:o.raw.decimals,logoUrl:o.raw.assets?.pngUrl||"",price:o.raw.price?Number(o.raw.price):void 0,supply:o.raw.supply?BigInt(o.raw.supply):void 0}))),c}async getAsset(e){let t=lr.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=et(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 or,s=F(e)?0n:a.extractNonceFromExtendedIdentifier(e),c=new sr({identifier:e,nonce:BigInt(s||0)}),o=a.isFungible(c),d=w(this.chain,this.config.env,this.config).createNetworkProvider(),m=H(e),l=await d.doGetGeneric(`tokens/${m}`),v={chain:this.chain.name,identifier:c.identifier,name:l.name,symbol:l.ticker,amount:0n,decimals:l.decimals,logoUrl:l.assets?.pngUrl||null,price:l.price?Number(l.price):void 0,supply:l.supply?BigInt(l.supply):void 0};return this.cache.set(t,v,cr.OneHour),v}async getAction(e,t=!1){let r=w(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=w(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,s=t?.size||25,c=t?.page||0;if(c>0){let d=c*s;a.append("from",d.toString())}return s!==25&&a.append("size",s.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(d=>({chain:this.chain.name,id:d.txHash,receiver:d.receiver,sender:d.sender,value:d.value,function:d.function,status:this.toActionStatus(d),createdAt:this.toActionCreatedAt(d)}))}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 _,ArgSerializer as Ir,SmartContractTransactionsFactory as Br,Token as Pr,TokenComputer as Nr,TokenTransfer as Vr,TransactionsFactoryConfig as vt,TransferTransactionsFactory as Ur}from"@multiversx/sdk-core";import{applyOutputToMessages as kr,extractResolvedInputValues as Fr,getNextInfo as Or,getWarpActionByIndex as be,getWarpWalletAddressFromConfig as Se}from"@vleap/warps";import{findEventsByFirstTopic as vr,SmartContractTransactionsOutcomeParser as wr,TransactionEventsParser as Wr}from"@multiversx/sdk-core";import{applyOutputToMessages as Tr,evaluateOutputCommon as re,extractResolvedInputValues as Cr,getNextInfo as xr,getWarpActionByIndex as Ar,getWarpWalletAddressFromConfig as Er,parseOutputOutIndex as ft,WarpCache as br,WarpCacheKey as Sr,WarpConstants as yt}from"@vleap/warps";import{Address as dr,AddressType as me,AddressValue as rt,BigUIntType as Q,BigUIntValue as de,BooleanType as he,BooleanValue as nt,BytesType as ge,BytesValue as at,CodeMetadata as hr,CodeMetadataType as fe,CodeMetadataValue as it,CompositeType as ye,CompositeValue as st,Field as X,FieldDefinition as J,List as ot,ListType as ct,NothingValue as b,OptionalType as pt,OptionalValue as ve,OptionType as lt,OptionValue as we,StringType as We,StringValue as ut,Struct as Y,StructType as k,Token as gr,TokenComputer as mt,TokenIdentifierType as Z,TokenIdentifierValue as Te,U16Type as Ce,U16Value as dt,U32Type as xe,U32Value as ht,U64Type as ee,U64Value as Ae,U8Type as Ee,U8Value as gt,VariadicType as D,VariadicValue as te}from"@multiversx/sdk-core";import{WarpSerializer as fr}from"@vleap/warps";var u={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:i=>i.config.user?.wallets?.[i.adapter.chainInfo.name]},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:i=>{if(!i.adapter.wallet)return null;try{return i.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:i=>i.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:i=>i.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"},Alerts:{TriggerEventPrefix:"event"}},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 ii={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},f={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},ur=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(ur||{}),mr=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(mr||{}),tt={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},U={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 yr=new RegExp(`${u.ArgParamsSeparator}(.*)`),P=class{constructor(e){this.coreSerializer=new fr(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(lt.ClassName)||e.hasClassOrSuperclass(we.ClassName)){if(!e.isSet())return p.Option+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return p.Option+u.ArgParamsSeparator+r}if(t.hasExactClass(D.ClassName)||e.hasClassOrSuperclass(te.ClassName)){let r=e.getItems();if(r.length===0){let m=this.typeToString(t.getFirstTypeParameter());return p.Vector+u.ArgParamsSeparator+m+u.ArgParamsSeparator}let n=r.map(m=>this.typedToString(m));if(n.every(m=>m.startsWith(p.Tuple)))return p.Vector+u.ArgParamsSeparator+n.join(",");let a=n[0],s=a.indexOf(u.ArgParamsSeparator),c=a.substring(0,s),o=n.map(m=>{let l=m.indexOf(u.ArgParamsSeparator);return m.substring(l+1)}),d=c.startsWith(p.Struct)?u.ArgStructSeparator:u.ArgListSeparator;return p.Vector+u.ArgParamsSeparator+c+u.ArgParamsSeparator+o.join(d)}if(t.hasExactClass(pt.ClassName)||e.hasClassOrSuperclass(ve.ClassName)){if(!e.isSet())return f.Optional+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return f.Optional+u.ArgParamsSeparator+r}if(t.hasExactClass(ct.ClassName)||e.hasClassOrSuperclass(ot.ClassName)){let n=e.getItems().map(o=>this.typedToString(o));if(n.every(o=>o.startsWith(p.Tuple)))return f.List+u.ArgParamsSeparator+n.join(",");let s=n.map(o=>o.split(u.ArgParamsSeparator)[0])[0],c=n.map(o=>o.split(u.ArgParamsSeparator)[1]);return f.List+u.ArgParamsSeparator+s+u.ArgParamsSeparator+c.join(u.ArgListSeparator)}if(t.hasExactClass(ye.ClassName)||e.hasClassOrSuperclass(st.ClassName)){let n=e.getItems().map(a=>{let s=this.typedToString(a),c=s.indexOf(u.ArgParamsSeparator),o=s.substring(0,c),d=s.substring(c+1);return`${o},${d}`});return`${p.Tuple}(${n.join(",")})`}if(t.hasExactClass(Q.ClassName)||e.hasClassOrSuperclass(de.ClassName)||t.getName()==="BigUint")return p.Biguint+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(Ee.ClassName)||e.hasClassOrSuperclass(gt.ClassName))return p.Uint8+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ce.ClassName)||e.hasClassOrSuperclass(dt.ClassName))return p.Uint16+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(xe.ClassName)||e.hasClassOrSuperclass(ht.ClassName))return p.Uint32+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(ee.ClassName)||e.hasClassOrSuperclass(Ae.ClassName))return p.Uint64+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(We.ClassName)||e.hasClassOrSuperclass(ut.ClassName))return p.String+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(he.ClassName)||e.hasClassOrSuperclass(nt.ClassName))return p.Bool+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(me.ClassName)||e.hasClassOrSuperclass(rt.ClassName))return p.Address+u.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(ge.ClassName)||e.hasClassOrSuperclass(at.ClassName))return p.Hex+u.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(),c=new mt().computeExtendedIdentifier(new gr({identifier:r,nonce:BigInt(n)}));return p.Asset+u.ArgParamsSeparator+c+u.ArgCompositeSeparator+a}if(t.hasExactClass(k.ClassName)||e.hasClassOrSuperclass(Y.ClassName)){let r=e,a=r.getType().getName(),s=r.getFields();if(s.length===0)return`${p.Struct}(${a})${u.ArgParamsSeparator}`;let c=s.map(o=>{let d=o.value.getType(),l=this.typedToString(o.value).split(u.ArgParamsSeparator),v=l.length>2?l.slice(2).join(u.ArgParamsSeparator):l[1]||"";return`(${o.name}${u.ArgParamsSeparator}${this.typeToString(d)})${v}`});return`${p.Struct}(${a})${u.ArgParamsSeparator}${c.join(u.ArgListSeparator)}`}if(t.hasExactClass(Z.ClassName)||e.hasClassOrSuperclass(Te.ClassName))return f.Token+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(fe.ClassName)||e.hasClassOrSuperclass(it.ClassName))return f.CodeMeta+u.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){if(e.startsWith(p.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(p.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let a=0;a<r.length;a+=2)n.push(r[a]);return new ye(...n.map(a=>this.nativeToType(a)))}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 k(r,[])}if(e===p.String)return new We;if(e===p.Uint8)return new Ee;if(e===p.Uint16)return new Ce;if(e===p.Uint32)return new xe;if(e===p.Uint64)return new ee;if(e===p.Biguint)return new Q;if(e===p.Bool)return new he;if(e===p.Address)return new me;if(e===p.Hex)return new ge;if(e===p.Asset)return new k("EsdtTokenPayment",[new J("token_identifier","",new Z),new J("token_nonce","",new ee),new J("amount","",new Q)]);if(e===f.Token)return new Z;if(e===f.CodeMeta)return new fe;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?we.newMissingTyped(n.getType()):we.newProvided(n)}if(t===p.Vector){let n=r.indexOf(u.ArgParamsSeparator),a=r.substring(0,n),s=r.substring(n+1);if(a.startsWith(p.Tuple)){let l=s.split(",").map(v=>this.stringToTyped(v));return new te(new D(this.nativeToType(a)),l)}if(s.includes("tuple(")){let m=this.splitTupleStrings(s),l=m.map(T=>this.stringToTyped(T)),C=m[0].match(/^(tuple\([^)]+\))/),h=C?C[1]:"tuple";return new te(new D(this.nativeToType(h)),l)}let c=a.startsWith(p.Struct)?u.ArgStructSeparator:u.ArgListSeparator,d=s.split(c).map(m=>this.stringToTyped(`${a}:${m}`));return new te(new D(this.nativeToType(a)),d)}if(t.startsWith(p.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let a=n.split(","),s=[];for(let o=0;o<a.length;o+=2){let d=a[o],m=a[o+1];s.push(this.stringToTyped(`${d}:${m}`))}let c=s.map(o=>o.getType());return new st(new ye(...c),s)}if(t.startsWith(p.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new Y(new k(a,[]),[]);let s=r.split(u.ArgListSeparator),c=[],o=[];return s.forEach(d=>{let m=d.match(new RegExp(`^\\(([^${u.ArgParamsSeparator}]+)${u.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(m){let[,l,v,C]=m,h=this.stringToTyped(`${v}${u.ArgParamsSeparator}${C}`);c.push(new J(l,"",h.getType())),o.push(new X(h,l))}}),new Y(new k(a,c),o)}if(t===p.String)return r?ut.fromUTF8(r):new b;if(t===p.Uint8)return r?new gt(Number(r)):new b;if(t===p.Uint16)return r?new dt(Number(r)):new b;if(t===p.Uint32)return r?new ht(Number(r)):new b;if(t===p.Uint64)return r?new Ae(BigInt(r)):new b;if(t===p.Biguint)return r?new de(BigInt(r)):new b;if(t===p.Bool)return r?new nt(typeof r=="boolean"?r:r==="true"):new b;if(t===p.Address)return r?new rt(dr.newFromBech32(r)):new b;if(t===p.Hex)return r?at.fromHex(r):new b;if(t===p.Asset){let[n,a]=r.split(u.ArgCompositeSeparator),s=new mt,c=F(n)?H(n):s.extractIdentifierFromExtendedIdentifier(n),o=F(n)?0n:s.extractNonceFromExtendedIdentifier(n);return new Y(this.nativeToType("asset"),[new X(new Te(c),"token_identifier"),new X(new Ae(BigInt(o)),"token_nonce"),new X(new de(BigInt(a)),"amount")])}if(t===f.Null)return new b;if(t===f.Optional){let n=this.stringToTyped(r);return n instanceof b?ve.newMissing():new ve(n.getType(),n)}if(t===f.List){let[n,a]=r.split(yr,2),c=a.split(u.ArgListSeparator).map(o=>this.stringToTyped(n+u.ArgParamsSeparator+o));return new ot(this.nativeToType(n),c)}if(t===f.Token)return r?new Te(r):new b;if(t===f.CodeMeta)return new it(hr.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let a=0;a<e.length;a++){let s=e[a];if(s==="(")n++;else if(s===")")n--;else if(s===","&&n===0){t.push(r.trim()),r="";continue}r+=s}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(lt.ClassName))return p.Option+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(D.ClassName))return p.Vector+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(We.ClassName))return p.String;if(e.hasExactClass(Ee.ClassName))return p.Uint8;if(e.hasExactClass(Ce.ClassName))return p.Uint16;if(e.hasExactClass(xe.ClassName))return p.Uint32;if(e.hasExactClass(ee.ClassName))return p.Uint64;if(e.hasExactClass(Q.ClassName))return p.Biguint;if(e.hasExactClass(he.ClassName))return p.Bool;if(e.hasExactClass(me.ClassName))return p.Address;if(e.hasExactClass(ge.ClassName))return p.Hex;if(e.hasExactClass(Z.ClassName))return f.Token;if(e.hasExactClass(pt.ClassName))return f.Optional+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(ct.ClassName))return f.List+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(fe.ClassName))return f.CodeMeta;if(e.hasExactClass(k.ClassName)&&e.getClassName()==="EsdtTokenPayment")return p.Asset;if(e.hasExactClass(k.ClassName))return`${p.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var O=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new B(e,t),this.serializer=new P({typeRegistry:this.typeRegistry}),this.cache=new br(e.cache?.type)}async getActionExecution(e,t,r){let n=this.cache.get(Sr.WarpExecutable(this.config.env,e.meta?.hash||"",t))??[],a=await this.extractContractOutput(e,t,r,n),s=xr(this.config,[],e,t,a.output),c=Tr(e,a.output,this.config),o=Cr(n);return{status:r.status.isSuccessful()?"success":"error",warp:e,action:t,user:Er(this.config,this.chain.name),txHash:r.hash,tx:r,next:s,values:a.values,output:a.output,messages:c,destination:null,resolvedInputs:o}}async extractContractOutput(e,t,r,n){let a=Ar(e,t),s=[],c=[],o={};if(!e.output||a.type!=="contract")return{values:{string:s,native:c,mapped:{}},output:o};if(!Object.values(e.output).some(h=>h.includes("out")||h.includes("event"))){for(let[h,T]of Object.entries(e.output))o[h]=T;return{values:{string:s,native:c,mapped:{}},output:await re(e,o,t,n,this.serializer.coreSerializer,this.config)}}let m=await this.abi.getAbiForAction(a),l=new Wr({abi:m}),C=new wr({abi:m}).parseExecute({transactionOnNetwork:r,function:a.func||void 0});for(let[h,T]of Object.entries(e.output)){if(T.startsWith(yt.Transform.Prefix))continue;if(T.startsWith("input.")){o[h]=T;continue}let A=ft(T);if(A!==null&&A!==t){o[h]=null;continue}let[S,N,V]=T.split(".");if(S==="event"){if(!N||isNaN(Number(V)))continue;let I=Number(V),g=vr(r,N),Pt=l.parseEvents({events:g})[0],L=Object.values(Pt)[I]||null;s.push(String(L)),c.push(L),o[h]=L&&L.valueOf()}else if(S==="out"||S.startsWith("out[")){if(!N)continue;let I=Number(N),g=C.values[I-1]||null;V&&(g=g[V]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),s.push(String(g)),c.push(g),o[h]=g&&g.valueOf()}else o[h]=T}return{values:{string:s,native:c,mapped:{}},output:await re(e,o,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let a=t.map(m=>this.serializer.typedToString(m)),s=t.map(m=>this.serializer.typedToNative(m)[1]),c={string:a,native:s,mapped:{}},o={};if(!e.output)return{values:c,output:o};let d=m=>{let l=m.split(".").slice(1).map(C=>parseInt(C)-1);if(l.length===0)return;let v=s[l[0]];for(let C=1;C<l.length;C++){if(v==null)return;v=v[l[C]]}return v};for(let[m,l]of Object.entries(e.output)){if(l.startsWith(yt.Transform.Prefix))continue;let v=ft(l);if(v!==null&&v!==r){o[m]=null;continue}l.startsWith("out.")||l==="out"||l.startsWith("out[")?o[m]=d(l)||null:o[m]=l}return o=await re(e,o,r,n,this.serializer.coreSerializer,this.config),{values:c,output:o}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,s=e.meta,c=new Map,o=new Set,d=this;async function m(h,T=[]){if(c.has(h))return c.get(h);if(o.has(h))throw new Error(`Circular dependency detected at action ${h}`);o.add(h);let A=t.actions[h-1];if(!A)throw new Error(`Action ${h} not found`);let S;if(A.type==="query")S=await n.executeQuery(t,h,T);else if(A.type==="collect")S=await n.executeCollect(t,h,T,s);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(c.set(h,S),t.output)for(let N of Object.values(t.output)){let I=String(N).match(/^out\[(\d+)\]/);if(I){let g=parseInt(I[1],10);g!==h&&!c.has(g)&&await m(g)}}return o.delete(h),S}await m(r,a);let l={};for(let h of c.values())for(let[T,A]of Object.entries(h.output))A!==null?l[T]=A:T in l||(l[T]=null);let v=await re(t,l,r,a,this.serializer.coreSerializer,this.config);return{...c.get(r),action:r,output:v}}};var Mr="EGLD-000000",ne=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new P({typeRegistry:this.typeRegistry}),this.abi=new B(this.config,this.chain),this.output=new O(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=be(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){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=Se(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=_.newFromBech32(t),n=new vt({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,s=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,o=(s?e.transfers[0].amount:0n)+e.value;return await new Ur({config:n}).createTransactionForTransfer(r,{receiver:_.newFromBech32(e.destination),nativeAmount:o,tokenTransfers:s?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=Se(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=be(e.warp,e.action),n=_.newFromBech32(t),a=e.args.map(c=>this.serializer.stringToTyped(c)),s=new vt({chainID:e.chain.chainId});return new Br({config:s}).createTransactionForExecute(n,{contract:_.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){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=be(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(g=>this.serializer.stringToTyped(g)),a=w(e.chain,this.config.env,this.config),s=_.newFromBech32(e.destination),c=a.createSmartContractController(r),o=c.createQuery({contract:s,function:t.func||"",arguments:n}),d=await c.runQuery(o),m=d.returnCode==="ok",l=new Ir,v=r.getEndpoint(d.function||t.func||""),C=(d.returnDataParts||[]).map(g=>Buffer.from(g)),h=l.buffersToValues(C,v.output),{values:T,output:A}=await this.output.extractQueryOutput(e.warp,h,e.action,e.resolvedInputs),S=Or(this.config,[],e.warp,e.action,A),V=e.resolvedInputs.find(g=>g.input.position==="receiver"||g.input.position==="destination")?.value||e.destination,I=Fr(e.resolvedInputs);return{status:m?"success":"error",warp:e.warp,action:e.action,user:Se(this.config,e.chain.name),txHash:null,tx:null,next:S,values:T,output:{...A,_DATA:h},messages:kr(e.warp,A,this.config),destination:V,resolvedInputs:I}}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Mr}:t).map(t=>{let n=new Nr().extractNonceFromExtendedIdentifier(t.identifier);return new Vr({token:new Pr({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ae=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=tt[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=U[t];if(a)return a}if(e){let a=U[e];if(a)return a}let r=this.getPrimaryExplorer();return U[r]||U[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=U[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=U[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Wt,Address as y,AddressValue as Be,BytesValue as W,SmartContractTransactionsFactory as Lr,TransactionsFactoryConfig as Dr}from"@multiversx/sdk-core";import{createWarpIdentifier as _r,getWarpWalletAddressFromConfig as Gr,WarpCache as Hr,WarpCacheKey as Pe,WarpLogger as Ne}from"@vleap/warps";var Ie={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 E=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}),wt=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var se=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Hr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=Gr(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=y.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,s=()=>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:y.newFromBech32(E(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:s()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(E(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:y.newFromBech32(E(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(E(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(E(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(E(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[W.fromHex(e),new Be(new y(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(E(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(E(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=Pe.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ne.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=y.newFromBech32(E(this.config.env)),s=this.getController(),c=s.createQuery({contract:a,function:"getInfoByAlias",arguments:[W.fromUTF8(e)]}),o=await s.runQuery(c),[d]=s.parseQueryResponse(o),m=d?ie(d):null,l=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:l},t.ttl),{registryInfo:m,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=Pe.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return Ne.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=y.newFromBech32(E(this.config.env)),a=this.getController(),s=a.createQuery({contract:n,function:"getInfoByHash",arguments:[W.fromHex(e)]}),c=await a.runQuery(s),[o]=a.parseQueryResponse(c),d=o?ie(o):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 getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=y.newFromBech32(E(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new Be(new y(t))]}),s=await n.runQuery(a),[c]=n.parseQueryResponse(s);return c.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=y.newFromBech32(E(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new Be(new y(t))]}),s=await n.runQuery(a),[c]=n.parseQueryResponse(s),o=c.map(l=>l.toString("hex")),d={ttl:365*24*60*60};return(await Promise.all(o.map(l=>this.fetchBrand(l,d)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=Pe.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ne.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let s=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await s.getTransaction(e),o=JSON.parse(c.data.toString());return o.meta={query:null,chain:this.chain.name,identifier:_r(this.chain.name,"hash",e),hash:c.hash,creator:c.sender.toBech32(),createdAt:new Date(c.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,o,t.ttl),o}catch{return null}}async loadRegistryConfigs(){let e=y.newFromBech32(E(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?wt(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new Dr({chainID:this.chain.chainId}),t=Wt.create(Ie);return new Lr({config:e,abi:t})}getController(){let e=w(this.chain,this.config.env,this.config),t=Wt.create(Ie);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{Address as Zr,Mnemonic as Ct}from"@multiversx/sdk-core";import{CacheTtl as xt,getWarpWalletMnemonicFromConfig as en,getWarpWalletPrivateKeyFromConfig as tn,initializeWalletCache as rn,WarpCache as nn}from"@vleap/warps";import{Account as $r,Mnemonic as Kr,Message as zr}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as qr,getWarpWalletMnemonicFromConfig as jr}from"@vleap/warps";var M=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=qr(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new zr({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}getAccount(){if(this.account)return this.account;let e=jr(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=Kr.fromString(e).deriveKey(0);return this.account=new $r(r),this.account}};import{Account as Qr,Message as Xr,UserSecretKey as Tt}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Jr,getWarpWalletPrivateKeyFromConfig as Yr}from"@vleap/warps";var R=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=Jr(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new Xr({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}getAccount(){if(this.account)return this.account;let e=Yr(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?Tt.fromPem(e):Tt.fromString(e);return this.account=new Qr(r),this.account}};var oe=class{constructor(e,t,r){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=w(t,e.env,e),this.cache=new nn(e.cache?.type),this.walletProvider=r||this.createDefaultProvider(),this.initializeCache()}createDefaultProvider(){return tn(this.config,this.chain.name)?new R(this.config,this.chain):en(this.config,this.chain.name)?new M(this.config,this.chain):null}initializeCache(){rn(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof R||this.walletProvider instanceof M){let r=this.walletProvider.getAccountInstance();if(e.nonce===0n){let n=await this.entry.recallAccountNonce(r.address),a=this.cache.get(`nonce:${r.address.toBech32()}`)||0,s=BigInt(Math.max(a,Number(n)));e.nonce=s}}else if(e.nonce===0n&&this.cachedAddress){let r=Zr.newFromBech32(this.cachedAddress),n=await this.entry.recallAccountNonce(r),a=this.cache.get(`nonce:${this.cachedAddress}`)||0,s=BigInt(Math.max(a,Number(n)));e.nonce=s}let t=await this.walletProvider.signTransaction(e);if(this.walletProvider instanceof R||this.walletProvider instanceof M){let r=this.walletProvider.getAccountInstance(),n=Number(r.nonce)+1;this.cache.set(`nonce:${r.address.toBech32()}`,n,xt.OneMinute)}else if(this.cachedAddress){let r=e.nonce?Number(e.nonce):0;this.cache.set(`nonce:${this.cachedAddress}`,r+1,xt.OneMinute)}return t}async signTransactions(e){return Promise.all(e.map(async t=>this.signTransaction(t)))}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}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=Ct.fromString(e).deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=Ct.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 this.cachedAddress}getPublicKey(){return this.cachedPublicKey}};var ce=(i,e)=>(t,r)=>{let n=e[t.env],a=new an;return a.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),a.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`}),a.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new z(t,n),executor:new ne(t,n,a),output:new O(t,n,a),serializer:new P({typeRegistry:a}),registry:new se(t,n),explorer:new ae(i,t),abiBuilder:()=>new B(t,n),brandBuilder:()=>new K(t,n),dataLoader:new j(t,n),wallet:new oe(t,n)}};var Ve={chain:G.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://joai.ai/images/tokens/egld.svg"},At=ce(G.Multiversx,{mainnet:{name:G.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ve},testnet:{name:G.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ve},devnet:{name:G.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ve}});import{WarpChainName as ke}from"@vleap/warps";var sn={chain:ke.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},Ue={name:ke.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/vibechain.svg",nativeToken:sn},Et=ce(ke.Vibechain,{mainnet:Ue,testnet:Ue,devnet:Ue});var Ao=(i,e)=>[At(i,e),Et(i,e)],Eo=()=>[bt.Multiversx,bt.Vibechain];import{WarpConstants as pe,WarpSerializer as Fe}from"@vleap/warps";var _o=i=>new Fe().nativeToString(f.Token,i),Go=i=>new Fe().nativeToString(f.CodeMeta,i),Ho=(i,e)=>{if(e===null)return f.Optional+pe.ArgParamsSeparator;let t=i(e),r=t.indexOf(pe.ArgParamsSeparator),n=t.substring(0,r),a=t.substring(r+1);return f.Optional+pe.ArgParamsSeparator+n+pe.ArgParamsSeparator+a},$o=i=>new Fe().nativeToString(f.List,i);import{Address as on,AddressValue as cn,BigUIntType as pn,BigUIntValue as St,BooleanValue as ln,BytesValue as un,CodeMetadata as mn,CodeMetadataValue as dn,CompositeType as hn,CompositeValue as gn,Field as Oe,FieldDefinition as Me,List as fn,NothingValue as yn,OptionalValue as Re,OptionValue as Le,StringValue as vn,Struct as wn,StructType as Wn,TokenIdentifierType as Tn,TokenIdentifierValue as It,U16Value as Cn,U32Value as xn,U64Type as An,U64Value as Bt,U8Value as En,VariadicValue as bn}from"@multiversx/sdk-core";var Xo=(i,e)=>i?Le.newProvided(i):e?Le.newMissingTyped(e):Le.newMissing(),Jo=(i,e)=>i?new Re(i.getType(),i):e?new Re(e):Re.newMissing(),Yo=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new fn(e,i)},Zo=i=>bn.fromItems(...i),ec=i=>{let e=i.map(t=>t.getType());return new gn(new hn(...e),i)},tc=i=>vn.fromUTF8(i),rc=i=>new En(i),nc=i=>new Cn(i),ac=i=>new xn(i),ic=i=>new Bt(i),sc=i=>new St(BigInt(i)),oc=i=>new ln(i),cc=i=>new cn(on.newFromBech32(i)),pc=i=>new It(i),lc=i=>un.fromHex(i),uc=i=>new wn(new Wn("EsdtTokenPayment",[new Me("token_identifier","",new Tn),new Me("token_nonce","",new An),new Me("amount","",new pn)]),[new Oe(new It(i.token.identifier),"token_identifier"),new Oe(new Bt(BigInt(i.token.nonce)),"token_nonce"),new Oe(new St(BigInt(i.amount)),"amount")]),mc=i=>new dn(mn.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),dc=()=>new yn;export{U as ExplorerUrls,Ze as KnownTokens,M as MnemonicWalletProvider,ur as MultiversxExplorers,tt as MultiversxExplorersConfig,Ve as NativeTokenEgld,sn as NativeTokenVibe,R as PrivateKeyWalletProvider,mr as VibechainExplorers,B as WarpMultiversxAbiBuilder,K as WarpMultiversxBrandBuilder,z as WarpMultiversxBuilder,ii as WarpMultiversxConstants,$ as WarpMultiversxContractLoader,j as WarpMultiversxDataLoader,ne as WarpMultiversxExecutor,ae as WarpMultiversxExplorer,f as WarpMultiversxInputTypes,O as WarpMultiversxOutput,se as WarpMultiversxRegistry,P as WarpMultiversxSerializer,oe as WarpMultiversxWallet,cc as address_value,uc as asset_value,sc as biguint_value,oc as boolean_value,Go as codemeta,mc as codemeta_value,ec as composite_value,ce as createMultiversxAdapter,et as findKnownTokenById,Ao as getAllMultiversxAdapters,Eo as getAllMultiversxChainNames,Ga as getKnownTokensForChain,At as getMultiversxAdapter,w as getMultiversxEntrypoint,E as getMultiversxRegistryAddress,H as getNormalizedTokenIdentifier,Et as getVibechainAdapter,lc as hex_value,F as isNativeToken,$o as list,Yo as list_value,dc as nothing_value,Xo as option_value,Ho as optional,Jo as optional_value,tc as string_value,wt as toTypedConfigInfo,ie as toTypedRegistryInfo,_o as token,pc as token_value,nc as u16_value,ac as u32_value,ic as u64_value,rc as u8_value,Zo as variadic_value};
1
+ import{WarpChainName as _e}from"@vleap/warps";var Sn=()=>[_e.Multiversx,_e.Vibechain];import{WarpTypeRegistry as rn}from"@vleap/warps";import{AbiRegistry as le,Address as Ot,TransactionsFactoryConfig as Mt,TransferTransactionsFactory as Rt}from"@multiversx/sdk-core";import{createWarpIdentifier as Dt,getLatestProtocolIdentifier as Lt,getWarpWalletAddressFromConfig as _t,WarpCache as Ht,WarpCacheKey as Gt,WarpConstants as Ge,WarpLogger as Ke}from"@vleap/warps";import{DevnetEntrypoint as Vt,MainnetEntrypoint as Ut,TestnetEntrypoint as kt}from"@multiversx/sdk-core";import{getProviderConfig as Ft}from"@vleap/warps";var F=s=>!s.includes("-"),G=s=>F(s)?`${s}-000000`:s,w=(s,e,t)=>{let r="warp-sdk",a=t?Ft(t,s.name,e,s.defaultApiUrl):{url:s.defaultApiUrl},i=a.url,c={headers:a.headers};return e==="devnet"?new Vt({url:i,kind:"api",clientName:r,networkProviderConfig:c}):e==="testnet"?new kt({url:i,kind:"api",clientName:r,networkProviderConfig:c}):new Ut({url:i,kind:"api",clientName:r,networkProviderConfig:c})};import{WarpLogger as He}from"@vleap/warps";var K=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return He.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await w(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return He.error("WarpContractLoader: getVerificationInfo error",r),null}}};var B=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new K(this.config),this.cache=new Ht(this.config.cache?.type)}async createInscriptionTransaction(e){let t=_t(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new Mt({chainID:this.chain.chainId}),n=new Rt({config:r}),a=Ot.newFromBech32(t),i={protocol:Lt("abi"),content:e},c=JSON.stringify(i),o=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(c))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}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,identifier:Dt(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Gt.WarpAbi(this.config.env,e);if(t){let i=this.cache.get(r);if(i)return Ke.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),i}let a=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await a.getTransaction(e),c=await this.createFromTransaction(i);return t&&t.ttl&&c&&this.cache.set(r,c,t.ttl),c}catch(i){return Ke.error("WarpAbiBuilder: Error creating from transaction hash",i),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 le.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Ge.IdentifierType.Hash)){let t=e.abi.split(Ge.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return le.create(r.content)}else{let r=await(await fetch(e.abi)).json();return le.create(r)}}};import{Address as $e,TransactionsFactoryConfig as Kt,TransferTransactionsFactory as $t}from"@multiversx/sdk-core";import{createWarpIdentifier as zt,getWarpWalletAddressFromConfig as qt,WarpBrandBuilder as jt,WarpLogger as Qt}from"@vleap/warps";import{Buffer as Xt}from"buffer";var $=class{constructor(e,t){this.config=e;this.chain=t;this.core=new jt(e)}async createInscriptionTransaction(e){let t=qt(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Kt({chainID:this.chain.chainId}),n=new $t({config:r}),a=$e.newFromBech32(t),i=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:$e.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Xt.from(i))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:zt(this.chain.name,"hash",e.hash),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 n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Qt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as ze,TransactionsFactoryConfig as Jt,TransferTransactionsFactory as Yt}from"@multiversx/sdk-core";import{createWarpIdentifier as Zt,getWarpWalletAddressFromConfig as er,WarpBuilder as qe,WarpCache as tr,WarpCacheKey as rr,WarpLogger as je}from"@vleap/warps";var z=class extends qe{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new tr(t.cache?.type),this.core=new qe(t)}async createInscriptionTransaction(t){let r=er(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new Jt({chainID:this.chain.chainId}),a=new Yt({config:n}),i=ze.newFromBech32(r),c=JSON.stringify(t),o=await a.createTransactionForTransfer(i,{receiver:ze.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(c))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:Zt(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=rr.Warp(this.config.env,t);if(r){let c=this.cache.get(n);if(c)return je.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),c}let i=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await i.getTransaction(t),o=await this.createFromTransaction(c);return r&&r.ttl&&o&&this.cache.set(n,o,r.ttl),o}catch(c){return je.error("WarpBuilder: Error creating from transaction hash",c),null}}};import{Address as ue,Token as or,TokenComputer as cr}from"@multiversx/sdk-core";import{CacheTtl as pr,WarpCache as lr,WarpCacheKey as ur}from"@vleap/warps";import{WarpChainName as nr}from"@vleap/warps";var Qe=nr.Multiversx,Xe=[{chain:Qe,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Qe,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as ar}from"@vleap/warps";var x=ar.Multiversx,Je=[{chain:x,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:x,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:x,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:x,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:x,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:x,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:x,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:x,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:x,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:x,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:x,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:x,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:x,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:x,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:x,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as ir}from"@vleap/warps";var Ye=ir.Multiversx,Ze=[{chain:Ye,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ye,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as sr}from"@vleap/warps";var et=sr.Vibechain,q=[{chain:et,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},{chain:et,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"}];var tt={multiversx:{mainnet:Je,testnet:Ze,devnet:Xe},vibechain:{mainnet:q,testnet:q,devnet:q}},rt=(s,e,t)=>(tt[s]?.[e]||[]).find(n=>n.identifier===t)||null,Ka=(s,e)=>tt[s]?.[e]||[];var j=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new lr(e.cache?.type)}async getAccount(e){let r=await w(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(ue.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(ue.newFromBech32(e)),n=t.getFungibleTokensOfAccount(ue.newFromBech32(e)),[a,i]=await Promise.all([r,n]),c=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return c.push(...i.map(o=>({chain:this.chain.name,identifier:o.token.identifier,name:o.raw.name,symbol:o.raw.ticker,amount:o.amount,decimals:o.raw.decimals,logoUrl:o.raw.assets?.pngUrl||"",price:o.raw.price?Number(o.raw.price):void 0,supply:o.raw.supply?BigInt(o.raw.supply):void 0}))),c}async getAsset(e){let t=ur.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=rt(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 cr,i=F(e)?0n:a.extractNonceFromExtendedIdentifier(e),c=new or({identifier:e,nonce:BigInt(i||0)}),o=a.isFungible(c),d=w(this.chain,this.config.env,this.config).createNetworkProvider(),m=G(e),l=await d.doGetGeneric(`tokens/${m}`),v={chain:this.chain.name,identifier:c.identifier,name:l.name,symbol:l.ticker,amount:0n,decimals:l.decimals,logoUrl:l.assets?.pngUrl||null,price:l.price?Number(l.price):void 0,supply:l.supply?BigInt(l.supply):void 0};return this.cache.set(t,v,pr.OneHour),v}async getAction(e,t=!1){let r=w(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=w(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,i=t?.size||25,c=t?.page||0;if(c>0){let d=c*i;a.append("from",d.toString())}return i!==25&&a.append("size",i.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(d=>({chain:this.chain.name,id:d.txHash,receiver:d.receiver,sender:d.sender,value:d.value,function:d.function,status:this.toActionStatus(d),createdAt:this.toActionCreatedAt(d)}))}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 _,ArgSerializer as Br,SmartContractTransactionsFactory as Pr,Token as Nr,TokenComputer as Vr,TokenTransfer as Ur,TransactionsFactoryConfig as Wt,TransferTransactionsFactory as kr}from"@multiversx/sdk-core";import{applyOutputToMessages as Fr,extractResolvedInputValues as Or,getNextInfo as Mr,getWarpActionByIndex as Ee,getWarpWalletAddressFromConfig as Se}from"@vleap/warps";import{findEventsByFirstTopic as wr,SmartContractTransactionsOutcomeParser as Wr,TransactionEventsParser as Tr}from"@multiversx/sdk-core";import{applyOutputToMessages as Cr,evaluateOutputCommon as re,extractResolvedInputValues as xr,getNextInfo as Ar,getWarpActionByIndex as br,getWarpWalletAddressFromConfig as Er,parseOutputOutIndex as vt,WarpCache as Sr,WarpCacheKey as Ir,WarpConstants as wt}from"@vleap/warps";import{Address as hr,AddressType as me,AddressValue as at,BigUIntType as Q,BigUIntValue as de,BooleanType as he,BooleanValue as it,BytesType as ge,BytesValue as st,CodeMetadata as gr,CodeMetadataType as fe,CodeMetadataValue as ot,CompositeType as ye,CompositeValue as ct,Field as X,FieldDefinition as J,List as pt,ListType as lt,NothingValue as E,OptionalType as ut,OptionalValue as ve,OptionType as mt,OptionValue as we,StringType as We,StringValue as dt,Struct as Y,StructType as k,Token as fr,TokenComputer as ht,TokenIdentifierType as Z,TokenIdentifierValue as Te,U16Type as Ce,U16Value as gt,U32Type as xe,U32Value as ft,U64Type as ee,U64Value as Ae,U8Type as be,U8Value as yt,VariadicType as L,VariadicValue as te}from"@multiversx/sdk-core";import{WarpSerializer as yr}from"@vleap/warps";var u={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:s=>s.config.user?.wallets?.[s.adapter.chainInfo.name]},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:s=>{if(!s.adapter.wallet)return null;try{return s.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:s=>s.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:s=>s.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"},Alerts:{TriggerEventPrefix:"event"}},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 oi={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},f={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},mr=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(mr||{}),dr=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(dr||{}),nt={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},U={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 vr=new RegExp(`${u.ArgParamsSeparator}(.*)`),P=class{constructor(e){this.coreSerializer=new yr(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(mt.ClassName)||e.hasClassOrSuperclass(we.ClassName)){if(!e.isSet())return p.Option+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return p.Option+u.ArgParamsSeparator+r}if(t.hasExactClass(L.ClassName)||e.hasClassOrSuperclass(te.ClassName)){let r=e.getItems();if(r.length===0){let m=this.typeToString(t.getFirstTypeParameter());return p.Vector+u.ArgParamsSeparator+m+u.ArgParamsSeparator}let n=r.map(m=>this.typedToString(m));if(n.every(m=>m.startsWith(p.Tuple)))return p.Vector+u.ArgParamsSeparator+n.join(",");let a=n[0],i=a.indexOf(u.ArgParamsSeparator),c=a.substring(0,i),o=n.map(m=>{let l=m.indexOf(u.ArgParamsSeparator);return m.substring(l+1)}),d=c.startsWith(p.Struct)?u.ArgStructSeparator:u.ArgListSeparator;return p.Vector+u.ArgParamsSeparator+c+u.ArgParamsSeparator+o.join(d)}if(t.hasExactClass(ut.ClassName)||e.hasClassOrSuperclass(ve.ClassName)){if(!e.isSet())return f.Optional+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return f.Optional+u.ArgParamsSeparator+r}if(t.hasExactClass(lt.ClassName)||e.hasClassOrSuperclass(pt.ClassName)){let n=e.getItems().map(o=>this.typedToString(o));if(n.every(o=>o.startsWith(p.Tuple)))return f.List+u.ArgParamsSeparator+n.join(",");let i=n.map(o=>o.split(u.ArgParamsSeparator)[0])[0],c=n.map(o=>o.split(u.ArgParamsSeparator)[1]);return f.List+u.ArgParamsSeparator+i+u.ArgParamsSeparator+c.join(u.ArgListSeparator)}if(t.hasExactClass(ye.ClassName)||e.hasClassOrSuperclass(ct.ClassName)){let n=e.getItems().map(a=>{let i=this.typedToString(a),c=i.indexOf(u.ArgParamsSeparator),o=i.substring(0,c),d=i.substring(c+1);return`${o},${d}`});return`${p.Tuple}(${n.join(",")})`}if(t.hasExactClass(Q.ClassName)||e.hasClassOrSuperclass(de.ClassName)||t.getName()==="BigUint")return p.Biguint+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(be.ClassName)||e.hasClassOrSuperclass(yt.ClassName))return p.Uint8+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ce.ClassName)||e.hasClassOrSuperclass(gt.ClassName))return p.Uint16+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(xe.ClassName)||e.hasClassOrSuperclass(ft.ClassName))return p.Uint32+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(ee.ClassName)||e.hasClassOrSuperclass(Ae.ClassName))return p.Uint64+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(We.ClassName)||e.hasClassOrSuperclass(dt.ClassName))return p.String+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(he.ClassName)||e.hasClassOrSuperclass(it.ClassName))return p.Bool+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(me.ClassName)||e.hasClassOrSuperclass(at.ClassName))return p.Address+u.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(ge.ClassName)||e.hasClassOrSuperclass(st.ClassName))return p.Hex+u.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(),c=new ht().computeExtendedIdentifier(new fr({identifier:r,nonce:BigInt(n)}));return p.Asset+u.ArgParamsSeparator+c+u.ArgCompositeSeparator+a}if(t.hasExactClass(k.ClassName)||e.hasClassOrSuperclass(Y.ClassName)){let r=e,a=r.getType().getName(),i=r.getFields();if(i.length===0)return`${p.Struct}(${a})${u.ArgParamsSeparator}`;let c=i.map(o=>{let d=o.value.getType(),l=this.typedToString(o.value).split(u.ArgParamsSeparator),v=l.length>2?l.slice(2).join(u.ArgParamsSeparator):l[1]||"";return`(${o.name}${u.ArgParamsSeparator}${this.typeToString(d)})${v}`});return`${p.Struct}(${a})${u.ArgParamsSeparator}${c.join(u.ArgListSeparator)}`}if(t.hasExactClass(Z.ClassName)||e.hasClassOrSuperclass(Te.ClassName))return f.Token+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(fe.ClassName)||e.hasClassOrSuperclass(ot.ClassName))return f.CodeMeta+u.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){if(e.startsWith(p.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(p.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let a=0;a<r.length;a+=2)n.push(r[a]);return new ye(...n.map(a=>this.nativeToType(a)))}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 k(r,[])}if(e===p.String)return new We;if(e===p.Uint8)return new be;if(e===p.Uint16)return new Ce;if(e===p.Uint32)return new xe;if(e===p.Uint64)return new ee;if(e===p.Biguint)return new Q;if(e===p.Bool)return new he;if(e===p.Address)return new me;if(e===p.Hex)return new ge;if(e===p.Asset)return new k("EsdtTokenPayment",[new J("token_identifier","",new Z),new J("token_nonce","",new ee),new J("amount","",new Q)]);if(e===f.Token)return new Z;if(e===f.CodeMeta)return new fe;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 E?we.newMissingTyped(n.getType()):we.newProvided(n)}if(t===p.Vector){let n=r.indexOf(u.ArgParamsSeparator),a=r.substring(0,n),i=r.substring(n+1);if(a.startsWith(p.Tuple)){let l=i.split(",").map(v=>this.stringToTyped(v));return new te(new L(this.nativeToType(a)),l)}if(i.includes("tuple(")){let m=this.splitTupleStrings(i),l=m.map(T=>this.stringToTyped(T)),C=m[0].match(/^(tuple\([^)]+\))/),h=C?C[1]:"tuple";return new te(new L(this.nativeToType(h)),l)}let c=a.startsWith(p.Struct)?u.ArgStructSeparator:u.ArgListSeparator,d=i.split(c).map(m=>this.stringToTyped(`${a}:${m}`));return new te(new L(this.nativeToType(a)),d)}if(t.startsWith(p.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let a=n.split(","),i=[];for(let o=0;o<a.length;o+=2){let d=a[o],m=a[o+1];i.push(this.stringToTyped(`${d}:${m}`))}let c=i.map(o=>o.getType());return new ct(new ye(...c),i)}if(t.startsWith(p.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new Y(new k(a,[]),[]);let i=r.split(u.ArgListSeparator),c=[],o=[];return i.forEach(d=>{let m=d.match(new RegExp(`^\\(([^${u.ArgParamsSeparator}]+)${u.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(m){let[,l,v,C]=m,h=this.stringToTyped(`${v}${u.ArgParamsSeparator}${C}`);c.push(new J(l,"",h.getType())),o.push(new X(h,l))}}),new Y(new k(a,c),o)}if(t===p.String)return r?dt.fromUTF8(r):new E;if(t===p.Uint8)return r?new yt(Number(r)):new E;if(t===p.Uint16)return r?new gt(Number(r)):new E;if(t===p.Uint32)return r?new ft(Number(r)):new E;if(t===p.Uint64)return r?new Ae(BigInt(r)):new E;if(t===p.Biguint)return r?new de(BigInt(r)):new E;if(t===p.Bool)return r?new it(typeof r=="boolean"?r:r==="true"):new E;if(t===p.Address)return r?new at(hr.newFromBech32(r)):new E;if(t===p.Hex)return r?st.fromHex(r):new E;if(t===p.Asset){let[n,a]=r.split(u.ArgCompositeSeparator),i=new ht,c=F(n)?G(n):i.extractIdentifierFromExtendedIdentifier(n),o=F(n)?0n:i.extractNonceFromExtendedIdentifier(n);return new Y(this.nativeToType("asset"),[new X(new Te(c),"token_identifier"),new X(new Ae(BigInt(o)),"token_nonce"),new X(new de(BigInt(a)),"amount")])}if(t===f.Null)return new E;if(t===f.Optional){let n=this.stringToTyped(r);return n instanceof E?ve.newMissing():new ve(n.getType(),n)}if(t===f.List){let[n,a]=r.split(vr,2),c=a.split(u.ArgListSeparator).map(o=>this.stringToTyped(n+u.ArgParamsSeparator+o));return new pt(this.nativeToType(n),c)}if(t===f.Token)return r?new Te(r):new E;if(t===f.CodeMeta)return new ot(gr.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let a=0;a<e.length;a++){let i=e[a];if(i==="(")n++;else if(i===")")n--;else if(i===","&&n===0){t.push(r.trim()),r="";continue}r+=i}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(mt.ClassName))return p.Option+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(L.ClassName))return p.Vector+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(We.ClassName))return p.String;if(e.hasExactClass(be.ClassName))return p.Uint8;if(e.hasExactClass(Ce.ClassName))return p.Uint16;if(e.hasExactClass(xe.ClassName))return p.Uint32;if(e.hasExactClass(ee.ClassName))return p.Uint64;if(e.hasExactClass(Q.ClassName))return p.Biguint;if(e.hasExactClass(he.ClassName))return p.Bool;if(e.hasExactClass(me.ClassName))return p.Address;if(e.hasExactClass(ge.ClassName))return p.Hex;if(e.hasExactClass(Z.ClassName))return f.Token;if(e.hasExactClass(ut.ClassName))return f.Optional+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(lt.ClassName))return f.List+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(fe.ClassName))return f.CodeMeta;if(e.hasExactClass(k.ClassName)&&e.getClassName()==="EsdtTokenPayment")return p.Asset;if(e.hasExactClass(k.ClassName))return`${p.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var O=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new B(e,t),this.serializer=new P({typeRegistry:this.typeRegistry}),this.cache=new Sr(e.cache?.type)}async getActionExecution(e,t,r){let n=this.cache.get(Ir.WarpExecutable(this.config.env,e.meta?.hash||"",t))??[],a=await this.extractContractOutput(e,t,r,n),i=Ar(this.config,[],e,t,a.output),c=Cr(e,a.output,this.config),o=xr(n);return{status:r.status.isSuccessful()?"success":"error",warp:e,action:t,user:Er(this.config,this.chain.name),txHash:r.hash,tx:r,next:i,values:a.values,output:a.output,messages:c,destination:null,resolvedInputs:o}}async extractContractOutput(e,t,r,n){let a=br(e,t),i=[],c=[],o={};if(!e.output||a.type!=="contract")return{values:{string:i,native:c,mapped:{}},output:o};if(!Object.values(e.output).some(h=>h.includes("out")||h.includes("event"))){for(let[h,T]of Object.entries(e.output))o[h]=T;return{values:{string:i,native:c,mapped:{}},output:await re(e,o,t,n,this.serializer.coreSerializer,this.config)}}let m=await this.abi.getAbiForAction(a),l=new Tr({abi:m}),C=new Wr({abi:m}).parseExecute({transactionOnNetwork:r,function:a.func||void 0});for(let[h,T]of Object.entries(e.output)){if(T.startsWith(wt.Transform.Prefix))continue;if(T.startsWith("input.")){o[h]=T;continue}let A=vt(T);if(A!==null&&A!==t){o[h]=null;continue}let[S,N,V]=T.split(".");if(S==="event"){if(!N||isNaN(Number(V)))continue;let I=Number(V),g=wr(r,N),Nt=l.parseEvents({events:g})[0],D=Object.values(Nt)[I]||null;i.push(String(D)),c.push(D),o[h]=D&&D.valueOf()}else if(S==="out"||S.startsWith("out[")){if(!N)continue;let I=Number(N),g=C.values[I-1]||null;V&&(g=g[V]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),i.push(String(g)),c.push(g),o[h]=g&&g.valueOf()}else o[h]=T}return{values:{string:i,native:c,mapped:{}},output:await re(e,o,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let a=t.map(m=>this.serializer.typedToString(m)),i=t.map(m=>this.serializer.typedToNative(m)[1]),c={string:a,native:i,mapped:{}},o={};if(!e.output)return{values:c,output:o};let d=m=>{let l=m.split(".").slice(1).map(C=>parseInt(C)-1);if(l.length===0)return;let v=i[l[0]];for(let C=1;C<l.length;C++){if(v==null)return;v=v[l[C]]}return v};for(let[m,l]of Object.entries(e.output)){if(l.startsWith(wt.Transform.Prefix))continue;let v=vt(l);if(v!==null&&v!==r){o[m]=null;continue}l.startsWith("out.")||l==="out"||l.startsWith("out[")?o[m]=d(l)||null:o[m]=l}return o=await re(e,o,r,n,this.serializer.coreSerializer,this.config),{values:c,output:o}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,i=e.meta,c=new Map,o=new Set,d=this;async function m(h,T=[]){if(c.has(h))return c.get(h);if(o.has(h))throw new Error(`Circular dependency detected at action ${h}`);o.add(h);let A=t.actions[h-1];if(!A)throw new Error(`Action ${h} not found`);let S;if(A.type==="query")S=await n.executeQuery(t,h,T);else if(A.type==="collect")S=await n.executeCollect(t,h,T,i);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(c.set(h,S),t.output)for(let N of Object.values(t.output)){let I=String(N).match(/^out\[(\d+)\]/);if(I){let g=parseInt(I[1],10);g!==h&&!c.has(g)&&await m(g)}}return o.delete(h),S}await m(r,a);let l={};for(let h of c.values())for(let[T,A]of Object.entries(h.output))A!==null?l[T]=A:T in l||(l[T]=null);let v=await re(t,l,r,a,this.serializer.coreSerializer,this.config);return{...c.get(r),action:r,output:v}}};var Rr="EGLD-000000",ne=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new P({typeRegistry:this.typeRegistry}),this.abi=new B(this.config,this.chain),this.output=new O(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=Ee(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){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=Se(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=_.newFromBech32(t),n=new Wt({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,i=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,o=(i?e.transfers[0].amount:0n)+e.value;return await new kr({config:n}).createTransactionForTransfer(r,{receiver:_.newFromBech32(e.destination),nativeAmount:o,tokenTransfers:i?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=Se(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=Ee(e.warp,e.action),n=_.newFromBech32(t),a=e.args.map(c=>this.serializer.stringToTyped(c)),i=new Wt({chainID:e.chain.chainId});return new Pr({config:i}).createTransactionForExecute(n,{contract:_.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){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=Ee(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(g=>this.serializer.stringToTyped(g)),a=w(e.chain,this.config.env,this.config),i=_.newFromBech32(e.destination),c=a.createSmartContractController(r),o=c.createQuery({contract:i,function:t.func||"",arguments:n}),d=await c.runQuery(o),m=d.returnCode==="ok",l=new Br,v=r.getEndpoint(d.function||t.func||""),C=(d.returnDataParts||[]).map(g=>Buffer.from(g)),h=l.buffersToValues(C,v.output),{values:T,output:A}=await this.output.extractQueryOutput(e.warp,h,e.action,e.resolvedInputs),S=Mr(this.config,[],e.warp,e.action,A),V=e.resolvedInputs.find(g=>g.input.position==="receiver"||g.input.position==="destination")?.value||e.destination,I=Or(e.resolvedInputs);return{status:m?"success":"error",warp:e.warp,action:e.action,user:Se(this.config,e.chain.name),txHash:null,tx:null,next:S,values:T,output:{...A,_DATA:h},messages:Fr(e.warp,A,this.config),destination:V,resolvedInputs:I}}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Rr}:t).map(t=>{let n=new Vr().extractNonceFromExtendedIdentifier(t.identifier);return new Ur({token:new Nr({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ae=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=nt[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=U[t];if(a)return a}if(e){let a=U[e];if(a)return a}let r=this.getPrimaryExplorer();return U[r]||U[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=U[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=U[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Ct,Address as y,AddressValue as Be,BytesValue as W,SmartContractTransactionsFactory as Lr,TransactionsFactoryConfig as _r}from"@multiversx/sdk-core";import{createWarpIdentifier as Hr,getWarpWalletAddressFromConfig as Gr,WarpCache as Kr,WarpCacheKey as Pe,WarpLogger as Ne}from"@vleap/warps";var Ie={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=s=>{if(s==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(s==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ie=s=>({hash:s.hash.toString("hex"),alias:s.alias?.toString()||null,trust:s.trust.toString(),owner:s.owner.toString(),createdAt:s.created_at.toNumber(),upgradedAt:s.upgraded_at?.toNumber(),brand:s.brand?.toString("hex")||null,upgrade:s.upgrade?.toString("hex")||null}),Tt=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(e=>e.toBech32())});var se=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Kr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=Gr(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=y.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,i=()=>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:y.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:i()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(b(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:y.newFromBech32(b(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(b(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(b(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[W.fromHex(e),new Be(new y(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:y.newFromBech32(b(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=y.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:y.newFromBech32(b(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=Pe.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ne.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=y.newFromBech32(b(this.config.env)),i=this.getController(),c=i.createQuery({contract:a,function:"getInfoByAlias",arguments:[W.fromUTF8(e)]}),o=await i.runQuery(c),[d]=i.parseQueryResponse(o),m=d?ie(d):null,l=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:l},t.ttl),{registryInfo:m,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=Pe.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return Ne.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=y.newFromBech32(b(this.config.env)),a=this.getController(),i=a.createQuery({contract:n,function:"getInfoByHash",arguments:[W.fromHex(e)]}),c=await a.runQuery(i),[o]=a.parseQueryResponse(c),d=o?ie(o):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 getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=y.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new Be(new y(t))]}),i=await n.runQuery(a),[c]=n.parseQueryResponse(i);return c.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=y.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new Be(new y(t))]}),i=await n.runQuery(a),[c]=n.parseQueryResponse(i),o=c.map(l=>l.toString("hex")),d={ttl:365*24*60*60};return(await Promise.all(o.map(l=>this.fetchBrand(l,d)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=Pe.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Ne.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let i=w(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await i.getTransaction(e),o=JSON.parse(c.data.toString());return o.meta={query:null,chain:this.chain.name,identifier:Hr(this.chain.name,"hash",e),hash:c.hash,creator:c.sender.toBech32(),createdAt:new Date(c.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,o,t.ttl),o}catch{return null}}async loadRegistryConfigs(){let e=y.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Tt(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new _r({chainID:this.chain.chainId}),t=Ct.create(Ie);return new Lr({config:e,abi:t})}getController(){let e=w(this.chain,this.config.env,this.config),t=Ct.create(Ie);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{Address as Zr}from"@multiversx/sdk-core";import{CacheTtl as bt,initializeWalletCache as en,WarpCache as tn}from"@vleap/warps";import{Account as $r,Message as zr,Mnemonic as Ve}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as qr,getWarpWalletMnemonicFromConfig as jr}from"@vleap/warps";var M=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=qr(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new zr({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}create(e){let r=Ve.fromString(e).deriveKey(0),n=r.hex();return{provider:"mnemonic",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=Ve.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{provider:"mnemonic",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAccount(){if(this.account)return this.account;let e=jr(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=Ve.fromString(e).deriveKey(0);return this.account=new $r(r),this.account}};import{Account as Qr,Mnemonic as xt,Message as Xr,UserSecretKey as At}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Jr,getWarpWalletPrivateKeyFromConfig as Yr}from"@vleap/warps";var R=class{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=Jr(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){return await this.getAccount().signTransaction(e),e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new Xr({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}create(e){let r=xt.fromString(e).deriveKey(0),n=r.hex();return{provider:"privateKey",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=xt.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{provider:"privateKey",address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAccount(){if(this.account)return this.account;let e=Yr(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?At.fromPem(e):At.fromString(e);return this.account=new Qr(r),this.account}};var oe=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=w(t,e.env,e),this.cache=new tn(e.cache?.type),this.walletProvider=this.createProvider(),this.initializeCache()}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];if(!e)return null;if(typeof e=="string")throw new Error(`Wallet can not be used for signing: ${e}`);let r=this.config.walletProviders?.[this.chain.name]?.[e.provider];if(r)return r(this.config,this.chain);if(e.provider==="privateKey")return new R(this.config,this.chain);if(e.provider==="mnemonic")return new M(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e.provider}`)}initializeCache(){en(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof R||this.walletProvider instanceof M){let r=this.walletProvider.getAccountInstance();if(e.nonce===0n){let n=await this.entry.recallAccountNonce(r.address),a=this.cache.get(`nonce:${r.address.toBech32()}`)||0,i=BigInt(Math.max(a,Number(n)));e.nonce=i}}else if(e.nonce===0n&&this.cachedAddress){let r=Zr.newFromBech32(this.cachedAddress),n=await this.entry.recallAccountNonce(r),a=this.cache.get(`nonce:${this.cachedAddress}`)||0,i=BigInt(Math.max(a,Number(n)));e.nonce=i}let t=await this.walletProvider.signTransaction(e);if(this.walletProvider instanceof R||this.walletProvider instanceof M){let r=this.walletProvider.getAccountInstance(),n=Number(r.nonce)+1;this.cache.set(`nonce:${r.address.toBech32()}`,n,bt.OneMinute)}else if(this.cachedAddress){let r=e.nonce?Number(e.nonce):0;this.cache.set(`nonce:${this.cachedAddress}`,r+1,bt.OneMinute)}return t}async signTransactions(e){return Promise.all(e.map(async t=>this.signTransaction(t)))}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}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){if(!this.walletProvider)throw new Error("No wallet provider available");return this.walletProvider.create(e)}generate(){if(!this.walletProvider)throw new Error("No wallet provider available");return this.walletProvider.generate()}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}};var ce=(s,e)=>(t,r)=>{let n=e[t.env],a=new rn;return a.registerType("token",{stringToNative:i=>i,nativeToString:i=>`token:${i}`}),a.registerType("codemeta",{stringToNative:i=>i,nativeToString:i=>`codemeta:${i}`}),a.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new z(t,n),executor:new ne(t,n,a),output:new O(t,n,a),serializer:new P({typeRegistry:a}),registry:new se(t,n),explorer:new ae(s,t),abiBuilder:()=>new B(t,n),brandBuilder:()=>new $(t,n),dataLoader:new j(t,n),wallet:new oe(t,n)}};import{WarpChainName as H}from"@vleap/warps";var Ue={chain:H.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://joai.ai/images/tokens/egld.svg"},Et=ce(H.Multiversx,{mainnet:{name:H.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ue},testnet:{name:H.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ue},devnet:{name:H.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/multiversx.svg",nativeToken:Ue}});import{WarpChainName as Fe}from"@vleap/warps";var nn={chain:Fe.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://joai.ai/images/tokens/vibe.svg"},ke={name:Fe.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://joai.ai/images/chains/vibechain.svg",nativeToken:nn},St=ce(Fe.Vibechain,{mainnet:ke,testnet:ke,devnet:ke});var Uo=()=>[Et,St];import{WarpConstants as pe,WarpSerializer as Oe}from"@vleap/warps";var Ro=s=>new Oe().nativeToString(f.Token,s),Do=s=>new Oe().nativeToString(f.CodeMeta,s),Lo=(s,e)=>{if(e===null)return f.Optional+pe.ArgParamsSeparator;let t=s(e),r=t.indexOf(pe.ArgParamsSeparator),n=t.substring(0,r),a=t.substring(r+1);return f.Optional+pe.ArgParamsSeparator+n+pe.ArgParamsSeparator+a},_o=s=>new Oe().nativeToString(f.List,s);import{Address as an,AddressValue as sn,BigUIntType as on,BigUIntValue as It,BooleanValue as cn,BytesValue as pn,CodeMetadata as ln,CodeMetadataValue as un,CompositeType as mn,CompositeValue as dn,Field as Me,FieldDefinition as Re,List as hn,NothingValue as gn,OptionalValue as De,OptionValue as Le,StringValue as fn,Struct as yn,StructType as vn,TokenIdentifierType as wn,TokenIdentifierValue as Bt,U16Value as Wn,U32Value as Tn,U64Type as Cn,U64Value as Pt,U8Value as xn,VariadicValue as An}from"@multiversx/sdk-core";var qo=(s,e)=>s?Le.newProvided(s):e?Le.newMissingTyped(e):Le.newMissing(),jo=(s,e)=>s?new De(s.getType(),s):e?new De(e):De.newMissing(),Qo=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let e=s[0].getType();return new hn(e,s)},Xo=s=>An.fromItems(...s),Jo=s=>{let e=s.map(t=>t.getType());return new dn(new mn(...e),s)},Yo=s=>fn.fromUTF8(s),Zo=s=>new xn(s),ec=s=>new Wn(s),tc=s=>new Tn(s),rc=s=>new Pt(s),nc=s=>new It(BigInt(s)),ac=s=>new cn(s),ic=s=>new sn(an.newFromBech32(s)),sc=s=>new Bt(s),oc=s=>pn.fromHex(s),cc=s=>new yn(new vn("EsdtTokenPayment",[new Re("token_identifier","",new wn),new Re("token_nonce","",new Cn),new Re("amount","",new on)]),[new Me(new Bt(s.token.identifier),"token_identifier"),new Me(new Pt(BigInt(s.token.nonce)),"token_nonce"),new Me(new It(BigInt(s.amount)),"amount")]),pc=s=>new un(ln.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),lc=()=>new gn;export{U as ExplorerUrls,tt as KnownTokens,Et as MultiversxAdapter,mr as MultiversxExplorers,nt as MultiversxExplorersConfig,Ue as NativeTokenEgld,nn as NativeTokenVibe,St as VibechainAdapter,dr as VibechainExplorers,B as WarpMultiversxAbiBuilder,$ as WarpMultiversxBrandBuilder,z as WarpMultiversxBuilder,oi as WarpMultiversxConstants,K as WarpMultiversxContractLoader,j as WarpMultiversxDataLoader,ne as WarpMultiversxExecutor,ae as WarpMultiversxExplorer,f as WarpMultiversxInputTypes,O as WarpMultiversxOutput,se as WarpMultiversxRegistry,P as WarpMultiversxSerializer,oe as WarpMultiversxWallet,ic as address_value,cc as asset_value,nc as biguint_value,ac as boolean_value,Do as codemeta,pc as codemeta_value,Jo as composite_value,ce as createMultiversxAdapter,rt as findKnownTokenById,Uo as getAllMultiversxAdapters,Sn as getAllMultiversxChainNames,Ka as getKnownTokensForChain,w as getMultiversxEntrypoint,b as getMultiversxRegistryAddress,G as getNormalizedTokenIdentifier,oc as hex_value,F as isNativeToken,_o as list,Qo as list_value,lc as nothing_value,qo as option_value,Lo as optional,jo as optional_value,Yo as string_value,Tt as toTypedConfigInfo,ie as toTypedRegistryInfo,Ro as token,sc as token_value,ec as u16_value,tc as u32_value,rc as u64_value,Zo as u8_value,Xo 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-beta.85",
3
+ "version": "0.2.0-beta.86",
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.3.1",
41
- "@vleap/warps": "^3.0.0-beta.174"
41
+ "@vleap/warps": "^3.0.0-beta.175"
42
42
  }
43
43
  }