@joai/warps-adapter-multiversx 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var ht=Object.create;var Ee=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var yt=Object.getPrototypeOf,Wt=Object.prototype.hasOwnProperty;var wt=(c,e)=>{for(var t in e)Ee(c,t,{get:e[t],enumerable:!0})},He=(c,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ft(e))!Wt.call(c,n)&&n!==t&&Ee(c,n,{get:()=>e[n],enumerable:!(r=gt(e,n))||r.enumerable});return c};var Ct=(c,e,t)=>(t=c!=null?ht(yt(c)):{},He(e||!c||!c.__esModule?Ee(t,"default",{value:c,enumerable:!0}):t,c)),vt=c=>He(Ee({},"__esModule",{value:!0}),c);var Zt={};wt(Zt,{ClawsAdapter:()=>$e,ClawsExplorers:()=>Je,ExplorerUrls:()=>z,KnownTokens:()=>Ve,MultiversxAdapter:()=>Ke,MultiversxExplorers:()=>Qe,MultiversxExplorersConfig:()=>ke,NativeTokenClaw:()=>dt,NativeTokenEgld:()=>Ie,WarpMultiversxAbiBuilder:()=>$,WarpMultiversxBrandBuilder:()=>ue,WarpMultiversxBuilder:()=>me,WarpMultiversxConstants:()=>xt,WarpMultiversxContractLoader:()=>pe,WarpMultiversxDataLoader:()=>de,WarpMultiversxExecutor:()=>he,WarpMultiversxExplorer:()=>ge,WarpMultiversxInputTypes:()=>A,WarpMultiversxOutput:()=>te,WarpMultiversxRegistry:()=>ye,WarpMultiversxSerializer:()=>L,WarpMultiversxWallet:()=>Ce,address_value:()=>zt,asset_value:()=>Jt,biguint_value:()=>Ht,boolean_value:()=>Gt,codemeta:()=>Ut,codemeta_value:()=>Xt,composite_value:()=>Dt,createMultiversxAdapter:()=>ve,findKnownTokenById:()=>Re,getAllMultiversxAdapters:()=>Nt,getAllMultiversxChainNames:()=>Tt,getKnownTokensForChain:()=>bt,getMultiversxEntrypoint:()=>x,getMultiversxRegistryAddress:()=>U,getNormalizedTokenIdentifier:()=>le,hex_value:()=>Qt,isNativeToken:()=>Y,list:()=>Ot,list_value:()=>Vt,nothing_value:()=>Yt,option_value:()=>kt,optional:()=>Ft,optional_value:()=>Mt,string_value:()=>Lt,toTypedConfigInfo:()=>Le,toTypedRegistryInfo:()=>fe,token:()=>Bt,token_value:()=>jt,u16_value:()=>_t,u32_value:()=>$t,u64_value:()=>qt,u8_value:()=>Kt,variadic_value:()=>Rt});module.exports=vt(Zt);var Fe=require("@joai/warps"),Tt=()=>[Fe.WarpChainName.Multiversx,Fe.WarpChainName.Claws];var mt=require("@joai/warps");var S=require("@multiversx/sdk-core"),I=require("@joai/warps");var se=require("@multiversx/sdk-core"),Ge=require("@joai/warps"),Y=c=>!c.includes("-"),le=c=>Y(c)?`${c}-000000`:c,x=(c,e,t)=>{let r="warp-sdk",s=t?(0,Ge.getProviderConfig)(t,c.name,e,c.defaultApiUrl):{url:c.defaultApiUrl},i=s.url,o={headers:s.headers};return e==="devnet"?new se.DevnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o}):e==="testnet"?new se.TestnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o}):new se.MainnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o})};var Oe=require("@joai/warps");var pe=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await x(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return Oe.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await x(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return Oe.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var a=require("@multiversx/sdk-core"),Xe=require("@joai/warps");var At=c=>c?typeof c=="string"?c:c.address:null,ze=(c,e)=>At(c.user?.wallets?.[e]||null);var je=(r=>(r.Macos="macos",r.Linux="linux",r.Windows="windows",r))(je||{}),gr=Object.values(je);var f={HttpProtocolPrefix:"https://",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:c=>ze(c.config,c.adapter.chainInfo.name)},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:c=>{if(!c.adapter.wallet)return null;try{return c.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:c=>c.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:c=>c.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},m={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex"};var xt={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},A={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},Qe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Qe||{}),Je=(r=>(r.ClawsExplorer="claws_explorer",r.ClawsExplorerDevnet="claws_explorer_devnet",r.ClawsExplorerTestnet="claws_explorer_testnet",r))(Je||{}),ke={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},claws:{mainnet:["claws_explorer"],testnet:["claws_explorer_testnet"],devnet:["claws_explorer_devnet"]}},z={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://bon-explorer.multiversx.com",claws_explorer:"https://explorer.claws.network",claws_explorer_devnet:"https://explorer.claws.network",claws_explorer_testnet:"https://explorer.claws.network"};var Et=new RegExp(`${f.ArgParamsSeparator}(.*)`),L=class{constructor(e){this.coreSerializer=new Xe.WarpSerializer(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(a.OptionType.ClassName)||e.hasClassOrSuperclass(a.OptionValue.ClassName)){if(!e.isSet())return m.Option+f.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return m.Option+f.ArgParamsSeparator+r}if(t.hasExactClass(a.VariadicType.ClassName)||e.hasClassOrSuperclass(a.VariadicValue.ClassName)){let r=e.getItems();if(r.length===0){let p=this.typeToString(t.getFirstTypeParameter());return m.Vector+f.ArgParamsSeparator+p+f.ArgParamsSeparator}let n=r.map(p=>this.typedToString(p));if(n.every(p=>p.startsWith(m.Tuple)))return m.Vector+f.ArgParamsSeparator+n.join(",");let s=n[0],i=s.indexOf(f.ArgParamsSeparator),o=s.substring(0,i),l=n.map(p=>{let d=p.indexOf(f.ArgParamsSeparator);return p.substring(d+1)}),g=o.startsWith(m.Struct)?f.ArgStructSeparator:f.ArgListSeparator;return m.Vector+f.ArgParamsSeparator+o+f.ArgParamsSeparator+l.join(g)}if(t.hasExactClass(a.OptionalType.ClassName)||e.hasClassOrSuperclass(a.OptionalValue.ClassName)){if(!e.isSet())return A.Optional+f.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return A.Optional+f.ArgParamsSeparator+r}if(t.hasExactClass(a.ListType.ClassName)||e.hasClassOrSuperclass(a.List.ClassName)){let n=e.getItems().map(l=>this.typedToString(l));if(n.every(l=>l.startsWith(m.Tuple)))return A.List+f.ArgParamsSeparator+n.join(",");let i=n.map(l=>l.split(f.ArgParamsSeparator)[0])[0],o=n.map(l=>l.split(f.ArgParamsSeparator)[1]);return A.List+f.ArgParamsSeparator+i+f.ArgParamsSeparator+o.join(f.ArgListSeparator)}if(t.hasExactClass(a.CompositeType.ClassName)||e.hasClassOrSuperclass(a.CompositeValue.ClassName)){let n=e.getItems().map(s=>{let i=this.typedToString(s),o=i.indexOf(f.ArgParamsSeparator),l=i.substring(0,o),g=i.substring(o+1);return`${l},${g}`});return`${m.Tuple}(${n.join(",")})`}if(t.hasExactClass(a.BigUIntType.ClassName)||e.hasClassOrSuperclass(a.BigUIntValue.ClassName)||t.getName()==="BigUint")return m.Biguint+f.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.U8Type.ClassName)||e.hasClassOrSuperclass(a.U8Value.ClassName))return m.Uint8+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U16Type.ClassName)||e.hasClassOrSuperclass(a.U16Value.ClassName))return m.Uint16+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U32Type.ClassName)||e.hasClassOrSuperclass(a.U32Value.ClassName))return m.Uint32+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U64Type.ClassName)||e.hasClassOrSuperclass(a.U64Value.ClassName))return m.Uint64+f.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.StringType.ClassName)||e.hasClassOrSuperclass(a.StringValue.ClassName))return m.String+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.BooleanType.ClassName)||e.hasClassOrSuperclass(a.BooleanValue.ClassName))return m.Bool+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.AddressType.ClassName)||e.hasClassOrSuperclass(a.AddressValue.ClassName))return m.Address+f.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(a.BytesType.ClassName)||e.hasClassOrSuperclass(a.BytesValue.ClassName))return m.Hex+f.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),s=e.getFieldValue("amount").valueOf(),o=new a.TokenComputer().computeExtendedIdentifier(new a.Token({identifier:r,nonce:BigInt(n)}));return m.Asset+f.ArgParamsSeparator+o+f.ArgCompositeSeparator+s}if(t.hasExactClass(a.StructType.ClassName)||e.hasClassOrSuperclass(a.Struct.ClassName)){let r=e,s=r.getType().getName(),i=r.getFields();if(i.length===0)return`${m.Struct}(${s})${f.ArgParamsSeparator}`;let o=i.map(l=>{let g=l.value.getType(),d=this.typedToString(l.value).split(f.ArgParamsSeparator),y=d.length>2?d.slice(2).join(f.ArgParamsSeparator):d[1]||"";return`(${l.name}${f.ArgParamsSeparator}${this.typeToString(g)})${y}`});return`${m.Struct}(${s})${f.ArgParamsSeparator}${o.join(f.ArgListSeparator)}`}if(t.hasExactClass(a.EnumType.ClassName)||e.hasClassOrSuperclass(a.EnumValue.ClassName)){let r=e;return`enum(${r.getType().getName()})${f.ArgParamsSeparator}${r.discriminant}`}if(t.hasExactClass(a.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(a.TokenIdentifierValue.ClassName))return A.Token+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(a.CodeMetadataValue.ClassName))return A.CodeMeta+f.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){if(e.startsWith(m.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(m.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let s=0;s<r.length;s+=2)n.push(r[s]);return new a.CompositeType(...n.map(s=>this.nativeToType(s)))}if(e.startsWith(m.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new a.StructType(r,[])}if(e===m.String)return new a.StringType;if(e===m.Uint8)return new a.U8Type;if(e===m.Uint16)return new a.U16Type;if(e===m.Uint32)return new a.U32Type;if(e===m.Uint64)return new a.U64Type;if(e===m.Biguint)return new a.BigUIntType;if(e===m.Bool)return new a.BooleanType;if(e===m.Address)return new a.AddressType;if(e===m.Hex)return new a.BytesType;if(e===m.Asset)return new a.StructType("EsdtTokenPayment",[new a.FieldDefinition("token_identifier","",new a.TokenIdentifierType),new a.FieldDefinition("token_nonce","",new a.U64Type),new a.FieldDefinition("amount","",new a.BigUIntType)]);if(e.startsWith("enum")){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Enum type must include a name in the format enum(Name)");return new a.EnumType(t[1],[])}if(e===A.Token)return new a.TokenIdentifierType;if(e===A.CodeMeta)return new a.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===m.Option){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionValue.newMissingTyped(n.getType()):a.OptionValue.newProvided(n)}if(t===m.Vector){let n=r.indexOf(f.ArgParamsSeparator),s=r.substring(0,n),i=r.substring(n+1);if(s.startsWith(m.Tuple)){let d=i.split(",").map(y=>this.stringToTyped(y));return new a.VariadicValue(new a.VariadicType(this.nativeToType(s)),d)}if(i.includes("tuple(")){let p=this.splitTupleStrings(i),d=p.map(V=>this.stringToTyped(V)),W=p[0].match(/^(tuple\([^)]+\))/),C=W?W[1]:"tuple";return new a.VariadicValue(new a.VariadicType(this.nativeToType(C)),d)}let o=s.startsWith(m.Struct)?f.ArgStructSeparator:f.ArgListSeparator,g=i.split(o).map(p=>this.stringToTyped(`${s}:${p}`));return new a.VariadicValue(new a.VariadicType(this.nativeToType(s)),g)}if(t.startsWith(m.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let s=n.split(","),i=[];for(let l=0;l<s.length;l+=2){let g=s[l],p=s[l+1];i.push(this.stringToTyped(`${g}:${p}`))}let o=i.map(l=>l.getType());return new a.CompositeValue(new a.CompositeType(...o),i)}if(t.startsWith(m.Struct)){let n=t.match(/\(([^)]+)\)/),s=n?n[1]:"CustomStruct";if(!r)return new a.Struct(new a.StructType(s,[]),[]);let i=r.split(f.ArgListSeparator),o=[],l=[];return i.forEach(g=>{let p=g.match(new RegExp(`^\\(([^${f.ArgParamsSeparator}]+)${f.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(p){let[,d,y,W]=p,C=this.stringToTyped(`${y}${f.ArgParamsSeparator}${W}`);o.push(new a.FieldDefinition(d,"",C.getType())),l.push(new a.Field(C,d))}}),new a.Struct(new a.StructType(s,o),l)}if(t===m.String)return r?a.StringValue.fromUTF8(r):new a.NothingValue;if(t===m.Uint8)return r?new a.U8Value(Number(r)):new a.NothingValue;if(t===m.Uint16)return r?new a.U16Value(Number(r)):new a.NothingValue;if(t===m.Uint32)return r?new a.U32Value(Number(r)):new a.NothingValue;if(t===m.Uint64)return r?new a.U64Value(BigInt(r)):new a.NothingValue;if(t===m.Biguint)return r?new a.BigUIntValue(BigInt(r)):new a.NothingValue;if(t===m.Bool)return r?new a.BooleanValue(typeof r=="boolean"?r:r==="true"):new a.NothingValue;if(t===m.Address)return r?new a.AddressValue(a.Address.newFromBech32(r)):new a.NothingValue;if(t===m.Hex)return r?a.BytesValue.fromHex(r):new a.NothingValue;if(t===m.Asset){let[n,s]=r.split(f.ArgCompositeSeparator),i=new a.TokenComputer,o=Y(n)?le(n):i.extractIdentifierFromExtendedIdentifier(n),l=Y(n)?0n:i.extractNonceFromExtendedIdentifier(n);return new a.Struct(this.nativeToType("asset"),[new a.Field(new a.TokenIdentifierValue(o),"token_identifier"),new a.Field(new a.U64Value(BigInt(l)),"token_nonce"),new a.Field(new a.BigUIntValue(BigInt(s)),"amount")])}if(t===A.Null)return new a.NothingValue;if(t===A.Optional){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionalValue.newMissing():new a.OptionalValue(n.getType(),n)}if(t===A.List){let[n,s]=r.split(Et,2),o=s.split(f.ArgListSeparator).map(l=>this.stringToTyped(n+f.ArgParamsSeparator+l));return new a.List(this.nativeToType(n),o)}if(t===A.Token)return r?new a.TokenIdentifierValue(r):new a.NothingValue;if(t===A.CodeMeta)return new a.CodeMetadataValue(a.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t.startsWith("enum")){let n=t.match(/\(([^)]+)\)/),s=n?n[1]:"CustomEnum",i=Number(r);if(isNaN(i))throw new Error(`WarpArgSerializer (stringToTyped): Invalid enum discriminant: ${r}`);let o=new a.EnumVariantDefinition(r,i,[]),l=new a.EnumType(s,[o]);return new a.EnumValue(l,o,[])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let s=0;s<e.length;s++){let i=e[s];if(i==="(")n++;else if(i===")")n--;else if(i===","&&n===0){t.push(r.trim()),r="";continue}r+=i}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(a.OptionType.ClassName))return m.Option+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.VariadicType.ClassName))return m.Vector+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.StringType.ClassName))return m.String;if(e.hasExactClass(a.U8Type.ClassName))return m.Uint8;if(e.hasExactClass(a.U16Type.ClassName))return m.Uint16;if(e.hasExactClass(a.U32Type.ClassName))return m.Uint32;if(e.hasExactClass(a.U64Type.ClassName))return m.Uint64;if(e.hasExactClass(a.BigUIntType.ClassName))return m.Biguint;if(e.hasExactClass(a.BooleanType.ClassName))return m.Bool;if(e.hasExactClass(a.AddressType.ClassName))return m.Address;if(e.hasExactClass(a.BytesType.ClassName))return m.Hex;if(e.hasExactClass(a.TokenIdentifierType.ClassName))return A.Token;if(e.hasExactClass(a.OptionalType.ClassName))return A.Optional+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.ListType.ClassName))return A.List+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.CodeMetadataType.ClassName))return A.CodeMeta;if(e.hasExactClass(a.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return m.Asset;if(e.hasExactClass(a.StructType.ClassName))return`${m.Struct}(${e.getName()})`;if(e.hasExactClass(a.EnumType.ClassName))return`enum(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var $=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new pe(this.config),this.cache=new I.WarpCache(this.config.env,this.config.cache)}async createInscriptionTransaction(e){let t=(0,I.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new S.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new S.TransferTransactionsFactory({config:r}),s=S.Address.newFromBech32(t),i={protocol:(0,I.getLatestProtocolIdentifier)("abi"),content:e},o=JSON.stringify(i),l=await n.createTransactionForTransfer(s,{receiver:s,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,identifier:(0,I.createWarpIdentifier)(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=I.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let i=await this.cache.get(r);if(i)return I.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),i}let s=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(e),o=await this.createFromTransaction(i);return t&&t.ttl&&o&&await this.cache.set(r,o,t.ttl),o}catch(i){return I.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",i),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return S.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(I.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(I.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return S.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return S.AbiRegistry.create(r)}}endpointsToWarps(e,t,r){let n=new L,s=r?btoa(JSON.stringify(r)):void 0;return e.getEndpoints().map(i=>{let o=i.modifiers.isReadonly(),l=i.input.map((p,d)=>{let y={name:p.name,type:n.typeToString(p.type),position:`arg:${d+1}`,source:"field",required:!p.type.hasClassOrSuperclass(S.OptionalType.ClassName)&&!p.type.hasClassOrSuperclass(S.OptionType.ClassName)};if(p.type.hasExactClass(S.EnumType.ClassName)){let W=p.type;y.options=Object.fromEntries(W.variants.map(C=>[String(C.discriminant),C.name]))}return y}),g=o?{type:"query",label:i.name,address:t,func:i.name,args:[],abi:s,inputs:l}:{type:"contract",label:i.name,address:t,func:i.name,args:[],gasLimit:1e7,abi:s,inputs:l};return{protocol:(0,I.getLatestProtocolIdentifier)("warp"),name:i.name,title:i.name,description:null,chain:this.chain.name,actions:[g]}})}};var Z=require("@multiversx/sdk-core"),j=require("@joai/warps"),Ye=require("buffer");var ue=class{constructor(e,t){this.config=e;this.chain=t;this.core=new j.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,j.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Z.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new Z.TransferTransactionsFactory({config:r}),s=Z.Address.newFromBech32(t),i=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(s,{receiver:Z.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ye.Buffer.from(i))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:(0,j.createWarpIdentifier)(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return j.WarpLogger.error("BrandBuilder: Error creating from transaction hash",n),null}}};var ee=require("@multiversx/sdk-core"),F=require("@joai/warps");var me=class extends F.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new F.WarpCache(t.env,t.cache),this.core=new F.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,F.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new ee.TransactionsFactoryConfig({chainID:this.chain.chainId}),s=new ee.TransferTransactionsFactory({config:n}),i=ee.Address.newFromBech32(r),o=JSON.stringify(t),l=await s.createTransactionForTransfer(i,{receiver:ee.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 n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:(0,F.createWarpIdentifier)(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=F.WarpCacheKey.Warp(this.config.env,t);if(r){let o=await this.cache.get(n);if(o)return F.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let i=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(t),l=await this.createFromTransaction(o);return r&&r.ttl&&l&&await this.cache.set(n,l,r.ttl),l}catch(o){return F.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var Q=require("@multiversx/sdk-core"),q=require("@joai/warps");var Me=require("@joai/warps");var et=require("@joai/warps"),Ze=et.WarpChainName.Multiversx,tt=[{chain:Ze,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ze,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var rt=require("@joai/warps"),B=rt.WarpChainName.Multiversx,nt=[{chain:B,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:B,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:B,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:B,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:B,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:B,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:B,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:B,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:B,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:B,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:B,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:B,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:B,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:B,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:B,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var st=require("@joai/warps"),at=st.WarpChainName.Multiversx,it=[{chain:at,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:at,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var ct=require("@joai/warps"),ot=ct.WarpChainName.Claws,be=[{chain:ot,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},{chain:ot,identifier:"CLAW-000000",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"}];var Ve={[Me.WarpChainName.Multiversx]:{mainnet:nt,testnet:it,devnet:tt},[Me.WarpChainName.Claws]:{mainnet:be,testnet:be,devnet:be}},Re=(c,e,t)=>(Ve[c]?.[e]||[]).find(n=>n.identifier===t)||null,bt=(c,e)=>Ve[c]?.[e]||[];var de=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new q.WarpCache(e.env,e.cache)}async getAccount(e){let r=await x(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(Q.Address.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=x(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(Q.Address.newFromBech32(e)),n=t.getFungibleTokensOfAccount(Q.Address.newFromBech32(e)),[s,i]=await Promise.all([r,n]),o=s.balance>0?[{...this.chain.nativeToken,amount:s.balance}]:[];return o.push(...i.map(l=>({chain:this.chain.name,identifier:l.token.identifier,name:l.raw.name,symbol:l.raw.ticker,amount:l.amount,decimals:l.raw.decimals,logoUrl:l.raw.assets?.pngUrl||"",price:l.raw.price?Number(l.raw.price):void 0,supply:l.raw.supply?BigInt(l.raw.supply):void 0}))),o}async getAccountNfts(e,t){let r=t?.size||25,n=t?.page||0,s=q.WarpCacheKey.AccountNfts(this.config.env,this.chain.name,e,n,r),i=await this.cache.get(s);if(i)return i;let o=x(this.chain,this.config.env,this.config).createNetworkProvider(),l=n*r,g=new URLSearchParams({size:r.toString(),from:l.toString()}),p=await o.doGetGeneric(`accounts/${e}/nfts?${g.toString()}`);if(!Array.isArray(p))return[];let d=p.filter(y=>y.type!=="MetaESDT").map(y=>({chain:this.chain.name,identifier:y.identifier,name:y.name||y.identifier,symbol:y.ticker||y.collection||"",amount:y.balance?BigInt(y.balance):1n,decimals:0,type:y.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:y.collection,nonce:y.nonce?BigInt(y.nonce):void 0,mediaUrl:Pe(y.url||y.media?.[0]?.url),thumbnailUrl:Pe(y.thumbnailUrl||y.media?.[0]?.thumbnailUrl),attributes:Array.isArray(y.metadata?.attributes)?Object.fromEntries(y.metadata.attributes.map(W=>[W.trait_type,String(W.value)])):void 0,royalties:y.royalties?Number(y.royalties)/100:void 0,rank:y.rank,creator:y.creator}}));return await this.cache.set(s,d,5*q.CacheTtl.OneMinute),d}async getAsset(e){let t=q.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=await this.cache.get(t);if(r)return r;let n=Re(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let s=new Q.TokenComputer,i=Y(e)?0n:s.extractNonceFromExtendedIdentifier(e),o=new Q.Token({identifier:e,nonce:BigInt(i||0)}),l=s.isFungible(o),g=x(this.chain,this.config.env,this.config).createNetworkProvider();if(!l&&i>0n){let W=await g.doGetGeneric(`nfts/${e}`),C={chain:this.chain.name,identifier:e,name:W.name||e,symbol:W.ticker||W.collection||"",amount:0n,decimals:0,type:W.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:W.collection,nonce:W.nonce?BigInt(W.nonce):void 0,mediaUrl:Pe(W.url||W.media?.[0]?.url),thumbnailUrl:Pe(W.thumbnailUrl||W.media?.[0]?.thumbnailUrl),creator:W.creator}};return await this.cache.set(t,C,q.CacheTtl.OneHour),C}let p=le(e),d=await g.doGetGeneric(`tokens/${p}`),y={chain:this.chain.name,identifier:o.identifier,name:d.name,symbol:d.ticker,amount:0n,decimals:d.decimals,logoUrl:d.assets?.pngUrl||null,price:d.price?Number(d.price):void 0,supply:d.supply?BigInt(d.supply):void 0};return await this.cache.set(t,y,q.CacheTtl.OneHour),y}async getAction(e,t=!1){let r=x(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(s=>s.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=x(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,s=new URLSearchParams,i=t?.size||25,o=t?.page||0;if(o>0){let g=o*i;s.append("from",g.toString())}return i!==25&&s.append("size",i.toString()),s.toString()&&(n+=`?${s.toString()}`),(await r.doGetGeneric(n)).map(g=>({chain:this.chain.name,id:g.txHash,receiver:g.receiver,sender:g.sender,value:g.value,function:g.function,status:this.toActionStatus(g),createdAt:this.toActionCreatedAt(g)}))}toActionStatus(e){return e.status?.isSuccessful?.()?"success":e.status?.isFailed?.()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}},Pt="https://ipfs.io/ipfs/",Pe=c=>{if(c)return c.startsWith("ipfs://")?Pt+c.slice(7):c};var T=require("@multiversx/sdk-core"),O=require("@joai/warps");var E=require("@joai/warps"),H=require("@multiversx/sdk-core");var te=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new $(e,t),this.serializer=new L({typeRegistry:this.typeRegistry})}async getActionExecution(e,t,r,n){let s=n??[],i=await this.extractContractOutput(e,t,r,s),o=Object.fromEntries(s.map(p=>[p.input.as||p.input.name,p.value])),l=(0,E.applyOutputToMessages)(e,{...o,...i.output},this.config),g=(0,E.extractResolvedInputValues)(s);return{status:r.status?.isSuccessful?.()?"success":"error",warp:e,action:t,user:(0,E.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:r.hash,tx:r,next:null,values:i.values,output:i.output,messages:l,destination:null,resolvedInputs:g}}async extractContractOutput(e,t,r,n){let s=(0,E.getWarpActionByIndex)(e,t),i=[],o=[],l={};if(!e.output||s.type!=="contract")return{values:{string:i,native:o,mapped:{}},output:l};let g=r.hash,p=v=>{l[v]=g,i.push(String(g)),o.push(g)};if(!Object.values(e.output).some(v=>v.startsWith("event.")||v.startsWith("out.")||v.startsWith("out["))){for(let[v,w]of Object.entries(e.output))if(!w.startsWith(E.WarpConstants.Transform.Prefix)){if(w==="out"){p(v);continue}l[v]=w}return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let y=s.abi?null:this.tryExtractBuiltInFunctionOutput(s,r);if(y){for(let[v,w]of Object.entries(e.output))w.startsWith(E.WarpConstants.Transform.Prefix)||(w==="out"?p(v):w==="out.1"?(l[v]=y.nftIdentifier,y.nftIdentifier&&(i.push(y.nftIdentifier),o.push(y.nftIdentifier))):l[v]=w);return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let W=s.abi?null:this.tryExtractSystemScOutput(s,r);if(W){let v=W.tokenIdentifier;for(let[w,X]of Object.entries(e.output))X.startsWith(E.WarpConstants.Transform.Prefix)||(X==="out"?p(w):X==="out.1"?(l[w]=v,v&&(i.push(v),o.push(v))):l[w]=X);return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let C=await this.abi.getAbiForAction(s),V=new H.TransactionEventsParser({abi:C}),M=new H.SmartContractTransactionsOutcomeParser({abi:C}),K=null,ce=!1,Te=()=>(ce||(ce=!0,K=M.parseExecute({transactionOnNetwork:r,function:s.func||void 0})),K);for(let[v,w]of Object.entries(e.output)){if(w.startsWith(E.WarpConstants.Transform.Prefix))continue;if(w.startsWith("input.")){l[v]=w;continue}if(w==="out"){p(v);continue}let X=(0,E.parseOutputOutIndex)(w);if(X!==null&&X!==t){l[v]=null;continue}let[Ne,Ae,xe,qe]=w.split(".");if(Ne==="event"){if(!Ae||isNaN(Number(xe)))continue;let Be=Number(xe),Ue=(0,H.findEventsByFirstTopic)(r,Ae),P=V.parseEvents({events:Ue})[0];if(!P||typeof P!="object"){l[v]=null;continue}let N=Object.values(P)[Be]||null;N&&qe&&typeof N=="object"&&(N=N[qe]??null),N&&typeof N=="object"&&(N="toFixed"in N?N.toFixed():N.valueOf()),i.push(String(N)),o.push(N),l[v]=N&&N.valueOf()}else if(Ne==="out"||Ne.startsWith("out[")){if(!Ae)continue;let Be=Te(),Ue=Number(Ae),P=Be.values[Ue-1]||null;xe&&(P=P[xe]||null),P&&typeof P=="object"&&(P="toFixed"in P?P.toFixed():P.valueOf()),i.push(String(P)),o.push(P),l[v]=P&&P.valueOf()}else l[v]=w}return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let s=t.map(p=>this.serializer.typedToString(p)),i=t.map(p=>this.serializer.typedToNative(p)[1]),o={string:s,native:i,mapped:{}},l={};if(!e.output)return{values:o,output:l};let g=p=>{let d=p.split(".").slice(1).map(W=>parseInt(W)-1);if(d.length===0)return;let y=i[d[0]];for(let W=1;W<d.length;W++){if(y==null)return;y=y[d[W]]}return y};for(let[p,d]of Object.entries(e.output)){if(d.startsWith(E.WarpConstants.Transform.Prefix))continue;let y=(0,E.parseOutputOutIndex)(d);if(y!==null&&y!==r){l[p]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?l[p]=g(d)||null:l[p]=d}return l=await(0,E.evaluateOutputCommon)(e,l,i,r,n,this.serializer.coreSerializer,this.config),{values:o,output:l}}tryExtractBuiltInFunctionOutput(e,t){if(e.func!=="ESDTNFTCreate")return null;try{let s=new H.TokenManagementTransactionsOutcomeParser().parseNftCreate(t)[0];if(!s)return{nftIdentifier:null};let i=s.nonce.toString(16),o=i.length%2!==0?"0"+i:i;return{nftIdentifier:`${s.tokenIdentifier}-${o}`}}catch{return{nftIdentifier:null}}}tryExtractSystemScOutput(e,t){if(e.address!=="erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"||!e.func)return null;let s={issue:(i,o)=>i.parseIssueFungible(o),issueNonFungible:(i,o)=>i.parseIssueNonFungible(o),issueSemiFungible:(i,o)=>i.parseIssueSemiFungible(o),registerMetaESDT:(i,o)=>i.parseRegisterMetaEsdt(o),registerAndSetAllRoles:(i,o)=>i.parseRegisterAndSetAllRoles(o)}[e.func];if(!s)return null;try{return{tokenIdentifier:s(new H.TokenManagementTransactionsOutcomeParser,t)[0]?.tokenIdentifier||null}}catch{return{tokenIdentifier:null}}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,s=e.inputs,i=e.meta,o=new Map,l=new Set,g=this;async function p(C,V=[]){if(o.has(C))return o.get(C);if(l.has(C))throw new Error(`Circular dependency detected at action ${C}`);l.add(C);let M=t.actions[C-1];if(!M)throw new Error(`Action ${C} not found`);let K;if(M.type==="query")K=await n.executeQuery(t,C,V);else if(M.type==="collect")K=await n.executeCollect(t,C,V,i);else throw new Error(`Unsupported or interactive action type: ${M.type}`);if(o.set(C,K),t.output)for(let ce of Object.values(t.output)){let v=String(ce).match(/^out\[(\d+)\]/);if(v){let w=parseInt(v[1],10);w!==C&&!o.has(w)&&await p(w)}}return l.delete(C),K}await p(r,s);let d={};for(let C of o.values())for(let[V,M]of Object.entries(C.output))M!==null?d[V]=M:V in d||(d[V]=null);let y=await(0,E.evaluateOutputCommon)(t,d,d,r,s,this.serializer.coreSerializer,this.config);return{...o.get(r),action:r,output:y}}};var It="EGLD-000000",he=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new L({typeRegistry:this.typeRegistry}),this.abi=new $(this.config,this.chain),this.output=new te(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=(0,O.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 this.chain.minGasPrice&&(r.gasPrice=this.chain.minGasPrice),r}async createTransferTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=T.Address.newFromBech32(t),n=new T.TransactionsFactoryConfig({chainID:e.chain.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,i=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,l=(i?e.transfers[0].amount:0n)+e.value;return await new T.TransferTransactionsFactory({config:n}).createTransactionForTransfer(r,{receiver:T.Address.newFromBech32(e.destination),nativeAmount:l,tokenTransfers:i?[]:this.toTokenTransfers(e.transfers),data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,O.getWarpActionByIndex)(e.warp,e.action),n=T.Address.newFromBech32(t),s=e.args.map(o=>this.serializer.stringToTyped(o)),i=new T.TransactionsFactoryConfig({chainID:e.chain.chainId});return new T.SmartContractTransactionsFactory({config:i}).createTransactionForExecute(n,{contract:T.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=(0,O.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(w=>this.serializer.stringToTyped(w)),s=x(e.chain,this.config.env,this.config),i=T.Address.newFromBech32(e.destination),o=s.createSmartContractController(r),l=o.createQuery({contract:i,function:t.func||"",arguments:n}),g=await o.runQuery(l),p=g.returnCode==="ok",d=new T.ArgSerializer,y=r.getEndpoint(g.function||t.func||""),W=(g.returnDataParts||[]).map(w=>Buffer.from(w)),C=d.buffersToValues(W,y.output),{values:V,output:M}=await this.output.extractQueryOutput(e.warp,C,e.action,e.resolvedInputs),K=(0,O.getNextInfo)(this.config,[],e.warp,e.action,M),Te=e.resolvedInputs.find(w=>w.input.position==="receiver"||w.input.position==="destination")?.value||e.destination,v=(0,O.extractResolvedInputValues)(e.resolvedInputs);return{status:p?"success":"error",warp:e.warp,action:e.action,user:(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:K,values:V,output:{...M,_DATA:C},messages:(0,O.applyOutputToMessages)(e.warp,M,this.config),destination:Te,resolvedInputs:v}}async createDeployTransaction(e){let t=T.Address.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),s=BigInt(n.nonce||0),i=new T.TransactionsFactoryConfig({chainID:this.chain.chainId}),o=new T.SmartContractTransactionsFactory({config:i}),l=(e.args||[]).map(d=>this.serializer.stringToTyped(d)),g=await o.createTransactionForDeploy(t,{bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:l,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});g.nonce=s;let p=new T.AddressComputer().computeContractAddress(t,s);return{tx:g,contractAddress:p.toBech32()}}async createUpgradeTransaction(e){let t=T.Address.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),s=BigInt(n.nonce||0),i=new T.TransactionsFactoryConfig({chainID:this.chain.chainId}),o=new T.SmartContractTransactionsFactory({config:i}),l=(e.args||[]).map(p=>this.serializer.stringToTyped(p)),g=await o.createTransactionForUpgrade(t,{contract:T.Address.newFromBech32(e.contractAddress),bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:l,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});return g.nonce=s,g}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:It}:t).map(t=>{let n=new T.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new T.TokenTransfer({token:new T.Token({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ge=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 s=z[t];if(s)return s}if(e){let s=z[e];if(s)return s}let r=this.getPrimaryExplorer();return z[r]||z[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let s=z[n];s&&(r[n]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let s=z[n];s&&(r[n]=`${s}/transactions/${e}`)}),r}};var h=require("@multiversx/sdk-core"),k=require("@joai/warps");var De={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var U=c=>{if(c==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(c==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var fe=c=>({hash:c.hash.toString("hex"),alias:c.alias?.toString()||null,trust:c.trust.toString(),owner:c.owner.toString(),createdAt:c.created_at.toNumber(),upgradedAt:c.upgraded_at?.toNumber(),brand:c.brand?.toString("hex")||null,upgrade:c.upgrade?.toString("hex")||null}),Le=c=>({unitPrice:BigInt(c.unit_price.toString()),admins:c.admins.map(e=>e.toBech32())});var ye=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new k.WarpCache(e.env,e.cache),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,k.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=h.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,i=()=>t&&r?[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t),h.BytesValue.fromHex(r)]:t?[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t)]:[h.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:h.Address.newFromBech32(U(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:i()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:h.Address.newFromBech32(U(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[h.BytesValue.fromUTF8(e),h.BytesValue.fromHex(t),h.BytesValue.fromHex(r)]:[h.BytesValue.fromUTF8(e),h.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e),new h.AddressValue(new h.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=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e),h.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=k.WarpCacheKey.RegistryInfo(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return k.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let s=h.Address.newFromBech32(U(this.config.env)),i=this.getController(),o=i.createQuery({contract:s,function:"getInfoByAlias",arguments:[h.BytesValue.fromUTF8(e)]}),l=await i.runQuery(o),[g]=i.parseQueryResponse(l),p=g?fe(g):null,d=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:p,brand:d},t.ttl),{registryInfo:p,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=k.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let d=await this.cache.get(r);if(d)return k.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),d}let n=h.Address.newFromBech32(U(this.config.env)),s=this.getController(),i=s.createQuery({contract:n,function:"getInfoByHash",arguments:[h.BytesValue.fromHex(e)]}),o=await s.runQuery(i),[l]=s.parseQueryResponse(o),g=l?fe(l):null,p=g?.brand?await this.fetchBrand(g.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:g,brand:p},t.ttl),{registryInfo:g,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=h.Address.newFromBech32(U(this.config.env)),n=this.getController(),s=n.createQuery({contract:r,function:"getUserWarps",arguments:[new h.AddressValue(new h.Address(t))]}),i=await n.runQuery(s),[o]=n.parseQueryResponse(i);return o.map(fe)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(U(this.config.env)),n=this.getController(),s=n.createQuery({contract:r,function:"getUserBrands",arguments:[new h.AddressValue(new h.Address(t))]}),i=await n.runQuery(s),[o]=n.parseQueryResponse(i),l=o.map(d=>d.toString("hex")),g={ttl:365*24*60*60};return(await Promise.all(l.map(d=>this.fetchBrand(d,g)))).filter(d=>d!==null)}catch{return[]}}async fetchBrand(e,t){let r=k.WarpCacheKey.Brand(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return k.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let i=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(e),l=JSON.parse(o.data.toString());return l.meta={query:null,chain:this.chain.name,identifier:(0,k.createWarpIdentifier)(this.chain.name,"hash",e),hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&await this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=h.Address.newFromBech32(U(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Le(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new h.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=h.AbiRegistry.create(De);return new h.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=x(this.chain,this.config.env,this.config),t=h.AbiRegistry.create(De);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var ie=require("@joai/warps"),ut=require("@multiversx/sdk-core");var _=require("@multiversx/sdk-core"),lt=Ct(require("@scure/bip39"),1),pt=require("@scure/bip39/wordlists/english.js"),b=require("@joai/warps"),re=class re{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,b.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new _.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let t=(0,b.normalizeAndValidateMnemonic)(e),n=_.Mnemonic.fromString(t).deriveKey(0),s=n.hex(),o=n.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),l={provider:re.PROVIDER_NAME,address:o,privateKey:s,mnemonic:t};return(0,b.setWarpWalletInConfig)(this.config,this.chain.name,l),l}async importFromPrivateKey(e){let t=_.UserSecretKey.fromString(e),r=t.hex(),s=t.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:re.PROVIDER_NAME,address:s,privateKey:r,mnemonic:null};return(0,b.setWarpWalletInConfig)(this.config,this.chain.name,i),i}async export(){let e=this.getAccount(),t=(0,b.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name),r=(0,b.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);return{provider:re.PROVIDER_NAME,address:e.address.toBech32(),privateKey:r||null,mnemonic:t||null}}async generate(){let e=lt.generateMnemonic(pt.wordlist,256),t=(0,b.normalizeMnemonic)(e);(0,b.validateMnemonicLength)(t);let i=_.Mnemonic.fromString(t).deriveKey(0).generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:re.PROVIDER_NAME,address:i,privateKey:null,mnemonic:t}}async delete(e){(0,b.removeWarpWalletFromConfig)(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=(0,b.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=_.Mnemonic.fromString(e).deriveKey(0);return this.account=new _.Account(r,this.chain.addressHrp),this.account}};re.PROVIDER_NAME="mnemonic";var We=re;var R=require("@multiversx/sdk-core"),D=require("@joai/warps"),ne=class ne{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,D.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new R.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let r=R.Mnemonic.fromString(e).deriveKey(0),n=r.hex(),i=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:ne.PROVIDER_NAME,address:i,privateKey:n,mnemonic:e};return(0,D.setWarpWalletInConfig)(this.config,this.chain.name,o),o}async importFromPrivateKey(e){let r=e.startsWith("-----")?R.UserSecretKey.fromPem(e):R.UserSecretKey.fromString(e),n=r.hex(),i=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:ne.PROVIDER_NAME,address:i,privateKey:n,mnemonic:null};return(0,D.setWarpWalletInConfig)(this.config,this.chain.name,o),o}async export(){let e=this.getAccount(),t=(0,D.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name),r=(0,D.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);return{provider:ne.PROVIDER_NAME,address:e.address.toBech32(),privateKey:t||null,mnemonic:r||null}}async generate(){let e=R.UserSecretKey.generate(),t=e.hex(),n=e.generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:ne.PROVIDER_NAME,address:n,privateKey:t,mnemonic:null}}async delete(e){(0,D.removeWarpWalletFromConfig)(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=(0,D.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?R.UserSecretKey.fromPem(e):R.UserSecretKey.fromString(e);return this.account=new R.Account(r,this.chain.addressHrp),this.account}};ne.PROVIDER_NAME="privateKey";var we=ne;var J=require("@joai/warps"),ae=class{constructor(e,t){this.config=e;this.chain=t}async getAddress(){return(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async getPublicKey(){return null}async signTransaction(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async signMessage(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromMnemonic(e){let t=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromPrivateKey(e){let t=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async export(){let e=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async generate(){let e=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async delete(e){(0,J.removeWarpWalletFromConfig)(this.config,this.chain.name)}};var Ce=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=x(t,e.env,e),this.cache=new ie.WarpCache(e.env,e.cache),this.walletProvider=this.createProvider(),this.initializeCache()}async signTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof ae)throw new Error(`Wallet (${this.chain.name}) is read-only`);if(this.walletProvider instanceof we||this.walletProvider instanceof We){let n=this.walletProvider.getAccountInstance();if(t.nonce===0n){let s=await this.entry.recallAccountNonce(n.address),i=await this.cache.get(`nonce:${n.address.toBech32()}`)||0,o=BigInt(Math.max(i,Number(s)));t.nonce=o}}else if(t.nonce===0n&&this.cachedAddress){let n=ut.Address.newFromBech32(this.cachedAddress),s=await this.entry.recallAccountNonce(n),i=await this.cache.get(`nonce:${this.cachedAddress}`)||0,o=BigInt(Math.max(i,Number(s)));t.nonce=o}return await this.walletProvider.signTransaction(t)}async signTransactions(e){let t=[];for(let r of e)t.push(await this.signTransaction(r));return t}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof ae)throw new Error(`Wallet (${this.chain.name}) is read-only`);return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}async sendTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!t.signature||t.signature.length===0)throw new Error("Transaction must be signed before sending");let r=await this.entry.sendTransaction(t),n=t.sender,s=Number(t.nonce)+1;return await this.cache.set(`nonce:${n}`,s,ie.CacheTtl.OneMinute),r}async importFromMnemonic(e){return await this.createProviderForOperation("mnemonic").importFromMnemonic(e)}async importFromPrivateKey(e){return await this.createProviderForOperation("privateKey").importFromPrivateKey(e)}async export(e){return await this.createProviderForOperation(e).export()}async generate(e){return await this.createProviderForOperation(e).generate()}async delete(e,t){await this.createProviderForOperation(e).delete(t)}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];return e?typeof e=="string"?new ae(this.config,this.chain):e.provider?this.createProviderForOperation(e.provider):new ae(this.config,this.chain):null}initializeCache(){(0,ie.initializeWalletCache)(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}createProviderForOperation(e){let r=this.config.walletProviders?.[this.chain.name]?.[e];if(r){let n=r(this.config,this.chain);if(!n)throw new Error(`Custom wallet provider factory returned null for ${e}`);return n}if(e==="privateKey")return new we(this.config,this.chain);if(e==="mnemonic")return new We(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e}`)}};var ve=(c,e)=>(t,r)=>{let n=e[t.env],s=new mt.WarpTypeRegistry;return s.registerType("token",{stringToNative:i=>i,nativeToString:i=>`token:${i}`}),s.registerType("codemeta",{stringToNative:i=>i,nativeToString:i=>`codemeta:${i}`}),s.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new me(t,n),executor:new he(t,n,s),output:new te(t,n,s),serializer:new L({typeRegistry:s}),registry:new ye(t,n),explorer:new ge(c,t),abiBuilder:()=>new $(t,n),brandBuilder:()=>new ue(t,n),dataLoader:new de(t,n),wallet:new Ce(t,n)}};var oe=require("@joai/warps");var Ie={chain:oe.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/egld.svg"},Ke=ve(oe.WarpChainName.Multiversx,{mainnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie},testnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.battleofnodes.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie},devnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie}});var Se=require("@joai/warps");var dt={chain:Se.WarpChainName.Claws,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},_e={name:Se.WarpChainName.Claws,displayName:"Claws Network",chainId:"C",blockTime:600,addressHrp:"claw",defaultApiUrl:"https://api.claws.network",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/claws.png",nativeToken:dt,minGasPrice:20000000000000n},$e=ve(Se.WarpChainName.Claws,{mainnet:_e,testnet:_e,devnet:_e});var Nt=()=>[Ke,$e];var G=require("@joai/warps");var Bt=c=>new G.WarpSerializer().nativeToString(A.Token,c),Ut=c=>new G.WarpSerializer().nativeToString(A.CodeMeta,c),Ft=(c,e)=>{if(e===null)return A.Optional+G.WarpConstants.ArgParamsSeparator;let t=c(e),r=t.indexOf(G.WarpConstants.ArgParamsSeparator),n=t.substring(0,r),s=t.substring(r+1);return A.Optional+G.WarpConstants.ArgParamsSeparator+n+G.WarpConstants.ArgParamsSeparator+s},Ot=c=>new G.WarpSerializer().nativeToString(A.List,c);var u=require("@multiversx/sdk-core"),kt=(c,e)=>c?u.OptionValue.newProvided(c):e?u.OptionValue.newMissingTyped(e):u.OptionValue.newMissing(),Mt=(c,e)=>c?new u.OptionalValue(c.getType(),c):e?new u.OptionalValue(e):u.OptionalValue.newMissing(),Vt=c=>{if(c.length===0)throw new Error("Cannot create a list from an empty array");let e=c[0].getType();return new u.List(e,c)},Rt=c=>u.VariadicValue.fromItems(...c),Dt=c=>{let e=c.map(t=>t.getType());return new u.CompositeValue(new u.CompositeType(...e),c)},Lt=c=>u.StringValue.fromUTF8(c),Kt=c=>new u.U8Value(c),_t=c=>new u.U16Value(c),$t=c=>new u.U32Value(c),qt=c=>new u.U64Value(c),Ht=c=>new u.BigUIntValue(BigInt(c)),Gt=c=>new u.BooleanValue(c),zt=c=>new u.AddressValue(u.Address.newFromBech32(c)),jt=c=>new u.TokenIdentifierValue(c),Qt=c=>u.BytesValue.fromHex(c),Jt=c=>new u.Struct(new u.StructType("EsdtTokenPayment",[new u.FieldDefinition("token_identifier","",new u.TokenIdentifierType),new u.FieldDefinition("token_nonce","",new u.U64Type),new u.FieldDefinition("amount","",new u.BigUIntType)]),[new u.Field(new u.TokenIdentifierValue(c.token.identifier),"token_identifier"),new u.Field(new u.U64Value(BigInt(c.token.nonce)),"token_nonce"),new u.Field(new u.BigUIntValue(BigInt(c.amount)),"amount")]),Xt=c=>new u.CodeMetadataValue(u.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(c,"hex")))),Yt=()=>new u.NothingValue;0&&(module.exports={ClawsAdapter,ClawsExplorers,ExplorerUrls,KnownTokens,MultiversxAdapter,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenClaw,NativeTokenEgld,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxOutput,WarpMultiversxRegistry,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,hex_value,isNativeToken,list,list_value,nothing_value,option_value,optional,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
|
1
|
+
"use strict";var ht=Object.create;var Ee=Object.defineProperty;var gt=Object.getOwnPropertyDescriptor;var ft=Object.getOwnPropertyNames;var yt=Object.getPrototypeOf,wt=Object.prototype.hasOwnProperty;var Wt=(c,e)=>{for(var t in e)Ee(c,t,{get:e[t],enumerable:!0})},He=(c,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ft(e))!wt.call(c,n)&&n!==t&&Ee(c,n,{get:()=>e[n],enumerable:!(r=gt(e,n))||r.enumerable});return c};var Ct=(c,e,t)=>(t=c!=null?ht(yt(c)):{},He(e||!c||!c.__esModule?Ee(t,"default",{value:c,enumerable:!0}):t,c)),vt=c=>He(Ee({},"__esModule",{value:!0}),c);var Zt={};Wt(Zt,{ClawsAdapter:()=>$e,ClawsExplorers:()=>Je,ExplorerUrls:()=>z,KnownTokens:()=>Ve,MultiversxAdapter:()=>Ke,MultiversxExplorers:()=>Qe,MultiversxExplorersConfig:()=>ke,NativeTokenClaw:()=>dt,NativeTokenEgld:()=>Ie,WarpMultiversxAbiBuilder:()=>$,WarpMultiversxBrandBuilder:()=>ue,WarpMultiversxBuilder:()=>me,WarpMultiversxConstants:()=>xt,WarpMultiversxContractLoader:()=>pe,WarpMultiversxDataLoader:()=>de,WarpMultiversxExecutor:()=>he,WarpMultiversxExplorer:()=>ge,WarpMultiversxInputTypes:()=>A,WarpMultiversxOutput:()=>te,WarpMultiversxRegistry:()=>ye,WarpMultiversxSerializer:()=>L,WarpMultiversxWallet:()=>Ce,address_value:()=>zt,asset_value:()=>Jt,biguint_value:()=>Ht,boolean_value:()=>Gt,codemeta:()=>Ut,codemeta_value:()=>Xt,composite_value:()=>Dt,createMultiversxAdapter:()=>ve,findKnownTokenById:()=>Re,getAllMultiversxAdapters:()=>Nt,getAllMultiversxChainNames:()=>Tt,getKnownTokensForChain:()=>bt,getMultiversxEntrypoint:()=>x,getMultiversxRegistryAddress:()=>U,getNormalizedTokenIdentifier:()=>le,hex_value:()=>Qt,isNativeToken:()=>Y,list:()=>Ot,list_value:()=>Vt,nothing_value:()=>Yt,option_value:()=>kt,optional:()=>Ft,optional_value:()=>Mt,string_value:()=>Lt,toTypedConfigInfo:()=>Le,toTypedRegistryInfo:()=>fe,token:()=>Bt,token_value:()=>jt,u16_value:()=>_t,u32_value:()=>$t,u64_value:()=>qt,u8_value:()=>Kt,variadic_value:()=>Rt});module.exports=vt(Zt);var Fe=require("@joai/warps"),Tt=()=>[Fe.WarpChainName.Multiversx,Fe.WarpChainName.Claws];var mt=require("@joai/warps");var S=require("@multiversx/sdk-core"),I=require("@joai/warps");var se=require("@multiversx/sdk-core"),Ge=require("@joai/warps"),Y=c=>!c.includes("-"),le=c=>Y(c)?`${c}-000000`:c,x=(c,e,t)=>{let r="warp-sdk",s=t?(0,Ge.getProviderConfig)(t,c.name,e,c.defaultApiUrl):{url:c.defaultApiUrl},i=s.url,o={headers:s.headers};return e==="devnet"?new se.DevnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o}):e==="testnet"?new se.TestnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o}):new se.MainnetEntrypoint({url:i,kind:"api",clientName:r,networkProviderConfig:o})};var Oe=require("@joai/warps");var pe=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await x(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return Oe.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await x(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return Oe.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var a=require("@multiversx/sdk-core"),Xe=require("@joai/warps");var At=c=>c?typeof c=="string"?c:c.address:null,ze=(c,e)=>At(c.user?.wallets?.[e]||null);var je=(r=>(r.Macos="macos",r.Linux="linux",r.Windows="windows",r))(je||{}),gr=Object.values(je);var f={HttpProtocolPrefix:"https://",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:c=>ze(c.config,c.adapter.chainInfo.name)},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:c=>{if(!c.adapter.wallet)return null;try{return c.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:c=>c.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:c=>c.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},u={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex",Datetime:"datetime",Email:"email",Textarea:"textarea",File:"file"};var xt={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},A={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},Qe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Qe||{}),Je=(r=>(r.ClawsExplorer="claws_explorer",r.ClawsExplorerDevnet="claws_explorer_devnet",r.ClawsExplorerTestnet="claws_explorer_testnet",r))(Je||{}),ke={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},claws:{mainnet:["claws_explorer"],testnet:["claws_explorer_testnet"],devnet:["claws_explorer_devnet"]}},z={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://bon-explorer.multiversx.com",claws_explorer:"https://explorer.claws.network",claws_explorer_devnet:"https://explorer.claws.network",claws_explorer_testnet:"https://explorer.claws.network"};var Et=new RegExp(`${f.ArgParamsSeparator}(.*)`),L=class{constructor(e){this.coreSerializer=new Xe.WarpSerializer(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(a.OptionType.ClassName)||e.hasClassOrSuperclass(a.OptionValue.ClassName)){if(!e.isSet())return u.Option+f.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return u.Option+f.ArgParamsSeparator+r}if(t.hasExactClass(a.VariadicType.ClassName)||e.hasClassOrSuperclass(a.VariadicValue.ClassName)){let r=e.getItems();if(r.length===0){let p=this.typeToString(t.getFirstTypeParameter());return u.Vector+f.ArgParamsSeparator+p+f.ArgParamsSeparator}let n=r.map(p=>this.typedToString(p));if(n.every(p=>p.startsWith(u.Tuple)))return u.Vector+f.ArgParamsSeparator+n.join(",");let s=n[0],i=s.indexOf(f.ArgParamsSeparator),o=s.substring(0,i),l=n.map(p=>{let d=p.indexOf(f.ArgParamsSeparator);return p.substring(d+1)}),g=o.startsWith(u.Struct)?f.ArgStructSeparator:f.ArgListSeparator;return u.Vector+f.ArgParamsSeparator+o+f.ArgParamsSeparator+l.join(g)}if(t.hasExactClass(a.OptionalType.ClassName)||e.hasClassOrSuperclass(a.OptionalValue.ClassName)){if(!e.isSet())return A.Optional+f.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return A.Optional+f.ArgParamsSeparator+r}if(t.hasExactClass(a.ListType.ClassName)||e.hasClassOrSuperclass(a.List.ClassName)){let n=e.getItems().map(l=>this.typedToString(l));if(n.every(l=>l.startsWith(u.Tuple)))return A.List+f.ArgParamsSeparator+n.join(",");let i=n.map(l=>l.split(f.ArgParamsSeparator)[0])[0],o=n.map(l=>l.split(f.ArgParamsSeparator)[1]);return A.List+f.ArgParamsSeparator+i+f.ArgParamsSeparator+o.join(f.ArgListSeparator)}if(t.hasExactClass(a.CompositeType.ClassName)||e.hasClassOrSuperclass(a.CompositeValue.ClassName)){let n=e.getItems().map(s=>{let i=this.typedToString(s),o=i.indexOf(f.ArgParamsSeparator),l=i.substring(0,o),g=i.substring(o+1);return`${l},${g}`});return`${u.Tuple}(${n.join(",")})`}if(t.hasExactClass(a.BigUIntType.ClassName)||e.hasClassOrSuperclass(a.BigUIntValue.ClassName)||t.getName()==="BigUint")return u.Biguint+f.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.U8Type.ClassName)||e.hasClassOrSuperclass(a.U8Value.ClassName))return u.Uint8+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U16Type.ClassName)||e.hasClassOrSuperclass(a.U16Value.ClassName))return u.Uint16+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U32Type.ClassName)||e.hasClassOrSuperclass(a.U32Value.ClassName))return u.Uint32+f.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(a.U64Type.ClassName)||e.hasClassOrSuperclass(a.U64Value.ClassName))return u.Uint64+f.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(a.StringType.ClassName)||e.hasClassOrSuperclass(a.StringValue.ClassName))return u.String+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.BooleanType.ClassName)||e.hasClassOrSuperclass(a.BooleanValue.ClassName))return u.Bool+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.AddressType.ClassName)||e.hasClassOrSuperclass(a.AddressValue.ClassName))return u.Address+f.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(a.BytesType.ClassName)||e.hasClassOrSuperclass(a.BytesValue.ClassName))return u.Hex+f.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),s=e.getFieldValue("amount").valueOf(),o=new a.TokenComputer().computeExtendedIdentifier(new a.Token({identifier:r,nonce:BigInt(n)}));return u.Asset+f.ArgParamsSeparator+o+f.ArgCompositeSeparator+s}if(t.hasExactClass(a.StructType.ClassName)||e.hasClassOrSuperclass(a.Struct.ClassName)){let r=e,s=r.getType().getName(),i=r.getFields();if(i.length===0)return`${u.Struct}(${s})${f.ArgParamsSeparator}`;let o=i.map(l=>{let g=l.value.getType(),d=this.typedToString(l.value).split(f.ArgParamsSeparator),y=d.length>2?d.slice(2).join(f.ArgParamsSeparator):d[1]||"";return`(${l.name}${f.ArgParamsSeparator}${this.typeToString(g)})${y}`});return`${u.Struct}(${s})${f.ArgParamsSeparator}${o.join(f.ArgListSeparator)}`}if(t.hasExactClass(a.EnumType.ClassName)||e.hasClassOrSuperclass(a.EnumValue.ClassName)){let r=e;return`enum(${r.getType().getName()})${f.ArgParamsSeparator}${r.discriminant}`}if(t.hasExactClass(a.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(a.TokenIdentifierValue.ClassName))return A.Token+f.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(a.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(a.CodeMetadataValue.ClassName))return A.CodeMeta+f.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){if(e.startsWith(u.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(u.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let s=0;s<r.length;s+=2)n.push(r[s]);return new a.CompositeType(...n.map(s=>this.nativeToType(s)))}if(e.startsWith(u.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new a.StructType(r,[])}if(e===u.String)return new a.StringType;if(e===u.Uint8)return new a.U8Type;if(e===u.Uint16)return new a.U16Type;if(e===u.Uint32)return new a.U32Type;if(e===u.Uint64)return new a.U64Type;if(e===u.Biguint)return new a.BigUIntType;if(e===u.Bool)return new a.BooleanType;if(e===u.Address)return new a.AddressType;if(e===u.Hex)return new a.BytesType;if(e===u.Asset)return new a.StructType("EsdtTokenPayment",[new a.FieldDefinition("token_identifier","",new a.TokenIdentifierType),new a.FieldDefinition("token_nonce","",new a.U64Type),new a.FieldDefinition("amount","",new a.BigUIntType)]);if(e.startsWith("enum")){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Enum type must include a name in the format enum(Name)");return new a.EnumType(t[1],[])}if(e===A.Token)return new a.TokenIdentifierType;if(e===A.CodeMeta)return new a.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===u.Option){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionValue.newMissingTyped(n.getType()):a.OptionValue.newProvided(n)}if(t===u.Vector){let n=r.indexOf(f.ArgParamsSeparator),s=r.substring(0,n),i=r.substring(n+1);if(s.startsWith(u.Tuple)){let d=i.split(",").map(y=>this.stringToTyped(y));return new a.VariadicValue(new a.VariadicType(this.nativeToType(s)),d)}if(i.includes("tuple(")){let p=this.splitTupleStrings(i),d=p.map(V=>this.stringToTyped(V)),w=p[0].match(/^(tuple\([^)]+\))/),C=w?w[1]:"tuple";return new a.VariadicValue(new a.VariadicType(this.nativeToType(C)),d)}let o=s.startsWith(u.Struct)?f.ArgStructSeparator:f.ArgListSeparator,g=i.split(o).map(p=>this.stringToTyped(`${s}:${p}`));return new a.VariadicValue(new a.VariadicType(this.nativeToType(s)),g)}if(t.startsWith(u.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let s=n.split(","),i=[];for(let l=0;l<s.length;l+=2){let g=s[l],p=s[l+1];i.push(this.stringToTyped(`${g}:${p}`))}let o=i.map(l=>l.getType());return new a.CompositeValue(new a.CompositeType(...o),i)}if(t.startsWith(u.Struct)){let n=t.match(/\(([^)]+)\)/),s=n?n[1]:"CustomStruct";if(!r)return new a.Struct(new a.StructType(s,[]),[]);let i=r.split(f.ArgListSeparator),o=[],l=[];return i.forEach(g=>{let p=g.match(new RegExp(`^\\(([^${f.ArgParamsSeparator}]+)${f.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(p){let[,d,y,w]=p,C=this.stringToTyped(`${y}${f.ArgParamsSeparator}${w}`);o.push(new a.FieldDefinition(d,"",C.getType())),l.push(new a.Field(C,d))}}),new a.Struct(new a.StructType(s,o),l)}if(t===u.String)return r?a.StringValue.fromUTF8(r):new a.NothingValue;if(t===u.Uint8)return r?new a.U8Value(Number(r)):new a.NothingValue;if(t===u.Uint16)return r?new a.U16Value(Number(r)):new a.NothingValue;if(t===u.Uint32)return r?new a.U32Value(Number(r)):new a.NothingValue;if(t===u.Uint64)return r?new a.U64Value(BigInt(r)):new a.NothingValue;if(t===u.Biguint)return r?new a.BigUIntValue(BigInt(r)):new a.NothingValue;if(t===u.Bool)return r?new a.BooleanValue(typeof r=="boolean"?r:r==="true"):new a.NothingValue;if(t===u.Address)return r?new a.AddressValue(a.Address.newFromBech32(r)):new a.NothingValue;if(t===u.Hex)return r?a.BytesValue.fromHex(r):new a.NothingValue;if(t===u.Datetime){if(!r||r==="0")return new a.U64Value(0n);let n=Math.floor(new Date(r).getTime()/1e3);return new a.U64Value(BigInt(isNaN(n)?0:n))}if(t===u.Asset){let[n,s]=r.split(f.ArgCompositeSeparator),i=new a.TokenComputer,o=Y(n)?le(n):i.extractIdentifierFromExtendedIdentifier(n),l=Y(n)?0n:i.extractNonceFromExtendedIdentifier(n);return new a.Struct(this.nativeToType("asset"),[new a.Field(new a.TokenIdentifierValue(o),"token_identifier"),new a.Field(new a.U64Value(BigInt(l)),"token_nonce"),new a.Field(new a.BigUIntValue(BigInt(s)),"amount")])}if(t===A.Null)return new a.NothingValue;if(t===A.Optional){let n=this.stringToTyped(r);return n instanceof a.NothingValue?a.OptionalValue.newMissing():new a.OptionalValue(n.getType(),n)}if(t===A.List){let[n,s]=r.split(Et,2),o=s.split(f.ArgListSeparator).map(l=>this.stringToTyped(n+f.ArgParamsSeparator+l));return new a.List(this.nativeToType(n),o)}if(t===A.Token)return r?new a.TokenIdentifierValue(r):new a.NothingValue;if(t===A.CodeMeta)return new a.CodeMetadataValue(a.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t.startsWith("enum")){let n=t.match(/\(([^)]+)\)/),s=n?n[1]:"CustomEnum",i=Number(r);if(isNaN(i))throw new Error(`WarpArgSerializer (stringToTyped): Invalid enum discriminant: ${r}`);let o=new a.EnumVariantDefinition(r,i,[]),l=new a.EnumType(s,[o]);return new a.EnumValue(l,o,[])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let s=0;s<e.length;s++){let i=e[s];if(i==="(")n++;else if(i===")")n--;else if(i===","&&n===0){t.push(r.trim()),r="";continue}r+=i}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(a.OptionType.ClassName))return u.Option+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.VariadicType.ClassName))return u.Vector+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.StringType.ClassName))return u.String;if(e.hasExactClass(a.U8Type.ClassName))return u.Uint8;if(e.hasExactClass(a.U16Type.ClassName))return u.Uint16;if(e.hasExactClass(a.U32Type.ClassName))return u.Uint32;if(e.hasExactClass(a.U64Type.ClassName))return u.Uint64;if(e.hasExactClass(a.BigUIntType.ClassName))return u.Biguint;if(e.hasExactClass(a.BooleanType.ClassName))return u.Bool;if(e.hasExactClass(a.AddressType.ClassName))return u.Address;if(e.hasExactClass(a.BytesType.ClassName))return u.Hex;if(e.hasExactClass(a.TokenIdentifierType.ClassName))return A.Token;if(e.hasExactClass(a.OptionalType.ClassName))return A.Optional+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.ListType.ClassName))return A.List+f.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(a.CodeMetadataType.ClassName))return A.CodeMeta;if(e.hasExactClass(a.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return u.Asset;if(e.hasExactClass(a.StructType.ClassName))return`${u.Struct}(${e.getName()})`;if(e.hasExactClass(a.EnumType.ClassName))return`enum(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var $=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new pe(this.config),this.cache=new I.WarpCache(this.config.env,this.config.cache)}async createInscriptionTransaction(e){let t=(0,I.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new S.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new S.TransferTransactionsFactory({config:r}),s=S.Address.newFromBech32(t),i={protocol:(0,I.getLatestProtocolIdentifier)("abi"),content:e},o=JSON.stringify(i),l=await n.createTransactionForTransfer(s,{receiver:s,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,identifier:(0,I.createWarpIdentifier)(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=I.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let i=await this.cache.get(r);if(i)return I.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),i}let s=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(e),o=await this.createFromTransaction(i);return t&&t.ttl&&o&&await this.cache.set(r,o,t.ttl),o}catch(i){return I.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",i),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return S.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(I.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(I.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return S.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return S.AbiRegistry.create(r)}}endpointsToWarps(e,t,r){let n=new L,s=r?btoa(JSON.stringify(r)):void 0;return e.getEndpoints().map(i=>{let o=i.modifiers.isReadonly(),l=i.input.map((p,d)=>{let y={name:p.name,type:n.typeToString(p.type),position:`arg:${d+1}`,source:"field",required:!p.type.hasClassOrSuperclass(S.OptionalType.ClassName)&&!p.type.hasClassOrSuperclass(S.OptionType.ClassName)};if(p.type.hasExactClass(S.EnumType.ClassName)){let w=p.type;y.options=Object.fromEntries(w.variants.map(C=>[String(C.discriminant),C.name]))}return y}),g=o?{type:"query",label:i.name,address:t,func:i.name,args:[],abi:s,inputs:l}:{type:"contract",label:i.name,address:t,func:i.name,args:[],gasLimit:1e7,abi:s,inputs:l};return{protocol:(0,I.getLatestProtocolIdentifier)("warp"),name:i.name,title:i.name,description:null,chain:this.chain.name,actions:[g]}})}};var Z=require("@multiversx/sdk-core"),j=require("@joai/warps"),Ye=require("buffer");var ue=class{constructor(e,t){this.config=e;this.chain=t;this.core=new j.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,j.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Z.TransactionsFactoryConfig({chainID:this.chain.chainId}),n=new Z.TransferTransactionsFactory({config:r}),s=Z.Address.newFromBech32(t),i=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(s,{receiver:Z.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ye.Buffer.from(i))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:(0,j.createWarpIdentifier)(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return j.WarpLogger.error("BrandBuilder: Error creating from transaction hash",n),null}}};var ee=require("@multiversx/sdk-core"),F=require("@joai/warps");var me=class extends F.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new F.WarpCache(t.env,t.cache),this.core=new F.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,F.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new ee.TransactionsFactoryConfig({chainID:this.chain.chainId}),s=new ee.TransferTransactionsFactory({config:n}),i=ee.Address.newFromBech32(r),o=JSON.stringify(t),l=await s.createTransactionForTransfer(i,{receiver:ee.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 n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:(0,F.createWarpIdentifier)(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=F.WarpCacheKey.Warp(this.config.env,t);if(r){let o=await this.cache.get(n);if(o)return F.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let i=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(t),l=await this.createFromTransaction(o);return r&&r.ttl&&l&&await this.cache.set(n,l,r.ttl),l}catch(o){return F.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var Q=require("@multiversx/sdk-core"),q=require("@joai/warps");var Me=require("@joai/warps");var et=require("@joai/warps"),Ze=et.WarpChainName.Multiversx,tt=[{chain:Ze,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ze,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var rt=require("@joai/warps"),B=rt.WarpChainName.Multiversx,nt=[{chain:B,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:B,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:B,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:B,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:B,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:B,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:B,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:B,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:B,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:B,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:B,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:B,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:B,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:B,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:B,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var st=require("@joai/warps"),at=st.WarpChainName.Multiversx,it=[{chain:at,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:at,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var ct=require("@joai/warps"),ot=ct.WarpChainName.Claws,be=[{chain:ot,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},{chain:ot,identifier:"CLAW-000000",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"}];var Ve={[Me.WarpChainName.Multiversx]:{mainnet:nt,testnet:it,devnet:tt},[Me.WarpChainName.Claws]:{mainnet:be,testnet:be,devnet:be}},Re=(c,e,t)=>(Ve[c]?.[e]||[]).find(n=>n.identifier===t)||null,bt=(c,e)=>Ve[c]?.[e]||[];var de=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new q.WarpCache(e.env,e.cache)}async getAccount(e){let r=await x(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(Q.Address.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=x(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(Q.Address.newFromBech32(e)),n=t.getFungibleTokensOfAccount(Q.Address.newFromBech32(e)),[s,i]=await Promise.all([r,n]),o=s.balance>0?[{...this.chain.nativeToken,amount:s.balance}]:[];return o.push(...i.map(l=>({chain:this.chain.name,identifier:l.token.identifier,name:l.raw.name,symbol:l.raw.ticker,amount:l.amount,decimals:l.raw.decimals,logoUrl:l.raw.assets?.pngUrl||"",price:l.raw.price?Number(l.raw.price):void 0,supply:l.raw.supply?BigInt(l.raw.supply):void 0}))),o}async getAccountNfts(e,t){let r=t?.size||25,n=t?.page||0,s=q.WarpCacheKey.AccountNfts(this.config.env,this.chain.name,e,n,r),i=await this.cache.get(s);if(i)return i;let o=x(this.chain,this.config.env,this.config).createNetworkProvider(),l=n*r,g=new URLSearchParams({size:r.toString(),from:l.toString()}),p=await o.doGetGeneric(`accounts/${e}/nfts?${g.toString()}`);if(!Array.isArray(p))return[];let d=p.filter(y=>y.type!=="MetaESDT").map(y=>({chain:this.chain.name,identifier:y.identifier,name:y.name||y.identifier,symbol:y.ticker||y.collection||"",amount:y.balance?BigInt(y.balance):1n,decimals:0,type:y.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:y.collection,nonce:y.nonce?BigInt(y.nonce):void 0,mediaUrl:Pe(y.url||y.media?.[0]?.url),thumbnailUrl:Pe(y.thumbnailUrl||y.media?.[0]?.thumbnailUrl),attributes:Array.isArray(y.metadata?.attributes)?Object.fromEntries(y.metadata.attributes.map(w=>[w.trait_type,String(w.value)])):void 0,royalties:y.royalties?Number(y.royalties)/100:void 0,rank:y.rank,creator:y.creator}}));return await this.cache.set(s,d,5*q.CacheTtl.OneMinute),d}async getAsset(e){let t=q.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=await this.cache.get(t);if(r)return r;let n=Re(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let s=new Q.TokenComputer,i=Y(e)?0n:s.extractNonceFromExtendedIdentifier(e),o=new Q.Token({identifier:e,nonce:BigInt(i||0)}),l=s.isFungible(o),g=x(this.chain,this.config.env,this.config).createNetworkProvider();if(!l&&i>0n){let w=await g.doGetGeneric(`nfts/${e}`),C={chain:this.chain.name,identifier:e,name:w.name||e,symbol:w.ticker||w.collection||"",amount:0n,decimals:0,type:w.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:w.collection,nonce:w.nonce?BigInt(w.nonce):void 0,mediaUrl:Pe(w.url||w.media?.[0]?.url),thumbnailUrl:Pe(w.thumbnailUrl||w.media?.[0]?.thumbnailUrl),creator:w.creator}};return await this.cache.set(t,C,q.CacheTtl.OneHour),C}let p=le(e),d=await g.doGetGeneric(`tokens/${p}`),y={chain:this.chain.name,identifier:o.identifier,name:d.name,symbol:d.ticker,amount:0n,decimals:d.decimals,logoUrl:d.assets?.pngUrl||null,price:d.price?Number(d.price):void 0,supply:d.supply?BigInt(d.supply):void 0};return await this.cache.set(t,y,q.CacheTtl.OneHour),y}async getAction(e,t=!1){let r=x(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(s=>s.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=x(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,s=new URLSearchParams,i=t?.size||25,o=t?.page||0;if(o>0){let g=o*i;s.append("from",g.toString())}return i!==25&&s.append("size",i.toString()),s.toString()&&(n+=`?${s.toString()}`),(await r.doGetGeneric(n)).map(g=>({chain:this.chain.name,id:g.txHash,receiver:g.receiver,sender:g.sender,value:g.value,function:g.function,status:this.toActionStatus(g),createdAt:this.toActionCreatedAt(g)}))}toActionStatus(e){return e.status?.isSuccessful?.()?"success":e.status?.isFailed?.()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}},Pt="https://ipfs.io/ipfs/",Pe=c=>{if(c)return c.startsWith("ipfs://")?Pt+c.slice(7):c};var T=require("@multiversx/sdk-core"),O=require("@joai/warps");var E=require("@joai/warps"),H=require("@multiversx/sdk-core");var te=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new $(e,t),this.serializer=new L({typeRegistry:this.typeRegistry})}async getActionExecution(e,t,r,n){let s=n??[],i=await this.extractContractOutput(e,t,r,s),o=Object.fromEntries(s.map(p=>[p.input.as||p.input.name,p.value])),l=(0,E.applyOutputToMessages)(e,{...o,...i.output},this.config),g=(0,E.extractResolvedInputValues)(s);return{status:r.status?.isSuccessful?.()?"success":"error",warp:e,action:t,user:(0,E.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:r.hash,tx:r,next:null,values:i.values,output:i.output,messages:l,destination:null,resolvedInputs:g}}async extractContractOutput(e,t,r,n){let s=(0,E.getWarpActionByIndex)(e,t),i=[],o=[],l={};if(!e.output||s.type!=="contract")return{values:{string:i,native:o,mapped:{}},output:l};let g=r.hash,p=v=>{l[v]=g,i.push(String(g)),o.push(g)};if(!Object.values(e.output).some(v=>v.startsWith("event.")||v.startsWith("out.")||v.startsWith("out["))){for(let[v,W]of Object.entries(e.output))if(!W.startsWith(E.WarpConstants.Transform.Prefix)){if(W==="out"){p(v);continue}l[v]=W}return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let y=s.abi?null:this.tryExtractBuiltInFunctionOutput(s,r);if(y){for(let[v,W]of Object.entries(e.output))W.startsWith(E.WarpConstants.Transform.Prefix)||(W==="out"?p(v):W==="out.1"?(l[v]=y.nftIdentifier,y.nftIdentifier&&(i.push(y.nftIdentifier),o.push(y.nftIdentifier))):l[v]=W);return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let w=s.abi?null:this.tryExtractSystemScOutput(s,r);if(w){let v=w.tokenIdentifier;for(let[W,X]of Object.entries(e.output))X.startsWith(E.WarpConstants.Transform.Prefix)||(X==="out"?p(W):X==="out.1"?(l[W]=v,v&&(i.push(v),o.push(v))):l[W]=X);return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}let C=await this.abi.getAbiForAction(s),V=new H.TransactionEventsParser({abi:C}),M=new H.SmartContractTransactionsOutcomeParser({abi:C}),K=null,ce=!1,Te=()=>(ce||(ce=!0,K=M.parseExecute({transactionOnNetwork:r,function:s.func||void 0})),K);for(let[v,W]of Object.entries(e.output)){if(W.startsWith(E.WarpConstants.Transform.Prefix))continue;if(W.startsWith("input.")){l[v]=W;continue}if(W==="out"){p(v);continue}let X=(0,E.parseOutputOutIndex)(W);if(X!==null&&X!==t){l[v]=null;continue}let[Ne,Ae,xe,qe]=W.split(".");if(Ne==="event"){if(!Ae||isNaN(Number(xe)))continue;let Be=Number(xe),Ue=(0,H.findEventsByFirstTopic)(r,Ae),P=V.parseEvents({events:Ue})[0];if(!P||typeof P!="object"){l[v]=null;continue}let N=Object.values(P)[Be]||null;N&&qe&&typeof N=="object"&&(N=N[qe]??null),N&&typeof N=="object"&&(N="toFixed"in N?N.toFixed():N.valueOf()),i.push(String(N)),o.push(N),l[v]=N&&N.valueOf()}else if(Ne==="out"||Ne.startsWith("out[")){if(!Ae)continue;let Be=Te(),Ue=Number(Ae),P=Be.values[Ue-1]||null;xe&&(P=P[xe]||null),P&&typeof P=="object"&&(P="toFixed"in P?P.toFixed():P.valueOf()),i.push(String(P)),o.push(P),l[v]=P&&P.valueOf()}else l[v]=W}return{values:{string:i,native:o,mapped:{}},output:await(0,E.evaluateOutputCommon)(e,l,o,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let s=t.map(p=>this.serializer.typedToString(p)),i=t.map(p=>this.serializer.typedToNative(p)[1]),o={string:s,native:i,mapped:{}},l={};if(!e.output)return{values:o,output:l};let g=p=>{let d=p.split(".").slice(1).map(w=>parseInt(w)-1);if(d.length===0)return;let y=i[d[0]];for(let w=1;w<d.length;w++){if(y==null)return;y=y[d[w]]}return y};for(let[p,d]of Object.entries(e.output)){if(d.startsWith(E.WarpConstants.Transform.Prefix))continue;let y=(0,E.parseOutputOutIndex)(d);if(y!==null&&y!==r){l[p]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?l[p]=g(d)||null:l[p]=d}return l=await(0,E.evaluateOutputCommon)(e,l,i,r,n,this.serializer.coreSerializer,this.config),{values:o,output:l}}tryExtractBuiltInFunctionOutput(e,t){if(e.func!=="ESDTNFTCreate")return null;try{let s=new H.TokenManagementTransactionsOutcomeParser().parseNftCreate(t)[0];if(!s)return{nftIdentifier:null};let i=s.nonce.toString(16),o=i.length%2!==0?"0"+i:i;return{nftIdentifier:`${s.tokenIdentifier}-${o}`}}catch{return{nftIdentifier:null}}}tryExtractSystemScOutput(e,t){if(e.address!=="erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"||!e.func)return null;let s={issue:(i,o)=>i.parseIssueFungible(o),issueNonFungible:(i,o)=>i.parseIssueNonFungible(o),issueSemiFungible:(i,o)=>i.parseIssueSemiFungible(o),registerMetaESDT:(i,o)=>i.parseRegisterMetaEsdt(o),registerAndSetAllRoles:(i,o)=>i.parseRegisterAndSetAllRoles(o)}[e.func];if(!s)return null;try{return{tokenIdentifier:s(new H.TokenManagementTransactionsOutcomeParser,t)[0]?.tokenIdentifier||null}}catch{return{tokenIdentifier:null}}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,s=e.inputs,i=e.meta,o=new Map,l=new Set,g=this;async function p(C,V=[]){if(o.has(C))return o.get(C);if(l.has(C))throw new Error(`Circular dependency detected at action ${C}`);l.add(C);let M=t.actions[C-1];if(!M)throw new Error(`Action ${C} not found`);let K;if(M.type==="query")K=await n.executeQuery(t,C,V);else if(M.type==="collect")K=await n.executeCollect(t,C,V,i);else throw new Error(`Unsupported or interactive action type: ${M.type}`);if(o.set(C,K),t.output)for(let ce of Object.values(t.output)){let v=String(ce).match(/^out\[(\d+)\]/);if(v){let W=parseInt(v[1],10);W!==C&&!o.has(W)&&await p(W)}}return l.delete(C),K}await p(r,s);let d={};for(let C of o.values())for(let[V,M]of Object.entries(C.output))M!==null?d[V]=M:V in d||(d[V]=null);let y=await(0,E.evaluateOutputCommon)(t,d,d,r,s,this.serializer.coreSerializer,this.config);return{...o.get(r),action:r,output:y}}};var It="EGLD-000000",he=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new L({typeRegistry:this.typeRegistry}),this.abi=new $(this.config,this.chain),this.output=new te(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=(0,O.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 this.chain.minGasPrice&&(r.gasPrice=this.chain.minGasPrice),r}async createTransferTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=T.Address.newFromBech32(t),n=new T.TransactionsFactoryConfig({chainID:e.chain.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,i=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,l=(i?e.transfers[0].amount:0n)+e.value;return await new T.TransferTransactionsFactory({config:n}).createTransactionForTransfer(r,{receiver:T.Address.newFromBech32(e.destination),nativeAmount:l,tokenTransfers:i?[]:this.toTokenTransfers(e.transfers),data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,O.getWarpActionByIndex)(e.warp,e.action),n=T.Address.newFromBech32(t),s=e.args.map(o=>this.serializer.stringToTyped(o)),i=new T.TransactionsFactoryConfig({chainID:e.chain.chainId});return new T.SmartContractTransactionsFactory({config:i}).createTransactionForExecute(n,{contract:T.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=(0,O.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(W=>this.serializer.stringToTyped(W)),s=x(e.chain,this.config.env,this.config),i=T.Address.newFromBech32(e.destination),o=s.createSmartContractController(r),l=o.createQuery({contract:i,function:t.func||"",arguments:n}),g=await o.runQuery(l),p=g.returnCode==="ok",d=new T.ArgSerializer,y=r.getEndpoint(g.function||t.func||""),w=(g.returnDataParts||[]).map(W=>Buffer.from(W)),C=d.buffersToValues(w,y.output),{values:V,output:M}=await this.output.extractQueryOutput(e.warp,C,e.action,e.resolvedInputs),K=(0,O.getNextInfo)(this.config,[],e.warp,e.action,M),Te=e.resolvedInputs.find(W=>W.input.position==="receiver"||W.input.position==="destination")?.value||e.destination,v=(0,O.extractResolvedInputValues)(e.resolvedInputs);return{status:p?"success":"error",warp:e.warp,action:e.action,user:(0,O.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:K,values:V,output:{...M,_DATA:C},messages:(0,O.applyOutputToMessages)(e.warp,M,this.config),destination:Te,resolvedInputs:v}}async createDeployTransaction(e){let t=T.Address.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),s=BigInt(n.nonce||0),i=new T.TransactionsFactoryConfig({chainID:this.chain.chainId}),o=new T.SmartContractTransactionsFactory({config:i}),l=(e.args||[]).map(d=>this.serializer.stringToTyped(d)),g=await o.createTransactionForDeploy(t,{bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:l,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});g.nonce=s;let p=new T.AddressComputer().computeContractAddress(t,s);return{tx:g,contractAddress:p.toBech32()}}async createUpgradeTransaction(e){let t=T.Address.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),s=BigInt(n.nonce||0),i=new T.TransactionsFactoryConfig({chainID:this.chain.chainId}),o=new T.SmartContractTransactionsFactory({config:i}),l=(e.args||[]).map(p=>this.serializer.stringToTyped(p)),g=await o.createTransactionForUpgrade(t,{contract:T.Address.newFromBech32(e.contractAddress),bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:l,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});return g.nonce=s,g}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:It}:t).map(t=>{let n=new T.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new T.TokenTransfer({token:new T.Token({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ge=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 s=z[t];if(s)return s}if(e){let s=z[e];if(s)return s}let r=this.getPrimaryExplorer();return z[r]||z[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let s=z[n];s&&(r[n]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let s=z[n];s&&(r[n]=`${s}/transactions/${e}`)}),r}};var h=require("@multiversx/sdk-core"),k=require("@joai/warps");var De={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var U=c=>{if(c==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(c==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var fe=c=>({hash:c.hash.toString("hex"),alias:c.alias?.toString()||null,trust:c.trust.toString(),owner:c.owner.toString(),createdAt:c.created_at.toNumber(),upgradedAt:c.upgraded_at?.toNumber(),brand:c.brand?.toString("hex")||null,upgrade:c.upgrade?.toString("hex")||null}),Le=c=>({unitPrice:BigInt(c.unit_price.toString()),admins:c.admins.map(e=>e.toBech32())});var ye=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new k.WarpCache(e.env,e.cache),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,k.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=h.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,i=()=>t&&r?[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t),h.BytesValue.fromHex(r)]:t?[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t)]:[h.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:h.Address.newFromBech32(U(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:i()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:h.Address.newFromBech32(U(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[h.BytesValue.fromUTF8(e),h.BytesValue.fromHex(t),h.BytesValue.fromHex(r)]:[h.BytesValue.fromUTF8(e),h.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e),h.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[h.BytesValue.fromHex(e),new h.AddressValue(new h.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=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:h.Address.newFromBech32(U(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:h.Address.newFromBech32(U(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[h.BytesValue.fromHex(e),h.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=k.WarpCacheKey.RegistryInfo(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return k.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let s=h.Address.newFromBech32(U(this.config.env)),i=this.getController(),o=i.createQuery({contract:s,function:"getInfoByAlias",arguments:[h.BytesValue.fromUTF8(e)]}),l=await i.runQuery(o),[g]=i.parseQueryResponse(l),p=g?fe(g):null,d=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:p,brand:d},t.ttl),{registryInfo:p,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=k.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let d=await this.cache.get(r);if(d)return k.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),d}let n=h.Address.newFromBech32(U(this.config.env)),s=this.getController(),i=s.createQuery({contract:n,function:"getInfoByHash",arguments:[h.BytesValue.fromHex(e)]}),o=await s.runQuery(i),[l]=s.parseQueryResponse(o),g=l?fe(l):null,p=g?.brand?await this.fetchBrand(g.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:g,brand:p},t.ttl),{registryInfo:g,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=h.Address.newFromBech32(U(this.config.env)),n=this.getController(),s=n.createQuery({contract:r,function:"getUserWarps",arguments:[new h.AddressValue(new h.Address(t))]}),i=await n.runQuery(s),[o]=n.parseQueryResponse(i);return o.map(fe)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=h.Address.newFromBech32(U(this.config.env)),n=this.getController(),s=n.createQuery({contract:r,function:"getUserBrands",arguments:[new h.AddressValue(new h.Address(t))]}),i=await n.runQuery(s),[o]=n.parseQueryResponse(i),l=o.map(d=>d.toString("hex")),g={ttl:365*24*60*60};return(await Promise.all(l.map(d=>this.fetchBrand(d,g)))).filter(d=>d!==null)}catch{return[]}}async fetchBrand(e,t){let r=k.WarpCacheKey.Brand(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return k.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let i=x(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await i.getTransaction(e),l=JSON.parse(o.data.toString());return l.meta={query:null,chain:this.chain.name,identifier:(0,k.createWarpIdentifier)(this.chain.name,"hash",e),hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&await this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=h.Address.newFromBech32(U(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Le(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new h.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=h.AbiRegistry.create(De);return new h.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=x(this.chain,this.config.env,this.config),t=h.AbiRegistry.create(De);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var ie=require("@joai/warps"),ut=require("@multiversx/sdk-core");var _=require("@multiversx/sdk-core"),lt=Ct(require("@scure/bip39"),1),pt=require("@scure/bip39/wordlists/english.js"),b=require("@joai/warps"),re=class re{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,b.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new _.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let t=(0,b.normalizeAndValidateMnemonic)(e),n=_.Mnemonic.fromString(t).deriveKey(0),s=n.hex(),o=n.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),l={provider:re.PROVIDER_NAME,address:o,privateKey:s,mnemonic:t};return(0,b.setWarpWalletInConfig)(this.config,this.chain.name,l),l}async importFromPrivateKey(e){let t=_.UserSecretKey.fromString(e),r=t.hex(),s=t.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:re.PROVIDER_NAME,address:s,privateKey:r,mnemonic:null};return(0,b.setWarpWalletInConfig)(this.config,this.chain.name,i),i}async export(){let e=this.getAccount(),t=(0,b.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name),r=(0,b.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);return{provider:re.PROVIDER_NAME,address:e.address.toBech32(),privateKey:r||null,mnemonic:t||null}}async generate(){let e=lt.generateMnemonic(pt.wordlist,256),t=(0,b.normalizeMnemonic)(e);(0,b.validateMnemonicLength)(t);let i=_.Mnemonic.fromString(t).deriveKey(0).generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:re.PROVIDER_NAME,address:i,privateKey:null,mnemonic:t}}async delete(e){(0,b.removeWarpWalletFromConfig)(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=(0,b.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=_.Mnemonic.fromString(e).deriveKey(0);return this.account=new _.Account(r,this.chain.addressHrp),this.account}};re.PROVIDER_NAME="mnemonic";var we=re;var R=require("@multiversx/sdk-core"),D=require("@joai/warps"),ne=class ne{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=(0,D.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new R.Message({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let r=R.Mnemonic.fromString(e).deriveKey(0),n=r.hex(),i=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:ne.PROVIDER_NAME,address:i,privateKey:n,mnemonic:e};return(0,D.setWarpWalletInConfig)(this.config,this.chain.name,o),o}async importFromPrivateKey(e){let r=e.startsWith("-----")?R.UserSecretKey.fromPem(e):R.UserSecretKey.fromString(e),n=r.hex(),i=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:ne.PROVIDER_NAME,address:i,privateKey:n,mnemonic:null};return(0,D.setWarpWalletInConfig)(this.config,this.chain.name,o),o}async export(){let e=this.getAccount(),t=(0,D.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name),r=(0,D.getWarpWalletMnemonicFromConfig)(this.config,this.chain.name);return{provider:ne.PROVIDER_NAME,address:e.address.toBech32(),privateKey:t||null,mnemonic:r||null}}async generate(){let e=R.UserSecretKey.generate(),t=e.hex(),n=e.generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:ne.PROVIDER_NAME,address:n,privateKey:t,mnemonic:null}}async delete(e){(0,D.removeWarpWalletFromConfig)(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=(0,D.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?R.UserSecretKey.fromPem(e):R.UserSecretKey.fromString(e);return this.account=new R.Account(r,this.chain.addressHrp),this.account}};ne.PROVIDER_NAME="privateKey";var We=ne;var J=require("@joai/warps"),ae=class{constructor(e,t){this.config=e;this.chain=t}async getAddress(){return(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async getPublicKey(){return null}async signTransaction(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async signMessage(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromMnemonic(e){let t=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromPrivateKey(e){let t=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async export(){let e=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async generate(){let e=(0,J.getWarpWalletAddressFromConfig)(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async delete(e){(0,J.removeWarpWalletFromConfig)(this.config,this.chain.name)}};var Ce=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=x(t,e.env,e),this.cache=new ie.WarpCache(e.env,e.cache),this.walletProvider=this.createProvider(),this.initializeCache()}async signTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof ae)throw new Error(`Wallet (${this.chain.name}) is read-only`);if(this.walletProvider instanceof We||this.walletProvider instanceof we){let n=this.walletProvider.getAccountInstance();if(t.nonce===0n){let s=await this.entry.recallAccountNonce(n.address),i=await this.cache.get(`nonce:${n.address.toBech32()}`)||0,o=BigInt(Math.max(i,Number(s)));t.nonce=o}}else if(t.nonce===0n&&this.cachedAddress){let n=ut.Address.newFromBech32(this.cachedAddress),s=await this.entry.recallAccountNonce(n),i=await this.cache.get(`nonce:${this.cachedAddress}`)||0,o=BigInt(Math.max(i,Number(s)));t.nonce=o}return await this.walletProvider.signTransaction(t)}async signTransactions(e){let t=[];for(let r of e)t.push(await this.signTransaction(r));return t}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof ae)throw new Error(`Wallet (${this.chain.name}) is read-only`);return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}async sendTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!t.signature||t.signature.length===0)throw new Error("Transaction must be signed before sending");let r=await this.entry.sendTransaction(t),n=t.sender,s=Number(t.nonce)+1;return await this.cache.set(`nonce:${n}`,s,ie.CacheTtl.OneMinute),r}async importFromMnemonic(e){return await this.createProviderForOperation("mnemonic").importFromMnemonic(e)}async importFromPrivateKey(e){return await this.createProviderForOperation("privateKey").importFromPrivateKey(e)}async export(e){return await this.createProviderForOperation(e).export()}async generate(e){return await this.createProviderForOperation(e).generate()}async delete(e,t){await this.createProviderForOperation(e).delete(t)}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];return e?typeof e=="string"?new ae(this.config,this.chain):e.provider?this.createProviderForOperation(e.provider):new ae(this.config,this.chain):null}initializeCache(){(0,ie.initializeWalletCache)(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}createProviderForOperation(e){let r=this.config.walletProviders?.[this.chain.name]?.[e];if(r){let n=r(this.config,this.chain);if(!n)throw new Error(`Custom wallet provider factory returned null for ${e}`);return n}if(e==="privateKey")return new We(this.config,this.chain);if(e==="mnemonic")return new we(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e}`)}};var ve=(c,e)=>(t,r)=>{let n=e[t.env],s=new mt.WarpTypeRegistry;return s.registerType("token",{stringToNative:i=>i,nativeToString:i=>`token:${i}`}),s.registerType("codemeta",{stringToNative:i=>i,nativeToString:i=>`codemeta:${i}`}),s.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new me(t,n),executor:new he(t,n,s),output:new te(t,n,s),serializer:new L({typeRegistry:s}),registry:new ye(t,n),explorer:new ge(c,t),abiBuilder:()=>new $(t,n),brandBuilder:()=>new ue(t,n),dataLoader:new de(t,n),wallet:new Ce(t,n)}};var oe=require("@joai/warps");var Ie={chain:oe.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/egld.svg"},Ke=ve(oe.WarpChainName.Multiversx,{mainnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie},testnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.battleofnodes.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie},devnet:{name:oe.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Ie}});var Se=require("@joai/warps");var dt={chain:Se.WarpChainName.Claws,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},_e={name:Se.WarpChainName.Claws,displayName:"Claws Network",chainId:"C",blockTime:600,addressHrp:"claw",defaultApiUrl:"https://api.claws.network",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/claws.png",nativeToken:dt,minGasPrice:20000000000000n},$e=ve(Se.WarpChainName.Claws,{mainnet:_e,testnet:_e,devnet:_e});var Nt=()=>[Ke,$e];var G=require("@joai/warps");var Bt=c=>new G.WarpSerializer().nativeToString(A.Token,c),Ut=c=>new G.WarpSerializer().nativeToString(A.CodeMeta,c),Ft=(c,e)=>{if(e===null)return A.Optional+G.WarpConstants.ArgParamsSeparator;let t=c(e),r=t.indexOf(G.WarpConstants.ArgParamsSeparator),n=t.substring(0,r),s=t.substring(r+1);return A.Optional+G.WarpConstants.ArgParamsSeparator+n+G.WarpConstants.ArgParamsSeparator+s},Ot=c=>new G.WarpSerializer().nativeToString(A.List,c);var m=require("@multiversx/sdk-core"),kt=(c,e)=>c?m.OptionValue.newProvided(c):e?m.OptionValue.newMissingTyped(e):m.OptionValue.newMissing(),Mt=(c,e)=>c?new m.OptionalValue(c.getType(),c):e?new m.OptionalValue(e):m.OptionalValue.newMissing(),Vt=c=>{if(c.length===0)throw new Error("Cannot create a list from an empty array");let e=c[0].getType();return new m.List(e,c)},Rt=c=>m.VariadicValue.fromItems(...c),Dt=c=>{let e=c.map(t=>t.getType());return new m.CompositeValue(new m.CompositeType(...e),c)},Lt=c=>m.StringValue.fromUTF8(c),Kt=c=>new m.U8Value(c),_t=c=>new m.U16Value(c),$t=c=>new m.U32Value(c),qt=c=>new m.U64Value(c),Ht=c=>new m.BigUIntValue(BigInt(c)),Gt=c=>new m.BooleanValue(c),zt=c=>new m.AddressValue(m.Address.newFromBech32(c)),jt=c=>new m.TokenIdentifierValue(c),Qt=c=>m.BytesValue.fromHex(c),Jt=c=>new m.Struct(new m.StructType("EsdtTokenPayment",[new m.FieldDefinition("token_identifier","",new m.TokenIdentifierType),new m.FieldDefinition("token_nonce","",new m.U64Type),new m.FieldDefinition("amount","",new m.BigUIntType)]),[new m.Field(new m.TokenIdentifierValue(c.token.identifier),"token_identifier"),new m.Field(new m.U64Value(BigInt(c.token.nonce)),"token_nonce"),new m.Field(new m.BigUIntValue(BigInt(c.amount)),"amount")]),Xt=c=>new m.CodeMetadataValue(m.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(c,"hex")))),Yt=()=>new m.NothingValue;0&&(module.exports={ClawsAdapter,ClawsExplorers,ExplorerUrls,KnownTokens,MultiversxAdapter,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenClaw,NativeTokenEgld,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxOutput,WarpMultiversxRegistry,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,hex_value,isNativeToken,list,list_value,nothing_value,option_value,optional,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{WarpChainName as it}from"@joai/warps";var oa=()=>[it.Multiversx,it.Claws];import{WarpTypeRegistry as Rn}from"@joai/warps";import{AbiRegistry as Le,Address as fr,EnumType as yr,OptionalType as Wr,OptionType as wr,TransactionsFactoryConfig as Cr,TransferTransactionsFactory as vr}from"@multiversx/sdk-core";import{createWarpIdentifier as Tr,getLatestProtocolIdentifier as bt,getWarpWalletAddressFromConfig as Ar,WarpCache as xr,WarpCacheKey as Er,WarpConstants as Pt,WarpLogger as It}from"@joai/warps";import{DevnetEntrypoint as nr,MainnetEntrypoint as ar,TestnetEntrypoint as sr}from"@multiversx/sdk-core";import{getProviderConfig as ir}from"@joai/warps";var L=c=>!c.includes("-"),ee=c=>L(c)?`${c}-000000`:c,v=(c,e,t)=>{let r="warp-sdk",a=t?ir(t,c.name,e,c.defaultApiUrl):{url:c.defaultApiUrl},s=a.url,i={headers:a.headers};return e==="devnet"?new nr({url:s,kind:"api",clientName:r,networkProviderConfig:i}):e==="testnet"?new sr({url:s,kind:"api",clientName:r,networkProviderConfig:i}):new ar({url:s,kind:"api",clientName:r,networkProviderConfig:i})};import{WarpLogger as ot}from"@joai/warps";var te=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await v(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return ot.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await v(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return ot.error("WarpContractLoader: getVerificationInfo error",r),null}}};import{Address as pr,AddressType as be,AddressValue as ut,BigUIntType as re,BigUIntValue as Pe,BooleanType as Ie,BooleanValue as mt,BytesType as Se,BytesValue as dt,CodeMetadata as ur,CodeMetadataType as Ne,CodeMetadataValue as ht,CompositeType as Be,CompositeValue as gt,EnumType as ne,EnumValue as ft,EnumVariantDefinition as mr,Field as ae,FieldDefinition as se,List as yt,ListType as Wt,NothingValue as I,OptionalType as wt,OptionalValue as Ue,OptionType as Ct,OptionValue as Fe,StringType as Oe,StringValue as vt,Struct as ie,StructType as M,Token as dr,TokenComputer as Tt,TokenIdentifierType as oe,TokenIdentifierValue as ke,U16Type as Me,U16Value as At,U32Type as Ve,U32Value as xt,U64Type as ce,U64Value as Re,U8Type as De,U8Value as Et,VariadicType as q,VariadicValue as le}from"@multiversx/sdk-core";import{WarpSerializer as hr}from"@joai/warps";var or=c=>c?typeof c=="string"?c:c.address:null,ct=(c,e)=>or(c.user?.wallets?.[e]||null);var lt=(r=>(r.Macos="macos",r.Linux="linux",r.Windows="windows",r))(lt||{}),Ea=Object.values(lt);var d={HttpProtocolPrefix:"https://",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:c=>ct(c.config,c.adapter.chainInfo.name)},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:c=>{if(!c.adapter.wallet)return null;try{return c.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:c=>c.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:c=>c.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},p={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex"};var Pa={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},w={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},cr=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(cr||{}),lr=(r=>(r.ClawsExplorer="claws_explorer",r.ClawsExplorerDevnet="claws_explorer_devnet",r.ClawsExplorerTestnet="claws_explorer_testnet",r))(lr||{}),pt={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},claws:{mainnet:["claws_explorer"],testnet:["claws_explorer_testnet"],devnet:["claws_explorer_devnet"]}},k={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://bon-explorer.multiversx.com",claws_explorer:"https://explorer.claws.network",claws_explorer_devnet:"https://explorer.claws.network",claws_explorer_testnet:"https://explorer.claws.network"};var gr=new RegExp(`${d.ArgParamsSeparator}(.*)`),B=class{constructor(e){this.coreSerializer=new hr(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(Ct.ClassName)||e.hasClassOrSuperclass(Fe.ClassName)){if(!e.isSet())return p.Option+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return p.Option+d.ArgParamsSeparator+r}if(t.hasExactClass(q.ClassName)||e.hasClassOrSuperclass(le.ClassName)){let r=e.getItems();if(r.length===0){let l=this.typeToString(t.getFirstTypeParameter());return p.Vector+d.ArgParamsSeparator+l+d.ArgParamsSeparator}let n=r.map(l=>this.typedToString(l));if(n.every(l=>l.startsWith(p.Tuple)))return p.Vector+d.ArgParamsSeparator+n.join(",");let a=n[0],s=a.indexOf(d.ArgParamsSeparator),i=a.substring(0,s),o=n.map(l=>{let u=l.indexOf(d.ArgParamsSeparator);return l.substring(u+1)}),m=i.startsWith(p.Struct)?d.ArgStructSeparator:d.ArgListSeparator;return p.Vector+d.ArgParamsSeparator+i+d.ArgParamsSeparator+o.join(m)}if(t.hasExactClass(wt.ClassName)||e.hasClassOrSuperclass(Ue.ClassName)){if(!e.isSet())return w.Optional+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return w.Optional+d.ArgParamsSeparator+r}if(t.hasExactClass(Wt.ClassName)||e.hasClassOrSuperclass(yt.ClassName)){let n=e.getItems().map(o=>this.typedToString(o));if(n.every(o=>o.startsWith(p.Tuple)))return w.List+d.ArgParamsSeparator+n.join(",");let s=n.map(o=>o.split(d.ArgParamsSeparator)[0])[0],i=n.map(o=>o.split(d.ArgParamsSeparator)[1]);return w.List+d.ArgParamsSeparator+s+d.ArgParamsSeparator+i.join(d.ArgListSeparator)}if(t.hasExactClass(Be.ClassName)||e.hasClassOrSuperclass(gt.ClassName)){let n=e.getItems().map(a=>{let s=this.typedToString(a),i=s.indexOf(d.ArgParamsSeparator),o=s.substring(0,i),m=s.substring(i+1);return`${o},${m}`});return`${p.Tuple}(${n.join(",")})`}if(t.hasExactClass(re.ClassName)||e.hasClassOrSuperclass(Pe.ClassName)||t.getName()==="BigUint")return p.Biguint+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(De.ClassName)||e.hasClassOrSuperclass(Et.ClassName))return p.Uint8+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Me.ClassName)||e.hasClassOrSuperclass(At.ClassName))return p.Uint16+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ve.ClassName)||e.hasClassOrSuperclass(xt.ClassName))return p.Uint32+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(ce.ClassName)||e.hasClassOrSuperclass(Re.ClassName))return p.Uint64+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(Oe.ClassName)||e.hasClassOrSuperclass(vt.ClassName))return p.String+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(Ie.ClassName)||e.hasClassOrSuperclass(mt.ClassName))return p.Bool+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(be.ClassName)||e.hasClassOrSuperclass(ut.ClassName))return p.Address+d.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(Se.ClassName)||e.hasClassOrSuperclass(dt.ClassName))return p.Hex+d.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf(),i=new Tt().computeExtendedIdentifier(new dr({identifier:r,nonce:BigInt(n)}));return p.Asset+d.ArgParamsSeparator+i+d.ArgCompositeSeparator+a}if(t.hasExactClass(M.ClassName)||e.hasClassOrSuperclass(ie.ClassName)){let r=e,a=r.getType().getName(),s=r.getFields();if(s.length===0)return`${p.Struct}(${a})${d.ArgParamsSeparator}`;let i=s.map(o=>{let m=o.value.getType(),u=this.typedToString(o.value).split(d.ArgParamsSeparator),h=u.length>2?u.slice(2).join(d.ArgParamsSeparator):u[1]||"";return`(${o.name}${d.ArgParamsSeparator}${this.typeToString(m)})${h}`});return`${p.Struct}(${a})${d.ArgParamsSeparator}${i.join(d.ArgListSeparator)}`}if(t.hasExactClass(ne.ClassName)||e.hasClassOrSuperclass(ft.ClassName)){let r=e;return`enum(${r.getType().getName()})${d.ArgParamsSeparator}${r.discriminant}`}if(t.hasExactClass(oe.ClassName)||e.hasClassOrSuperclass(ke.ClassName))return w.Token+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(Ne.ClassName)||e.hasClassOrSuperclass(ht.ClassName))return w.CodeMeta+d.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){if(e.startsWith(p.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(p.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let a=0;a<r.length;a+=2)n.push(r[a]);return new Be(...n.map(a=>this.nativeToType(a)))}if(e.startsWith(p.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new M(r,[])}if(e===p.String)return new Oe;if(e===p.Uint8)return new De;if(e===p.Uint16)return new Me;if(e===p.Uint32)return new Ve;if(e===p.Uint64)return new ce;if(e===p.Biguint)return new re;if(e===p.Bool)return new Ie;if(e===p.Address)return new be;if(e===p.Hex)return new Se;if(e===p.Asset)return new M("EsdtTokenPayment",[new se("token_identifier","",new oe),new se("token_nonce","",new ce),new se("amount","",new re)]);if(e.startsWith("enum")){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Enum type must include a name in the format enum(Name)");return new ne(t[1],[])}if(e===w.Token)return new oe;if(e===w.CodeMeta)return new Ne;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===p.Option){let n=this.stringToTyped(r);return n instanceof I?Fe.newMissingTyped(n.getType()):Fe.newProvided(n)}if(t===p.Vector){let n=r.indexOf(d.ArgParamsSeparator),a=r.substring(0,n),s=r.substring(n+1);if(a.startsWith(p.Tuple)){let u=s.split(",").map(h=>this.stringToTyped(h));return new le(new q(this.nativeToType(a)),u)}if(s.includes("tuple(")){let l=this.splitTupleStrings(s),u=l.map(S=>this.stringToTyped(S)),g=l[0].match(/^(tuple\([^)]+\))/),y=g?g[1]:"tuple";return new le(new q(this.nativeToType(y)),u)}let i=a.startsWith(p.Struct)?d.ArgStructSeparator:d.ArgListSeparator,m=s.split(i).map(l=>this.stringToTyped(`${a}:${l}`));return new le(new q(this.nativeToType(a)),m)}if(t.startsWith(p.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let a=n.split(","),s=[];for(let o=0;o<a.length;o+=2){let m=a[o],l=a[o+1];s.push(this.stringToTyped(`${m}:${l}`))}let i=s.map(o=>o.getType());return new gt(new Be(...i),s)}if(t.startsWith(p.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new ie(new M(a,[]),[]);let s=r.split(d.ArgListSeparator),i=[],o=[];return s.forEach(m=>{let l=m.match(new RegExp(`^\\(([^${d.ArgParamsSeparator}]+)${d.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(l){let[,u,h,g]=l,y=this.stringToTyped(`${h}${d.ArgParamsSeparator}${g}`);i.push(new se(u,"",y.getType())),o.push(new ae(y,u))}}),new ie(new M(a,i),o)}if(t===p.String)return r?vt.fromUTF8(r):new I;if(t===p.Uint8)return r?new Et(Number(r)):new I;if(t===p.Uint16)return r?new At(Number(r)):new I;if(t===p.Uint32)return r?new xt(Number(r)):new I;if(t===p.Uint64)return r?new Re(BigInt(r)):new I;if(t===p.Biguint)return r?new Pe(BigInt(r)):new I;if(t===p.Bool)return r?new mt(typeof r=="boolean"?r:r==="true"):new I;if(t===p.Address)return r?new ut(pr.newFromBech32(r)):new I;if(t===p.Hex)return r?dt.fromHex(r):new I;if(t===p.Asset){let[n,a]=r.split(d.ArgCompositeSeparator),s=new Tt,i=L(n)?ee(n):s.extractIdentifierFromExtendedIdentifier(n),o=L(n)?0n:s.extractNonceFromExtendedIdentifier(n);return new ie(this.nativeToType("asset"),[new ae(new ke(i),"token_identifier"),new ae(new Re(BigInt(o)),"token_nonce"),new ae(new Pe(BigInt(a)),"amount")])}if(t===w.Null)return new I;if(t===w.Optional){let n=this.stringToTyped(r);return n instanceof I?Ue.newMissing():new Ue(n.getType(),n)}if(t===w.List){let[n,a]=r.split(gr,2),i=a.split(d.ArgListSeparator).map(o=>this.stringToTyped(n+d.ArgParamsSeparator+o));return new yt(this.nativeToType(n),i)}if(t===w.Token)return r?new ke(r):new I;if(t===w.CodeMeta)return new ht(ur.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t.startsWith("enum")){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomEnum",s=Number(r);if(isNaN(s))throw new Error(`WarpArgSerializer (stringToTyped): Invalid enum discriminant: ${r}`);let i=new mr(r,s,[]),o=new ne(a,[i]);return new ft(o,i,[])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let a=0;a<e.length;a++){let s=e[a];if(s==="(")n++;else if(s===")")n--;else if(s===","&&n===0){t.push(r.trim()),r="";continue}r+=s}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(Ct.ClassName))return p.Option+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(q.ClassName))return p.Vector+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(Oe.ClassName))return p.String;if(e.hasExactClass(De.ClassName))return p.Uint8;if(e.hasExactClass(Me.ClassName))return p.Uint16;if(e.hasExactClass(Ve.ClassName))return p.Uint32;if(e.hasExactClass(ce.ClassName))return p.Uint64;if(e.hasExactClass(re.ClassName))return p.Biguint;if(e.hasExactClass(Ie.ClassName))return p.Bool;if(e.hasExactClass(be.ClassName))return p.Address;if(e.hasExactClass(Se.ClassName))return p.Hex;if(e.hasExactClass(oe.ClassName))return w.Token;if(e.hasExactClass(wt.ClassName))return w.Optional+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(Wt.ClassName))return w.List+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(Ne.ClassName))return w.CodeMeta;if(e.hasExactClass(M.ClassName)&&e.getClassName()==="EsdtTokenPayment")return p.Asset;if(e.hasExactClass(M.ClassName))return`${p.Struct}(${e.getName()})`;if(e.hasExactClass(ne.ClassName))return`enum(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var U=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new te(this.config),this.cache=new xr(this.config.env,this.config.cache)}async createInscriptionTransaction(e){let t=Ar(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new Cr({chainID:this.chain.chainId}),n=new vr({config:r}),a=fr.newFromBech32(t),s={protocol:bt("abi"),content:e},i=JSON.stringify(s),o=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,identifier:Tr(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Er.WarpAbi(this.config.env,e);if(t){let s=await this.cache.get(r);if(s)return It.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),s}let a=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await a.getTransaction(e),i=await this.createFromTransaction(s);return t&&t.ttl&&i&&await this.cache.set(r,i,t.ttl),i}catch(s){return It.error("WarpAbiBuilder: Error creating from transaction hash",s),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return Le.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Pt.IdentifierType.Hash)){let t=e.abi.split(Pt.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return Le.create(r.content)}else{let r=await(await fetch(e.abi)).json();return Le.create(r)}}endpointsToWarps(e,t,r){let n=new B,a=r?btoa(JSON.stringify(r)):void 0;return e.getEndpoints().map(s=>{let i=s.modifiers.isReadonly(),o=s.input.map((l,u)=>{let h={name:l.name,type:n.typeToString(l.type),position:`arg:${u+1}`,source:"field",required:!l.type.hasClassOrSuperclass(Wr.ClassName)&&!l.type.hasClassOrSuperclass(wr.ClassName)};if(l.type.hasExactClass(yr.ClassName)){let g=l.type;h.options=Object.fromEntries(g.variants.map(y=>[String(y.discriminant),y.name]))}return h}),m=i?{type:"query",label:s.name,address:t,func:s.name,args:[],abi:a,inputs:o}:{type:"contract",label:s.name,address:t,func:s.name,args:[],gasLimit:1e7,abi:a,inputs:o};return{protocol:bt("warp"),name:s.name,title:s.name,description:null,chain:this.chain.name,actions:[m]}})}};import{Address as St,TransactionsFactoryConfig as br,TransferTransactionsFactory as Pr}from"@multiversx/sdk-core";import{createWarpIdentifier as Ir,getWarpWalletAddressFromConfig as Sr,WarpBrandBuilder as Nr,WarpLogger as Br}from"@joai/warps";import{Buffer as Ur}from"buffer";var pe=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Nr(e)}async createInscriptionTransaction(e){let t=Sr(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new br({chainID:this.chain.chainId}),n=new Pr({config:r}),a=St.newFromBech32(t),s=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:St.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ur.from(s))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:Ir(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Br.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as Nt,TransactionsFactoryConfig as Fr,TransferTransactionsFactory as Or}from"@multiversx/sdk-core";import{createWarpIdentifier as kr,getWarpWalletAddressFromConfig as Mr,WarpBuilder as Bt,WarpCache as Vr,WarpCacheKey as Rr,WarpLogger as Ut}from"@joai/warps";var ue=class extends Bt{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new Vr(t.env,t.cache),this.core=new Bt(t)}async createInscriptionTransaction(t){let r=Mr(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new Fr({chainID:this.chain.chainId}),a=new Or({config:n}),s=Nt.newFromBech32(r),i=JSON.stringify(t),o=await a.createTransactionForTransfer(s,{receiver:Nt.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:kr(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=Rr.Warp(this.config.env,t);if(r){let i=await this.cache.get(n);if(i)return Ut.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),i}let s=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(t),o=await this.createFromTransaction(i);return r&&r.ttl&&o&&await this.cache.set(n,o,r.ttl),o}catch(i){return Ut.error("WarpBuilder: Error creating from transaction hash",i),null}}};import{Address as Ke,Token as $r,TokenComputer as qr}from"@multiversx/sdk-core";import{CacheTtl as _e,WarpCache as Hr,WarpCacheKey as _t}from"@joai/warps";import{WarpChainName as Dt}from"@joai/warps";import{WarpChainName as Dr}from"@joai/warps";var Ft=Dr.Multiversx,Ot=[{chain:Ft,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ft,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Lr}from"@joai/warps";var E=Lr.Multiversx,kt=[{chain:E,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:E,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:E,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:E,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:E,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:E,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:E,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:E,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:E,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:E,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:E,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:E,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:E,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as Kr}from"@joai/warps";var Mt=Kr.Multiversx,Vt=[{chain:Mt,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Mt,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as _r}from"@joai/warps";var Rt=_r.Claws,me=[{chain:Rt,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},{chain:Rt,identifier:"CLAW-000000",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"}];var Lt={[Dt.Multiversx]:{mainnet:kt,testnet:Vt,devnet:Ot},[Dt.Claws]:{mainnet:me,testnet:me,devnet:me}},Kt=(c,e,t)=>(Lt[c]?.[e]||[]).find(n=>n.identifier===t)||null,Gs=(c,e)=>Lt[c]?.[e]||[];var he=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Hr(e.env,e.cache)}async getAccount(e){let r=await v(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(Ke.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=v(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(Ke.newFromBech32(e)),n=t.getFungibleTokensOfAccount(Ke.newFromBech32(e)),[a,s]=await Promise.all([r,n]),i=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return i.push(...s.map(o=>({chain:this.chain.name,identifier:o.token.identifier,name:o.raw.name,symbol:o.raw.ticker,amount:o.amount,decimals:o.raw.decimals,logoUrl:o.raw.assets?.pngUrl||"",price:o.raw.price?Number(o.raw.price):void 0,supply:o.raw.supply?BigInt(o.raw.supply):void 0}))),i}async getAccountNfts(e,t){let r=t?.size||25,n=t?.page||0,a=_t.AccountNfts(this.config.env,this.chain.name,e,n,r),s=await this.cache.get(a);if(s)return s;let i=v(this.chain,this.config.env,this.config).createNetworkProvider(),o=n*r,m=new URLSearchParams({size:r.toString(),from:o.toString()}),l=await i.doGetGeneric(`accounts/${e}/nfts?${m.toString()}`);if(!Array.isArray(l))return[];let u=l.filter(h=>h.type!=="MetaESDT").map(h=>({chain:this.chain.name,identifier:h.identifier,name:h.name||h.identifier,symbol:h.ticker||h.collection||"",amount:h.balance?BigInt(h.balance):1n,decimals:0,type:h.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:h.collection,nonce:h.nonce?BigInt(h.nonce):void 0,mediaUrl:de(h.url||h.media?.[0]?.url),thumbnailUrl:de(h.thumbnailUrl||h.media?.[0]?.thumbnailUrl),attributes:Array.isArray(h.metadata?.attributes)?Object.fromEntries(h.metadata.attributes.map(g=>[g.trait_type,String(g.value)])):void 0,royalties:h.royalties?Number(h.royalties)/100:void 0,rank:h.rank,creator:h.creator}}));return await this.cache.set(a,u,5*_e.OneMinute),u}async getAsset(e){let t=_t.Asset(this.config.env,this.chain.name,e),r=await this.cache.get(t);if(r)return r;let n=Kt(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let a=new qr,s=L(e)?0n:a.extractNonceFromExtendedIdentifier(e),i=new $r({identifier:e,nonce:BigInt(s||0)}),o=a.isFungible(i),m=v(this.chain,this.config.env,this.config).createNetworkProvider();if(!o&&s>0n){let g=await m.doGetGeneric(`nfts/${e}`),y={chain:this.chain.name,identifier:e,name:g.name||e,symbol:g.ticker||g.collection||"",amount:0n,decimals:0,type:g.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:g.collection,nonce:g.nonce?BigInt(g.nonce):void 0,mediaUrl:de(g.url||g.media?.[0]?.url),thumbnailUrl:de(g.thumbnailUrl||g.media?.[0]?.thumbnailUrl),creator:g.creator}};return await this.cache.set(t,y,_e.OneHour),y}let l=ee(e),u=await m.doGetGeneric(`tokens/${l}`),h={chain:this.chain.name,identifier:i.identifier,name:u.name,symbol:u.ticker,amount:0n,decimals:u.decimals,logoUrl:u.assets?.pngUrl||null,price:u.price?Number(u.price):void 0,supply:u.supply?BigInt(u.supply):void 0};return await this.cache.set(t,h,_e.OneHour),h}async getAction(e,t=!1){let r=v(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(a=>a.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=v(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,s=t?.size||25,i=t?.page||0;if(i>0){let m=i*s;a.append("from",m.toString())}return s!==25&&a.append("size",s.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(m=>({chain:this.chain.name,id:m.txHash,receiver:m.receiver,sender:m.sender,value:m.value,function:m.function,status:this.toActionStatus(m),createdAt:this.toActionCreatedAt(m)}))}toActionStatus(e){return e.status?.isSuccessful?.()?"success":e.status?.isFailed?.()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}},Gr="https://ipfs.io/ipfs/",de=c=>{if(c)return c.startsWith("ipfs://")?Gr+c.slice(7):c};import{Address as F,AddressComputer as en,ArgSerializer as tn,SmartContractTransactionsFactory as $e,Token as rn,TokenComputer as nn,TokenTransfer as an,TransactionsFactoryConfig as ge,TransferTransactionsFactory as sn}from"@multiversx/sdk-core";import{applyOutputToMessages as on,extractResolvedInputValues as cn,getNextInfo as ln,getWarpActionByIndex as qe,getWarpWalletAddressFromConfig as He}from"@joai/warps";import{applyOutputToMessages as zr,evaluateOutputCommon as K,extractResolvedInputValues as jr,getWarpActionByIndex as Qr,getWarpWalletAddressFromConfig as Jr,parseOutputOutIndex as $t,WarpConstants as H}from"@joai/warps";import{findEventsByFirstTopic as Xr,SmartContractTransactionsOutcomeParser as Yr,TokenManagementTransactionsOutcomeParser as qt,TransactionEventsParser as Zr}from"@multiversx/sdk-core";var _=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new U(e,t),this.serializer=new B({typeRegistry:this.typeRegistry})}async getActionExecution(e,t,r,n){let a=n??[],s=await this.extractContractOutput(e,t,r,a),i=Object.fromEntries(a.map(l=>[l.input.as||l.input.name,l.value])),o=zr(e,{...i,...s.output},this.config),m=jr(a);return{status:r.status?.isSuccessful?.()?"success":"error",warp:e,action:t,user:Jr(this.config,this.chain.name),txHash:r.hash,tx:r,next:null,values:s.values,output:s.output,messages:o,destination:null,resolvedInputs:m}}async extractContractOutput(e,t,r,n){let a=Qr(e,t),s=[],i=[],o={};if(!e.output||a.type!=="contract")return{values:{string:s,native:i,mapped:{}},output:o};let m=r.hash,l=W=>{o[W]=m,s.push(String(m)),i.push(m)};if(!Object.values(e.output).some(W=>W.startsWith("event.")||W.startsWith("out.")||W.startsWith("out["))){for(let[W,f]of Object.entries(e.output))if(!f.startsWith(H.Transform.Prefix)){if(f==="out"){l(W);continue}o[W]=f}return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let h=a.abi?null:this.tryExtractBuiltInFunctionOutput(a,r);if(h){for(let[W,f]of Object.entries(e.output))f.startsWith(H.Transform.Prefix)||(f==="out"?l(W):f==="out.1"?(o[W]=h.nftIdentifier,h.nftIdentifier&&(s.push(h.nftIdentifier),i.push(h.nftIdentifier))):o[W]=f);return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let g=a.abi?null:this.tryExtractSystemScOutput(a,r);if(g){let W=g.tokenIdentifier;for(let[f,O]of Object.entries(e.output))O.startsWith(H.Transform.Prefix)||(O==="out"?l(f):O==="out.1"?(o[f]=W,W&&(s.push(W),i.push(W))):o[f]=O);return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let y=await this.abi.getAbiForAction(a),S=new Zr({abi:y}),P=new Yr({abi:y}),N=null,$=!1,X=()=>($||($=!0,N=P.parseExecute({transactionOnNetwork:r,function:a.func||void 0})),N);for(let[W,f]of Object.entries(e.output)){if(f.startsWith(H.Transform.Prefix))continue;if(f.startsWith("input.")){o[W]=f;continue}if(f==="out"){l(W);continue}let O=$t(f);if(O!==null&&O!==t){o[W]=null;continue}let[Ae,Y,Z,st]=f.split(".");if(Ae==="event"){if(!Y||isNaN(Number(Z)))continue;let xe=Number(Z),Ee=Xr(r,Y),A=S.parseEvents({events:Ee})[0];if(!A||typeof A!="object"){o[W]=null;continue}let x=Object.values(A)[xe]||null;x&&st&&typeof x=="object"&&(x=x[st]??null),x&&typeof x=="object"&&(x="toFixed"in x?x.toFixed():x.valueOf()),s.push(String(x)),i.push(x),o[W]=x&&x.valueOf()}else if(Ae==="out"||Ae.startsWith("out[")){if(!Y)continue;let xe=X(),Ee=Number(Y),A=xe.values[Ee-1]||null;Z&&(A=A[Z]||null),A&&typeof A=="object"&&(A="toFixed"in A?A.toFixed():A.valueOf()),s.push(String(A)),i.push(A),o[W]=A&&A.valueOf()}else o[W]=f}return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let a=t.map(l=>this.serializer.typedToString(l)),s=t.map(l=>this.serializer.typedToNative(l)[1]),i={string:a,native:s,mapped:{}},o={};if(!e.output)return{values:i,output:o};let m=l=>{let u=l.split(".").slice(1).map(g=>parseInt(g)-1);if(u.length===0)return;let h=s[u[0]];for(let g=1;g<u.length;g++){if(h==null)return;h=h[u[g]]}return h};for(let[l,u]of Object.entries(e.output)){if(u.startsWith(H.Transform.Prefix))continue;let h=$t(u);if(h!==null&&h!==r){o[l]=null;continue}u.startsWith("out.")||u==="out"||u.startsWith("out[")?o[l]=m(u)||null:o[l]=u}return o=await K(e,o,s,r,n,this.serializer.coreSerializer,this.config),{values:i,output:o}}tryExtractBuiltInFunctionOutput(e,t){if(e.func!=="ESDTNFTCreate")return null;try{let a=new qt().parseNftCreate(t)[0];if(!a)return{nftIdentifier:null};let s=a.nonce.toString(16),i=s.length%2!==0?"0"+s:s;return{nftIdentifier:`${a.tokenIdentifier}-${i}`}}catch{return{nftIdentifier:null}}}tryExtractSystemScOutput(e,t){if(e.address!=="erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"||!e.func)return null;let a={issue:(s,i)=>s.parseIssueFungible(i),issueNonFungible:(s,i)=>s.parseIssueNonFungible(i),issueSemiFungible:(s,i)=>s.parseIssueSemiFungible(i),registerMetaESDT:(s,i)=>s.parseRegisterMetaEsdt(i),registerAndSetAllRoles:(s,i)=>s.parseRegisterAndSetAllRoles(i)}[e.func];if(!a)return null;try{return{tokenIdentifier:a(new qt,t)[0]?.tokenIdentifier||null}}catch{return{tokenIdentifier:null}}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,s=e.meta,i=new Map,o=new Set,m=this;async function l(y,S=[]){if(i.has(y))return i.get(y);if(o.has(y))throw new Error(`Circular dependency detected at action ${y}`);o.add(y);let P=t.actions[y-1];if(!P)throw new Error(`Action ${y} not found`);let N;if(P.type==="query")N=await n.executeQuery(t,y,S);else if(P.type==="collect")N=await n.executeCollect(t,y,S,s);else throw new Error(`Unsupported or interactive action type: ${P.type}`);if(i.set(y,N),t.output)for(let $ of Object.values(t.output)){let W=String($).match(/^out\[(\d+)\]/);if(W){let f=parseInt(W[1],10);f!==y&&!i.has(f)&&await l(f)}}return o.delete(y),N}await l(r,a);let u={};for(let y of i.values())for(let[S,P]of Object.entries(y.output))P!==null?u[S]=P:S in u||(u[S]=null);let h=await K(t,u,u,r,a,this.serializer.coreSerializer,this.config);return{...i.get(r),action:r,output:h}}};var pn="EGLD-000000",fe=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new B({typeRegistry:this.typeRegistry}),this.abi=new U(this.config,this.chain),this.output=new _(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=qe(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 this.chain.minGasPrice&&(r.gasPrice=this.chain.minGasPrice),r}async createTransferTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=He(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new ge({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,s=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,o=(s?e.transfers[0].amount:0n)+e.value;return await new sn({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:o,tokenTransfers:s?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=He(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=qe(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(i=>this.serializer.stringToTyped(i)),s=new ge({chainID:e.chain.chainId});return new $e({config:s}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=qe(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(f=>this.serializer.stringToTyped(f)),a=v(e.chain,this.config.env,this.config),s=F.newFromBech32(e.destination),i=a.createSmartContractController(r),o=i.createQuery({contract:s,function:t.func||"",arguments:n}),m=await i.runQuery(o),l=m.returnCode==="ok",u=new tn,h=r.getEndpoint(m.function||t.func||""),g=(m.returnDataParts||[]).map(f=>Buffer.from(f)),y=u.buffersToValues(g,h.output),{values:S,output:P}=await this.output.extractQueryOutput(e.warp,y,e.action,e.resolvedInputs),N=ln(this.config,[],e.warp,e.action,P),X=e.resolvedInputs.find(f=>f.input.position==="receiver"||f.input.position==="destination")?.value||e.destination,W=cn(e.resolvedInputs);return{status:l?"success":"error",warp:e.warp,action:e.action,user:He(this.config,e.chain.name),txHash:null,tx:null,next:N,values:S,output:{...P,_DATA:y},messages:on(e.warp,P,this.config),destination:X,resolvedInputs:W}}async createDeployTransaction(e){let t=F.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),a=BigInt(n.nonce||0),s=new ge({chainID:this.chain.chainId}),i=new $e({config:s}),o=(e.args||[]).map(u=>this.serializer.stringToTyped(u)),m=await i.createTransactionForDeploy(t,{bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:o,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});m.nonce=a;let l=new en().computeContractAddress(t,a);return{tx:m,contractAddress:l.toBech32()}}async createUpgradeTransaction(e){let t=F.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),a=BigInt(n.nonce||0),s=new ge({chainID:this.chain.chainId}),i=new $e({config:s}),o=(e.args||[]).map(l=>this.serializer.stringToTyped(l)),m=await i.createTransactionForUpgrade(t,{contract:F.newFromBech32(e.contractAddress),bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:o,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});return m.nonce=a,m}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:pn}:t).map(t=>{let n=new nn().extractNonceFromExtendedIdentifier(t.identifier);return new an({token:new rn({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ye=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=pt[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=k[t];if(a)return a}if(e){let a=k[e];if(a)return a}let r=this.getPrimaryExplorer();return k[r]||k[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=k[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=k[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Gt,Address as C,AddressValue as ze,BytesValue as T,SmartContractTransactionsFactory as mn,TransactionsFactoryConfig as dn}from"@multiversx/sdk-core";import{createWarpIdentifier as hn,getWarpWalletAddressFromConfig as gn,WarpCache as fn,WarpCacheKey as je,WarpLogger as Qe}from"@joai/warps";var Ge={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var b=c=>{if(c==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(c==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var We=c=>({hash:c.hash.toString("hex"),alias:c.alias?.toString()||null,trust:c.trust.toString(),owner:c.owner.toString(),createdAt:c.created_at.toNumber(),upgradedAt:c.upgraded_at?.toNumber(),brand:c.brand?.toString("hex")||null,upgrade:c.upgrade?.toString("hex")||null}),Ht=c=>({unitPrice:BigInt(c.unit_price.toString()),admins:c.admins.map(e=>e.toBech32())});var we=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new fn(e.env,e.cache),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=gn(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=C.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,s=()=>t&&r?[T.fromHex(e),T.fromUTF8(t),T.fromHex(r)]:t?[T.fromHex(e),T.fromUTF8(t)]:[T.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:C.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:s()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[T.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:C.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[T.fromUTF8(e),T.fromHex(t),T.fromHex(r)]:[T.fromUTF8(e),T.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e),T.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[T.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[T.fromHex(e),new ze(new C(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=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e),T.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=je.RegistryInfo(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return Qe.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=C.newFromBech32(b(this.config.env)),s=this.getController(),i=s.createQuery({contract:a,function:"getInfoByAlias",arguments:[T.fromUTF8(e)]}),o=await s.runQuery(i),[m]=s.parseQueryResponse(o),l=m?We(m):null,u=l?.brand?await this.fetchBrand(l.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:l,brand:u},t.ttl),{registryInfo:l,brand:u}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=je.RegistryInfo(this.config.env,e);if(t){let u=await this.cache.get(r);if(u)return Qe.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),u}let n=C.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:n,function:"getInfoByHash",arguments:[T.fromHex(e)]}),i=await a.runQuery(s),[o]=a.parseQueryResponse(i),m=o?We(o):null,l=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:m,brand:l},t.ttl),{registryInfo:m,brand:l}}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=C.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new ze(new C(t))]}),s=await n.runQuery(a),[i]=n.parseQueryResponse(s);return i.map(We)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new ze(new C(t))]}),s=await n.runQuery(a),[i]=n.parseQueryResponse(s),o=i.map(u=>u.toString("hex")),m={ttl:365*24*60*60};return(await Promise.all(o.map(u=>this.fetchBrand(u,m)))).filter(u=>u!==null)}catch{return[]}}async fetchBrand(e,t){let r=je.Brand(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return Qe.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let s=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(e),o=JSON.parse(i.data.toString());return o.meta={query:null,chain:this.chain.name,identifier:hn(this.chain.name,"hash",e),hash:i.hash,creator:i.sender.toBech32(),createdAt:new Date(i.timestamp*1e3).toISOString()},t&&t.ttl&&await this.cache.set(r,o,t.ttl),o}catch{return null}}async loadRegistryConfigs(){let e=C.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Ht(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new dn({chainID:this.chain.chainId}),t=Gt.create(Ge);return new mn({config:e,abi:t})}getController(){let e=v(this.chain,this.config.env,this.config),t=Gt.create(Ge);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{CacheTtl as On,initializeWalletCache as kn,WarpCache as Mn}from"@joai/warps";import{Address as Vn}from"@multiversx/sdk-core";import{Account as yn,Message as Wn,Mnemonic as Je,UserSecretKey as wn}from"@multiversx/sdk-core";import*as Qt from"@scure/bip39";import{wordlist as Cn}from"@scure/bip39/wordlists/english.js";import{getWarpWalletAddressFromConfig as vn,getWarpWalletMnemonicFromConfig as zt,getWarpWalletPrivateKeyFromConfig as Tn,normalizeAndValidateMnemonic as An,normalizeMnemonic as xn,removeWarpWalletFromConfig as En,setWarpWalletInConfig as jt,validateMnemonicLength as bn}from"@joai/warps";var V=class V{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=vn(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new Wn({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let t=An(e),n=Je.fromString(t).deriveKey(0),a=n.hex(),i=n.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:V.PROVIDER_NAME,address:i,privateKey:a,mnemonic:t};return jt(this.config,this.chain.name,o),o}async importFromPrivateKey(e){let t=wn.fromString(e),r=t.hex(),a=t.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),s={provider:V.PROVIDER_NAME,address:a,privateKey:r,mnemonic:null};return jt(this.config,this.chain.name,s),s}async export(){let e=this.getAccount(),t=zt(this.config,this.chain.name),r=Tn(this.config,this.chain.name);return{provider:V.PROVIDER_NAME,address:e.address.toBech32(),privateKey:r||null,mnemonic:t||null}}async generate(){let e=Qt.generateMnemonic(Cn,256),t=xn(e);bn(t);let s=Je.fromString(t).deriveKey(0).generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:V.PROVIDER_NAME,address:s,privateKey:null,mnemonic:t}}async delete(e){En(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=zt(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=Je.fromString(e).deriveKey(0);return this.account=new yn(r,this.chain.addressHrp),this.account}};V.PROVIDER_NAME="mnemonic";var G=V;import{Account as Pn,Message as In,Mnemonic as Sn,UserSecretKey as z}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Nn,getWarpWalletMnemonicFromConfig as Bn,getWarpWalletPrivateKeyFromConfig as Jt,removeWarpWalletFromConfig as Un,setWarpWalletInConfig as Xt}from"@joai/warps";var R=class R{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=Nn(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new In({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let r=Sn.fromString(e).deriveKey(0),n=r.hex(),s=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:R.PROVIDER_NAME,address:s,privateKey:n,mnemonic:e};return Xt(this.config,this.chain.name,i),i}async importFromPrivateKey(e){let r=e.startsWith("-----")?z.fromPem(e):z.fromString(e),n=r.hex(),s=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:R.PROVIDER_NAME,address:s,privateKey:n,mnemonic:null};return Xt(this.config,this.chain.name,i),i}async export(){let e=this.getAccount(),t=Jt(this.config,this.chain.name),r=Bn(this.config,this.chain.name);return{provider:R.PROVIDER_NAME,address:e.address.toBech32(),privateKey:t||null,mnemonic:r||null}}async generate(){let e=z.generate(),t=e.hex(),n=e.generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:R.PROVIDER_NAME,address:n,privateKey:t,mnemonic:null}}async delete(e){Un(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=Jt(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?z.fromPem(e):z.fromString(e);return this.account=new Pn(r,this.chain.addressHrp),this.account}};R.PROVIDER_NAME="privateKey";var j=R;import{getWarpWalletAddressFromConfig as Q,removeWarpWalletFromConfig as Fn}from"@joai/warps";var D=class{constructor(e,t){this.config=e;this.chain=t}async getAddress(){return Q(this.config,this.chain.name)}async getPublicKey(){return null}async signTransaction(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async signMessage(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromMnemonic(e){let t=Q(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromPrivateKey(e){let t=Q(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async export(){let e=Q(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async generate(){let e=Q(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async delete(e){Fn(this.config,this.chain.name)}};var Ce=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=v(t,e.env,e),this.cache=new Mn(e.env,e.cache),this.walletProvider=this.createProvider(),this.initializeCache()}async signTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof D)throw new Error(`Wallet (${this.chain.name}) is read-only`);if(this.walletProvider instanceof j||this.walletProvider instanceof G){let n=this.walletProvider.getAccountInstance();if(t.nonce===0n){let a=await this.entry.recallAccountNonce(n.address),s=await this.cache.get(`nonce:${n.address.toBech32()}`)||0,i=BigInt(Math.max(s,Number(a)));t.nonce=i}}else if(t.nonce===0n&&this.cachedAddress){let n=Vn.newFromBech32(this.cachedAddress),a=await this.entry.recallAccountNonce(n),s=await this.cache.get(`nonce:${this.cachedAddress}`)||0,i=BigInt(Math.max(s,Number(a)));t.nonce=i}return await this.walletProvider.signTransaction(t)}async signTransactions(e){let t=[];for(let r of e)t.push(await this.signTransaction(r));return t}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof D)throw new Error(`Wallet (${this.chain.name}) is read-only`);return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}async sendTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!t.signature||t.signature.length===0)throw new Error("Transaction must be signed before sending");let r=await this.entry.sendTransaction(t),n=t.sender,a=Number(t.nonce)+1;return await this.cache.set(`nonce:${n}`,a,On.OneMinute),r}async importFromMnemonic(e){return await this.createProviderForOperation("mnemonic").importFromMnemonic(e)}async importFromPrivateKey(e){return await this.createProviderForOperation("privateKey").importFromPrivateKey(e)}async export(e){return await this.createProviderForOperation(e).export()}async generate(e){return await this.createProviderForOperation(e).generate()}async delete(e,t){await this.createProviderForOperation(e).delete(t)}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];return e?typeof e=="string"?new D(this.config,this.chain):e.provider?this.createProviderForOperation(e.provider):new D(this.config,this.chain):null}initializeCache(){kn(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}createProviderForOperation(e){let r=this.config.walletProviders?.[this.chain.name]?.[e];if(r){let n=r(this.config,this.chain);if(!n)throw new Error(`Custom wallet provider factory returned null for ${e}`);return n}if(e==="privateKey")return new j(this.config,this.chain);if(e==="mnemonic")return new G(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e}`)}};var ve=(c,e)=>(t,r)=>{let n=e[t.env],a=new Rn;return a.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),a.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`}),a.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new ue(t,n),executor:new fe(t,n,a),output:new _(t,n,a),serializer:new B({typeRegistry:a}),registry:new we(t,n),explorer:new ye(c,t),abiBuilder:()=>new U(t,n),brandBuilder:()=>new pe(t,n),dataLoader:new he(t,n),wallet:new Ce(t,n)}};import{WarpChainName as J}from"@joai/warps";var Xe={chain:J.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/egld.svg"},Yt=ve(J.Multiversx,{mainnet:{name:J.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe},testnet:{name:J.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.battleofnodes.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe},devnet:{name:J.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe}});import{WarpChainName as Ze}from"@joai/warps";var Dn={chain:Ze.Claws,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},Ye={name:Ze.Claws,displayName:"Claws Network",chainId:"C",blockTime:600,addressHrp:"claw",defaultApiUrl:"https://api.claws.network",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/claws.png",nativeToken:Dn,minGasPrice:20000000000000n},Zt=ve(Ze.Claws,{mainnet:Ye,testnet:Ye,devnet:Ye});var Bc=()=>[Yt,Zt];import{WarpConstants as Te,WarpSerializer as et}from"@joai/warps";var Mc=c=>new et().nativeToString(w.Token,c),Vc=c=>new et().nativeToString(w.CodeMeta,c),Rc=(c,e)=>{if(e===null)return w.Optional+Te.ArgParamsSeparator;let t=c(e),r=t.indexOf(Te.ArgParamsSeparator),n=t.substring(0,r),a=t.substring(r+1);return w.Optional+Te.ArgParamsSeparator+n+Te.ArgParamsSeparator+a},Dc=c=>new et().nativeToString(w.List,c);import{Address as Ln,AddressValue as Kn,BigUIntType as _n,BigUIntValue as er,BooleanValue as $n,BytesValue as qn,CodeMetadata as Hn,CodeMetadataValue as Gn,CompositeType as zn,CompositeValue as jn,Field as tt,FieldDefinition as rt,List as Qn,NothingValue as Jn,OptionalValue as nt,OptionValue as at,StringValue as Xn,Struct as Yn,StructType as Zn,TokenIdentifierType as ea,TokenIdentifierValue as tr,U16Value as ta,U32Value as ra,U64Type as na,U64Value as rr,U8Value as aa,VariadicValue as sa}from"@multiversx/sdk-core";var Hc=(c,e)=>c?at.newProvided(c):e?at.newMissingTyped(e):at.newMissing(),Gc=(c,e)=>c?new nt(c.getType(),c):e?new nt(e):nt.newMissing(),zc=c=>{if(c.length===0)throw new Error("Cannot create a list from an empty array");let e=c[0].getType();return new Qn(e,c)},jc=c=>sa.fromItems(...c),Qc=c=>{let e=c.map(t=>t.getType());return new jn(new zn(...e),c)},Jc=c=>Xn.fromUTF8(c),Xc=c=>new aa(c),Yc=c=>new ta(c),Zc=c=>new ra(c),el=c=>new rr(c),tl=c=>new er(BigInt(c)),rl=c=>new $n(c),nl=c=>new Kn(Ln.newFromBech32(c)),al=c=>new tr(c),sl=c=>qn.fromHex(c),il=c=>new Yn(new Zn("EsdtTokenPayment",[new rt("token_identifier","",new ea),new rt("token_nonce","",new na),new rt("amount","",new _n)]),[new tt(new tr(c.token.identifier),"token_identifier"),new tt(new rr(BigInt(c.token.nonce)),"token_nonce"),new tt(new er(BigInt(c.amount)),"amount")]),ol=c=>new Gn(Hn.newFromBytes(Uint8Array.from(Buffer.from(c,"hex")))),cl=()=>new Jn;export{Zt as ClawsAdapter,lr as ClawsExplorers,k as ExplorerUrls,Lt as KnownTokens,Yt as MultiversxAdapter,cr as MultiversxExplorers,pt as MultiversxExplorersConfig,Dn as NativeTokenClaw,Xe as NativeTokenEgld,U as WarpMultiversxAbiBuilder,pe as WarpMultiversxBrandBuilder,ue as WarpMultiversxBuilder,Pa as WarpMultiversxConstants,te as WarpMultiversxContractLoader,he as WarpMultiversxDataLoader,fe as WarpMultiversxExecutor,ye as WarpMultiversxExplorer,w as WarpMultiversxInputTypes,_ as WarpMultiversxOutput,we as WarpMultiversxRegistry,B as WarpMultiversxSerializer,Ce as WarpMultiversxWallet,nl as address_value,il as asset_value,tl as biguint_value,rl as boolean_value,Vc as codemeta,ol as codemeta_value,Qc as composite_value,ve as createMultiversxAdapter,Kt as findKnownTokenById,Bc as getAllMultiversxAdapters,oa as getAllMultiversxChainNames,Gs as getKnownTokensForChain,v as getMultiversxEntrypoint,b as getMultiversxRegistryAddress,ee as getNormalizedTokenIdentifier,sl as hex_value,L as isNativeToken,Dc as list,zc as list_value,cl as nothing_value,Hc as option_value,Rc as optional,Gc as optional_value,Jc as string_value,Ht as toTypedConfigInfo,We as toTypedRegistryInfo,Mc as token,al as token_value,Yc as u16_value,Zc as u32_value,el as u64_value,Xc as u8_value,jc as variadic_value};
|
|
1
|
+
import{WarpChainName as it}from"@joai/warps";var oa=()=>[it.Multiversx,it.Claws];import{WarpTypeRegistry as Rn}from"@joai/warps";import{AbiRegistry as Le,Address as fr,EnumType as yr,OptionalType as wr,OptionType as Wr,TransactionsFactoryConfig as Cr,TransferTransactionsFactory as vr}from"@multiversx/sdk-core";import{createWarpIdentifier as Tr,getLatestProtocolIdentifier as bt,getWarpWalletAddressFromConfig as Ar,WarpCache as xr,WarpCacheKey as Er,WarpConstants as Pt,WarpLogger as It}from"@joai/warps";import{DevnetEntrypoint as nr,MainnetEntrypoint as ar,TestnetEntrypoint as sr}from"@multiversx/sdk-core";import{getProviderConfig as ir}from"@joai/warps";var L=c=>!c.includes("-"),te=c=>L(c)?`${c}-000000`:c,v=(c,e,t)=>{let r="warp-sdk",a=t?ir(t,c.name,e,c.defaultApiUrl):{url:c.defaultApiUrl},s=a.url,i={headers:a.headers};return e==="devnet"?new nr({url:s,kind:"api",clientName:r,networkProviderConfig:i}):e==="testnet"?new sr({url:s,kind:"api",clientName:r,networkProviderConfig:i}):new ar({url:s,kind:"api",clientName:r,networkProviderConfig:i})};import{WarpLogger as ot}from"@joai/warps";var re=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await v(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return ot.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await v(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return ot.error("WarpContractLoader: getVerificationInfo error",r),null}}};import{Address as pr,AddressType as Pe,AddressValue as ut,BigUIntType as ne,BigUIntValue as Ie,BooleanType as Se,BooleanValue as mt,BytesType as Ne,BytesValue as dt,CodeMetadata as ur,CodeMetadataType as Be,CodeMetadataValue as ht,CompositeType as Ue,CompositeValue as gt,EnumType as ae,EnumValue as ft,EnumVariantDefinition as mr,Field as se,FieldDefinition as ie,List as yt,ListType as wt,NothingValue as I,OptionalType as Wt,OptionalValue as Fe,OptionType as Ct,OptionValue as Oe,StringType as ke,StringValue as vt,Struct as oe,StructType as M,Token as dr,TokenComputer as Tt,TokenIdentifierType as ce,TokenIdentifierValue as Me,U16Type as Ve,U16Value as At,U32Type as Re,U32Value as xt,U64Type as le,U64Value as q,U8Type as De,U8Value as Et,VariadicType as H,VariadicValue as pe}from"@multiversx/sdk-core";import{WarpSerializer as hr}from"@joai/warps";var or=c=>c?typeof c=="string"?c:c.address:null,ct=(c,e)=>or(c.user?.wallets?.[e]||null);var lt=(r=>(r.Macos="macos",r.Linux="linux",r.Windows="windows",r))(lt||{}),Ea=Object.values(lt);var d={HttpProtocolPrefix:"https://",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierType:{Alias:"alias",Hash:"hash"},IdentifierAliasMarker:"@",Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:c=>ct(c.config,c.adapter.chainInfo.name)},UserWalletPublicKey:{Placeholder:"USER_WALLET_PUBLICKEY",Accessor:c=>{if(!c.adapter.wallet)return null;try{return c.adapter.wallet.getPublicKey()||null}catch{return null}}},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:c=>c.adapter.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:c=>c.adapter.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},p={Option:"option",Vector:"vector",Tuple:"tuple",Struct:"struct",String:"string",Uint8:"uint8",Uint16:"uint16",Uint32:"uint32",Uint64:"uint64",Uint128:"uint128",Uint256:"uint256",Biguint:"biguint",Bool:"bool",Address:"address",Asset:"asset",Hex:"hex",Datetime:"datetime",Email:"email",Textarea:"textarea",File:"file"};var Pa={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},W={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},cr=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(cr||{}),lr=(r=>(r.ClawsExplorer="claws_explorer",r.ClawsExplorerDevnet="claws_explorer_devnet",r.ClawsExplorerTestnet="claws_explorer_testnet",r))(lr||{}),pt={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},claws:{mainnet:["claws_explorer"],testnet:["claws_explorer_testnet"],devnet:["claws_explorer_devnet"]}},k={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://bon-explorer.multiversx.com",claws_explorer:"https://explorer.claws.network",claws_explorer_devnet:"https://explorer.claws.network",claws_explorer_testnet:"https://explorer.claws.network"};var gr=new RegExp(`${d.ArgParamsSeparator}(.*)`),B=class{constructor(e){this.coreSerializer=new hr(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(Ct.ClassName)||e.hasClassOrSuperclass(Oe.ClassName)){if(!e.isSet())return p.Option+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return p.Option+d.ArgParamsSeparator+r}if(t.hasExactClass(H.ClassName)||e.hasClassOrSuperclass(pe.ClassName)){let r=e.getItems();if(r.length===0){let l=this.typeToString(t.getFirstTypeParameter());return p.Vector+d.ArgParamsSeparator+l+d.ArgParamsSeparator}let n=r.map(l=>this.typedToString(l));if(n.every(l=>l.startsWith(p.Tuple)))return p.Vector+d.ArgParamsSeparator+n.join(",");let a=n[0],s=a.indexOf(d.ArgParamsSeparator),i=a.substring(0,s),o=n.map(l=>{let u=l.indexOf(d.ArgParamsSeparator);return l.substring(u+1)}),m=i.startsWith(p.Struct)?d.ArgStructSeparator:d.ArgListSeparator;return p.Vector+d.ArgParamsSeparator+i+d.ArgParamsSeparator+o.join(m)}if(t.hasExactClass(Wt.ClassName)||e.hasClassOrSuperclass(Fe.ClassName)){if(!e.isSet())return W.Optional+d.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return W.Optional+d.ArgParamsSeparator+r}if(t.hasExactClass(wt.ClassName)||e.hasClassOrSuperclass(yt.ClassName)){let n=e.getItems().map(o=>this.typedToString(o));if(n.every(o=>o.startsWith(p.Tuple)))return W.List+d.ArgParamsSeparator+n.join(",");let s=n.map(o=>o.split(d.ArgParamsSeparator)[0])[0],i=n.map(o=>o.split(d.ArgParamsSeparator)[1]);return W.List+d.ArgParamsSeparator+s+d.ArgParamsSeparator+i.join(d.ArgListSeparator)}if(t.hasExactClass(Ue.ClassName)||e.hasClassOrSuperclass(gt.ClassName)){let n=e.getItems().map(a=>{let s=this.typedToString(a),i=s.indexOf(d.ArgParamsSeparator),o=s.substring(0,i),m=s.substring(i+1);return`${o},${m}`});return`${p.Tuple}(${n.join(",")})`}if(t.hasExactClass(ne.ClassName)||e.hasClassOrSuperclass(Ie.ClassName)||t.getName()==="BigUint")return p.Biguint+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(De.ClassName)||e.hasClassOrSuperclass(Et.ClassName))return p.Uint8+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ve.ClassName)||e.hasClassOrSuperclass(At.ClassName))return p.Uint16+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Re.ClassName)||e.hasClassOrSuperclass(xt.ClassName))return p.Uint32+d.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(le.ClassName)||e.hasClassOrSuperclass(q.ClassName))return p.Uint64+d.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(ke.ClassName)||e.hasClassOrSuperclass(vt.ClassName))return p.String+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(Se.ClassName)||e.hasClassOrSuperclass(mt.ClassName))return p.Bool+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(Pe.ClassName)||e.hasClassOrSuperclass(ut.ClassName))return p.Address+d.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(Ne.ClassName)||e.hasClassOrSuperclass(dt.ClassName))return p.Hex+d.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf(),i=new Tt().computeExtendedIdentifier(new dr({identifier:r,nonce:BigInt(n)}));return p.Asset+d.ArgParamsSeparator+i+d.ArgCompositeSeparator+a}if(t.hasExactClass(M.ClassName)||e.hasClassOrSuperclass(oe.ClassName)){let r=e,a=r.getType().getName(),s=r.getFields();if(s.length===0)return`${p.Struct}(${a})${d.ArgParamsSeparator}`;let i=s.map(o=>{let m=o.value.getType(),u=this.typedToString(o.value).split(d.ArgParamsSeparator),h=u.length>2?u.slice(2).join(d.ArgParamsSeparator):u[1]||"";return`(${o.name}${d.ArgParamsSeparator}${this.typeToString(m)})${h}`});return`${p.Struct}(${a})${d.ArgParamsSeparator}${i.join(d.ArgListSeparator)}`}if(t.hasExactClass(ae.ClassName)||e.hasClassOrSuperclass(ft.ClassName)){let r=e;return`enum(${r.getType().getName()})${d.ArgParamsSeparator}${r.discriminant}`}if(t.hasExactClass(ce.ClassName)||e.hasClassOrSuperclass(Me.ClassName))return W.Token+d.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(Be.ClassName)||e.hasClassOrSuperclass(ht.ClassName))return W.CodeMeta+d.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){if(e.startsWith(p.Tuple))return this.stringToTyped(e+":");let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(p.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];if(!t)throw new Error(`Invalid tuple type format: ${e}`);let r=t.split(","),n=[];for(let a=0;a<r.length;a+=2)n.push(r[a]);return new Ue(...n.map(a=>this.nativeToType(a)))}if(e.startsWith(p.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new M(r,[])}if(e===p.String)return new ke;if(e===p.Uint8)return new De;if(e===p.Uint16)return new Ve;if(e===p.Uint32)return new Re;if(e===p.Uint64)return new le;if(e===p.Biguint)return new ne;if(e===p.Bool)return new Se;if(e===p.Address)return new Pe;if(e===p.Hex)return new Ne;if(e===p.Asset)return new M("EsdtTokenPayment",[new ie("token_identifier","",new ce),new ie("token_nonce","",new le),new ie("amount","",new ne)]);if(e.startsWith("enum")){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Enum type must include a name in the format enum(Name)");return new ae(t[1],[])}if(e===W.Token)return new ce;if(e===W.CodeMeta)return new Be;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===p.Option){let n=this.stringToTyped(r);return n instanceof I?Oe.newMissingTyped(n.getType()):Oe.newProvided(n)}if(t===p.Vector){let n=r.indexOf(d.ArgParamsSeparator),a=r.substring(0,n),s=r.substring(n+1);if(a.startsWith(p.Tuple)){let u=s.split(",").map(h=>this.stringToTyped(h));return new pe(new H(this.nativeToType(a)),u)}if(s.includes("tuple(")){let l=this.splitTupleStrings(s),u=l.map(S=>this.stringToTyped(S)),g=l[0].match(/^(tuple\([^)]+\))/),y=g?g[1]:"tuple";return new pe(new H(this.nativeToType(y)),u)}let i=a.startsWith(p.Struct)?d.ArgStructSeparator:d.ArgListSeparator,m=s.split(i).map(l=>this.stringToTyped(`${a}:${l}`));return new pe(new H(this.nativeToType(a)),m)}if(t.startsWith(p.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1];if(!n)throw new Error(`Invalid tuple format: ${t}`);let a=n.split(","),s=[];for(let o=0;o<a.length;o+=2){let m=a[o],l=a[o+1];s.push(this.stringToTyped(`${m}:${l}`))}let i=s.map(o=>o.getType());return new gt(new Ue(...i),s)}if(t.startsWith(p.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new oe(new M(a,[]),[]);let s=r.split(d.ArgListSeparator),i=[],o=[];return s.forEach(m=>{let l=m.match(new RegExp(`^\\(([^${d.ArgParamsSeparator}]+)${d.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(l){let[,u,h,g]=l,y=this.stringToTyped(`${h}${d.ArgParamsSeparator}${g}`);i.push(new ie(u,"",y.getType())),o.push(new se(y,u))}}),new oe(new M(a,i),o)}if(t===p.String)return r?vt.fromUTF8(r):new I;if(t===p.Uint8)return r?new Et(Number(r)):new I;if(t===p.Uint16)return r?new At(Number(r)):new I;if(t===p.Uint32)return r?new xt(Number(r)):new I;if(t===p.Uint64)return r?new q(BigInt(r)):new I;if(t===p.Biguint)return r?new Ie(BigInt(r)):new I;if(t===p.Bool)return r?new mt(typeof r=="boolean"?r:r==="true"):new I;if(t===p.Address)return r?new ut(pr.newFromBech32(r)):new I;if(t===p.Hex)return r?dt.fromHex(r):new I;if(t===p.Datetime){if(!r||r==="0")return new q(0n);let n=Math.floor(new Date(r).getTime()/1e3);return new q(BigInt(isNaN(n)?0:n))}if(t===p.Asset){let[n,a]=r.split(d.ArgCompositeSeparator),s=new Tt,i=L(n)?te(n):s.extractIdentifierFromExtendedIdentifier(n),o=L(n)?0n:s.extractNonceFromExtendedIdentifier(n);return new oe(this.nativeToType("asset"),[new se(new Me(i),"token_identifier"),new se(new q(BigInt(o)),"token_nonce"),new se(new Ie(BigInt(a)),"amount")])}if(t===W.Null)return new I;if(t===W.Optional){let n=this.stringToTyped(r);return n instanceof I?Fe.newMissing():new Fe(n.getType(),n)}if(t===W.List){let[n,a]=r.split(gr,2),i=a.split(d.ArgListSeparator).map(o=>this.stringToTyped(n+d.ArgParamsSeparator+o));return new yt(this.nativeToType(n),i)}if(t===W.Token)return r?new Me(r):new I;if(t===W.CodeMeta)return new ht(ur.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t.startsWith("enum")){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomEnum",s=Number(r);if(isNaN(s))throw new Error(`WarpArgSerializer (stringToTyped): Invalid enum discriminant: ${r}`);let i=new mr(r,s,[]),o=new ae(a,[i]);return new ft(o,i,[])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}splitTupleStrings(e){let t=[],r="",n=0;for(let a=0;a<e.length;a++){let s=e[a];if(s==="(")n++;else if(s===")")n--;else if(s===","&&n===0){t.push(r.trim()),r="";continue}r+=s}return r.trim()&&t.push(r.trim()),t}typeToString(e){if(e.hasExactClass(Ct.ClassName))return p.Option+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(H.ClassName))return p.Vector+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(ke.ClassName))return p.String;if(e.hasExactClass(De.ClassName))return p.Uint8;if(e.hasExactClass(Ve.ClassName))return p.Uint16;if(e.hasExactClass(Re.ClassName))return p.Uint32;if(e.hasExactClass(le.ClassName))return p.Uint64;if(e.hasExactClass(ne.ClassName))return p.Biguint;if(e.hasExactClass(Se.ClassName))return p.Bool;if(e.hasExactClass(Pe.ClassName))return p.Address;if(e.hasExactClass(Ne.ClassName))return p.Hex;if(e.hasExactClass(ce.ClassName))return W.Token;if(e.hasExactClass(Wt.ClassName))return W.Optional+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(wt.ClassName))return W.List+d.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(Be.ClassName))return W.CodeMeta;if(e.hasExactClass(M.ClassName)&&e.getClassName()==="EsdtTokenPayment")return p.Asset;if(e.hasExactClass(M.ClassName))return`${p.Struct}(${e.getName()})`;if(e.hasExactClass(ae.ClassName))return`enum(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var U=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new re(this.config),this.cache=new xr(this.config.env,this.config.cache)}async createInscriptionTransaction(e){let t=Ar(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new Cr({chainID:this.chain.chainId}),n=new vr({config:r}),a=fr.newFromBech32(t),s={protocol:bt("abi"),content:e},i=JSON.stringify(s),o=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,identifier:Tr(this.chain.name,"hash",e.hash),query:null,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Er.WarpAbi(this.config.env,e);if(t){let s=await this.cache.get(r);if(s)return It.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),s}let a=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await a.getTransaction(e),i=await this.createFromTransaction(s);return t&&t.ttl&&i&&await this.cache.set(r,i,t.ttl),i}catch(s){return It.error("WarpAbiBuilder: Error creating from transaction hash",s),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return Le.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Pt.IdentifierType.Hash)){let t=e.abi.split(Pt.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return Le.create(r.content)}else{let r=await(await fetch(e.abi)).json();return Le.create(r)}}endpointsToWarps(e,t,r){let n=new B,a=r?btoa(JSON.stringify(r)):void 0;return e.getEndpoints().map(s=>{let i=s.modifiers.isReadonly(),o=s.input.map((l,u)=>{let h={name:l.name,type:n.typeToString(l.type),position:`arg:${u+1}`,source:"field",required:!l.type.hasClassOrSuperclass(wr.ClassName)&&!l.type.hasClassOrSuperclass(Wr.ClassName)};if(l.type.hasExactClass(yr.ClassName)){let g=l.type;h.options=Object.fromEntries(g.variants.map(y=>[String(y.discriminant),y.name]))}return h}),m=i?{type:"query",label:s.name,address:t,func:s.name,args:[],abi:a,inputs:o}:{type:"contract",label:s.name,address:t,func:s.name,args:[],gasLimit:1e7,abi:a,inputs:o};return{protocol:bt("warp"),name:s.name,title:s.name,description:null,chain:this.chain.name,actions:[m]}})}};import{Address as St,TransactionsFactoryConfig as br,TransferTransactionsFactory as Pr}from"@multiversx/sdk-core";import{createWarpIdentifier as Ir,getWarpWalletAddressFromConfig as Sr,WarpBrandBuilder as Nr,WarpLogger as Br}from"@joai/warps";import{Buffer as Ur}from"buffer";var ue=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Nr(e)}async createInscriptionTransaction(e){let t=Sr(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new br({chainID:this.chain.chainId}),n=new Pr({config:r}),a=St.newFromBech32(t),s=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:St.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Ur.from(s))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={query:null,chain:this.chain.name,identifier:Ir(this.chain.name,"hash",e.hash),hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Br.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as Nt,TransactionsFactoryConfig as Fr,TransferTransactionsFactory as Or}from"@multiversx/sdk-core";import{createWarpIdentifier as kr,getWarpWalletAddressFromConfig as Mr,WarpBuilder as Bt,WarpCache as Vr,WarpCacheKey as Rr,WarpLogger as Ut}from"@joai/warps";var me=class extends Bt{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new Vr(t.env,t.cache),this.core=new Bt(t)}async createInscriptionTransaction(t){let r=Mr(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new Fr({chainID:this.chain.chainId}),a=new Or({config:n}),s=Nt.newFromBech32(r),i=JSON.stringify(t),o=await a.createTransactionForTransfer(s,{receiver:Nt.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(i))});return o.gasLimit=o.gasLimit+BigInt(2e6),o}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,identifier:kr(this.chain.name,"hash",t.hash),query:null,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=Rr.Warp(this.config.env,t);if(r){let i=await this.cache.get(n);if(i)return Ut.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),i}let s=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(t),o=await this.createFromTransaction(i);return r&&r.ttl&&o&&await this.cache.set(n,o,r.ttl),o}catch(i){return Ut.error("WarpBuilder: Error creating from transaction hash",i),null}}};import{Address as Ke,Token as $r,TokenComputer as qr}from"@multiversx/sdk-core";import{CacheTtl as _e,WarpCache as Hr,WarpCacheKey as _t}from"@joai/warps";import{WarpChainName as Dt}from"@joai/warps";import{WarpChainName as Dr}from"@joai/warps";var Ft=Dr.Multiversx,Ot=[{chain:Ft,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ft,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Lr}from"@joai/warps";var E=Lr.Multiversx,kt=[{chain:E,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:E,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:E,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:E,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:E,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:E,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:E,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:E,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:E,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:E,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:E,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:E,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:E,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as Kr}from"@joai/warps";var Mt=Kr.Multiversx,Vt=[{chain:Mt,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Mt,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as _r}from"@joai/warps";var Rt=_r.Claws,de=[{chain:Rt,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},{chain:Rt,identifier:"CLAW-000000",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"}];var Lt={[Dt.Multiversx]:{mainnet:kt,testnet:Vt,devnet:Ot},[Dt.Claws]:{mainnet:de,testnet:de,devnet:de}},Kt=(c,e,t)=>(Lt[c]?.[e]||[]).find(n=>n.identifier===t)||null,Gs=(c,e)=>Lt[c]?.[e]||[];var ge=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Hr(e.env,e.cache)}async getAccount(e){let r=await v(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(Ke.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=v(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(Ke.newFromBech32(e)),n=t.getFungibleTokensOfAccount(Ke.newFromBech32(e)),[a,s]=await Promise.all([r,n]),i=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return i.push(...s.map(o=>({chain:this.chain.name,identifier:o.token.identifier,name:o.raw.name,symbol:o.raw.ticker,amount:o.amount,decimals:o.raw.decimals,logoUrl:o.raw.assets?.pngUrl||"",price:o.raw.price?Number(o.raw.price):void 0,supply:o.raw.supply?BigInt(o.raw.supply):void 0}))),i}async getAccountNfts(e,t){let r=t?.size||25,n=t?.page||0,a=_t.AccountNfts(this.config.env,this.chain.name,e,n,r),s=await this.cache.get(a);if(s)return s;let i=v(this.chain,this.config.env,this.config).createNetworkProvider(),o=n*r,m=new URLSearchParams({size:r.toString(),from:o.toString()}),l=await i.doGetGeneric(`accounts/${e}/nfts?${m.toString()}`);if(!Array.isArray(l))return[];let u=l.filter(h=>h.type!=="MetaESDT").map(h=>({chain:this.chain.name,identifier:h.identifier,name:h.name||h.identifier,symbol:h.ticker||h.collection||"",amount:h.balance?BigInt(h.balance):1n,decimals:0,type:h.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:h.collection,nonce:h.nonce?BigInt(h.nonce):void 0,mediaUrl:he(h.url||h.media?.[0]?.url),thumbnailUrl:he(h.thumbnailUrl||h.media?.[0]?.thumbnailUrl),attributes:Array.isArray(h.metadata?.attributes)?Object.fromEntries(h.metadata.attributes.map(g=>[g.trait_type,String(g.value)])):void 0,royalties:h.royalties?Number(h.royalties)/100:void 0,rank:h.rank,creator:h.creator}}));return await this.cache.set(a,u,5*_e.OneMinute),u}async getAsset(e){let t=_t.Asset(this.config.env,this.chain.name,e),r=await this.cache.get(t);if(r)return r;let n=Kt(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let a=new qr,s=L(e)?0n:a.extractNonceFromExtendedIdentifier(e),i=new $r({identifier:e,nonce:BigInt(s||0)}),o=a.isFungible(i),m=v(this.chain,this.config.env,this.config).createNetworkProvider();if(!o&&s>0n){let g=await m.doGetGeneric(`nfts/${e}`),y={chain:this.chain.name,identifier:e,name:g.name||e,symbol:g.ticker||g.collection||"",amount:0n,decimals:0,type:g.type==="SemiFungibleESDT"?"sft":"nft",nft:{collection:g.collection,nonce:g.nonce?BigInt(g.nonce):void 0,mediaUrl:he(g.url||g.media?.[0]?.url),thumbnailUrl:he(g.thumbnailUrl||g.media?.[0]?.thumbnailUrl),creator:g.creator}};return await this.cache.set(t,y,_e.OneHour),y}let l=te(e),u=await m.doGetGeneric(`tokens/${l}`),h={chain:this.chain.name,identifier:i.identifier,name:u.name,symbol:u.ticker,amount:0n,decimals:u.decimals,logoUrl:u.assets?.pngUrl||null,price:u.price?Number(u.price):void 0,supply:u.supply?BigInt(u.supply):void 0};return await this.cache.set(t,h,_e.OneHour),h}async getAction(e,t=!1){let r=v(this.chain,this.config.env,this.config),n=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:n.hash,receiver:n.receiver.toBech32(),sender:n.sender.toBech32(),value:n.value,function:n.function,status:this.toActionStatus(n),createdAt:this.toActionCreatedAt(n),error:n?.smartContractResults.map(a=>a.raw.returnMessage)[0]||null,tx:n}}async getAccountActions(e,t){let r=v(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,s=t?.size||25,i=t?.page||0;if(i>0){let m=i*s;a.append("from",m.toString())}return s!==25&&a.append("size",s.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(m=>({chain:this.chain.name,id:m.txHash,receiver:m.receiver,sender:m.sender,value:m.value,function:m.function,status:this.toActionStatus(m),createdAt:this.toActionCreatedAt(m)}))}toActionStatus(e){return e.status?.isSuccessful?.()?"success":e.status?.isFailed?.()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}},Gr="https://ipfs.io/ipfs/",he=c=>{if(c)return c.startsWith("ipfs://")?Gr+c.slice(7):c};import{Address as F,AddressComputer as en,ArgSerializer as tn,SmartContractTransactionsFactory as $e,Token as rn,TokenComputer as nn,TokenTransfer as an,TransactionsFactoryConfig as fe,TransferTransactionsFactory as sn}from"@multiversx/sdk-core";import{applyOutputToMessages as on,extractResolvedInputValues as cn,getNextInfo as ln,getWarpActionByIndex as qe,getWarpWalletAddressFromConfig as He}from"@joai/warps";import{applyOutputToMessages as zr,evaluateOutputCommon as K,extractResolvedInputValues as jr,getWarpActionByIndex as Qr,getWarpWalletAddressFromConfig as Jr,parseOutputOutIndex as $t,WarpConstants as G}from"@joai/warps";import{findEventsByFirstTopic as Xr,SmartContractTransactionsOutcomeParser as Yr,TokenManagementTransactionsOutcomeParser as qt,TransactionEventsParser as Zr}from"@multiversx/sdk-core";var _=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new U(e,t),this.serializer=new B({typeRegistry:this.typeRegistry})}async getActionExecution(e,t,r,n){let a=n??[],s=await this.extractContractOutput(e,t,r,a),i=Object.fromEntries(a.map(l=>[l.input.as||l.input.name,l.value])),o=zr(e,{...i,...s.output},this.config),m=jr(a);return{status:r.status?.isSuccessful?.()?"success":"error",warp:e,action:t,user:Jr(this.config,this.chain.name),txHash:r.hash,tx:r,next:null,values:s.values,output:s.output,messages:o,destination:null,resolvedInputs:m}}async extractContractOutput(e,t,r,n){let a=Qr(e,t),s=[],i=[],o={};if(!e.output||a.type!=="contract")return{values:{string:s,native:i,mapped:{}},output:o};let m=r.hash,l=w=>{o[w]=m,s.push(String(m)),i.push(m)};if(!Object.values(e.output).some(w=>w.startsWith("event.")||w.startsWith("out.")||w.startsWith("out["))){for(let[w,f]of Object.entries(e.output))if(!f.startsWith(G.Transform.Prefix)){if(f==="out"){l(w);continue}o[w]=f}return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let h=a.abi?null:this.tryExtractBuiltInFunctionOutput(a,r);if(h){for(let[w,f]of Object.entries(e.output))f.startsWith(G.Transform.Prefix)||(f==="out"?l(w):f==="out.1"?(o[w]=h.nftIdentifier,h.nftIdentifier&&(s.push(h.nftIdentifier),i.push(h.nftIdentifier))):o[w]=f);return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let g=a.abi?null:this.tryExtractSystemScOutput(a,r);if(g){let w=g.tokenIdentifier;for(let[f,O]of Object.entries(e.output))O.startsWith(G.Transform.Prefix)||(O==="out"?l(f):O==="out.1"?(o[f]=w,w&&(s.push(w),i.push(w))):o[f]=O);return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}let y=await this.abi.getAbiForAction(a),S=new Zr({abi:y}),P=new Yr({abi:y}),N=null,$=!1,Y=()=>($||($=!0,N=P.parseExecute({transactionOnNetwork:r,function:a.func||void 0})),N);for(let[w,f]of Object.entries(e.output)){if(f.startsWith(G.Transform.Prefix))continue;if(f.startsWith("input.")){o[w]=f;continue}if(f==="out"){l(w);continue}let O=$t(f);if(O!==null&&O!==t){o[w]=null;continue}let[xe,Z,ee,st]=f.split(".");if(xe==="event"){if(!Z||isNaN(Number(ee)))continue;let Ee=Number(ee),be=Xr(r,Z),A=S.parseEvents({events:be})[0];if(!A||typeof A!="object"){o[w]=null;continue}let x=Object.values(A)[Ee]||null;x&&st&&typeof x=="object"&&(x=x[st]??null),x&&typeof x=="object"&&(x="toFixed"in x?x.toFixed():x.valueOf()),s.push(String(x)),i.push(x),o[w]=x&&x.valueOf()}else if(xe==="out"||xe.startsWith("out[")){if(!Z)continue;let Ee=Y(),be=Number(Z),A=Ee.values[be-1]||null;ee&&(A=A[ee]||null),A&&typeof A=="object"&&(A="toFixed"in A?A.toFixed():A.valueOf()),s.push(String(A)),i.push(A),o[w]=A&&A.valueOf()}else o[w]=f}return{values:{string:s,native:i,mapped:{}},output:await K(e,o,i,t,n,this.serializer.coreSerializer,this.config)}}async extractQueryOutput(e,t,r,n){let a=t.map(l=>this.serializer.typedToString(l)),s=t.map(l=>this.serializer.typedToNative(l)[1]),i={string:a,native:s,mapped:{}},o={};if(!e.output)return{values:i,output:o};let m=l=>{let u=l.split(".").slice(1).map(g=>parseInt(g)-1);if(u.length===0)return;let h=s[u[0]];for(let g=1;g<u.length;g++){if(h==null)return;h=h[u[g]]}return h};for(let[l,u]of Object.entries(e.output)){if(u.startsWith(G.Transform.Prefix))continue;let h=$t(u);if(h!==null&&h!==r){o[l]=null;continue}u.startsWith("out.")||u==="out"||u.startsWith("out[")?o[l]=m(u)||null:o[l]=u}return o=await K(e,o,s,r,n,this.serializer.coreSerializer,this.config),{values:i,output:o}}tryExtractBuiltInFunctionOutput(e,t){if(e.func!=="ESDTNFTCreate")return null;try{let a=new qt().parseNftCreate(t)[0];if(!a)return{nftIdentifier:null};let s=a.nonce.toString(16),i=s.length%2!==0?"0"+s:s;return{nftIdentifier:`${a.tokenIdentifier}-${i}`}}catch{return{nftIdentifier:null}}}tryExtractSystemScOutput(e,t){if(e.address!=="erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u"||!e.func)return null;let a={issue:(s,i)=>s.parseIssueFungible(i),issueNonFungible:(s,i)=>s.parseIssueNonFungible(i),issueSemiFungible:(s,i)=>s.parseIssueSemiFungible(i),registerMetaESDT:(s,i)=>s.parseRegisterMetaEsdt(i),registerAndSetAllRoles:(s,i)=>s.parseRegisterAndSetAllRoles(i)}[e.func];if(!a)return null;try{return{tokenIdentifier:a(new qt,t)[0]?.tokenIdentifier||null}}catch{return{tokenIdentifier:null}}}async resolveWarpOutputRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,s=e.meta,i=new Map,o=new Set,m=this;async function l(y,S=[]){if(i.has(y))return i.get(y);if(o.has(y))throw new Error(`Circular dependency detected at action ${y}`);o.add(y);let P=t.actions[y-1];if(!P)throw new Error(`Action ${y} not found`);let N;if(P.type==="query")N=await n.executeQuery(t,y,S);else if(P.type==="collect")N=await n.executeCollect(t,y,S,s);else throw new Error(`Unsupported or interactive action type: ${P.type}`);if(i.set(y,N),t.output)for(let $ of Object.values(t.output)){let w=String($).match(/^out\[(\d+)\]/);if(w){let f=parseInt(w[1],10);f!==y&&!i.has(f)&&await l(f)}}return o.delete(y),N}await l(r,a);let u={};for(let y of i.values())for(let[S,P]of Object.entries(y.output))P!==null?u[S]=P:S in u||(u[S]=null);let h=await K(t,u,u,r,a,this.serializer.coreSerializer,this.config);return{...i.get(r),action:r,output:h}}};var pn="EGLD-000000",ye=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new B({typeRegistry:this.typeRegistry}),this.abi=new U(this.config,this.chain),this.output=new _(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=qe(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 this.chain.minGasPrice&&(r.gasPrice=this.chain.minGasPrice),r}async createTransferTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createTransfer - destination not set");let t=He(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new fe({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,s=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,o=(s?e.transfers[0].amount:0n)+e.value;return await new sn({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:o,tokenTransfers:s?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: createContractCall - destination not set");let t=He(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=qe(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(i=>this.serializer.stringToTyped(i)),s=new fe({chainID:e.chain.chainId});return new $e({config:s}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){if(!e.destination)throw new Error("WarpMultiversxExecutor: executeQuery - destination not set");let t=qe(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(f=>this.serializer.stringToTyped(f)),a=v(e.chain,this.config.env,this.config),s=F.newFromBech32(e.destination),i=a.createSmartContractController(r),o=i.createQuery({contract:s,function:t.func||"",arguments:n}),m=await i.runQuery(o),l=m.returnCode==="ok",u=new tn,h=r.getEndpoint(m.function||t.func||""),g=(m.returnDataParts||[]).map(f=>Buffer.from(f)),y=u.buffersToValues(g,h.output),{values:S,output:P}=await this.output.extractQueryOutput(e.warp,y,e.action,e.resolvedInputs),N=ln(this.config,[],e.warp,e.action,P),Y=e.resolvedInputs.find(f=>f.input.position==="receiver"||f.input.position==="destination")?.value||e.destination,w=cn(e.resolvedInputs);return{status:l?"success":"error",warp:e.warp,action:e.action,user:He(this.config,e.chain.name),txHash:null,tx:null,next:N,values:S,output:{...P,_DATA:y},messages:on(e.warp,P,this.config),destination:Y,resolvedInputs:w}}async createDeployTransaction(e){let t=F.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),a=BigInt(n.nonce||0),s=new fe({chainID:this.chain.chainId}),i=new $e({config:s}),o=(e.args||[]).map(u=>this.serializer.stringToTyped(u)),m=await i.createTransactionForDeploy(t,{bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:o,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});m.nonce=a;let l=new en().computeContractAddress(t,a);return{tx:m,contractAddress:l.toBech32()}}async createUpgradeTransaction(e){let t=F.newFromBech32(e.senderAddress),n=await(await fetch(`${this.chain.defaultApiUrl}/accounts/${e.senderAddress}`)).json(),a=BigInt(n.nonce||0),s=new fe({chainID:this.chain.chainId}),i=new $e({config:s}),o=(e.args||[]).map(l=>this.serializer.stringToTyped(l)),m=await i.createTransactionForUpgrade(t,{contract:F.newFromBech32(e.contractAddress),bytecode:Buffer.from(e.bytecodeHex,"hex"),gasLimit:e.gasLimit??100000000n,arguments:o,isUpgradeable:e.flags?.upgradeable??!0,isReadable:e.flags?.readable??!1,isPayable:e.flags?.payable??!1,isPayableBySmartContract:e.flags?.payableByContract??!1});return m.nonce=a,m}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:pn}:t).map(t=>{let n=new nn().extractNonceFromExtendedIdentifier(t.identifier);return new an({token:new rn({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var we=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=pt[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=k[t];if(a)return a}if(e){let a=k[e];if(a)return a}let r=this.getPrimaryExplorer();return k[r]||k[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=k[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=k[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Gt,Address as C,AddressValue as ze,BytesValue as T,SmartContractTransactionsFactory as mn,TransactionsFactoryConfig as dn}from"@multiversx/sdk-core";import{createWarpIdentifier as hn,getWarpWalletAddressFromConfig as gn,WarpCache as fn,WarpCacheKey as je,WarpLogger as Qe}from"@joai/warps";var Ge={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var b=c=>{if(c==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(c==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var We=c=>({hash:c.hash.toString("hex"),alias:c.alias?.toString()||null,trust:c.trust.toString(),owner:c.owner.toString(),createdAt:c.created_at.toNumber(),upgradedAt:c.upgraded_at?.toNumber(),brand:c.brand?.toString("hex")||null,upgrade:c.upgrade?.toString("hex")||null}),Ht=c=>({unitPrice:BigInt(c.unit_price.toString()),admins:c.admins.map(e=>e.toBech32())});var Ce=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new fn(e.env,e.cache),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=gn(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=C.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,s=()=>t&&r?[T.fromHex(e),T.fromUTF8(t),T.fromHex(r)]:t?[T.fromHex(e),T.fromUTF8(t)]:[T.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:C.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:s()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[T.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:C.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[T.fromUTF8(e),T.fromHex(t),T.fromHex(r)]:[T.fromUTF8(e),T.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e),T.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[T.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[T.fromHex(e),new ze(new C(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=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:C.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:C.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[T.fromHex(e),T.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=je.RegistryInfo(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return Qe.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=C.newFromBech32(b(this.config.env)),s=this.getController(),i=s.createQuery({contract:a,function:"getInfoByAlias",arguments:[T.fromUTF8(e)]}),o=await s.runQuery(i),[m]=s.parseQueryResponse(o),l=m?We(m):null,u=l?.brand?await this.fetchBrand(l.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:l,brand:u},t.ttl),{registryInfo:l,brand:u}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=je.RegistryInfo(this.config.env,e);if(t){let u=await this.cache.get(r);if(u)return Qe.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),u}let n=C.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:n,function:"getInfoByHash",arguments:[T.fromHex(e)]}),i=await a.runQuery(s),[o]=a.parseQueryResponse(i),m=o?We(o):null,l=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&await this.cache.set(r,{registryInfo:m,brand:l},t.ttl),{registryInfo:m,brand:l}}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=C.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new ze(new C(t))]}),s=await n.runQuery(a),[i]=n.parseQueryResponse(s);return i.map(We)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=C.newFromBech32(b(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new ze(new C(t))]}),s=await n.runQuery(a),[i]=n.parseQueryResponse(s),o=i.map(u=>u.toString("hex")),m={ttl:365*24*60*60};return(await Promise.all(o.map(u=>this.fetchBrand(u,m)))).filter(u=>u!==null)}catch{return[]}}async fetchBrand(e,t){let r=je.Brand(this.config.env,e),n=t?await this.cache.get(r):null;if(n)return Qe.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let s=v(this.chain,this.config.env,this.config).createNetworkProvider();try{let i=await s.getTransaction(e),o=JSON.parse(i.data.toString());return o.meta={query:null,chain:this.chain.name,identifier:hn(this.chain.name,"hash",e),hash:i.hash,creator:i.sender.toBech32(),createdAt:new Date(i.timestamp*1e3).toISOString()},t&&t.ttl&&await this.cache.set(r,o,t.ttl),o}catch{return null}}async loadRegistryConfigs(){let e=C.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Ht(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new dn({chainID:this.chain.chainId}),t=Gt.create(Ge);return new mn({config:e,abi:t})}getController(){let e=v(this.chain,this.config.env,this.config),t=Gt.create(Ge);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{CacheTtl as On,initializeWalletCache as kn,WarpCache as Mn}from"@joai/warps";import{Address as Vn}from"@multiversx/sdk-core";import{Account as yn,Message as wn,Mnemonic as Je,UserSecretKey as Wn}from"@multiversx/sdk-core";import*as Qt from"@scure/bip39";import{wordlist as Cn}from"@scure/bip39/wordlists/english.js";import{getWarpWalletAddressFromConfig as vn,getWarpWalletMnemonicFromConfig as zt,getWarpWalletPrivateKeyFromConfig as Tn,normalizeAndValidateMnemonic as An,normalizeMnemonic as xn,removeWarpWalletFromConfig as En,setWarpWalletInConfig as jt,validateMnemonicLength as bn}from"@joai/warps";var V=class V{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=vn(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new wn({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let t=An(e),n=Je.fromString(t).deriveKey(0),a=n.hex(),i=n.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),o={provider:V.PROVIDER_NAME,address:i,privateKey:a,mnemonic:t};return jt(this.config,this.chain.name,o),o}async importFromPrivateKey(e){let t=Wn.fromString(e),r=t.hex(),a=t.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),s={provider:V.PROVIDER_NAME,address:a,privateKey:r,mnemonic:null};return jt(this.config,this.chain.name,s),s}async export(){let e=this.getAccount(),t=zt(this.config,this.chain.name),r=Tn(this.config,this.chain.name);return{provider:V.PROVIDER_NAME,address:e.address.toBech32(),privateKey:r||null,mnemonic:t||null}}async generate(){let e=Qt.generateMnemonic(Cn,256),t=xn(e);bn(t);let s=Je.fromString(t).deriveKey(0).generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:V.PROVIDER_NAME,address:s,privateKey:null,mnemonic:t}}async delete(e){En(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=zt(this.config,this.chain.name);if(!e)throw new Error("No mnemonic provided");let r=Je.fromString(e).deriveKey(0);return this.account=new yn(r,this.chain.addressHrp),this.account}};V.PROVIDER_NAME="mnemonic";var z=V;import{Account as Pn,Message as In,Mnemonic as Sn,UserSecretKey as j}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as Nn,getWarpWalletMnemonicFromConfig as Bn,getWarpWalletPrivateKeyFromConfig as Jt,removeWarpWalletFromConfig as Un,setWarpWalletInConfig as Xt}from"@joai/warps";var R=class R{constructor(e,t){this.config=e;this.chain=t;this.account=null}async getAddress(){let e=Nn(this.config,this.chain.name);if(e)return e;try{return this.getAccount().address.toBech32()}catch{return null}}async getPublicKey(){try{return this.getAccount().publicKey.hex()}catch{return null}}async signTransaction(e){let r=await this.getAccount().signTransaction(e);return e.signature=r,e}async signMessage(e){let t=this.getAccount(),r=new TextEncoder().encode(e),n=await t.signMessage(new In({data:r}));return Buffer.from(n).toString("hex")}getAccountInstance(){return this.getAccount()}async importFromMnemonic(e){let r=Sn.fromString(e).deriveKey(0),n=r.hex(),s=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:R.PROVIDER_NAME,address:s,privateKey:n,mnemonic:e};return Xt(this.config,this.chain.name,i),i}async importFromPrivateKey(e){let r=e.startsWith("-----")?j.fromPem(e):j.fromString(e),n=r.hex(),s=r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),i={provider:R.PROVIDER_NAME,address:s,privateKey:n,mnemonic:null};return Xt(this.config,this.chain.name,i),i}async export(){let e=this.getAccount(),t=Jt(this.config,this.chain.name),r=Bn(this.config,this.chain.name);return{provider:R.PROVIDER_NAME,address:e.address.toBech32(),privateKey:t||null,mnemonic:r||null}}async generate(){let e=j.generate(),t=e.hex(),n=e.generatePublicKey().toAddress(this.chain.addressHrp).toBech32();return{provider:R.PROVIDER_NAME,address:n,privateKey:t,mnemonic:null}}async delete(e){Un(this.config,this.chain.name)}getAccount(){if(this.account)return this.account;let e=Jt(this.config,this.chain.name);if(!e)throw new Error("No private key provided");let r=e.startsWith("-----")?j.fromPem(e):j.fromString(e);return this.account=new Pn(r,this.chain.addressHrp),this.account}};R.PROVIDER_NAME="privateKey";var Q=R;import{getWarpWalletAddressFromConfig as J,removeWarpWalletFromConfig as Fn}from"@joai/warps";var D=class{constructor(e,t){this.config=e;this.chain=t}async getAddress(){return J(this.config,this.chain.name)}async getPublicKey(){return null}async signTransaction(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async signMessage(e){let t=await this.getAddress();throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromMnemonic(e){let t=J(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async importFromPrivateKey(e){let t=J(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${t}`)}async export(){let e=J(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async generate(){let e=J(this.config,this.chain.name);throw new Error(`Wallet can not be used for signing: ${e}`)}async delete(e){Fn(this.config,this.chain.name)}};var ve=class{constructor(e,t){this.config=e;this.chain=t;this.cachedAddress=null;this.cachedPublicKey=null;this.entry=v(t,e.env,e),this.cache=new Mn(e.env,e.cache),this.walletProvider=this.createProvider(),this.initializeCache()}async signTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof D)throw new Error(`Wallet (${this.chain.name}) is read-only`);if(this.walletProvider instanceof Q||this.walletProvider instanceof z){let n=this.walletProvider.getAccountInstance();if(t.nonce===0n){let a=await this.entry.recallAccountNonce(n.address),s=await this.cache.get(`nonce:${n.address.toBech32()}`)||0,i=BigInt(Math.max(s,Number(a)));t.nonce=i}}else if(t.nonce===0n&&this.cachedAddress){let n=Vn.newFromBech32(this.cachedAddress),a=await this.entry.recallAccountNonce(n),s=await this.cache.get(`nonce:${this.cachedAddress}`)||0,i=BigInt(Math.max(s,Number(a)));t.nonce=i}return await this.walletProvider.signTransaction(t)}async signTransactions(e){let t=[];for(let r of e)t.push(await this.signTransaction(r));return t}async signMessage(e){if(!this.walletProvider)throw new Error("No wallet provider available");if(this.walletProvider instanceof D)throw new Error(`Wallet (${this.chain.name}) is read-only`);return await this.walletProvider.signMessage(e)}async sendTransactions(e){return Promise.all(e.map(async t=>this.sendTransaction(t)))}async sendTransaction(e){let t=e;if(!t||typeof t!="object")throw new Error("Invalid transaction object");if(!t.signature||t.signature.length===0)throw new Error("Transaction must be signed before sending");let r=await this.entry.sendTransaction(t),n=t.sender,a=Number(t.nonce)+1;return await this.cache.set(`nonce:${n}`,a,On.OneMinute),r}async importFromMnemonic(e){return await this.createProviderForOperation("mnemonic").importFromMnemonic(e)}async importFromPrivateKey(e){return await this.createProviderForOperation("privateKey").importFromPrivateKey(e)}async export(e){return await this.createProviderForOperation(e).export()}async generate(e){return await this.createProviderForOperation(e).generate()}async delete(e,t){await this.createProviderForOperation(e).delete(t)}getAddress(){return this.cachedAddress}getPublicKey(){return this.cachedPublicKey}createProvider(){let e=this.config.user?.wallets?.[this.chain.name];return e?typeof e=="string"?new D(this.config,this.chain):e.provider?this.createProviderForOperation(e.provider):new D(this.config,this.chain):null}initializeCache(){kn(this.walletProvider).then(e=>{this.cachedAddress=e.address,this.cachedPublicKey=e.publicKey})}createProviderForOperation(e){let r=this.config.walletProviders?.[this.chain.name]?.[e];if(r){let n=r(this.config,this.chain);if(!n)throw new Error(`Custom wallet provider factory returned null for ${e}`);return n}if(e==="privateKey")return new Q(this.config,this.chain);if(e==="mnemonic")return new z(this.config,this.chain);throw new Error(`Unsupported wallet provider for ${this.chain.name}: ${e}`)}};var Te=(c,e)=>(t,r)=>{let n=e[t.env],a=new Rn;return a.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),a.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`}),a.registerTypeAlias("list","vector"),{chainInfo:n,builder:()=>new me(t,n),executor:new ye(t,n,a),output:new _(t,n,a),serializer:new B({typeRegistry:a}),registry:new Ce(t,n),explorer:new we(c,t),abiBuilder:()=>new U(t,n),brandBuilder:()=>new ue(t,n),dataLoader:new ge(t,n),wallet:new ve(t,n)}};import{WarpChainName as X}from"@joai/warps";var Xe={chain:X.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/egld.svg"},Yt=Te(X.Multiversx,{mainnet:{name:X.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe},testnet:{name:X.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.battleofnodes.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe},devnet:{name:X.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/multiversx.svg",nativeToken:Xe}});import{WarpChainName as Ze}from"@joai/warps";var Dn={chain:Ze.Claws,identifier:"CLAW",name:"Claws",symbol:"CLAW",decimals:18,logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/tokens/logos/claw.svg"},Ye={name:Ze.Claws,displayName:"Claws Network",chainId:"C",blockTime:600,addressHrp:"claw",defaultApiUrl:"https://api.claws.network",logoUrl:"https://raw.githubusercontent.com/JoAiHQ/assets/refs/heads/main/chains/logos/claws.png",nativeToken:Dn,minGasPrice:20000000000000n},Zt=Te(Ze.Claws,{mainnet:Ye,testnet:Ye,devnet:Ye});var Bc=()=>[Yt,Zt];import{WarpConstants as Ae,WarpSerializer as et}from"@joai/warps";var Mc=c=>new et().nativeToString(W.Token,c),Vc=c=>new et().nativeToString(W.CodeMeta,c),Rc=(c,e)=>{if(e===null)return W.Optional+Ae.ArgParamsSeparator;let t=c(e),r=t.indexOf(Ae.ArgParamsSeparator),n=t.substring(0,r),a=t.substring(r+1);return W.Optional+Ae.ArgParamsSeparator+n+Ae.ArgParamsSeparator+a},Dc=c=>new et().nativeToString(W.List,c);import{Address as Ln,AddressValue as Kn,BigUIntType as _n,BigUIntValue as er,BooleanValue as $n,BytesValue as qn,CodeMetadata as Hn,CodeMetadataValue as Gn,CompositeType as zn,CompositeValue as jn,Field as tt,FieldDefinition as rt,List as Qn,NothingValue as Jn,OptionalValue as nt,OptionValue as at,StringValue as Xn,Struct as Yn,StructType as Zn,TokenIdentifierType as ea,TokenIdentifierValue as tr,U16Value as ta,U32Value as ra,U64Type as na,U64Value as rr,U8Value as aa,VariadicValue as sa}from"@multiversx/sdk-core";var Hc=(c,e)=>c?at.newProvided(c):e?at.newMissingTyped(e):at.newMissing(),Gc=(c,e)=>c?new nt(c.getType(),c):e?new nt(e):nt.newMissing(),zc=c=>{if(c.length===0)throw new Error("Cannot create a list from an empty array");let e=c[0].getType();return new Qn(e,c)},jc=c=>sa.fromItems(...c),Qc=c=>{let e=c.map(t=>t.getType());return new jn(new zn(...e),c)},Jc=c=>Xn.fromUTF8(c),Xc=c=>new aa(c),Yc=c=>new ta(c),Zc=c=>new ra(c),el=c=>new rr(c),tl=c=>new er(BigInt(c)),rl=c=>new $n(c),nl=c=>new Kn(Ln.newFromBech32(c)),al=c=>new tr(c),sl=c=>qn.fromHex(c),il=c=>new Yn(new Zn("EsdtTokenPayment",[new rt("token_identifier","",new ea),new rt("token_nonce","",new na),new rt("amount","",new _n)]),[new tt(new tr(c.token.identifier),"token_identifier"),new tt(new rr(BigInt(c.token.nonce)),"token_nonce"),new tt(new er(BigInt(c.amount)),"amount")]),ol=c=>new Gn(Hn.newFromBytes(Uint8Array.from(Buffer.from(c,"hex")))),cl=()=>new Jn;export{Zt as ClawsAdapter,lr as ClawsExplorers,k as ExplorerUrls,Lt as KnownTokens,Yt as MultiversxAdapter,cr as MultiversxExplorers,pt as MultiversxExplorersConfig,Dn as NativeTokenClaw,Xe as NativeTokenEgld,U as WarpMultiversxAbiBuilder,ue as WarpMultiversxBrandBuilder,me as WarpMultiversxBuilder,Pa as WarpMultiversxConstants,re as WarpMultiversxContractLoader,ge as WarpMultiversxDataLoader,ye as WarpMultiversxExecutor,we as WarpMultiversxExplorer,W as WarpMultiversxInputTypes,_ as WarpMultiversxOutput,Ce as WarpMultiversxRegistry,B as WarpMultiversxSerializer,ve as WarpMultiversxWallet,nl as address_value,il as asset_value,tl as biguint_value,rl as boolean_value,Vc as codemeta,ol as codemeta_value,Qc as composite_value,Te as createMultiversxAdapter,Kt as findKnownTokenById,Bc as getAllMultiversxAdapters,oa as getAllMultiversxChainNames,Gs as getKnownTokensForChain,v as getMultiversxEntrypoint,b as getMultiversxRegistryAddress,te as getNormalizedTokenIdentifier,sl as hex_value,L as isNativeToken,Dc as list,zc as list_value,cl as nothing_value,Hc as option_value,Rc as optional,Gc as optional_value,Jc as string_value,Ht as toTypedConfigInfo,We as toTypedRegistryInfo,Mc as token,al as token_value,Yc as u16_value,Zc as u32_value,el as u64_value,Xc as u8_value,jc as variadic_value};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@joai/warps-adapter-multiversx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -38,6 +38,6 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@multiversx/sdk-core": "^15.4.0",
|
|
40
40
|
"@scure/bip39": "^2.0.1",
|
|
41
|
-
"@joai/warps": "^4.
|
|
41
|
+
"@joai/warps": "^4.23.0"
|
|
42
42
|
}
|
|
43
43
|
}
|