@vleap/warps-adapter-multiversx 0.2.0-alpha.20 → 0.2.0-alpha.21
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.mts +11 -2
- package/dist/index.d.ts +11 -2
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as _vleap_warps from '@vleap/warps';
|
|
2
|
+
import { WarpClientConfig, Adapter, WarpChainEnv, WarpChainInfo, AdapterFactory, AdapterWarpAbiBuilder, WarpChain, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, AdapterWarpExplorer, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
3
|
import { TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction, NetworkEntrypoint } from '@multiversx/sdk-core';
|
|
3
4
|
|
|
5
|
+
declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
|
|
6
|
+
|
|
7
|
+
declare const createMultiversxAdapter: (chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
|
|
8
|
+
|
|
9
|
+
declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
|
|
10
|
+
|
|
11
|
+
declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
|
|
12
|
+
|
|
4
13
|
declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
|
|
5
14
|
|
|
6
15
|
declare const WarpMultiversxConstants: {
|
|
@@ -208,4 +217,4 @@ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
|
|
|
208
217
|
typeToString(type: Type): WarpActionInputType;
|
|
209
218
|
}
|
|
210
219
|
|
|
211
|
-
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxRegistryAddress, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
|
220
|
+
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, createMultiversxAdapter, esdt_value, getAllMultiversxAdapters, getMultiversxAdapter, getMultiversxRegistryAddress, getVibechainAdapter, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as _vleap_warps from '@vleap/warps';
|
|
2
|
+
import { WarpClientConfig, Adapter, WarpChainEnv, WarpChainInfo, AdapterFactory, AdapterWarpAbiBuilder, WarpChain, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, AdapterWarpExplorer, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
3
|
import { TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction, NetworkEntrypoint } from '@multiversx/sdk-core';
|
|
3
4
|
|
|
5
|
+
declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
|
|
6
|
+
|
|
7
|
+
declare const createMultiversxAdapter: (chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
|
|
8
|
+
|
|
9
|
+
declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
|
|
10
|
+
|
|
11
|
+
declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
|
|
12
|
+
|
|
4
13
|
declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
|
|
5
14
|
|
|
6
15
|
declare const WarpMultiversxConstants: {
|
|
@@ -208,4 +217,4 @@ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
|
|
|
208
217
|
typeToString(type: Type): WarpActionInputType;
|
|
209
218
|
}
|
|
210
219
|
|
|
211
|
-
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxRegistryAddress, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
|
220
|
+
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, createMultiversxAdapter, esdt_value, getAllMultiversxAdapters, getMultiversxAdapter, getMultiversxRegistryAddress, getVibechainAdapter, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var J=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var le=(s,e)=>{for(var t in e)J(s,t,{get:e[t],enumerable:!0})},fe=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ue(e))!pe.call(s,a)&&a!==t&&J(s,a,{get:()=>e[a],enumerable:!(r=ce(e,a))||r.enumerable});return s};var me=s=>fe(J({},"__esModule",{value:!0}),s);var Ue={};le(Ue,{ExplorerUrls:()=>N,MultiversxExplorers:()=>te,MultiversxExplorersConfig:()=>X,VibechainExplorers:()=>re,WarpMultiversxAbiBuilder:()=>U,WarpMultiversxBrandBuilder:()=>L,WarpMultiversxBuilder:()=>q,WarpMultiversxConstants:()=>de,WarpMultiversxContractLoader:()=>$,WarpMultiversxExecutor:()=>T,WarpMultiversxExplorer:()=>D,WarpMultiversxRegistry:()=>H,WarpMultiversxResults:()=>P,WarpMultiversxSerializer:()=>R,address_value:()=>Ie,biguint_value:()=>Ee,boolean_value:()=>Ae,codemeta_value:()=>Se,composite_value:()=>We,esdt_value:()=>Y,getMultiversxRegistryAddress:()=>b,hex_value:()=>Ve,list_value:()=>he,nothing_value:()=>Fe,option_value:()=>ye,optional_value:()=>ge,string_value:()=>Te,token_value:()=>Be,u16_value:()=>Ce,u32_value:()=>ve,u64_value:()=>be,u8_value:()=>xe,variadic_value:()=>we});module.exports=me(Ue);var b=s=>{if(s==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(s==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var de={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},te=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(te||{}),re=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(re||{}),X={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},N={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 c=require("@multiversx/sdk-core"),ye=(s,e)=>s?c.OptionValue.newProvided(s):e?c.OptionValue.newMissingTyped(e):c.OptionValue.newMissing(),ge=(s,e)=>s?new c.OptionalValue(s.getType(),s):e?new c.OptionalValue(e):c.OptionalValue.newMissing(),he=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let e=s[0].getType();return new c.List(e,s)},we=s=>c.VariadicValue.fromItems(...s),We=s=>{let e=s.map(t=>t.getType());return new c.CompositeValue(new c.CompositeType(...e),s)},Te=s=>c.StringValue.fromUTF8(s),xe=s=>new c.U8Value(s),Ce=s=>new c.U16Value(s),ve=s=>new c.U32Value(s),be=s=>new c.U64Value(s),Ee=s=>new c.BigUIntValue(BigInt(s)),Ae=s=>new c.BooleanValue(s),Ie=s=>new c.AddressValue(c.Address.newFromBech32(s)),Be=s=>new c.TokenIdentifierValue(s),Ve=s=>c.BytesValue.fromHex(s),Y=s=>new c.Struct(new c.StructType("EsdtTokenPayment",[new c.FieldDefinition("token_identifier","",new c.TokenIdentifierType),new c.FieldDefinition("token_nonce","",new c.U64Type),new c.FieldDefinition("amount","",new c.BigUIntType)]),[new c.Field(new c.TokenIdentifierValue(s.token.identifier),"token_identifier"),new c.Field(new c.U64Value(BigInt(s.token.nonce)),"token_nonce"),new c.Field(new c.BigUIntValue(BigInt(s.amount)),"amount")]),Se=s=>new c.CodeMetadataValue(c.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),Fe=()=>new c.NothingValue;var j=require("@multiversx/sdk-core"),V=require("@vleap/warps");var Z=require("@vleap/warps");var d=require("@multiversx/sdk-core"),E=require("@vleap/warps");var O=require("@multiversx/sdk-core"),h=require("@vleap/warps");var n=require("@multiversx/sdk-core"),x=require("@vleap/warps"),ne=new RegExp(`${x.WarpConstants.ArgParamsSeparator}(.*)`),R=class{constructor(){this.coreSerializer=new x.WarpSerializer}typedToString(e){if(e.hasClassOrSuperclass(n.OptionValue.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(n.OptionalValue.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(n.List.ClassName)){let t=e.getItems(),a=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[0])[0],i=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[1]);return`list:${a}:${i.join(",")}`}if(e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let t=e.getItems(),a=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[0])[0],i=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${a}:${i.join(",")}`}if(e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let t=e.getItems(),r=t.map(o=>this.typedToString(o).split(x.WarpConstants.ArgParamsSeparator)[0]),a=t.map(o=>this.typedToString(o).split(x.WarpConstants.ArgParamsSeparator)[1]),i=r.join(x.WarpConstants.ArgCompositeSeparator),u=a.join(x.WarpConstants.ArgCompositeSeparator);return`composite(${i}):${u}`}if(e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.U8Value.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U16Value.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U32Value.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U64Value.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.StringValue.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BooleanValue.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.AddressValue.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BytesValue.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${a}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(x.WarpConstants.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new n.StringType;if(e==="uint8")return new n.U8Type;if(e==="uint16")return new n.U16Type;if(e==="uint32")return new n.U32Type;if(e==="uint64")return new n.U64Type;if(e==="biguint")return new n.BigUIntType;if(e==="bool")return new n.BooleanType;if(e==="address")return new n.AddressType;if(e==="token")return new n.TokenIdentifierType;if(e==="hex")return new n.BytesType;if(e==="codemeta")return new n.CodeMetadataType;if(e==="esdt"||e==="nft")return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new n.NothingValue;if(t==="option"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t==="optional"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t==="list"){let[a,i]=r.split(ne,2),o=i.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.List(this.nativeToType(a),o)}if(t==="variadic"){let[a,i]=r.split(ne,2),o=i.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),o)}if(t.startsWith("composite")){let a=t.match(/\(([^)]+)\)/)?.[1],i=r.split(x.WarpConstants.ArgCompositeSeparator),u=a.split(x.WarpConstants.ArgCompositeSeparator),o=i.map((f,m)=>this.stringToTyped(`${u[m]}:${f}`)),l=o.map(f=>f.getType());return new n.CompositeValue(new n.CompositeType(...l),o)}if(t==="string")return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t==="uint8")return r?new n.U8Value(Number(r)):new n.NothingValue;if(t==="uint16")return r?new n.U16Value(Number(r)):new n.NothingValue;if(t==="uint32")return r?new n.U32Value(Number(r)):new n.NothingValue;if(t==="uint64")return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t==="biguint")return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t==="bool")return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t==="address")return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t==="token")return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t==="hex")return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t==="codemeta")return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let a=r.split(x.WarpConstants.ArgCompositeSeparator);return new n.Struct(this.nativeToType("esdt"),[new n.Field(new n.TokenIdentifierValue(a[0]),"token_identifier"),new n.Field(new n.U64Value(BigInt(a[1])),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(a[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof n.OptionType)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.OptionalType)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.ListType)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.VariadicType)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.StringType)return"string";if(e instanceof n.U8Type)return"uint8";if(e instanceof n.U16Type)return"uint16";if(e instanceof n.U32Type)return"uint32";if(e instanceof n.U64Type)return"uint64";if(e instanceof n.BigUIntType)return"biguint";if(e instanceof n.BooleanType)return"bool";if(e instanceof n.AddressType)return"address";if(e instanceof n.TokenIdentifierType)return"token";if(e instanceof n.BytesType)return"hex";if(e instanceof n.CodeMetadataType)return"codemeta";if(e instanceof n.StructType&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var P=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new U(e,t,r),this.serializer=new R,this.cache=new h.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,h.findWarpExecutableAction)(e),a=this.cache.get(h.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],i=await this.extractContractResults(e,t,a),u=(0,h.getNextInfo)(this.config,[],e,r,i),o=(0,h.applyResultsToMessages)(e,i.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:u,values:i.values,results:i.results,messages:o}}async extractContractResults(e,t,r){let{action:a,actionIndex:i}=(0,h.findWarpExecutableAction)(e),u=[],o={};if(!e.results||a.type!=="contract")return{values:u,results:o};if(!Object.values(e.results).some(C=>C.includes("out")||C.includes("event"))){for(let[C,g]of Object.entries(e.results))o[C]=g;return{values:u,results:await(0,h.evaluateResultsCommon)(e,o,i,r)}}let f=await this.abi.getAbiForAction(a),m=new O.TransactionEventsParser({abi:f}),w=new O.SmartContractTransactionsOutcomeParser({abi:f}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[C,g]of Object.entries(e.results)){if(g.startsWith(h.WarpConstants.Transform.Prefix))continue;if(g.startsWith("input.")){o[C]=g;continue}let A=(0,h.parseResultsOutIndex)(g);if(A!==null&&A!==i){o[C]=null;continue}let[v,B,I]=g.split(".");if(v==="event"){if(!B||isNaN(Number(I)))continue;let z=Number(I),W=(0,O.findEventsByFirstTopic)(t,B),M=m.parseEvents({events:W})[0],Q=Object.values(M)[z]||null;u.push(Q),o[C]=Q&&Q.valueOf()}else if(v==="out"||v.startsWith("out[")){if(!B)continue;let z=Number(B),W=w.values[z-1]||null;I&&(W=W[I]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),u.push(W),o[C]=W&&W.valueOf()}else o[C]=g}return{values:u,results:await(0,h.evaluateResultsCommon)(e,o,i,r)}}async extractQueryResults(e,t,r,a){let i=t.map(f=>this.serializer.typedToString(f)),u=t.map(f=>this.serializer.typedToNative(f)[1]),o={};if(!e.results)return{values:i,results:o};let l=f=>{let m=f.split(".").slice(1).map(w=>parseInt(w)-1);if(m.length===0)return;let y=u[m[0]];for(let w=1;w<m.length;w++){if(y==null)return;y=y[m[w]]}return y};for(let[f,m]of Object.entries(e.results)){if(m.startsWith(h.WarpConstants.Transform.Prefix))continue;let y=(0,h.parseResultsOutIndex)(m);if(y!==null&&y!==r){o[f]=null;continue}m.startsWith("out.")||m==="out"||m.startsWith("out[")?o[f]=l(m)||null:o[f]=m}return{values:i,results:await(0,h.evaluateResultsCommon)(e,o,r,a)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,i=e.inputs,u=e.meta,o=new Map,l=new Set,f=this;async function m(g,A=[]){if(o.has(g))return o.get(g);if(l.has(g))throw new Error(`Circular dependency detected at action ${g}`);l.add(g);let v=t.actions[g-1];if(!v)throw new Error(`Action ${g} not found`);let B;if(v.type==="query")B=await a.executeQuery(t,g,A);else if(v.type==="collect")B=await a.executeCollect(t,g,A,u);else throw new Error(`Unsupported or interactive action type: ${v.type}`);if(o.set(g,B),t.results)for(let I of Object.values(t.results)){let W=String(I).match(/^out\[(\d+)\]/);if(W){let M=parseInt(W[1],10);M!==g&&!o.has(M)&&await m(M)}}return l.delete(g),B}await m(r,i);let y={};for(let g of o.values())for(let[A,v]of Object.entries(g.results))v!==null?y[A]=v:A in y||(y[A]=null);let w=await(0,h.evaluateResultsCommon)(t,y,r,i);return{...o.get(r),action:r,results:w}}};var T=class s{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new R,this.abi=new U(this.config,this.chain,this.chainInfo),this.results=new P(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=(0,E.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=d.Address.newFromBech32(t),a=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId}),i=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new d.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:d.Address.newFromBech32(e.destination),nativeAmount:e.value,data:i?new Uint8Array(i):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,E.getWarpActionByIndex)(e.warp,e.action),a=d.Address.newFromBech32(t),i=e.args.map(o=>this.serializer.stringToTyped(o)),u=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId});return new d.SmartContractTransactionsFactory({config:u}).createTransactionForExecute(a,{contract:d.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:i,nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,E.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(I=>this.serializer.stringToTyped(I)),i=s.getChainEntrypoint(e.chainInfo,this.config.env),u=d.Address.newFromBech32(e.destination),o=i.createSmartContractController(r),l=o.createQuery({contract:u,function:t.func||"",arguments:a}),f=await o.runQuery(l),m=f.returnCode==="ok",y=new d.ArgSerializer,w=r.getEndpoint(f.function||t.func||""),C=(f.returnDataParts||[]).map(I=>Buffer.from(I)),g=y.buffersToValues(C,w.output),{values:A,results:v}=await this.results.extractQueryResults(e.warp,g,e.action,e.resolvedInputs),B=(0,E.getNextInfo)(this.config,[],e.warp,e.action,v);return{success:m,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:B,values:A,results:v,messages:(0,E.applyResultsToMessages)(e.warp,v)}}async preprocessInput(e,t,r,a){if(r==="esdt"){let[i,u,o,l]=a.split(E.WarpConstants.ArgCompositeSeparator);if(l)return t;let f=new d.Token({identifier:i,nonce:BigInt(u)});if(!new d.TokenComputer().isFungible(f))return t;let w=(0,E.findKnownTokenById)(i)?.decimals;if(w||(w=(await(await fetch(`${e.apiUrl}/tokens/${i}`)).json()).decimals),!w)throw new Error(`WarpActionExecutor: Decimals not found for token ${i}`);let C=Y(new d.TokenTransfer({token:f,amount:(0,E.shiftBigintBy)(o,w)}));return this.serializer.typedToString(C)+E.WarpConstants.ArgCompositeSeparator+w}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new d.DevnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new d.TestnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):new d.MainnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=d.UserSecretKey.fromString(t);return(await new d.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var $=class{constructor(e){this.config=e}async getContract(e,t){try{let i=await T.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return Z.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let i=await T.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return Z.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var U=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new $(this.config),this.cache=new V.WarpCache(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=V.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let u=this.cache.get(r);if(u)return V.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),u}let i=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let u=await i.getTransaction(e),o=await this.createFromTransaction(u);return t&&t.ttl&&o&&this.cache.set(r,o,t.ttl),o}catch(u){return V.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",u),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.chainInfo);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return j.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(V.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(V.WarpConstants.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return j.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return j.AbiRegistry.create(r)}}};var k=require("@multiversx/sdk-core"),G=require("@vleap/warps"),ae=require("buffer");var L=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new G.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new k.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),a=new k.TransferTransactionsFactory({config:r}),i=k.Address.newFromBech32(t),u=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(i,{receiver:k.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(ae.Buffer.from(u))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return G.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var _=require("@multiversx/sdk-core"),S=require("@vleap/warps");var q=class extends S.WarpBuilder{constructor(t,r,a){super(t);this.config=t;this.chain=r;this.chainInfo=a;this.cache=new S.WarpCache(t.cache?.type),this.core=new S.WarpBuilder(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let a=new _.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),i=new _.TransferTransactionsFactory({config:a}),u=_.Address.newFromBech32(r),o=JSON.stringify(t),l=await i.createTransactionForTransfer(u,{receiver:_.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=S.WarpCacheKey.Warp(this.config.env,t);if(r){let o=this.cache.get(a);if(o)return S.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let u=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await u.getTransaction(t),l=await this.createFromTransaction(o);return r&&r.ttl&&l&&this.cache.set(a,l,r.ttl),l}catch(o){return S.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var D=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=X[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=N[t];if(i)return i}if(e){let i=N[e];if(i)return i}let r=this.getPrimaryExplorer();return N[r]||N[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}`}getTokenUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let i=N[a];i&&(r[a]=`${i}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let i=N[a];i&&(r[a]=`${i}/transactions/${e}`)}),r}};var p=require("@multiversx/sdk-core"),F=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"}],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}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",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:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},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 ie=(s,e,t)=>(r,a)=>{let i=t[r.env];return{chain:s,chainInfo:i,prefix:e,builder:()=>new q(r,s,i),executor:new T(r,s,i),results:new P(r,s),serializer:new R,registry:new H(r),explorer:new D(s,r),abiBuilder:()=>new U(r,s,i),brandBuilder:()=>new L(r,s,i)}};var se=ie("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var K=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}),oe=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(e=>e.toBech32())});var H=class{constructor(e){this.config=e;let t=se(e);this.chainInfo=t.chainInfo,this.cache=new F.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=p.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,u=()=>t&&r?[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t),p.BytesValue.fromHex(r)]:t?[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t)]:[p.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:p.Address.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:u()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){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 r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromUTF8(e),p.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e),new p.AddressValue(new p.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=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e),p.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let i=p.Address.newFromBech32(b(this.config.env)),u=this.getController(),o=u.createQuery({contract:i,function:"getInfoByAlias",arguments:[p.BytesValue.fromUTF8(e)]}),l=await u.runQuery(o),[f]=u.parseQueryResponse(l),m=f?K(f):null,y=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:y},t.ttl),{registryInfo:m,brand:y}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let y=this.cache.get(r);if(y)return F.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),y}let a=p.Address.newFromBech32(b(this.config.env)),i=this.getController(),u=i.createQuery({contract:a,function:"getInfoByHash",arguments:[p.BytesValue.fromHex(e)]}),o=await i.runQuery(u),[l]=i.parseQueryResponse(o),f=l?K(l):null,m=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:m},t.ttl),{registryInfo:f,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=p.Address.newFromBech32(b(this.config.env)),a=this.getController(),i=a.createQuery({contract:r,function:"getUserWarps",arguments:[new p.AddressValue(new p.Address(t))]}),u=await a.runQuery(i),[o]=a.parseQueryResponse(u);return o.map(K)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(b(this.config.env)),a=this.getController(),i=a.createQuery({contract:r,function:"getUserBrands",arguments:[new p.AddressValue(new p.Address(t))]}),u=await a.runQuery(i),[o]=a.parseQueryResponse(u),l=o.map(y=>y.toString("hex")),f={ttl:365*24*60*60};return(await Promise.all(l.map(y=>this.fetchBrand(y,f)))).filter(y=>y!==null)}catch{return[]}}async fetchBrand(e,t){let r=F.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let u=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await u.getTransaction(e),l=JSON.parse(o.data.toString());return l.meta={hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=p.Address.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?oe(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new p.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),t=p.AbiRegistry.create(ee);return new p.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=T.getChainEntrypoint(this.chainInfo,this.config.env),t=p.AbiRegistry.create(ee);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};0&&(module.exports={ExplorerUrls,MultiversxExplorers,MultiversxExplorersConfig,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,address_value,biguint_value,boolean_value,codemeta_value,composite_value,esdt_value,getMultiversxRegistryAddress,hex_value,list_value,nothing_value,option_value,optional_value,string_value,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
|
1
|
+
"use strict";var Y=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var le=Object.getOwnPropertyNames;var fe=Object.prototype.hasOwnProperty;var me=(i,e)=>{for(var t in e)Y(i,t,{get:e[t],enumerable:!0})},de=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of le(e))!fe.call(i,a)&&a!==t&&Y(i,a,{get:()=>e[a],enumerable:!(r=ue(e,a))||r.enumerable});return i};var ye=i=>de(Y({},"__esModule",{value:!0}),i);var ke={};me(ke,{ExplorerUrls:()=>N,MultiversxExplorers:()=>oe,MultiversxExplorersConfig:()=>te,VibechainExplorers:()=>ce,WarpMultiversxAbiBuilder:()=>U,WarpMultiversxBrandBuilder:()=>L,WarpMultiversxBuilder:()=>q,WarpMultiversxConstants:()=>Ue,WarpMultiversxContractLoader:()=>$,WarpMultiversxExecutor:()=>x,WarpMultiversxExplorer:()=>D,WarpMultiversxRegistry:()=>H,WarpMultiversxResults:()=>P,WarpMultiversxSerializer:()=>R,address_value:()=>Be,biguint_value:()=>Ae,boolean_value:()=>Ie,codemeta_value:()=>Fe,composite_value:()=>xe,createMultiversxAdapter:()=>Q,esdt_value:()=>Z,getAllMultiversxAdapters:()=>Pe,getMultiversxAdapter:()=>z,getMultiversxRegistryAddress:()=>E,getVibechainAdapter:()=>ae,hex_value:()=>Se,list_value:()=>we,nothing_value:()=>Re,option_value:()=>ge,optional_value:()=>he,string_value:()=>Te,token_value:()=>Ve,u16_value:()=>Ce,u32_value:()=>be,u64_value:()=>Ee,u8_value:()=>ve,variadic_value:()=>We});module.exports=ye(ke);var K=require("@multiversx/sdk-core"),V=require("@vleap/warps");var ee=require("@vleap/warps");var d=require("@multiversx/sdk-core"),b=require("@vleap/warps");var O=require("@multiversx/sdk-core"),h=require("@vleap/warps");var n=require("@multiversx/sdk-core"),T=require("@vleap/warps"),ie=new RegExp(`${T.WarpConstants.ArgParamsSeparator}(.*)`),R=class{constructor(){this.coreSerializer=new T.WarpSerializer}typedToString(e){if(e.hasClassOrSuperclass(n.OptionValue.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(n.OptionalValue.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(n.List.ClassName)){let t=e.getItems(),a=t.map(p=>this.typedToString(p).split(T.WarpConstants.ArgParamsSeparator)[0])[0],s=t.map(p=>this.typedToString(p).split(T.WarpConstants.ArgParamsSeparator)[1]);return`list:${a}:${s.join(",")}`}if(e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let t=e.getItems(),a=t.map(p=>this.typedToString(p).split(T.WarpConstants.ArgParamsSeparator)[0])[0],s=t.map(p=>this.typedToString(p).split(T.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${a}:${s.join(",")}`}if(e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let t=e.getItems(),r=t.map(o=>this.typedToString(o).split(T.WarpConstants.ArgParamsSeparator)[0]),a=t.map(o=>this.typedToString(o).split(T.WarpConstants.ArgParamsSeparator)[1]),s=r.join(T.WarpConstants.ArgCompositeSeparator),p=a.join(T.WarpConstants.ArgCompositeSeparator);return`composite(${s}):${p}`}if(e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.U8Value.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U16Value.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U32Value.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U64Value.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.StringValue.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BooleanValue.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.AddressValue.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BytesValue.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${a}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(T.WarpConstants.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new n.StringType;if(e==="uint8")return new n.U8Type;if(e==="uint16")return new n.U16Type;if(e==="uint32")return new n.U32Type;if(e==="uint64")return new n.U64Type;if(e==="biguint")return new n.BigUIntType;if(e==="bool")return new n.BooleanType;if(e==="address")return new n.AddressType;if(e==="token")return new n.TokenIdentifierType;if(e==="hex")return new n.BytesType;if(e==="codemeta")return new n.CodeMetadataType;if(e==="esdt"||e==="nft")return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new n.NothingValue;if(t==="option"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t==="optional"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t==="list"){let[a,s]=r.split(ie,2),o=s.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.List(this.nativeToType(a),o)}if(t==="variadic"){let[a,s]=r.split(ie,2),o=s.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),o)}if(t.startsWith("composite")){let a=t.match(/\(([^)]+)\)/)?.[1],s=r.split(T.WarpConstants.ArgCompositeSeparator),p=a.split(T.WarpConstants.ArgCompositeSeparator),o=s.map((f,m)=>this.stringToTyped(`${p[m]}:${f}`)),l=o.map(f=>f.getType());return new n.CompositeValue(new n.CompositeType(...l),o)}if(t==="string")return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t==="uint8")return r?new n.U8Value(Number(r)):new n.NothingValue;if(t==="uint16")return r?new n.U16Value(Number(r)):new n.NothingValue;if(t==="uint32")return r?new n.U32Value(Number(r)):new n.NothingValue;if(t==="uint64")return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t==="biguint")return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t==="bool")return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t==="address")return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t==="token")return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t==="hex")return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t==="codemeta")return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let a=r.split(T.WarpConstants.ArgCompositeSeparator);return new n.Struct(this.nativeToType("esdt"),[new n.Field(new n.TokenIdentifierValue(a[0]),"token_identifier"),new n.Field(new n.U64Value(BigInt(a[1])),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(a[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof n.OptionType)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.OptionalType)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.ListType)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.VariadicType)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.StringType)return"string";if(e instanceof n.U8Type)return"uint8";if(e instanceof n.U16Type)return"uint16";if(e instanceof n.U32Type)return"uint32";if(e instanceof n.U64Type)return"uint64";if(e instanceof n.BigUIntType)return"biguint";if(e instanceof n.BooleanType)return"bool";if(e instanceof n.AddressType)return"address";if(e instanceof n.TokenIdentifierType)return"token";if(e instanceof n.BytesType)return"hex";if(e instanceof n.CodeMetadataType)return"codemeta";if(e instanceof n.StructType&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var P=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new U(e,t,r),this.serializer=new R,this.cache=new h.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,h.findWarpExecutableAction)(e),a=this.cache.get(h.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],s=await this.extractContractResults(e,t,a),p=(0,h.getNextInfo)(this.config,[],e,r,s),o=(0,h.applyResultsToMessages)(e,s.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:p,values:s.values,results:s.results,messages:o}}async extractContractResults(e,t,r){let{action:a,actionIndex:s}=(0,h.findWarpExecutableAction)(e),p=[],o={};if(!e.results||a.type!=="contract")return{values:p,results:o};if(!Object.values(e.results).some(v=>v.includes("out")||v.includes("event"))){for(let[v,g]of Object.entries(e.results))o[v]=g;return{values:p,results:await(0,h.evaluateResultsCommon)(e,o,s,r)}}let f=await this.abi.getAbiForAction(a),m=new O.TransactionEventsParser({abi:f}),w=new O.SmartContractTransactionsOutcomeParser({abi:f}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[v,g]of Object.entries(e.results)){if(g.startsWith(h.WarpConstants.Transform.Prefix))continue;if(g.startsWith("input.")){o[v]=g;continue}let A=(0,h.parseResultsOutIndex)(g);if(A!==null&&A!==s){o[v]=null;continue}let[C,B,I]=g.split(".");if(C==="event"){if(!B||isNaN(Number(I)))continue;let j=Number(I),W=(0,O.findEventsByFirstTopic)(t,B),M=m.parseEvents({events:W})[0],G=Object.values(M)[j]||null;p.push(G),o[v]=G&&G.valueOf()}else if(C==="out"||C.startsWith("out[")){if(!B)continue;let j=Number(B),W=w.values[j-1]||null;I&&(W=W[I]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),p.push(W),o[v]=W&&W.valueOf()}else o[v]=g}return{values:p,results:await(0,h.evaluateResultsCommon)(e,o,s,r)}}async extractQueryResults(e,t,r,a){let s=t.map(f=>this.serializer.typedToString(f)),p=t.map(f=>this.serializer.typedToNative(f)[1]),o={};if(!e.results)return{values:s,results:o};let l=f=>{let m=f.split(".").slice(1).map(w=>parseInt(w)-1);if(m.length===0)return;let y=p[m[0]];for(let w=1;w<m.length;w++){if(y==null)return;y=y[m[w]]}return y};for(let[f,m]of Object.entries(e.results)){if(m.startsWith(h.WarpConstants.Transform.Prefix))continue;let y=(0,h.parseResultsOutIndex)(m);if(y!==null&&y!==r){o[f]=null;continue}m.startsWith("out.")||m==="out"||m.startsWith("out[")?o[f]=l(m)||null:o[f]=m}return{values:s,results:await(0,h.evaluateResultsCommon)(e,o,r,a)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,s=e.inputs,p=e.meta,o=new Map,l=new Set,f=this;async function m(g,A=[]){if(o.has(g))return o.get(g);if(l.has(g))throw new Error(`Circular dependency detected at action ${g}`);l.add(g);let C=t.actions[g-1];if(!C)throw new Error(`Action ${g} not found`);let B;if(C.type==="query")B=await a.executeQuery(t,g,A);else if(C.type==="collect")B=await a.executeCollect(t,g,A,p);else throw new Error(`Unsupported or interactive action type: ${C.type}`);if(o.set(g,B),t.results)for(let I of Object.values(t.results)){let W=String(I).match(/^out\[(\d+)\]/);if(W){let M=parseInt(W[1],10);M!==g&&!o.has(M)&&await m(M)}}return l.delete(g),B}await m(r,s);let y={};for(let g of o.values())for(let[A,C]of Object.entries(g.results))C!==null?y[A]=C:A in y||(y[A]=null);let w=await(0,h.evaluateResultsCommon)(t,y,r,s);return{...o.get(r),action:r,results:w}}};var c=require("@multiversx/sdk-core"),ge=(i,e)=>i?c.OptionValue.newProvided(i):e?c.OptionValue.newMissingTyped(e):c.OptionValue.newMissing(),he=(i,e)=>i?new c.OptionalValue(i.getType(),i):e?new c.OptionalValue(e):c.OptionalValue.newMissing(),we=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new c.List(e,i)},We=i=>c.VariadicValue.fromItems(...i),xe=i=>{let e=i.map(t=>t.getType());return new c.CompositeValue(new c.CompositeType(...e),i)},Te=i=>c.StringValue.fromUTF8(i),ve=i=>new c.U8Value(i),Ce=i=>new c.U16Value(i),be=i=>new c.U32Value(i),Ee=i=>new c.U64Value(i),Ae=i=>new c.BigUIntValue(BigInt(i)),Ie=i=>new c.BooleanValue(i),Be=i=>new c.AddressValue(c.Address.newFromBech32(i)),Ve=i=>new c.TokenIdentifierValue(i),Se=i=>c.BytesValue.fromHex(i),Z=i=>new c.Struct(new c.StructType("EsdtTokenPayment",[new c.FieldDefinition("token_identifier","",new c.TokenIdentifierType),new c.FieldDefinition("token_nonce","",new c.U64Type),new c.FieldDefinition("amount","",new c.BigUIntType)]),[new c.Field(new c.TokenIdentifierValue(i.token.identifier),"token_identifier"),new c.Field(new c.U64Value(BigInt(i.token.nonce)),"token_nonce"),new c.Field(new c.BigUIntValue(BigInt(i.amount)),"amount")]),Fe=i=>new c.CodeMetadataValue(c.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Re=()=>new c.NothingValue;var x=class i{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new R,this.abi=new U(this.config,this.chain,this.chainInfo),this.results=new P(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=(0,b.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=d.Address.newFromBech32(t),a=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new d.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:d.Address.newFromBech32(e.destination),nativeAmount:e.value,data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,b.getWarpActionByIndex)(e.warp,e.action),a=d.Address.newFromBech32(t),s=e.args.map(o=>this.serializer.stringToTyped(o)),p=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId});return new d.SmartContractTransactionsFactory({config:p}).createTransactionForExecute(a,{contract:d.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,b.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(I=>this.serializer.stringToTyped(I)),s=i.getChainEntrypoint(e.chainInfo,this.config.env),p=d.Address.newFromBech32(e.destination),o=s.createSmartContractController(r),l=o.createQuery({contract:p,function:t.func||"",arguments:a}),f=await o.runQuery(l),m=f.returnCode==="ok",y=new d.ArgSerializer,w=r.getEndpoint(f.function||t.func||""),v=(f.returnDataParts||[]).map(I=>Buffer.from(I)),g=y.buffersToValues(v,w.output),{values:A,results:C}=await this.results.extractQueryResults(e.warp,g,e.action,e.resolvedInputs),B=(0,b.getNextInfo)(this.config,[],e.warp,e.action,C);return{success:m,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:B,values:A,results:C,messages:(0,b.applyResultsToMessages)(e.warp,C)}}async preprocessInput(e,t,r,a){if(r==="esdt"){let[s,p,o,l]=a.split(b.WarpConstants.ArgCompositeSeparator);if(l)return t;let f=new d.Token({identifier:s,nonce:BigInt(p)});if(!new d.TokenComputer().isFungible(f))return t;let w=(0,b.findKnownTokenById)(s)?.decimals;if(w||(w=(await(await fetch(`${e.apiUrl}/tokens/${s}`)).json()).decimals),!w)throw new Error(`WarpActionExecutor: Decimals not found for token ${s}`);let v=Z(new d.TokenTransfer({token:f,amount:(0,b.shiftBigintBy)(o,w)}));return this.serializer.typedToString(v)+b.WarpConstants.ArgCompositeSeparator+w}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new d.DevnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new d.TestnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):new d.MainnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=d.UserSecretKey.fromString(t);return(await new d.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var $=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await x.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return ee.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await x.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return ee.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var U=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new $(this.config),this.cache=new V.WarpCache(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=V.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let p=this.cache.get(r);if(p)return V.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),p}let s=x.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let p=await s.getTransaction(e),o=await this.createFromTransaction(p);return t&&t.ttl&&o&&this.cache.set(r,o,t.ttl),o}catch(p){return V.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",p),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.chainInfo);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(V.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(V.WarpConstants.IdentifierParamSeparatorDefault)[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 k=require("@multiversx/sdk-core"),J=require("@vleap/warps"),se=require("buffer");var L=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new J.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new k.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),a=new k.TransferTransactionsFactory({config:r}),s=k.Address.newFromBech32(t),p=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(s,{receiver:k.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(se.Buffer.from(p))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=x.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return J.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var _=require("@multiversx/sdk-core"),S=require("@vleap/warps");var q=class extends S.WarpBuilder{constructor(t,r,a){super(t);this.config=t;this.chain=r;this.chainInfo=a;this.cache=new S.WarpCache(t.cache?.type),this.core=new S.WarpBuilder(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let a=new _.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),s=new _.TransferTransactionsFactory({config:a}),p=_.Address.newFromBech32(r),o=JSON.stringify(t),l=await s.createTransactionForTransfer(p,{receiver:_.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=S.WarpCacheKey.Warp(this.config.env,t);if(r){let o=this.cache.get(a);if(o)return S.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let p=x.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await p.getTransaction(t),l=await this.createFromTransaction(o);return r&&r.ttl&&l&&this.cache.set(a,l,r.ttl),l}catch(o){return S.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var Ue={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},oe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(oe||{}),ce=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(ce||{}),te={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},N={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 D=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=te[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let s=N[t];if(s)return s}if(e){let s=N[e];if(s)return s}let r=this.getPrimaryExplorer();return N[r]||N[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}`}getTokenUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=N[a];s&&(r[a]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=N[a];s&&(r[a]=`${s}/transactions/${e}`)}),r}};var u=require("@multiversx/sdk-core"),F=require("@vleap/warps");var re={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"}],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}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",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:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},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 X=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}),pe=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var H=class{constructor(e){this.config=e;let t=z(e);this.chainInfo=t.chainInfo,this.cache=new F.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet),s=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,p=()=>t&&r?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t),u.BytesValue.fromHex(r)]:t?[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]:[u.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(E(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:p()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(E(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){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 r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(E(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(E(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(E(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(E(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(e),new u.AddressValue(new u.Address(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:u.Address.newFromBech32(E(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(E(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(e),u.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let s=u.Address.newFromBech32(E(this.config.env)),p=this.getController(),o=p.createQuery({contract:s,function:"getInfoByAlias",arguments:[u.BytesValue.fromUTF8(e)]}),l=await p.runQuery(o),[f]=p.parseQueryResponse(l),m=f?X(f):null,y=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:y},t.ttl),{registryInfo:m,brand:y}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let y=this.cache.get(r);if(y)return F.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),y}let a=u.Address.newFromBech32(E(this.config.env)),s=this.getController(),p=s.createQuery({contract:a,function:"getInfoByHash",arguments:[u.BytesValue.fromHex(e)]}),o=await s.runQuery(p),[l]=s.parseQueryResponse(o),f=l?X(l):null,m=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:m},t.ttl),{registryInfo:f,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=u.Address.newFromBech32(E(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserWarps",arguments:[new u.AddressValue(new u.Address(t))]}),p=await a.runQuery(s),[o]=a.parseQueryResponse(p);return o.map(X)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(E(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserBrands",arguments:[new u.AddressValue(new u.Address(t))]}),p=await a.runQuery(s),[o]=a.parseQueryResponse(p),l=o.map(y=>y.toString("hex")),f={ttl:365*24*60*60};return(await Promise.all(l.map(y=>this.fetchBrand(y,f)))).filter(y=>y!==null)}catch{return[]}}async fetchBrand(e,t){let r=F.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let p=x.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await p.getTransaction(e),l=JSON.parse(o.data.toString());return l.meta={hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=u.Address.newFromBech32(E(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?pe(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new u.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),t=u.AbiRegistry.create(re);return new u.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=x.getChainEntrypoint(this.chainInfo,this.config.env),t=u.AbiRegistry.create(re);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var Q=(i,e,t)=>(r,a)=>{let s=t[r.env];return{chain:i,chainInfo:s,prefix:e,builder:()=>new q(r,i,s),executor:new x(r,i,s),results:new P(r,i,s),serializer:new R,registry:new H(r),explorer:new D(i,r),abiBuilder:()=>new U(r,i,s),brandBuilder:()=>new L(r,i,s)}};var z=Q("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var ne={displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",apiUrl:"https://vibeox-api.multiversx.com",nativeToken:"VIBE"},ae=Q("vibechain","vibe",{mainnet:ne,testnet:ne,devnet:ne});var Pe=(i,e)=>[z(i,e),ae(i,e)];0&&(module.exports={ExplorerUrls,MultiversxExplorers,MultiversxExplorersConfig,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,address_value,biguint_value,boolean_value,codemeta_value,composite_value,createMultiversxAdapter,esdt_value,getAllMultiversxAdapters,getMultiversxAdapter,getMultiversxRegistryAddress,getVibechainAdapter,hex_value,list_value,nothing_value,option_value,optional_value,string_value,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var T=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var pr={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},Xe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Xe||{}),Ye=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Ye||{}),oe={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},B={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"};import{Address as Ze,AddressValue as et,BigUIntType as tt,BigUIntValue as ce,BooleanValue as rt,BytesValue as nt,CodeMetadata as at,CodeMetadataValue as it,CompositeType as st,CompositeValue as ot,Field as L,FieldDefinition as q,List as ct,NothingValue as ut,OptionalValue as D,OptionValue as H,StringValue as pt,Struct as lt,StructType as ft,TokenIdentifierType as mt,TokenIdentifierValue as ue,U16Value as dt,U32Value as yt,U64Type as gt,U64Value as pe,U8Value as ht,VariadicValue as wt}from"@multiversx/sdk-core";var gr=(i,e)=>i?H.newProvided(i):e?H.newMissingTyped(e):H.newMissing(),hr=(i,e)=>i?new D(i.getType(),i):e?new D(e):D.newMissing(),wr=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new ct(e,i)},Wr=i=>wt.fromItems(...i),Tr=i=>{let e=i.map(t=>t.getType());return new ot(new st(...e),i)},xr=i=>pt.fromUTF8(i),Cr=i=>new ht(i),vr=i=>new dt(i),br=i=>new yt(i),Er=i=>new pe(i),Ar=i=>new ce(BigInt(i)),Ir=i=>new rt(i),Br=i=>new et(Ze.newFromBech32(i)),Vr=i=>new ue(i),Sr=i=>nt.fromHex(i),le=i=>new lt(new ft("EsdtTokenPayment",[new q("token_identifier","",new mt),new q("token_nonce","",new gt),new q("amount","",new tt)]),[new L(new ue(i.token.identifier),"token_identifier"),new L(new pe(BigInt(i.token.nonce)),"token_nonce"),new L(new ce(BigInt(i.amount)),"amount")]),Fr=i=>new it(at.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Rr=()=>new ut;import{AbiRegistry as re}from"@multiversx/sdk-core";import{WarpCache as Gt,WarpCacheKey as Kt,WarpConstants as Le,WarpLogger as qe}from"@vleap/warps";import{WarpLogger as $e}from"@vleap/warps";import{Address as F,ArgSerializer as Ut,DevnetEntrypoint as Nt,MainnetEntrypoint as Pt,SmartContractTransactionsFactory as kt,TestnetEntrypoint as _t,Token as Ot,TokenComputer as Mt,TokenTransfer as $t,TransactionsFactoryConfig as Oe,TransferTransactionsFactory as Lt,UserSecretKey as qt,UserSigner as Dt}from"@multiversx/sdk-core";import{applyResultsToMessages as Ht,findKnownTokenById as zt,getNextInfo as Qt,getWarpActionByIndex as te,shiftBigintBy as jt,WarpConstants as Me}from"@vleap/warps";import{findEventsByFirstTopic as At,SmartContractTransactionsOutcomeParser as It,TransactionEventsParser as Bt}from"@multiversx/sdk-core";import{applyResultsToMessages as Vt,evaluateResultsCommon as N,findWarpExecutableAction as Pe,getNextInfo as St,parseResultsOutIndex as ke,WarpCache as Ft,WarpCacheKey as Rt,WarpConstants as _e}from"@vleap/warps";import{Address as Wt,AddressType as fe,AddressValue as me,BigUIntType as z,BigUIntValue as Q,BooleanType as de,BooleanValue as ye,BytesType as ge,BytesValue as he,CodeMetadata as Tt,CodeMetadataType as we,CodeMetadataValue as We,CompositeType as Te,CompositeValue as xe,Field as j,FieldDefinition as G,List as Ce,ListType as xt,NothingValue as x,OptionalType as Ct,OptionalValue as K,OptionType as vt,OptionValue as J,StringType as ve,StringValue as be,Struct as bt,StructType as Ee,TokenIdentifierType as X,TokenIdentifierValue as Y,U16Type as Ae,U16Value as Ie,U32Type as Be,U32Value as Ve,U64Type as Z,U64Value as ee,U8Type as Se,U8Value as Fe,VariadicType as Re,VariadicValue as Ue}from"@multiversx/sdk-core";import{WarpConstants as C,WarpSerializer as Et}from"@vleap/warps";var Ne=new RegExp(`${C.ArgParamsSeparator}(.*)`),A=class{constructor(){this.coreSerializer=new Et}typedToString(e){if(e.hasClassOrSuperclass(J.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(K.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(Ce.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[1]);return`list:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(Ue.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[1]);return`variadic:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(xe.ClassName)){let t=e.getItems(),r=t.map(s=>this.typedToString(s).split(C.ArgParamsSeparator)[0]),n=t.map(s=>this.typedToString(s).split(C.ArgParamsSeparator)[1]),a=r.join(C.ArgCompositeSeparator),o=n.join(C.ArgCompositeSeparator);return`composite(${a}):${o}`}if(e.hasClassOrSuperclass(Q.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(Fe.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ie.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ve.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(ee.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(be.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(ye.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(me.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(Y.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(he.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(We.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),n=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${n}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new Te(...t.split(C.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new ve;if(e==="uint8")return new Se;if(e==="uint16")return new Ae;if(e==="uint32")return new Be;if(e==="uint64")return new Z;if(e==="biguint")return new z;if(e==="bool")return new de;if(e==="address")return new fe;if(e==="token")return new X;if(e==="hex")return new ge;if(e==="codemeta")return new we;if(e==="esdt"||e==="nft")return new Ee("EsdtTokenPayment",[new G("token_identifier","",new X),new G("token_nonce","",new Z),new G("amount","",new z)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new x;if(t==="option"){let n=this.stringToTyped(r);return n instanceof x?J.newMissingTyped(n.getType()):J.newProvided(n)}if(t==="optional"){let n=this.stringToTyped(r);return n instanceof x?K.newMissing():new K(n.getType(),n)}if(t==="list"){let[n,a]=r.split(Ne,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Ce(this.nativeToType(n),s)}if(t==="variadic"){let[n,a]=r.split(Ne,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Ue(new Re(this.nativeToType(n)),s)}if(t.startsWith("composite")){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(C.ArgCompositeSeparator),o=n.split(C.ArgCompositeSeparator),s=a.map((u,p)=>this.stringToTyped(`${o[p]}:${u}`)),c=s.map(u=>u.getType());return new xe(new Te(...c),s)}if(t==="string")return r?be.fromUTF8(r):new x;if(t==="uint8")return r?new Fe(Number(r)):new x;if(t==="uint16")return r?new Ie(Number(r)):new x;if(t==="uint32")return r?new Ve(Number(r)):new x;if(t==="uint64")return r?new ee(BigInt(r)):new x;if(t==="biguint")return r?new Q(BigInt(r)):new x;if(t==="bool")return r?new ye(typeof r=="boolean"?r:r==="true"):new x;if(t==="address")return r?new me(Wt.newFromBech32(r)):new x;if(t==="token")return r?new Y(r):new x;if(t==="hex")return r?he.fromHex(r):new x;if(t==="codemeta")return new We(Tt.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let n=r.split(C.ArgCompositeSeparator);return new bt(this.nativeToType("esdt"),[new j(new Y(n[0]),"token_identifier"),new j(new ee(BigInt(n[1])),"token_nonce"),new j(new Q(BigInt(n[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof vt)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Ct)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof xt)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Re)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof ve)return"string";if(e instanceof Se)return"uint8";if(e instanceof Ae)return"uint16";if(e instanceof Be)return"uint32";if(e instanceof Z)return"uint64";if(e instanceof z)return"biguint";if(e instanceof de)return"bool";if(e instanceof fe)return"address";if(e instanceof X)return"token";if(e instanceof ge)return"hex";if(e instanceof we)return"codemeta";if(e instanceof Ee&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var V=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new I(e,t,r),this.serializer=new A,this.cache=new Ft(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=Pe(e),n=this.cache.get(Rt.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=St(this.config,[],e,r,a),s=Vt(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:o,values:a.values,results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=Pe(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(w=>w.includes("out")||w.includes("event"))){for(let[w,f]of Object.entries(e.results))s[w]=f;return{values:o,results:await N(e,s,a,r)}}let u=await this.abi.getAbiForAction(n),p=new Bt({abi:u}),y=new It({abi:u}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[w,f]of Object.entries(e.results)){if(f.startsWith(_e.Transform.Prefix))continue;if(f.startsWith("input.")){s[w]=f;continue}let v=ke(f);if(v!==null&&v!==a){s[w]=null;continue}let[W,E,b]=f.split(".");if(W==="event"){if(!E||isNaN(Number(b)))continue;let R=Number(b),g=At(t,E),S=p.parseEvents({events:g})[0],U=Object.values(S)[R]||null;o.push(U),s[w]=U&&U.valueOf()}else if(W==="out"||W.startsWith("out[")){if(!E)continue;let R=Number(E),g=y.values[R-1]||null;b&&(g=g[b]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),o.push(g),s[w]=g&&g.valueOf()}else s[w]=f}return{values:o,results:await N(e,s,a,r)}}async extractQueryResults(e,t,r,n){let a=t.map(u=>this.serializer.typedToString(u)),o=t.map(u=>this.serializer.typedToNative(u)[1]),s={};if(!e.results)return{values:a,results:s};let c=u=>{let p=u.split(".").slice(1).map(y=>parseInt(y)-1);if(p.length===0)return;let l=o[p[0]];for(let y=1;y<p.length;y++){if(l==null)return;l=l[p[y]]}return l};for(let[u,p]of Object.entries(e.results)){if(p.startsWith(_e.Transform.Prefix))continue;let l=ke(p);if(l!==null&&l!==r){s[u]=null;continue}p.startsWith("out.")||p==="out"||p.startsWith("out[")?s[u]=c(p)||null:s[u]=p}return{values:a,results:await N(e,s,r,n)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,u=this;async function p(f,v=[]){if(s.has(f))return s.get(f);if(c.has(f))throw new Error(`Circular dependency detected at action ${f}`);c.add(f);let W=t.actions[f-1];if(!W)throw new Error(`Action ${f} not found`);let E;if(W.type==="query")E=await n.executeQuery(t,f,v);else if(W.type==="collect")E=await n.executeCollect(t,f,v,o);else throw new Error(`Unsupported or interactive action type: ${W.type}`);if(s.set(f,E),t.results)for(let b of Object.values(t.results)){let g=String(b).match(/^out\[(\d+)\]/);if(g){let S=parseInt(g[1],10);S!==f&&!s.has(S)&&await p(S)}}return c.delete(f),E}await p(r,a);let l={};for(let f of s.values())for(let[v,W]of Object.entries(f.results))W!==null?l[v]=W:v in l||(l[v]=null);let y=await N(t,l,r,a);return{...s.get(r),action:r,results:y}}};var h=class i{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new A,this.abi=new I(this.config,this.chain,this.chainInfo),this.results=new V(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=te(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new Oe({chainID:e.chainInfo.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new Lt({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:e.value,data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=te(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new Oe({chainID:e.chainInfo.chainId});return new kt({config:o}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,nativeTransferAmount:e.value})}async executeQuery(e){let t=te(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(b=>this.serializer.stringToTyped(b)),a=i.getChainEntrypoint(e.chainInfo,this.config.env),o=F.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),u=await s.runQuery(c),p=u.returnCode==="ok",l=new Ut,y=r.getEndpoint(u.function||t.func||""),w=(u.returnDataParts||[]).map(b=>Buffer.from(b)),f=l.buffersToValues(w,y.output),{values:v,results:W}=await this.results.extractQueryResults(e.warp,f,e.action,e.resolvedInputs),E=Qt(this.config,[],e.warp,e.action,W);return{success:p,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:E,values:v,results:W,messages:Ht(e.warp,W)}}async preprocessInput(e,t,r,n){if(r==="esdt"){let[a,o,s,c]=n.split(Me.ArgCompositeSeparator);if(c)return t;let u=new Ot({identifier:a,nonce:BigInt(o)});if(!new Mt().isFungible(u))return t;let y=zt(a)?.decimals;if(y||(y=(await(await fetch(`${e.apiUrl}/tokens/${a}`)).json()).decimals),!y)throw new Error(`WarpActionExecutor: Decimals not found for token ${a}`);let w=le(new $t({token:u,amount:jt(s,y)}));return this.serializer.typedToString(w)+Me.ArgCompositeSeparator+y}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new Nt({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new _t({url:e.apiUrl,kind:"api",clientName:r}):new Pt({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=qt.fromString(t);return(await new Dt(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var P=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return $e.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return $e.error("WarpContractLoader: getVerificationInfo error",r),null}}};var I=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new P(this.config),this.cache=new Gt(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Kt.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return qe.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return qe.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.chainInfo);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return re.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Le.IdentifierType.Hash)){let t=e.abi.split(Le.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return re.create(r.content)}else{let r=await(await fetch(e.abi)).json();return re.create(r)}}};import{Address as De,TransactionsFactoryConfig as Jt,TransferTransactionsFactory as Xt}from"@multiversx/sdk-core";import{WarpBrandBuilder as Yt,WarpLogger as Zt}from"@vleap/warps";import{Buffer as er}from"buffer";var k=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new Yt(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new Jt({chainID:this.chainInfo.chainId}),n=new Xt({config:r}),a=De.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:De.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(er.from(o))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Zt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as He,TransactionsFactoryConfig as tr,TransferTransactionsFactory as rr}from"@multiversx/sdk-core";import{WarpBuilder as ze,WarpCache as nr,WarpCacheKey as ar,WarpLogger as Qe}from"@vleap/warps";var _=class extends ze{constructor(t,r,n){super(t);this.config=t;this.chain=r;this.chainInfo=n;this.cache=new nr(t.cache?.type),this.core=new ze(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let n=new tr({chainID:this.chainInfo.chainId}),a=new rr({config:n}),o=He.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:He.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=ar.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Qe.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Qe.error("WarpBuilder: Error creating from transaction hash",s),null}}};var O=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=oe[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=B[t];if(a)return a}if(e){let a=B[e];if(a)return a}let r=this.getPrimaryExplorer();return B[r]||B[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}`}getTokenUrl(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=B[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=B[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Je,Address as m,AddressValue as ae,BytesValue as d,SmartContractTransactionsFactory as sr,TransactionsFactoryConfig as or}from"@multiversx/sdk-core";import{WarpCache as cr,WarpCacheKey as ie,WarpLogger as se}from"@vleap/warps";var ne={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"}],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}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",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:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},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 je=(i,e,t)=>(r,n)=>{let a=t[r.env];return{chain:i,chainInfo:a,prefix:e,builder:()=>new _(r,i,a),executor:new h(r,i,a),results:new V(r,i),serializer:new A,registry:new M(r),explorer:new O(i,r),abiBuilder:()=>new I(r,i,a),brandBuilder:()=>new k(r,i,a)}};var Ge=je("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var $=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}),Ke=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var M=class{constructor(e){this.config=e;let t=Ge(e);this.chainInfo=t.chainInfo,this.cache=new cr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}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.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[d.fromHex(e),d.fromUTF8(t),d.fromHex(r)]:t?[d.fromHex(e),d.fromUTF8(t)]:[d.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:m.newFromBech32(T(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){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 r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromUTF8(e),d.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[d.fromHex(e),new ae(new m(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.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=ie.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return se.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=m.newFromBech32(T(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[d.fromUTF8(e)]}),c=await o.runQuery(s),[u]=o.parseQueryResponse(c),p=u?$(u):null,l=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:p,brand:l},t.ttl),{registryInfo:p,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=ie.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return se.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=m.newFromBech32(T(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[d.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),u=c?$(c):null,p=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:p},t.ttl),{registryInfo:u,brand:p}}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.newFromBech32(T(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new ae(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map($)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(T(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new ae(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(l=>l.toString("hex")),u={ttl:365*24*60*60};return(await Promise.all(c.map(l=>this.fetchBrand(l,u)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=ie.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return se.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=m.newFromBech32(T(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Ke(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new or({chainID:this.chainInfo.chainId}),t=Je.create(ne);return new sr({config:e,abi:t})}getController(){let e=h.getChainEntrypoint(this.chainInfo,this.config.env),t=Je.create(ne);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};export{B as ExplorerUrls,Xe as MultiversxExplorers,oe as MultiversxExplorersConfig,Ye as VibechainExplorers,I as WarpMultiversxAbiBuilder,k as WarpMultiversxBrandBuilder,_ as WarpMultiversxBuilder,pr as WarpMultiversxConstants,P as WarpMultiversxContractLoader,h as WarpMultiversxExecutor,O as WarpMultiversxExplorer,M as WarpMultiversxRegistry,V as WarpMultiversxResults,A as WarpMultiversxSerializer,Br as address_value,Ar as biguint_value,Ir as boolean_value,Fr as codemeta_value,Tr as composite_value,le as esdt_value,T as getMultiversxRegistryAddress,Sr as hex_value,wr as list_value,Rr as nothing_value,gr as option_value,hr as optional_value,xr as string_value,Vr as token_value,vr as u16_value,br as u32_value,Er as u64_value,Cr as u8_value,Wr as variadic_value};
|
|
1
|
+
import{AbiRegistry as ae}from"@multiversx/sdk-core";import{WarpCache as Gt,WarpCacheKey as Kt,WarpConstants as De,WarpLogger as He}from"@vleap/warps";import{WarpLogger as qe}from"@vleap/warps";import{Address as F,ArgSerializer as Ut,DevnetEntrypoint as Nt,MainnetEntrypoint as Pt,SmartContractTransactionsFactory as kt,TestnetEntrypoint as _t,Token as Ot,TokenComputer as Mt,TokenTransfer as $t,TransactionsFactoryConfig as $e,TransferTransactionsFactory as Lt,UserSecretKey as qt,UserSigner as Dt}from"@multiversx/sdk-core";import{applyResultsToMessages as Ht,findKnownTokenById as zt,getNextInfo as Qt,getWarpActionByIndex as ne,shiftBigintBy as jt,WarpConstants as Le}from"@vleap/warps";import{findEventsByFirstTopic as st,SmartContractTransactionsOutcomeParser as ot,TransactionEventsParser as ct}from"@multiversx/sdk-core";import{applyResultsToMessages as pt,evaluateResultsCommon as N,findWarpExecutableAction as Ue,getNextInfo as ut,parseResultsOutIndex as Ne,WarpCache as lt,WarpCacheKey as ft,WarpConstants as Pe}from"@vleap/warps";import{Address as Ze,AddressType as ue,AddressValue as le,BigUIntType as D,BigUIntValue as H,BooleanType as fe,BooleanValue as me,BytesType as de,BytesValue as ye,CodeMetadata as et,CodeMetadataType as ge,CodeMetadataValue as he,CompositeType as we,CompositeValue as We,Field as z,FieldDefinition as Q,List as xe,ListType as tt,NothingValue as T,OptionalType as rt,OptionalValue as j,OptionType as nt,OptionValue as G,StringType as Te,StringValue as ve,Struct as at,StructType as Ce,TokenIdentifierType as K,TokenIdentifierValue as J,U16Type as be,U16Value as Ee,U32Type as Ae,U32Value as Ie,U64Type as X,U64Value as Y,U8Type as Be,U8Value as Ve,VariadicType as Se,VariadicValue as Fe}from"@multiversx/sdk-core";import{WarpConstants as v,WarpSerializer as it}from"@vleap/warps";var Re=new RegExp(`${v.ArgParamsSeparator}(.*)`),A=class{constructor(){this.coreSerializer=new it}typedToString(e){if(e.hasClassOrSuperclass(G.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(j.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(xe.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[1]);return`list:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(Fe.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[1]);return`variadic:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(We.ClassName)){let t=e.getItems(),r=t.map(s=>this.typedToString(s).split(v.ArgParamsSeparator)[0]),n=t.map(s=>this.typedToString(s).split(v.ArgParamsSeparator)[1]),a=r.join(v.ArgCompositeSeparator),o=n.join(v.ArgCompositeSeparator);return`composite(${a}):${o}`}if(e.hasClassOrSuperclass(H.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(Ve.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ee.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ie.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Y.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(ve.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(me.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(le.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(J.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(ye.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(he.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),n=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${n}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new we(...t.split(v.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new Te;if(e==="uint8")return new Be;if(e==="uint16")return new be;if(e==="uint32")return new Ae;if(e==="uint64")return new X;if(e==="biguint")return new D;if(e==="bool")return new fe;if(e==="address")return new ue;if(e==="token")return new K;if(e==="hex")return new de;if(e==="codemeta")return new ge;if(e==="esdt"||e==="nft")return new Ce("EsdtTokenPayment",[new Q("token_identifier","",new K),new Q("token_nonce","",new X),new Q("amount","",new D)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new T;if(t==="option"){let n=this.stringToTyped(r);return n instanceof T?G.newMissingTyped(n.getType()):G.newProvided(n)}if(t==="optional"){let n=this.stringToTyped(r);return n instanceof T?j.newMissing():new j(n.getType(),n)}if(t==="list"){let[n,a]=r.split(Re,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new xe(this.nativeToType(n),s)}if(t==="variadic"){let[n,a]=r.split(Re,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Fe(new Se(this.nativeToType(n)),s)}if(t.startsWith("composite")){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(v.ArgCompositeSeparator),o=n.split(v.ArgCompositeSeparator),s=a.map((p,u)=>this.stringToTyped(`${o[u]}:${p}`)),c=s.map(p=>p.getType());return new We(new we(...c),s)}if(t==="string")return r?ve.fromUTF8(r):new T;if(t==="uint8")return r?new Ve(Number(r)):new T;if(t==="uint16")return r?new Ee(Number(r)):new T;if(t==="uint32")return r?new Ie(Number(r)):new T;if(t==="uint64")return r?new Y(BigInt(r)):new T;if(t==="biguint")return r?new H(BigInt(r)):new T;if(t==="bool")return r?new me(typeof r=="boolean"?r:r==="true"):new T;if(t==="address")return r?new le(Ze.newFromBech32(r)):new T;if(t==="token")return r?new J(r):new T;if(t==="hex")return r?ye.fromHex(r):new T;if(t==="codemeta")return new he(et.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let n=r.split(v.ArgCompositeSeparator);return new at(this.nativeToType("esdt"),[new z(new J(n[0]),"token_identifier"),new z(new Y(BigInt(n[1])),"token_nonce"),new z(new H(BigInt(n[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof nt)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof rt)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof tt)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Se)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Te)return"string";if(e instanceof Be)return"uint8";if(e instanceof be)return"uint16";if(e instanceof Ae)return"uint32";if(e instanceof X)return"uint64";if(e instanceof D)return"biguint";if(e instanceof fe)return"bool";if(e instanceof ue)return"address";if(e instanceof K)return"token";if(e instanceof de)return"hex";if(e instanceof ge)return"codemeta";if(e instanceof Ce&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var V=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new I(e,t,r),this.serializer=new A,this.cache=new lt(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=Ue(e),n=this.cache.get(ft.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=ut(this.config,[],e,r,a),s=pt(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:o,values:a.values,results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=Ue(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(w=>w.includes("out")||w.includes("event"))){for(let[w,f]of Object.entries(e.results))s[w]=f;return{values:o,results:await N(e,s,a,r)}}let p=await this.abi.getAbiForAction(n),u=new ct({abi:p}),y=new ot({abi:p}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[w,f]of Object.entries(e.results)){if(f.startsWith(Pe.Transform.Prefix))continue;if(f.startsWith("input.")){s[w]=f;continue}let C=Ne(f);if(C!==null&&C!==a){s[w]=null;continue}let[W,E,b]=f.split(".");if(W==="event"){if(!E||isNaN(Number(b)))continue;let R=Number(b),g=st(t,E),S=u.parseEvents({events:g})[0],U=Object.values(S)[R]||null;o.push(U),s[w]=U&&U.valueOf()}else if(W==="out"||W.startsWith("out[")){if(!E)continue;let R=Number(E),g=y.values[R-1]||null;b&&(g=g[b]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),o.push(g),s[w]=g&&g.valueOf()}else s[w]=f}return{values:o,results:await N(e,s,a,r)}}async extractQueryResults(e,t,r,n){let a=t.map(p=>this.serializer.typedToString(p)),o=t.map(p=>this.serializer.typedToNative(p)[1]),s={};if(!e.results)return{values:a,results:s};let c=p=>{let u=p.split(".").slice(1).map(y=>parseInt(y)-1);if(u.length===0)return;let l=o[u[0]];for(let y=1;y<u.length;y++){if(l==null)return;l=l[u[y]]}return l};for(let[p,u]of Object.entries(e.results)){if(u.startsWith(Pe.Transform.Prefix))continue;let l=Ne(u);if(l!==null&&l!==r){s[p]=null;continue}u.startsWith("out.")||u==="out"||u.startsWith("out[")?s[p]=c(u)||null:s[p]=u}return{values:a,results:await N(e,s,r,n)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,p=this;async function u(f,C=[]){if(s.has(f))return s.get(f);if(c.has(f))throw new Error(`Circular dependency detected at action ${f}`);c.add(f);let W=t.actions[f-1];if(!W)throw new Error(`Action ${f} not found`);let E;if(W.type==="query")E=await n.executeQuery(t,f,C);else if(W.type==="collect")E=await n.executeCollect(t,f,C,o);else throw new Error(`Unsupported or interactive action type: ${W.type}`);if(s.set(f,E),t.results)for(let b of Object.values(t.results)){let g=String(b).match(/^out\[(\d+)\]/);if(g){let S=parseInt(g[1],10);S!==f&&!s.has(S)&&await u(S)}}return c.delete(f),E}await u(r,a);let l={};for(let f of s.values())for(let[C,W]of Object.entries(f.results))W!==null?l[C]=W:C in l||(l[C]=null);let y=await N(t,l,r,a);return{...s.get(r),action:r,results:y}}};import{Address as mt,AddressValue as dt,BigUIntType as yt,BigUIntValue as ke,BooleanValue as gt,BytesValue as ht,CodeMetadata as wt,CodeMetadataValue as Wt,CompositeType as xt,CompositeValue as Tt,Field as Z,FieldDefinition as ee,List as vt,NothingValue as Ct,OptionalValue as te,OptionValue as re,StringValue as bt,Struct as Et,StructType as At,TokenIdentifierType as It,TokenIdentifierValue as _e,U16Value as Bt,U32Value as Vt,U64Type as St,U64Value as Oe,U8Value as Ft,VariadicValue as Rt}from"@multiversx/sdk-core";var qr=(i,e)=>i?re.newProvided(i):e?re.newMissingTyped(e):re.newMissing(),Dr=(i,e)=>i?new te(i.getType(),i):e?new te(e):te.newMissing(),Hr=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new vt(e,i)},zr=i=>Rt.fromItems(...i),Qr=i=>{let e=i.map(t=>t.getType());return new Tt(new xt(...e),i)},jr=i=>bt.fromUTF8(i),Gr=i=>new Ft(i),Kr=i=>new Bt(i),Jr=i=>new Vt(i),Xr=i=>new Oe(i),Yr=i=>new ke(BigInt(i)),Zr=i=>new gt(i),en=i=>new dt(mt.newFromBech32(i)),tn=i=>new _e(i),rn=i=>ht.fromHex(i),Me=i=>new Et(new At("EsdtTokenPayment",[new ee("token_identifier","",new It),new ee("token_nonce","",new St),new ee("amount","",new yt)]),[new Z(new _e(i.token.identifier),"token_identifier"),new Z(new Oe(BigInt(i.token.nonce)),"token_nonce"),new Z(new ke(BigInt(i.amount)),"amount")]),nn=i=>new Wt(wt.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),an=()=>new Ct;var h=class i{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new A,this.abi=new I(this.config,this.chain,this.chainInfo),this.results=new V(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=ne(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new $e({chainID:e.chainInfo.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new Lt({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:e.value,data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=ne(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new $e({chainID:e.chainInfo.chainId});return new kt({config:o}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,nativeTransferAmount:e.value})}async executeQuery(e){let t=ne(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(b=>this.serializer.stringToTyped(b)),a=i.getChainEntrypoint(e.chainInfo,this.config.env),o=F.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),p=await s.runQuery(c),u=p.returnCode==="ok",l=new Ut,y=r.getEndpoint(p.function||t.func||""),w=(p.returnDataParts||[]).map(b=>Buffer.from(b)),f=l.buffersToValues(w,y.output),{values:C,results:W}=await this.results.extractQueryResults(e.warp,f,e.action,e.resolvedInputs),E=Qt(this.config,[],e.warp,e.action,W);return{success:u,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:E,values:C,results:W,messages:Ht(e.warp,W)}}async preprocessInput(e,t,r,n){if(r==="esdt"){let[a,o,s,c]=n.split(Le.ArgCompositeSeparator);if(c)return t;let p=new Ot({identifier:a,nonce:BigInt(o)});if(!new Mt().isFungible(p))return t;let y=zt(a)?.decimals;if(y||(y=(await(await fetch(`${e.apiUrl}/tokens/${a}`)).json()).decimals),!y)throw new Error(`WarpActionExecutor: Decimals not found for token ${a}`);let w=Me(new $t({token:p,amount:jt(s,y)}));return this.serializer.typedToString(w)+Le.ArgCompositeSeparator+y}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new Nt({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new _t({url:e.apiUrl,kind:"api",clientName:r}):new Pt({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=qt.fromString(t);return(await new Dt(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var P=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return qe.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return qe.error("WarpContractLoader: getVerificationInfo error",r),null}}};var I=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new P(this.config),this.cache=new Gt(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Kt.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return He.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return He.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.chainInfo);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return ae.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(De.IdentifierType.Hash)){let t=e.abi.split(De.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return ae.create(r.content)}else{let r=await(await fetch(e.abi)).json();return ae.create(r)}}};import{Address as ze,TransactionsFactoryConfig as Jt,TransferTransactionsFactory as Xt}from"@multiversx/sdk-core";import{WarpBrandBuilder as Yt,WarpLogger as Zt}from"@vleap/warps";import{Buffer as er}from"buffer";var k=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new Yt(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new Jt({chainID:this.chainInfo.chainId}),n=new Xt({config:r}),a=ze.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:ze.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(er.from(o))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Zt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as Qe,TransactionsFactoryConfig as tr,TransferTransactionsFactory as rr}from"@multiversx/sdk-core";import{WarpBuilder as je,WarpCache as nr,WarpCacheKey as ar,WarpLogger as Ge}from"@vleap/warps";var _=class extends je{constructor(t,r,n){super(t);this.config=t;this.chain=r;this.chainInfo=n;this.cache=new nr(t.cache?.type),this.core=new je(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let n=new tr({chainID:this.chainInfo.chainId}),a=new rr({config:n}),o=Qe.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:Qe.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=ar.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Ge.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Ge.error("WarpBuilder: Error creating from transaction hash",s),null}}};var ya={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},ir=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(ir||{}),sr=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(sr||{}),Ke={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},B={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 O=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ke[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=B[t];if(a)return a}if(e){let a=B[e];if(a)return a}let r=this.getPrimaryExplorer();return B[r]||B[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}`}getTokenUrl(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=B[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=B[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Xe,Address as m,AddressValue as se,BytesValue as d,SmartContractTransactionsFactory as cr,TransactionsFactoryConfig as pr}from"@multiversx/sdk-core";import{WarpCache as ur,WarpCacheKey as oe,WarpLogger as ce}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"}],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}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",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:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var x=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var M=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}),Je=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var $=class{constructor(e){this.config=e;let t=L(e);this.chainInfo=t.chainInfo,this.cache=new ur(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}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.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[d.fromHex(e),d.fromUTF8(t),d.fromHex(r)]:t?[d.fromHex(e),d.fromUTF8(t)]:[d.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:m.newFromBech32(x(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(x(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){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 r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(x(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromUTF8(e),d.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(x(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(x(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(x(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[d.fromHex(e),new se(new m(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.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(x(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(x(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=oe.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return ce.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=m.newFromBech32(x(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[d.fromUTF8(e)]}),c=await o.runQuery(s),[p]=o.parseQueryResponse(c),u=p?M(p):null,l=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:l},t.ttl),{registryInfo:u,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=oe.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return ce.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=m.newFromBech32(x(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[d.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),p=c?M(c):null,u=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:p,brand:u},t.ttl),{registryInfo:p,brand:u}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new se(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map(M)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new se(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(l=>l.toString("hex")),p={ttl:365*24*60*60};return(await Promise.all(c.map(l=>this.fetchBrand(l,p)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=oe.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return ce.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=m.newFromBech32(x(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Je(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new pr({chainID:this.chainInfo.chainId}),t=Xe.create(ie);return new cr({config:e,abi:t})}getController(){let e=h.getChainEntrypoint(this.chainInfo,this.config.env),t=Xe.create(ie);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var q=(i,e,t)=>(r,n)=>{let a=t[r.env];return{chain:i,chainInfo:a,prefix:e,builder:()=>new _(r,i,a),executor:new h(r,i,a),results:new V(r,i,a),serializer:new A,registry:new $(r),explorer:new O(i,r),abiBuilder:()=>new I(r,i,a),brandBuilder:()=>new k(r,i,a)}};var L=q("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var pe={displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",apiUrl:"https://vibeox-api.multiversx.com",nativeToken:"VIBE"},Ye=q("vibechain","vibe",{mainnet:pe,testnet:pe,devnet:pe});var ti=(i,e)=>[L(i,e),Ye(i,e)];export{B as ExplorerUrls,ir as MultiversxExplorers,Ke as MultiversxExplorersConfig,sr as VibechainExplorers,I as WarpMultiversxAbiBuilder,k as WarpMultiversxBrandBuilder,_ as WarpMultiversxBuilder,ya as WarpMultiversxConstants,P as WarpMultiversxContractLoader,h as WarpMultiversxExecutor,O as WarpMultiversxExplorer,$ as WarpMultiversxRegistry,V as WarpMultiversxResults,A as WarpMultiversxSerializer,en as address_value,Yr as biguint_value,Zr as boolean_value,nn as codemeta_value,Qr as composite_value,q as createMultiversxAdapter,Me as esdt_value,ti as getAllMultiversxAdapters,L as getMultiversxAdapter,x as getMultiversxRegistryAddress,Ye as getVibechainAdapter,rn as hex_value,Hr as list_value,an as nothing_value,qr as option_value,Dr as optional_value,jr as string_value,tn as token_value,Kr as u16_value,Jr as u32_value,Xr as u64_value,Gr as u8_value,zr as variadic_value};
|