@vleap/warps-adapter-multiversx 0.2.0-alpha.6 → 0.2.0-alpha.60

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.
@@ -0,0 +1,284 @@
1
+ import * as _vleap_warps from '@vleap/warps';
2
+ import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, WarpActionInputType, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, AdapterTypeRegistry as AdapterTypeRegistry$1, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
+ import { NetworkEntrypoint, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction } from '@multiversx/sdk-core';
4
+ import { WarpAdapterGenericTransaction as WarpAdapterGenericTransaction$1, AdapterTypeRegistry } from '@vleap/warps/src/types';
5
+
6
+ declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
7
+ declare const getAllMultiversxChainNames: () => WarpChain[];
8
+
9
+ declare const createMultiversxAdapter: (chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
10
+
11
+ declare const NativeTokenEgld: WarpChainAsset;
12
+ declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
13
+
14
+ declare const NativeTokenVibe: WarpChainAsset;
15
+ declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
16
+
17
+ declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
18
+
19
+ declare const WarpMultiversxConstants: {
20
+ Egld: {
21
+ Identifier: string;
22
+ EsdtIdentifier: string;
23
+ DisplayName: string;
24
+ Decimals: number;
25
+ };
26
+ };
27
+ declare const WarpMultiversxInputTypes: {
28
+ Null: string;
29
+ Optional: string;
30
+ List: string;
31
+ Token: string;
32
+ CodeMeta: string;
33
+ };
34
+ declare enum MultiversxExplorers {
35
+ MultiversxExplorer = "multiversx_explorer",
36
+ MultiversxExplorerDevnet = "multiversx_explorer_devnet",
37
+ MultiversxExplorerTestnet = "multiversx_explorer_testnet"
38
+ }
39
+ declare enum VibechainExplorers {
40
+ VibechainExplorer = "vibechain_explorer",
41
+ VibechainExplorerDevnet = "vibechain_explorer_devnet",
42
+ VibechainExplorerTestnet = "vibechain_explorer_testnet"
43
+ }
44
+ type ExplorerName = MultiversxExplorers | VibechainExplorers;
45
+ declare const MultiversxExplorersConfig: {
46
+ readonly multiversx: {
47
+ readonly mainnet: readonly [MultiversxExplorers.MultiversxExplorer];
48
+ readonly testnet: readonly [MultiversxExplorers.MultiversxExplorerTestnet];
49
+ readonly devnet: readonly [MultiversxExplorers.MultiversxExplorerDevnet];
50
+ };
51
+ readonly vibechain: {
52
+ readonly mainnet: readonly [VibechainExplorers.VibechainExplorer];
53
+ readonly testnet: readonly [VibechainExplorers.VibechainExplorerTestnet];
54
+ readonly devnet: readonly [VibechainExplorers.VibechainExplorerDevnet];
55
+ };
56
+ };
57
+ declare const ExplorerUrls: Record<ExplorerName, string>;
58
+
59
+ declare const isNativeToken: (identifier: string) => boolean;
60
+ declare const getNormalizedTokenIdentifier: (identifier: string) => string;
61
+ declare const getMultiversxEntrypoint: (chainInfo: WarpChainInfo, env: WarpChainEnv, config?: WarpClientConfig) => NetworkEntrypoint;
62
+
63
+ declare const toTypedRegistryInfo: (registryInfo: any) => WarpRegistryInfo;
64
+ declare const toTypedConfigInfo: (configInfo: any) => WarpRegistryConfigInfo;
65
+
66
+ declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset[]>>;
67
+ declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
68
+ declare const getKnownTokensForChain: (chain: WarpChain, env: WarpChainEnv) => WarpChainAsset[];
69
+
70
+ declare const token: (value: string) => string;
71
+ declare const codemeta: (value: string) => string;
72
+ declare const option: (value: WarpNativeValue | null, type: WarpActionInputType) => string;
73
+ declare const list: (values: WarpNativeValue[]) => string;
74
+
75
+ declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
76
+ declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
77
+ declare const list_value: (values: TypedValue[]) => List;
78
+ declare const variadic_value: (values: TypedValue[]) => VariadicValue;
79
+ declare const composite_value: (values: TypedValue[]) => CompositeValue;
80
+ declare const string_value: (value: string) => StringValue;
81
+ declare const u8_value: (value: number) => U8Value;
82
+ declare const u16_value: (value: number) => U16Value;
83
+ declare const u32_value: (value: number) => U32Value;
84
+ declare const u64_value: (value: bigint) => U64Value;
85
+ declare const biguint_value: (value: bigint | string | number) => BigUIntValue;
86
+ declare const boolean_value: (value: boolean) => BooleanValue;
87
+ declare const address_value: (value: string) => AddressValue;
88
+ declare const token_value: (value: string) => TokenIdentifierValue;
89
+ declare const hex_value: (value: string) => BytesValue;
90
+ declare const asset_value: (value: TokenTransfer) => Struct;
91
+ declare const codemeta_value: (hexString: string) => CodeMetadataValue;
92
+ declare const nothing_value: () => NothingValue;
93
+
94
+ declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
95
+ private readonly config;
96
+ private readonly chain;
97
+ private readonly contractLoader;
98
+ private readonly cache;
99
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
100
+ createInscriptionTransaction(abi: WarpAbiContents): Promise<WarpAdapterGenericTransaction>;
101
+ createFromRaw(encoded: string): Promise<WarpAbi>;
102
+ createFromTransaction(tx: TransactionOnNetwork): Promise<WarpAbi>;
103
+ createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<WarpAbi | null>;
104
+ getAbiForAction(action: WarpContractAction | WarpQueryAction): Promise<AbiRegistry>;
105
+ fetchAbi(action: WarpContractAction | WarpQueryAction): Promise<AbiRegistry>;
106
+ }
107
+
108
+ declare class WarpMultiversxBrandBuilder {
109
+ private readonly config;
110
+ private readonly chain;
111
+ private readonly core;
112
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
113
+ createInscriptionTransaction(brand: WarpBrand): Promise<Transaction>;
114
+ createFromTransaction(tx: TransactionOnNetwork, validateSchema?: boolean): Promise<WarpBrand>;
115
+ createFromTransactionHash(hash: string): Promise<WarpBrand | null>;
116
+ }
117
+
118
+ declare class WarpMultiversxBuilder extends WarpBuilder implements AdapterWarpBuilder {
119
+ protected readonly config: WarpClientConfig;
120
+ private readonly chain;
121
+ private readonly cache;
122
+ private readonly core;
123
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
124
+ createInscriptionTransaction(warp: Warp): Promise<WarpAdapterGenericTransaction$1>;
125
+ createFromTransaction(tx: TransactionOnNetwork, validate?: boolean): Promise<Warp>;
126
+ createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<Warp | null>;
127
+ }
128
+
129
+ declare class WarpMultiversxContractLoader {
130
+ private readonly config;
131
+ constructor(config: WarpClientConfig);
132
+ getContract(address: string, chain: WarpChainInfo): Promise<WarpContract | null>;
133
+ getVerificationInfo(address: string, chain: WarpChainInfo): Promise<WarpContractVerification | null>;
134
+ }
135
+
136
+ declare class WarpMultiversxDataLoader implements AdapterWarpDataLoader {
137
+ private readonly config;
138
+ private readonly chain;
139
+ private cache;
140
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
141
+ getAccount(address: string): Promise<WarpChainAccount>;
142
+ getAccountAssets(address: string): Promise<WarpChainAsset[]>;
143
+ getAsset(identifier: string): Promise<WarpChainAsset | null>;
144
+ getAction(identifier: string, awaitCompleted?: boolean): Promise<WarpChainAction | null>;
145
+ getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]>;
146
+ private toActionStatus;
147
+ private toActionCreatedAt;
148
+ }
149
+
150
+ declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
151
+ private readonly config;
152
+ private readonly chain;
153
+ private readonly typeRegistry;
154
+ private readonly serializer;
155
+ private readonly abi;
156
+ private readonly results;
157
+ constructor(config: WarpClientConfig, chain: WarpChainInfo, typeRegistry: AdapterTypeRegistry);
158
+ createTransaction(executable: WarpExecutable): Promise<Transaction>;
159
+ createTransferTransaction(executable: WarpExecutable): Promise<Transaction>;
160
+ createContractCallTransaction(executable: WarpExecutable): Promise<Transaction>;
161
+ executeQuery(executable: WarpExecutable): Promise<WarpExecution>;
162
+ signMessage(message: string, privateKey: string): Promise<string>;
163
+ private toTokenTransfers;
164
+ }
165
+
166
+ declare class WarpMultiversxExplorer implements AdapterWarpExplorer {
167
+ private readonly chain;
168
+ private readonly config;
169
+ constructor(chain: WarpChain, config: WarpClientConfig);
170
+ private getExplorers;
171
+ private getPrimaryExplorer;
172
+ private getExplorerUrlByName;
173
+ getAccountUrl(address: string, explorer?: ExplorerName): string;
174
+ getTransactionUrl(hash: string, explorer?: ExplorerName): string;
175
+ getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string;
176
+ getAssetUrl(identifier: string, explorer?: ExplorerName): string;
177
+ getContractUrl(address: string, explorer?: ExplorerName): string;
178
+ getAllExplorers(): readonly ExplorerName[];
179
+ getExplorerByName(name: string): ExplorerName | undefined;
180
+ getAccountUrls(address: string): Record<ExplorerName, string>;
181
+ getTransactionUrls(hash: string): Record<ExplorerName, string>;
182
+ }
183
+
184
+ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
185
+ private config;
186
+ private chain;
187
+ private cache;
188
+ private userWallet;
189
+ registryConfig: WarpRegistryConfigInfo;
190
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
191
+ init(): Promise<void>;
192
+ getRegistryConfig(): WarpRegistryConfigInfo;
193
+ createWarpRegisterTransaction(txHash: string, alias?: string | null, brand?: string | null): Promise<Transaction>;
194
+ createWarpUnregisterTransaction(txHash: string): Promise<Transaction>;
195
+ createWarpUpgradeTransaction(alias: string, txHash: string, brand?: string | null): Promise<Transaction>;
196
+ createWarpAliasSetTransaction(txHash: string, alias: string): Promise<Transaction>;
197
+ createWarpVerifyTransaction(txHash: string): Promise<Transaction>;
198
+ createWarpTransferOwnershipTransaction(txHash: string, newOwner: string): Promise<Transaction>;
199
+ createBrandRegisterTransaction(txHash: string): Promise<Transaction>;
200
+ createWarpBrandingTransaction(warpHash: string, brandHash: string): Promise<Transaction>;
201
+ getInfoByAlias(alias: string, cache?: WarpCacheConfig): Promise<{
202
+ registryInfo: WarpRegistryInfo | null;
203
+ brand: WarpBrand | null;
204
+ }>;
205
+ getInfoByHash(hash: string, cache?: WarpCacheConfig): Promise<{
206
+ registryInfo: WarpRegistryInfo | null;
207
+ brand: WarpBrand | null;
208
+ }>;
209
+ getUserWarpRegistryInfos(user?: string): Promise<WarpRegistryInfo[]>;
210
+ getUserBrands(user?: string): Promise<WarpBrand[]>;
211
+ fetchBrand(hash: string, cache?: WarpCacheConfig): Promise<WarpBrand | null>;
212
+ private loadRegistryConfigs;
213
+ private getFactory;
214
+ private getController;
215
+ private isCurrentUserAdmin;
216
+ }
217
+
218
+ declare class WarpMultiversxResults implements AdapterWarpResults {
219
+ private readonly config;
220
+ private readonly chain;
221
+ private readonly typeRegistry;
222
+ private readonly abi;
223
+ private readonly serializer;
224
+ private readonly cache;
225
+ constructor(config: WarpClientConfig, chain: WarpChainInfo, typeRegistry: AdapterTypeRegistry$1);
226
+ getTransactionExecutionResults(warp: Warp, tx: TransactionOnNetwork): Promise<WarpExecution>;
227
+ extractContractResults(warp: Warp, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
228
+ values: any[];
229
+ results: WarpExecutionResults;
230
+ }>;
231
+ extractQueryResults(warp: Warp, typedValues: TypedValue[], actionIndex: number, inputs: ResolvedInput[]): Promise<{
232
+ values: any[];
233
+ valuesRaw: any[];
234
+ results: WarpExecutionResults;
235
+ }>;
236
+ resolveWarpResultsRecursively(props: {
237
+ warp: Warp;
238
+ entryActionIndex: number;
239
+ executor: {
240
+ executeQuery: Function;
241
+ executeCollect: Function;
242
+ };
243
+ inputs: ResolvedInput[];
244
+ meta?: Record<string, any>;
245
+ }): Promise<any>;
246
+ }
247
+
248
+ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
249
+ readonly coreSerializer: WarpSerializer;
250
+ constructor(options?: {
251
+ typeRegistry?: AdapterTypeRegistry;
252
+ });
253
+ typedToString(value: TypedValue): string;
254
+ typedToNative(value: TypedValue): [WarpActionInputType, WarpNativeValue];
255
+ nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): TypedValue;
256
+ nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType;
257
+ stringToTyped(value: string): TypedValue;
258
+ typeToString(type: Type): WarpActionInputType;
259
+ }
260
+
261
+ declare class WarpMultiversxWallet implements AdapterWarpWallet {
262
+ private config;
263
+ private chain;
264
+ private entry;
265
+ private provider;
266
+ private cache;
267
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
268
+ signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
269
+ signMessage(message: string): Promise<string>;
270
+ sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string>;
271
+ create(mnemonic: string): {
272
+ address: string;
273
+ privateKey: string;
274
+ mnemonic: string;
275
+ };
276
+ generate(): {
277
+ address: string;
278
+ privateKey: string;
279
+ mnemonic: string;
280
+ };
281
+ getAddress(): string | null;
282
+ }
283
+
284
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list, list_value, nothing_value, option, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,20 @@
1
- import { WarpInitConfig, Adapter, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, AdapterWarpBuilder, Warp, WarpChainInfo, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, WarpChainEnv, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, WarpChain, AdapterWarpResults, WarpActionIndex, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
2
- import { TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction, NetworkEntrypoint, Address } from '@multiversx/sdk-core';
1
+ import * as _vleap_warps from '@vleap/warps';
2
+ import { WarpClientConfig, Adapter, WarpChain, WarpChainEnv, WarpChainInfo, AdapterFactory, WarpChainAsset, WarpRegistryInfo, WarpRegistryConfigInfo, WarpNativeValue, WarpActionInputType, AdapterWarpAbiBuilder, WarpAbiContents, WarpAdapterGenericTransaction, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpDataLoader, WarpChainAccount, WarpChainAction, WarpDataLoaderOptions, AdapterWarpExecutor, WarpExecutable, WarpExecution, AdapterWarpExplorer, AdapterWarpRegistry, AdapterWarpResults, AdapterTypeRegistry as AdapterTypeRegistry$1, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, BaseWarpActionInputType, WarpAdapterGenericType, AdapterWarpWallet } from '@vleap/warps';
3
+ import { NetworkEntrypoint, TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction } from '@multiversx/sdk-core';
4
+ import { WarpAdapterGenericTransaction as WarpAdapterGenericTransaction$1, AdapterTypeRegistry } from '@vleap/warps/src/types';
5
+
6
+ declare const getAllMultiversxAdapters: (config: WarpClientConfig, fallback?: Adapter) => Adapter[];
7
+ declare const getAllMultiversxChainNames: () => WarpChain[];
8
+
9
+ declare const createMultiversxAdapter: (chainName: string, chainPrefix: string, chainInfos: Record<WarpChainEnv, WarpChainInfo>) => AdapterFactory;
10
+
11
+ declare const NativeTokenEgld: WarpChainAsset;
12
+ declare const getMultiversxAdapter: _vleap_warps.AdapterFactory;
13
+
14
+ declare const NativeTokenVibe: WarpChainAsset;
15
+ declare const getVibechainAdapter: _vleap_warps.AdapterFactory;
16
+
17
+ declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
3
18
 
4
19
  declare const WarpMultiversxConstants: {
5
20
  Egld: {
@@ -9,8 +24,53 @@ declare const WarpMultiversxConstants: {
9
24
  Decimals: number;
10
25
  };
11
26
  };
27
+ declare const WarpMultiversxInputTypes: {
28
+ Null: string;
29
+ Optional: string;
30
+ List: string;
31
+ Token: string;
32
+ CodeMeta: string;
33
+ };
34
+ declare enum MultiversxExplorers {
35
+ MultiversxExplorer = "multiversx_explorer",
36
+ MultiversxExplorerDevnet = "multiversx_explorer_devnet",
37
+ MultiversxExplorerTestnet = "multiversx_explorer_testnet"
38
+ }
39
+ declare enum VibechainExplorers {
40
+ VibechainExplorer = "vibechain_explorer",
41
+ VibechainExplorerDevnet = "vibechain_explorer_devnet",
42
+ VibechainExplorerTestnet = "vibechain_explorer_testnet"
43
+ }
44
+ type ExplorerName = MultiversxExplorers | VibechainExplorers;
45
+ declare const MultiversxExplorersConfig: {
46
+ readonly multiversx: {
47
+ readonly mainnet: readonly [MultiversxExplorers.MultiversxExplorer];
48
+ readonly testnet: readonly [MultiversxExplorers.MultiversxExplorerTestnet];
49
+ readonly devnet: readonly [MultiversxExplorers.MultiversxExplorerDevnet];
50
+ };
51
+ readonly vibechain: {
52
+ readonly mainnet: readonly [VibechainExplorers.VibechainExplorer];
53
+ readonly testnet: readonly [VibechainExplorers.VibechainExplorerTestnet];
54
+ readonly devnet: readonly [VibechainExplorers.VibechainExplorerDevnet];
55
+ };
56
+ };
57
+ declare const ExplorerUrls: Record<ExplorerName, string>;
58
+
59
+ declare const isNativeToken: (identifier: string) => boolean;
60
+ declare const getNormalizedTokenIdentifier: (identifier: string) => string;
61
+ declare const getMultiversxEntrypoint: (chainInfo: WarpChainInfo, env: WarpChainEnv, config?: WarpClientConfig) => NetworkEntrypoint;
12
62
 
13
- declare const getMultiversxAdapter: (config: WarpInitConfig) => Adapter;
63
+ declare const toTypedRegistryInfo: (registryInfo: any) => WarpRegistryInfo;
64
+ declare const toTypedConfigInfo: (configInfo: any) => WarpRegistryConfigInfo;
65
+
66
+ declare const KnownTokens: Record<WarpChain, Record<WarpChainEnv, WarpChainAsset[]>>;
67
+ declare const findKnownTokenById: (chain: WarpChain, env: WarpChainEnv, id: string) => WarpChainAsset | null;
68
+ declare const getKnownTokensForChain: (chain: WarpChain, env: WarpChainEnv) => WarpChainAsset[];
69
+
70
+ declare const token: (value: string) => string;
71
+ declare const codemeta: (value: string) => string;
72
+ declare const option: (value: WarpNativeValue | null, type: WarpActionInputType) => string;
73
+ declare const list: (values: WarpNativeValue[]) => string;
14
74
 
15
75
  declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
16
76
  declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
@@ -27,15 +87,17 @@ declare const boolean_value: (value: boolean) => BooleanValue;
27
87
  declare const address_value: (value: string) => AddressValue;
28
88
  declare const token_value: (value: string) => TokenIdentifierValue;
29
89
  declare const hex_value: (value: string) => BytesValue;
30
- declare const esdt_value: (value: TokenTransfer) => Struct;
90
+ declare const asset_value: (value: TokenTransfer) => Struct;
31
91
  declare const codemeta_value: (hexString: string) => CodeMetadataValue;
32
92
  declare const nothing_value: () => NothingValue;
33
93
 
34
- declare class WarpMultiversxAbi {
94
+ declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
35
95
  private readonly config;
96
+ private readonly chain;
36
97
  private readonly contractLoader;
37
98
  private readonly cache;
38
- constructor(config: WarpInitConfig);
99
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
100
+ createInscriptionTransaction(abi: WarpAbiContents): Promise<WarpAdapterGenericTransaction>;
39
101
  createFromRaw(encoded: string): Promise<WarpAbi>;
40
102
  createFromTransaction(tx: TransactionOnNetwork): Promise<WarpAbi>;
41
103
  createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<WarpAbi | null>;
@@ -44,59 +106,98 @@ declare class WarpMultiversxAbi {
44
106
  }
45
107
 
46
108
  declare class WarpMultiversxBrandBuilder {
47
- private config;
48
- private core;
49
- constructor(config: WarpInitConfig);
50
- createInscriptionTransaction(brand: WarpBrand): Transaction;
109
+ private readonly config;
110
+ private readonly chain;
111
+ private readonly core;
112
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
113
+ createInscriptionTransaction(brand: WarpBrand): Promise<Transaction>;
51
114
  createFromTransaction(tx: TransactionOnNetwork, validateSchema?: boolean): Promise<WarpBrand>;
52
115
  createFromTransactionHash(hash: string): Promise<WarpBrand | null>;
53
116
  }
54
117
 
55
- declare class WarpMultiversxBuilder implements AdapterWarpBuilder {
56
- private config;
57
- private cache;
58
- private core;
59
- constructor(config: WarpInitConfig);
60
- createInscriptionTransaction(warp: Warp): Transaction;
118
+ declare class WarpMultiversxBuilder extends WarpBuilder implements AdapterWarpBuilder {
119
+ protected readonly config: WarpClientConfig;
120
+ private readonly chain;
121
+ private readonly cache;
122
+ private readonly core;
123
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
124
+ createInscriptionTransaction(warp: Warp): Promise<WarpAdapterGenericTransaction$1>;
61
125
  createFromTransaction(tx: TransactionOnNetwork, validate?: boolean): Promise<Warp>;
62
126
  createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<Warp | null>;
63
127
  }
64
128
 
65
129
  declare class WarpMultiversxContractLoader {
66
130
  private readonly config;
67
- constructor(config: WarpInitConfig);
131
+ constructor(config: WarpClientConfig);
68
132
  getContract(address: string, chain: WarpChainInfo): Promise<WarpContract | null>;
69
133
  getVerificationInfo(address: string, chain: WarpChainInfo): Promise<WarpContractVerification | null>;
70
134
  }
71
135
 
136
+ declare class WarpMultiversxDataLoader implements AdapterWarpDataLoader {
137
+ private readonly config;
138
+ private readonly chain;
139
+ private cache;
140
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
141
+ getAccount(address: string): Promise<WarpChainAccount>;
142
+ getAccountAssets(address: string): Promise<WarpChainAsset[]>;
143
+ getAsset(identifier: string): Promise<WarpChainAsset | null>;
144
+ getAction(identifier: string, awaitCompleted?: boolean): Promise<WarpChainAction | null>;
145
+ getAccountActions(address: string, options?: WarpDataLoaderOptions): Promise<WarpChainAction[]>;
146
+ private toActionStatus;
147
+ private toActionCreatedAt;
148
+ }
149
+
72
150
  declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
73
151
  private readonly config;
152
+ private readonly chain;
153
+ private readonly typeRegistry;
74
154
  private readonly serializer;
75
155
  private readonly abi;
76
156
  private readonly results;
77
- constructor(config: WarpInitConfig);
157
+ constructor(config: WarpClientConfig, chain: WarpChainInfo, typeRegistry: AdapterTypeRegistry);
78
158
  createTransaction(executable: WarpExecutable): Promise<Transaction>;
79
159
  createTransferTransaction(executable: WarpExecutable): Promise<Transaction>;
80
160
  createContractCallTransaction(executable: WarpExecutable): Promise<Transaction>;
81
161
  executeQuery(executable: WarpExecutable): Promise<WarpExecution>;
82
- preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string>;
83
- static getChainEntrypoint(chainInfo: WarpChainInfo, env: WarpChainEnv): NetworkEntrypoint;
162
+ signMessage(message: string, privateKey: string): Promise<string>;
163
+ private toTokenTransfers;
164
+ }
165
+
166
+ declare class WarpMultiversxExplorer implements AdapterWarpExplorer {
167
+ private readonly chain;
168
+ private readonly config;
169
+ constructor(chain: WarpChain, config: WarpClientConfig);
170
+ private getExplorers;
171
+ private getPrimaryExplorer;
172
+ private getExplorerUrlByName;
173
+ getAccountUrl(address: string, explorer?: ExplorerName): string;
174
+ getTransactionUrl(hash: string, explorer?: ExplorerName): string;
175
+ getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string;
176
+ getAssetUrl(identifier: string, explorer?: ExplorerName): string;
177
+ getContractUrl(address: string, explorer?: ExplorerName): string;
178
+ getAllExplorers(): readonly ExplorerName[];
179
+ getExplorerByName(name: string): ExplorerName | undefined;
180
+ getAccountUrls(address: string): Record<ExplorerName, string>;
181
+ getTransactionUrls(hash: string): Record<ExplorerName, string>;
84
182
  }
85
183
 
86
184
  declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
87
185
  private config;
186
+ private chain;
88
187
  private cache;
188
+ private userWallet;
89
189
  registryConfig: WarpRegistryConfigInfo;
90
- constructor(config: WarpInitConfig);
190
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
91
191
  init(): Promise<void>;
92
- createWarpRegisterTransaction(txHash: string, alias?: string | null, brand?: string | null): Transaction;
93
- createWarpUnregisterTransaction(txHash: string): Transaction;
94
- createWarpUpgradeTransaction(alias: string, txHash: string): Transaction;
95
- createWarpAliasSetTransaction(txHash: string, alias: string): Transaction;
96
- createWarpVerifyTransaction(txHash: string): Transaction;
97
- createWarpTransferOwnershipTransaction(txHash: string, newOwner: string): Transaction;
98
- createBrandRegisterTransaction(txHash: string): Transaction;
99
- createWarpBrandingTransaction(warpHash: string, brandHash: string): Transaction;
192
+ getRegistryConfig(): WarpRegistryConfigInfo;
193
+ createWarpRegisterTransaction(txHash: string, alias?: string | null, brand?: string | null): Promise<Transaction>;
194
+ createWarpUnregisterTransaction(txHash: string): Promise<Transaction>;
195
+ createWarpUpgradeTransaction(alias: string, txHash: string, brand?: string | null): Promise<Transaction>;
196
+ createWarpAliasSetTransaction(txHash: string, alias: string): Promise<Transaction>;
197
+ createWarpVerifyTransaction(txHash: string): Promise<Transaction>;
198
+ createWarpTransferOwnershipTransaction(txHash: string, newOwner: string): Promise<Transaction>;
199
+ createBrandRegisterTransaction(txHash: string): Promise<Transaction>;
200
+ createWarpBrandingTransaction(warpHash: string, brandHash: string): Promise<Transaction>;
100
201
  getInfoByAlias(alias: string, cache?: WarpCacheConfig): Promise<{
101
202
  registryInfo: WarpRegistryInfo | null;
102
203
  brand: WarpBrand | null;
@@ -107,12 +208,7 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
107
208
  }>;
108
209
  getUserWarpRegistryInfos(user?: string): Promise<WarpRegistryInfo[]>;
109
210
  getUserBrands(user?: string): Promise<WarpBrand[]>;
110
- getChainInfos(cache?: WarpCacheConfig): Promise<WarpChainInfo[]>;
111
- getChainInfo(chain: WarpChain, cache?: WarpCacheConfig): Promise<WarpChainInfo | null>;
112
- setChain(info: WarpChainInfo): Promise<Transaction>;
113
- removeChain(chain: WarpChain): Promise<Transaction>;
114
211
  fetchBrand(hash: string, cache?: WarpCacheConfig): Promise<WarpBrand | null>;
115
- getRegistryContractAddress(): Address;
116
212
  private loadRegistryConfigs;
117
213
  private getFactory;
118
214
  private getController;
@@ -121,17 +217,20 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
121
217
 
122
218
  declare class WarpMultiversxResults implements AdapterWarpResults {
123
219
  private readonly config;
220
+ private readonly chain;
221
+ private readonly typeRegistry;
124
222
  private readonly abi;
125
223
  private readonly serializer;
126
224
  private readonly cache;
127
- constructor(config: WarpInitConfig);
128
- getTransactionExecutionResults(warp: Warp, actionIndex: WarpActionIndex, tx: TransactionOnNetwork): Promise<WarpExecution>;
129
- extractContractResults(warp: Warp, actionIndex: WarpActionIndex, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
225
+ constructor(config: WarpClientConfig, chain: WarpChainInfo, typeRegistry: AdapterTypeRegistry$1);
226
+ getTransactionExecutionResults(warp: Warp, tx: TransactionOnNetwork): Promise<WarpExecution>;
227
+ extractContractResults(warp: Warp, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
130
228
  values: any[];
131
229
  results: WarpExecutionResults;
132
230
  }>;
133
231
  extractQueryResults(warp: Warp, typedValues: TypedValue[], actionIndex: number, inputs: ResolvedInput[]): Promise<{
134
232
  values: any[];
233
+ valuesRaw: any[];
135
234
  results: WarpExecutionResults;
136
235
  }>;
137
236
  resolveWarpResultsRecursively(props: {
@@ -148,7 +247,9 @@ declare class WarpMultiversxResults implements AdapterWarpResults {
148
247
 
149
248
  declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
150
249
  readonly coreSerializer: WarpSerializer;
151
- constructor();
250
+ constructor(options?: {
251
+ typeRegistry?: AdapterTypeRegistry;
252
+ });
152
253
  typedToString(value: TypedValue): string;
153
254
  typedToNative(value: TypedValue): [WarpActionInputType, WarpNativeValue];
154
255
  nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): TypedValue;
@@ -157,4 +258,27 @@ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
157
258
  typeToString(type: Type): WarpActionInputType;
158
259
  }
159
260
 
160
- export { WarpMultiversxAbi, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxAdapter, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
261
+ declare class WarpMultiversxWallet implements AdapterWarpWallet {
262
+ private config;
263
+ private chain;
264
+ private entry;
265
+ private provider;
266
+ private cache;
267
+ constructor(config: WarpClientConfig, chain: WarpChainInfo);
268
+ signTransaction(tx: WarpAdapterGenericTransaction): Promise<WarpAdapterGenericTransaction>;
269
+ signMessage(message: string): Promise<string>;
270
+ sendTransaction(tx: WarpAdapterGenericTransaction): Promise<string>;
271
+ create(mnemonic: string): {
272
+ address: string;
273
+ privateKey: string;
274
+ mnemonic: string;
275
+ };
276
+ generate(): {
277
+ address: string;
278
+ privateKey: string;
279
+ mnemonic: string;
280
+ };
281
+ getAddress(): string | null;
282
+ }
283
+
284
+ export { type ExplorerName, ExplorerUrls, KnownTokens, MultiversxExplorers, MultiversxExplorersConfig, NativeTokenEgld, NativeTokenVibe, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxDataLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxInputTypes, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, WarpMultiversxWallet, address_value, asset_value, biguint_value, boolean_value, codemeta, codemeta_value, composite_value, createMultiversxAdapter, findKnownTokenById, getAllMultiversxAdapters, getAllMultiversxChainNames, getKnownTokensForChain, getMultiversxAdapter, getMultiversxEntrypoint, getMultiversxRegistryAddress, getNormalizedTokenIdentifier, getVibechainAdapter, hex_value, isNativeToken, list, list_value, nothing_value, option, option_value, optional_value, string_value, toTypedConfigInfo, toTypedRegistryInfo, token, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var G=Object.defineProperty;var rt=Object.getOwnPropertyDescriptor;var nt=Object.getOwnPropertyNames;var at=Object.prototype.hasOwnProperty;var it=(i,t)=>{for(var e in t)G(i,e,{get:t[e],enumerable:!0})},st=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of nt(t))!at.call(i,a)&&a!==e&&G(i,a,{get:()=>t[a],enumerable:!(r=rt(t,a))||r.enumerable});return i};var ot=i=>st(G({},"__esModule",{value:!0}),i);var Bt={};it(Bt,{WarpMultiversxAbi:()=>P,WarpMultiversxBrandBuilder:()=>Y,WarpMultiversxBuilder:()=>L,WarpMultiversxConstants:()=>ct,WarpMultiversxContractLoader:()=>M,WarpMultiversxExecutor:()=>W,WarpMultiversxRegistry:()=>Q,WarpMultiversxResults:()=>_,WarpMultiversxSerializer:()=>F,address_value:()=>Tt,biguint_value:()=>ht,boolean_value:()=>wt,codemeta_value:()=>bt,composite_value:()=>gt,esdt_value:()=>J,getMultiversxAdapter:()=>vt,hex_value:()=>Wt,list_value:()=>lt,nothing_value:()=>It,option_value:()=>ut,optional_value:()=>pt,string_value:()=>S,token_value:()=>Ct,u16_value:()=>yt,u32_value:()=>q,u64_value:()=>mt,u8_value:()=>dt,variadic_value:()=>ft});module.exports=ot(Bt);var ct={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}};var O=require("@multiversx/sdk-core"),V=require("@vleap/warps");var y=require("@multiversx/sdk-core"),v=require("@vleap/warps");var D=require("@multiversx/sdk-core"),B=require("@vleap/warps");var K=require("@vleap/warps");var M=class{constructor(t){this.config=t}async getContract(t,e){try{let o=await W.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}`);return{address:t,owner:o.ownerAddress,verified:o.isVerified||!1}}catch(r){return K.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(t,e){try{let o=await W.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}/verification`);return{codeHash:o.codeHash,abi:o.source.abi}}catch(r){return K.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var P=class{constructor(t){this.config=t;this.contractLoader=new M(this.config),this.cache=new B.WarpCache(this.config.cache?.type)}async createFromRaw(t){return JSON.parse(t)}async createFromTransaction(t){let e=await this.createFromRaw(t.data.toString());return e.meta={hash:t.hash,creator:t.sender.bech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},e}async createFromTransactionHash(t,e){let r=B.WarpCacheKey.WarpAbi(this.config.env,t);if(e){let s=this.cache.get(r);if(s)return B.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${t}`),s}let a=(0,B.getMainChainInfo)(this.config),u=W.getChainEntrypoint(a,this.config.env).createNetworkProvider();try{let s=await u.getTransaction(t),f=await this.createFromTransaction(s);return e&&e.ttl&&f&&this.cache.set(r,f,e.ttl),f}catch(s){return B.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",s),null}}async getAbiForAction(t){if(t.abi)return await this.fetchAbi(t);if(!t.address)throw new Error("WarpActionExecutor: Address not found");let e=(0,B.getMainChainInfo)(this.config),r=await this.contractLoader.getVerificationInfo(t.address,e);if(!r)throw new Error("WarpActionExecutor: Verification info not found");return D.AbiRegistry.create(r.abi)}async fetchAbi(t){if(!t.abi)throw new Error("WarpActionExecutor: ABI not found");if(t.abi.startsWith(B.WarpConstants.IdentifierType.Hash)){let e=t.abi.split(B.WarpConstants.IdentifierParamSeparator)[1],r=await this.createFromTransactionHash(e);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${t.abi}`);return D.AbiRegistry.create(r.content)}else{let r=await(await fetch(t.abi)).json();return D.AbiRegistry.create(r)}}};var U=require("@multiversx/sdk-core"),w=require("@vleap/warps");var n=require("@multiversx/sdk-core"),b=require("@vleap/warps"),Z=new RegExp(`${b.WarpConstants.ArgParamsSeparator}(.*)`),F=class{constructor(){this.coreSerializer=new b.WarpSerializer}typedToString(t){if(t.hasClassOrSuperclass(n.OptionValue.ClassName))return t.isSet()?`option:${this.typedToString(t.getTypedValue())}`:"option:null";if(t.hasClassOrSuperclass(n.OptionalValue.ClassName))return t.isSet()?`optional:${this.typedToString(t.getTypedValue())}`:"optional:null";if(t.hasClassOrSuperclass(n.List.ClassName)){let e=t.getItems(),a=e.map(u=>this.typedToString(u).split(b.WarpConstants.ArgParamsSeparator)[0])[0],o=e.map(u=>this.typedToString(u).split(b.WarpConstants.ArgParamsSeparator)[1]);return`list:${a}:${o.join(",")}`}if(t.hasClassOrSuperclass(n.VariadicValue.ClassName)){let e=t.getItems(),a=e.map(u=>this.typedToString(u).split(b.WarpConstants.ArgParamsSeparator)[0])[0],o=e.map(u=>this.typedToString(u).split(b.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${a}:${o.join(",")}`}if(t.hasClassOrSuperclass(n.CompositeValue.ClassName)){let e=t.getItems(),r=e.map(s=>this.typedToString(s).split(b.WarpConstants.ArgParamsSeparator)[0]),a=e.map(s=>this.typedToString(s).split(b.WarpConstants.ArgParamsSeparator)[1]),o=r.join(b.WarpConstants.ArgCompositeSeparator),u=a.join(b.WarpConstants.ArgCompositeSeparator);return`composite(${o}):${u}`}if(t.hasClassOrSuperclass(n.BigUIntValue.ClassName)||t.getType().getName()==="BigUint")return`biguint:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(n.U8Value.ClassName))return`uint8:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(n.U16Value.ClassName))return`uint16:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(n.U32Value.ClassName))return`uint32:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(n.U64Value.ClassName))return`uint64:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(n.StringValue.ClassName))return`string:${t.valueOf()}`;if(t.hasClassOrSuperclass(n.BooleanValue.ClassName))return`bool:${t.valueOf()}`;if(t.hasClassOrSuperclass(n.AddressValue.ClassName))return`address:${t.valueOf().bech32()}`;if(t.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return`token:${t.valueOf()}`;if(t.hasClassOrSuperclass(n.BytesValue.ClassName))return`hex:${t.valueOf().toString("hex")}`;if(t.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return`codemeta:${t.valueOf().toBuffer().toString("hex")}`;if(t.getType().getName()==="EsdtTokenPayment"){let e=t.getFieldValue("token_identifier").valueOf(),r=t.getFieldValue("token_nonce").valueOf(),a=t.getFieldValue("amount").valueOf();return`esdt:${e}|${r}|${a}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${t.getClassName()}`)}typedToNative(t){let e=this.typedToString(t);return this.coreSerializer.stringToNative(e)}nativeToTyped(t,e){let r=this.coreSerializer.nativeToString(t,e);return this.stringToTyped(r)}nativeToType(t){if(t.startsWith("composite")){let e=t.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...e.split(b.WarpConstants.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(t==="string")return new n.StringType;if(t==="uint8")return new n.U8Type;if(t==="uint16")return new n.U16Type;if(t==="uint32")return new n.U32Type;if(t==="uint64")return new n.U64Type;if(t==="biguint")return new n.BigUIntType;if(t==="bool")return new n.BooleanType;if(t==="address")return new n.AddressType;if(t==="token")return new n.TokenIdentifierType;if(t==="hex")return new n.BytesType;if(t==="codemeta")return new n.CodeMetadataType;if(t==="esdt"||t==="nft")return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${t}`)}stringToTyped(t){let[e,r]=t.split(/:(.*)/,2);if(e==="null"||e===null)return new n.NothingValue;if(e==="option"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(e==="optional"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(e==="list"){let[a,o]=r.split(Z,2),s=o.split(",").map(f=>this.stringToTyped(`${a}:${f}`));return new n.List(this.nativeToType(a),s)}if(e==="variadic"){let[a,o]=r.split(Z,2),s=o.split(",").map(f=>this.stringToTyped(`${a}:${f}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),s)}if(e.startsWith("composite")){let a=e.match(/\(([^)]+)\)/)?.[1],o=r.split(b.WarpConstants.ArgCompositeSeparator),u=a.split(b.WarpConstants.ArgCompositeSeparator),s=o.map((p,g)=>this.stringToTyped(`${u[g]}:${p}`)),f=s.map(p=>p.getType());return new n.CompositeValue(new n.CompositeType(...f),s)}if(e==="string")return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(e==="uint8")return r?new n.U8Value(Number(r)):new n.NothingValue;if(e==="uint16")return r?new n.U16Value(Number(r)):new n.NothingValue;if(e==="uint32")return r?new n.U32Value(Number(r)):new n.NothingValue;if(e==="uint64")return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(e==="biguint")return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(e==="bool")return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(e==="address")return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(e==="token")return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(e==="hex")return r?n.BytesValue.fromHex(r):new n.NothingValue;if(e==="codemeta")return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(e==="esdt"){let a=r.split(b.WarpConstants.ArgCompositeSeparator);return new n.Struct(this.nativeToType("esdt"),[new n.Field(new n.TokenIdentifierValue(a[0]),"token_identifier"),new n.Field(new n.U64Value(BigInt(a[1])),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(a[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${e}`)}typeToString(t){if(t instanceof n.OptionType)return"option:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof n.OptionalType)return"optional:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof n.ListType)return"list:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof n.VariadicType)return"variadic:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof n.StringType)return"string";if(t instanceof n.U8Type)return"uint8";if(t instanceof n.U16Type)return"uint16";if(t instanceof n.U32Type)return"uint32";if(t instanceof n.U64Type)return"uint64";if(t instanceof n.BigUIntType)return"biguint";if(t instanceof n.BooleanType)return"bool";if(t instanceof n.AddressType)return"address";if(t instanceof n.TokenIdentifierType)return"token";if(t instanceof n.BytesType)return"hex";if(t instanceof n.CodeMetadataType)return"codemeta";if(t instanceof n.StructType&&t.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${t.getClassName()}`)}};var _=class{constructor(t){this.config=t;this.abi=new P(t),this.serializer=new F,this.cache=new w.WarpCache(t.cache?.type)}async getTransactionExecutionResults(t,e,r){let a=this.cache.get(w.WarpCacheKey.WarpExecutable(this.config.env,t.meta?.hash||"",e))??[],o=await this.extractContractResults(t,e,r,a),u=(0,w.getNextInfo)(this.config,t,e,o),s=(0,w.applyResultsToMessages)(t,o.results);return{success:r.status.isSuccessful(),warp:t,action:e,user:this.config.user?.wallet||null,txHash:r.hash,next:u,values:o.values,results:o.results,messages:s}}async extractContractResults(t,e,r,a){let o=(0,w.getWarpActionByIndex)(t,e),u=[],s={};if(!t.results||o.type!=="contract")return{values:u,results:s};if(!Object.values(t.results).some(I=>I.includes("out")||I.includes("event"))){for(let[I,m]of Object.entries(t.results))s[I]=m;return{values:u,results:await(0,w.evaluateResultsCommon)(t,s,e,a)}}let p=await this.abi.getAbiForAction(o),g=new U.TransactionEventsParser({abi:p}),T=new U.SmartContractTransactionsOutcomeParser({abi:p}).parseExecute({transactionOnNetwork:r,function:o.func||void 0});for(let[I,m]of Object.entries(t.results)){if(m.startsWith(w.WarpConstants.Transform.Prefix))continue;if(m.startsWith("input.")){s[I]=m;continue}let x=(0,w.parseResultsOutIndex)(m);if(x!==null&&x!==e){s[I]=null;continue}let[A,R,E]=m.split(".");if(A==="event"){if(!R||isNaN(Number(E)))continue;let z=Number(E),C=(0,U.findEventsByFirstTopic)(r,R),$=g.parseEvents({events:C})[0],H=Object.values($)[z]||null;u.push(H),s[I]=H&&H.valueOf()}else if(A==="out"||A.startsWith("out[")){if(!R)continue;let z=Number(R),C=T.values[z-1]||null;E&&(C=C[E]||null),C&&typeof C=="object"&&(C="toFixed"in C?C.toFixed():C.valueOf()),u.push(C),s[I]=C&&C.valueOf()}else s[I]=m}return{values:u,results:await(0,w.evaluateResultsCommon)(t,s,e,a)}}async extractQueryResults(t,e,r,a){let o=e.map(p=>this.serializer.typedToString(p)),u=e.map(p=>this.serializer.typedToNative(p)[1]),s={};if(!t.results)return{values:o,results:s};let f=p=>{let g=p.split(".").slice(1).map(T=>parseInt(T)-1);if(g.length===0)return;let d=u[g[0]];for(let T=1;T<g.length;T++){if(d==null)return;d=d[g[T]]}return d};for(let[p,g]of Object.entries(t.results)){if(g.startsWith(w.WarpConstants.Transform.Prefix))continue;let d=(0,w.parseResultsOutIndex)(g);if(d!==null&&d!==r){s[p]=null;continue}g.startsWith("out.")||g==="out"||g.startsWith("out[")?s[p]=f(g)||null:s[p]=g}return{values:o,results:await(0,w.evaluateResultsCommon)(t,s,r,a)}}async resolveWarpResultsRecursively(t){let e=t.warp,r=t.entryActionIndex,a=t.executor,o=t.inputs,u=t.meta,s=new Map,f=new Set,p=this;async function g(m,x=[]){if(s.has(m))return s.get(m);if(f.has(m))throw new Error(`Circular dependency detected at action ${m}`);f.add(m);let A=e.actions[m-1];if(!A)throw new Error(`Action ${m} not found`);let R;if(A.type==="query")R=await a.executeQuery(e,m,x);else if(A.type==="collect")R=await a.executeCollect(e,m,x,u);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(s.set(m,R),e.results)for(let E of Object.values(e.results)){let C=String(E).match(/^out\[(\d+)\]/);if(C){let $=parseInt(C[1],10);$!==m&&!s.has($)&&await g($)}}return f.delete(m),R}await g(r,o);let d={};for(let m of s.values())for(let[x,A]of Object.entries(m.results))A!==null?d[x]=A:x in d||(d[x]=null);let T=await(0,w.evaluateResultsCommon)(e,d,r,o);return{...s.get(r),action:r,results:T}}};var c=require("@multiversx/sdk-core"),ut=(i,t)=>i?c.OptionValue.newProvided(i):t?c.OptionValue.newMissingTyped(t):c.OptionValue.newMissing(),pt=(i,t)=>i?new c.OptionalValue(i.getType(),i):t?new c.OptionalValue(t):c.OptionalValue.newMissing(),lt=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let t=i[0].getType();return new c.List(t,i)},ft=i=>c.VariadicValue.fromItems(...i),gt=i=>{let t=i.map(e=>e.getType());return new c.CompositeValue(new c.CompositeType(...t),i)},S=i=>c.StringValue.fromUTF8(i),dt=i=>new c.U8Value(i),yt=i=>new c.U16Value(i),q=i=>new c.U32Value(i),mt=i=>new c.U64Value(i),ht=i=>new c.BigUIntValue(BigInt(i)),wt=i=>new c.BooleanValue(i),Tt=i=>new c.AddressValue(c.Address.newFromBech32(i)),Ct=i=>new c.TokenIdentifierValue(i),Wt=i=>c.BytesValue.fromHex(i),J=i=>new c.Struct(new c.StructType("EsdtTokenPayment",[new c.FieldDefinition("token_identifier","",new c.TokenIdentifierType),new c.FieldDefinition("token_nonce","",new c.U64Type),new c.FieldDefinition("amount","",new c.BigUIntType)]),[new c.Field(new c.TokenIdentifierValue(i.token.identifier),"token_identifier"),new c.Field(new c.U64Value(BigInt(i.token.nonce)),"token_nonce"),new c.Field(new c.BigUIntValue(BigInt(i.amount)),"amount")]),bt=i=>new c.CodeMetadataValue(c.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),It=()=>new c.NothingValue;var W=class i{constructor(t){this.config=t;this.serializer=new F,this.abi=new P(this.config),this.results=new _(this.config)}async createTransaction(t){let e=(0,v.getWarpActionByIndex)(t.warp,t.action),r=null;if(e.type==="transfer")r=await this.createTransferTransaction(t);else if(e.type==="contract")r=await this.createContractCallTransaction(t);else{if(e.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(e.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${e.type})`);return r}async createTransferTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let e=y.Address.newFromBech32(this.config.user.wallet),r=new y.TransactionsFactoryConfig({chainID:t.chain.chainId}),a=t.data?Buffer.from(this.serializer.stringToTyped(t.data).valueOf()):null;return new y.TransferTransactionsFactory({config:r}).createTransactionForTransfer(e,{receiver:y.Address.newFromBech32(t.destination),nativeAmount:t.value,data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let e=(0,v.getWarpActionByIndex)(t.warp,t.action),r=y.Address.newFromBech32(this.config.user.wallet),a=t.args.map(u=>this.serializer.stringToTyped(u)),o=new y.TransactionsFactoryConfig({chainID:t.chain.chainId});return new y.SmartContractTransactionsFactory({config:o}).createTransactionForExecute(r,{contract:y.Address.newFromBech32(t.destination),function:"func"in e&&e.func||"",gasLimit:"gasLimit"in e?BigInt(e.gasLimit||0):0n,arguments:a,nativeTransferAmount:t.value})}async executeQuery(t){let e=(0,v.getWarpActionByIndex)(t.warp,t.action);if(e.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${e.type}`);let r=await this.abi.getAbiForAction(e),a=t.args.map(E=>this.serializer.stringToTyped(E)),o=i.getChainEntrypoint(t.chain,this.config.env),u=y.Address.newFromBech32(t.destination),s=o.createSmartContractController(r),f=s.createQuery({contract:u,function:e.func||"",arguments:a}),p=await s.runQuery(f),g=p.returnCode==="ok",d=new y.ArgSerializer,T=r.getEndpoint(p.function||e.func||""),I=(p.returnDataParts||[]).map(E=>Buffer.from(E)),m=d.buffersToValues(I,T.output),{values:x,results:A}=await this.results.extractQueryResults(t.warp,m,t.action,t.resolvedInputs),R=(0,v.getNextInfo)(this.config,t.warp,t.action,A);return{success:g,warp:t.warp,action:t.action,user:this.config.user?.wallet||null,txHash:null,next:R,values:x,results:A,messages:(0,v.applyResultsToMessages)(t.warp,A)}}async preprocessInput(t,e,r,a){if(r==="esdt"){let[o,u,s,f]=a.split(v.WarpConstants.ArgCompositeSeparator);if(f)return e;let p=new y.Token({identifier:o,nonce:BigInt(u)});if(!new y.TokenComputer().isFungible(p))return e;let T=(0,v.findKnownTokenById)(o)?.decimals;if(T||(T=(await(await fetch(`${t.apiUrl}/tokens/${o}`)).json()).decimals),!T)throw new Error(`WarpActionExecutor: Decimals not found for token ${o}`);let I=J(new y.TokenTransfer({token:p,amount:(0,v.shiftBigintBy)(s,T)}));return this.serializer.typedToString(I)+v.WarpConstants.ArgCompositeSeparator+T}return e}static getChainEntrypoint(t,e){let r="warp-sdk",a="api";return e==="devnet"?new y.DevnetEntrypoint(t.apiUrl,a,r):e==="testnet"?new y.TestnetEntrypoint(t.apiUrl,a,r):new y.MainnetEntrypoint(t.apiUrl,a,r)}};var L=class{constructor(t){this.config=t,this.cache=new V.WarpCache(t.cache?.type),this.core=new V.WarpBuilder(t)}createInscriptionTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpBuilder: user address not set");let e=(0,V.getMainChainInfo)(this.config),r=new O.TransactionsFactoryConfig({chainID:e.chainId}),a=new O.TransferTransactionsFactory({config:r}),o=O.Address.newFromBech32(this.config.user.wallet),u=JSON.stringify(t),s=a.createTransactionForTransfer(o,{receiver:O.Address.newFromBech32(this.config.user.wallet),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(u))});return s.gasLimit=s.gasLimit+BigInt(2e6),s}async createFromTransaction(t,e=!1){let r=await this.core.createFromRaw(t.data.toString(),e);return r.meta={hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},r}async createFromTransactionHash(t,e){let r=V.WarpCacheKey.Warp(this.config.env,t);if(e){let s=this.cache.get(r);if(s)return V.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let a=(0,V.getMainChainInfo)(this.config),u=W.getChainEntrypoint(a,this.config.env).createNetworkProvider();try{let s=await u.getTransaction(t),f=await this.createFromTransaction(s);return e&&e.ttl&&f&&this.cache.set(r,f,e.ttl),f}catch(s){return V.WarpLogger.error("WarpBuilder: Error creating from transaction hash",s),null}}};var l=require("@multiversx/sdk-core"),h=require("@vleap/warps");var X={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var j=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),tt=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(t=>t.toBech32())});var Q=class{constructor(t){this.config=t,this.cache=new h.WarpCache(t.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]}}async init(){await this.loadRegistryConfigs()}createWarpRegisterTransaction(t,e,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let a=l.Address.newFromBech32(this.config.user.wallet),o=()=>this.isCurrentUserAdmin()?BigInt(0):e&&r?this.registryConfig.unitPrice*BigInt(3):e?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,u=()=>e&&r?[l.BytesValue.fromHex(t),l.BytesValue.fromUTF8(e),l.BytesValue.fromHex(r)]:e?[l.BytesValue.fromHex(t),l.BytesValue.fromUTF8(e)]:[l.BytesValue.fromHex(t)];return this.getFactory().createTransactionForExecute(a,{contract:this.getRegistryContractAddress(),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:o(),arguments:u()})}createWarpUnregisterTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[l.BytesValue.fromHex(t)]})}createWarpUpgradeTransaction(t,e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[l.BytesValue.fromUTF8(t),l.BytesValue.fromHex(e)]})}createWarpAliasSetTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[l.BytesValue.fromHex(t),l.BytesValue.fromUTF8(e)]})}createWarpVerifyTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[l.BytesValue.fromHex(t)]})}createWarpTransferOwnershipTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[l.BytesValue.fromHex(t),new l.AddressValue(new l.Address(e))]})}createBrandRegisterTransaction(t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[l.BytesValue.fromHex(t)]})}createWarpBrandingTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[l.BytesValue.fromHex(t),l.BytesValue.fromHex(e)]})}async getInfoByAlias(t,e){try{let r=h.WarpCacheKey.RegistryInfo(this.config.env,t),a=e?this.cache.get(r):null;if(a)return h.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${t}`),a;let o=this.getRegistryContractAddress(),u=this.getController(),s=u.createQuery({contract:o,function:"getInfoByAlias",arguments:[l.BytesValue.fromUTF8(t)]}),f=await u.runQuery(s),[p]=u.parseQueryResponse(f),g=p?j(p):null,d=g?.brand?await this.fetchBrand(g.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:g,brand:d},e.ttl),{registryInfo:g,brand:d}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(t,e){try{let r=h.WarpCacheKey.RegistryInfo(this.config.env,t);if(e){let d=this.cache.get(r);if(d)return h.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${t}`),d}let a=this.getRegistryContractAddress(),o=this.getController(),u=o.createQuery({contract:a,function:"getInfoByHash",arguments:[l.BytesValue.fromHex(t)]}),s=await o.runQuery(u),[f]=o.parseQueryResponse(s),p=f?j(f):null,g=p?.brand?await this.fetchBrand(p.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:p,brand:g},e.ttl),{registryInfo:p,brand:g}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(t){try{let e=t||this.config.user?.wallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=this.getRegistryContractAddress(),a=this.getController(),o=a.createQuery({contract:r,function:"getUserWarps",arguments:[new l.AddressValue(new l.Address(e))]}),u=await a.runQuery(o),[s]=a.parseQueryResponse(u);return s.map(j)}catch{return[]}}async getUserBrands(t){try{let e=t||this.config.user?.wallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=this.getRegistryContractAddress(),a=this.getController(),o=a.createQuery({contract:r,function:"getUserBrands",arguments:[new l.AddressValue(new l.Address(e))]}),u=await a.runQuery(o),[s]=a.parseQueryResponse(u),f=s.map(d=>d.toString("hex")),p={ttl:365*24*60*60};return(await Promise.all(f.map(d=>this.fetchBrand(d,p)))).filter(d=>d!==null)}catch{return[]}}async getChainInfos(t){let e=h.WarpCacheKey.ChainInfos(this.config.env);if(t&&t.ttl){let p=this.cache.get(e);if(p)return h.WarpLogger.info("WarpRegistry (getChainInfos): ChainInfos found in cache"),p}let r=this.getRegistryContractAddress(),a=this.getController(),o=a.createQuery({contract:r,function:"getChains",arguments:[]}),u=await a.runQuery(o),[s]=a.parseQueryResponse(u),f=s.map(h.toTypedChainInfo);if(t&&t.ttl){for(let p of f)this.cache.set(h.WarpCacheKey.ChainInfo(this.config.env,p.chain),p,t.ttl);this.cache.set(e,f,t.ttl)}return f}async getChainInfo(t,e){try{let r=h.WarpCacheKey.ChainInfo(this.config.env,t),a=e?this.cache.get(r):null;if(a)return h.WarpLogger.info(`WarpRegistry (getChainInfo): ChainInfo found in cache: ${t}`),a;let o=this.getRegistryContractAddress(),u=this.getController(),s=u.createQuery({contract:o,function:"getChain",arguments:[l.BytesValue.fromUTF8(t)]}),f=await u.runQuery(s),[p]=u.parseQueryResponse(f),g=p?(0,h.toTypedChainInfo)(p):null;return e&&e.ttl&&g&&this.cache.set(r,g,e.ttl),g}catch{return null}}async setChain(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"setChain",gasLimit:BigInt(1e7),arguments:[S(t.name),S(t.displayName),S(t.chainId),q(t.blockTime),S(t.addressHrp),S(t.apiUrl),S(t.explorerUrl),S(t.nativeToken)]})}async removeChain(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=l.Address.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"removeChain",gasLimit:BigInt(1e7),arguments:[S(t)]})}async fetchBrand(t,e){let r=h.WarpCacheKey.Brand(this.config.env,t),a=e?this.cache.get(r):null;if(a)return h.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${t}`),a;let o=(0,h.getMainChainInfo)(this.config),s=W.getChainEntrypoint(o,this.config.env).createNetworkProvider();try{let f=await s.getTransaction(t),p=JSON.parse(f.data.toString());return p.meta={hash:f.hash,creator:f.sender.bech32(),createdAt:new Date(f.timestamp*1e3).toISOString()},e&&e.ttl&&this.cache.set(r,p,e.ttl),p}catch{return null}}getRegistryContractAddress(){return l.Address.newFromBech32(this.config.registry?.contract||h.WarpConfig.Registry.Contract(this.config.env))}async loadRegistryConfigs(){let t=this.getRegistryContractAddress(),e=this.getController(),[r]=await e.query({contract:t,function:"getConfig",arguments:[]}),a=r?tt(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let t=(0,h.getMainChainInfo)(this.config),e=new l.TransactionsFactoryConfig({chainID:t.chainId}),r=l.AbiRegistry.create(X);return new l.SmartContractTransactionsFactory({config:e,abi:r})}getController(){let t=(0,h.getMainChainInfo)(this.config),e=W.getChainEntrypoint(t,this.config.env),r=l.AbiRegistry.create(X);return e.createSmartContractController(r)}isCurrentUserAdmin(){return!!this.config.user?.wallet&&this.registryConfig.admins.includes(this.config.user.wallet)}};var vt=i=>({chain:"multiversx",builder:new L(i),executor:new W(i),results:new _(i),serializer:new F,registry:new Q(i)});var k=require("@multiversx/sdk-core"),N=require("@vleap/warps"),et=require("buffer");var Y=class{constructor(t){this.config=t,this.core=new N.WarpBrandBuilder(t)}createInscriptionTransaction(t){if(!this.config.user?.wallet)throw new Error("BrandBuilder: user address not set");let e=(0,N.getMainChainInfo)(this.config),r=new k.TransactionsFactoryConfig({chainID:e.chainId}),a=new k.TransferTransactionsFactory({config:r}),o=k.Address.newFromBech32(this.config.user.wallet),u=JSON.stringify(t);return a.createTransactionForNativeTokenTransfer(o,{receiver:k.Address.newFromBech32(this.config.user.wallet),nativeAmount:BigInt(0),data:Uint8Array.from(et.Buffer.from(u))})}async createFromTransaction(t,e=!1){return await this.core.createFromRaw(t.data.toString(),e)}async createFromTransactionHash(t){let e=(0,N.getMainChainInfo)(this.config),a=W.getChainEntrypoint(e,this.config.env).createNetworkProvider();try{let o=await a.getTransaction(t);return this.createFromTransaction(o)}catch(o){return N.WarpLogger.error("BrandBuilder: Error creating from transaction hash",o),null}}};0&&(module.exports={WarpMultiversxAbi,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxExecutor,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,address_value,biguint_value,boolean_value,codemeta_value,composite_value,esdt_value,getMultiversxAdapter,hex_value,list_value,nothing_value,option_value,optional_value,string_value,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
1
+ "use strict";var ge=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var ze=Object.prototype.hasOwnProperty;var Ke=(i,e)=>{for(var t in e)ge(i,t,{get:e[t],enumerable:!0})},qe=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of $e(e))!ze.call(i,a)&&a!==t&&ge(i,a,{get:()=>e[a],enumerable:!(r=Ge(e,a))||r.enumerable});return i};var Qe=i=>qe(ge({},"__esModule",{value:!0}),i);var At={};Ke(At,{ExplorerUrls:()=>H,KnownTokens:()=>ye,MultiversxExplorers:()=>Oe,MultiversxExplorersConfig:()=>Ce,NativeTokenEgld:()=>de,NativeTokenVibe:()=>He,VibechainExplorers:()=>Le,WarpMultiversxAbiBuilder:()=>M,WarpMultiversxBrandBuilder:()=>te,WarpMultiversxBuilder:()=>re,WarpMultiversxConstants:()=>Xe,WarpMultiversxContractLoader:()=>ee,WarpMultiversxDataLoader:()=>ne,WarpMultiversxExecutor:()=>ae,WarpMultiversxExplorer:()=>se,WarpMultiversxInputTypes:()=>v,WarpMultiversxRegistry:()=>oe,WarpMultiversxResults:()=>K,WarpMultiversxSerializer:()=>O,WarpMultiversxWallet:()=>ce,address_value:()=>wt,asset_value:()=>vt,biguint_value:()=>ft,boolean_value:()=>yt,codemeta:()=>nt,codemeta_value:()=>Tt,composite_value:()=>lt,createMultiversxAdapter:()=>pe,findKnownTokenById:()=>we,getAllMultiversxAdapters:()=>et,getAllMultiversxChainNames:()=>tt,getKnownTokensForChain:()=>je,getMultiversxAdapter:()=>Te,getMultiversxEntrypoint:()=>W,getMultiversxRegistryAddress:()=>b,getNormalizedTokenIdentifier:()=>Z,getVibechainAdapter:()=>Ae,hex_value:()=>Wt,isNativeToken:()=>G,list:()=>st,list_value:()=>ct,nothing_value:()=>xt,option:()=>at,option_value:()=>it,optional_value:()=>ot,string_value:()=>ut,toTypedConfigInfo:()=>ve,toTypedRegistryInfo:()=>ie,token:()=>rt,token_value:()=>Ct,u16_value:()=>dt,u32_value:()=>ht,u64_value:()=>gt,u8_value:()=>mt,variadic_value:()=>pt});module.exports=Qe(At);var Ee=require("@vleap/warps");var J=require("@vleap/warps");var _e=require("@vleap/warps");var R=require("@multiversx/sdk-core"),S=require("@vleap/warps");var q=require("@multiversx/sdk-core"),be=require("@vleap/warps"),G=i=>!i.includes("-"),Z=i=>G(i)?`${i}-000000`:i,W=(i,e,t)=>{let r="warp-sdk",s=t?(0,be.getProviderUrl)(t,i.name,e,i.defaultApiUrl):i.defaultApiUrl;return e==="devnet"?new q.DevnetEntrypoint({url:s,kind:"api",clientName:r}):e==="testnet"?new q.TestnetEntrypoint({url:s,kind:"api",clientName:r}):new q.MainnetEntrypoint({url:s,kind:"api",clientName:r})};var fe=require("@vleap/warps");var ee=class{constructor(e){this.config=e}async getContract(e,t){try{let s=await W(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return fe.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let s=await W(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return fe.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var M=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new ee(this.config),this.cache=new S.WarpCache(this.config.cache?.type)}async createInscriptionTransaction(e){let t=(0,S.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new R.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new R.TransferTransactionsFactory({config:r}),s=R.Address.newFromBech32(t),c={protocol:(0,S.getLatestProtocolIdentifier)("abi"),content:e},o=JSON.stringify(c),p=await a.createTransactionForTransfer(s,{receiver:s,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return p.gasLimit=p.gasLimit+BigInt(2e6),p}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=S.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let c=this.cache.get(r);if(c)return S.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),c}let s=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let c=await s.getTransaction(e),o=await this.createFromTransaction(c);return t&&t.ttl&&o&&this.cache.set(r,o,t.ttl),o}catch(c){return S.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",c),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return R.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(S.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(S.WarpConstants.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return R.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return R.AbiRegistry.create(r)}}};var $=require("@multiversx/sdk-core"),Q=require("@vleap/warps"),Se=require("buffer");var te=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Q.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=(0,Q.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new $.TransactionsFactoryConfig({chainID:this.chain.chainId}),a=new $.TransferTransactionsFactory({config:r}),s=$.Address.newFromBech32(t),c=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(s,{receiver:$.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(Se.Buffer.from(c))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return Q.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var z=require("@multiversx/sdk-core"),N=require("@vleap/warps");var re=class extends N.WarpBuilder{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new N.WarpCache(t.cache?.type),this.core=new N.WarpBuilder(t)}async createInscriptionTransaction(t){let r=(0,N.getWarpWalletAddressFromConfig)(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let a=new z.TransactionsFactoryConfig({chainID:this.chain.chainId}),s=new z.TransferTransactionsFactory({config:a}),c=z.Address.newFromBech32(r),o=JSON.stringify(t),p=await s.createTransactionForTransfer(c,{receiver:z.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return p.gasLimit=p.gasLimit+BigInt(2e6),p}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=N.WarpCacheKey.Warp(this.config.env,t);if(r){let o=this.cache.get(a);if(o)return N.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let c=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await c.getTransaction(t),p=await this.createFromTransaction(o);return r&&r.ttl&&p&&this.cache.set(a,p,r.ttl),p}catch(o){return N.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var _=require("@multiversx/sdk-core"),j=require("@vleap/warps");var Be=require("@vleap/warps"),Ie=Be.WarpChainName.Multiversx,Ne=[{chain:Ie,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ie,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Ue=require("@vleap/warps"),E=Ue.WarpChainName.Multiversx,Pe=[{chain:E,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:E,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:E,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:E,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:E,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:E,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:E,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:E,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:E,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:E,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:E,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:E,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:E,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:E,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];var ke=require("@vleap/warps"),Ve=ke.WarpChainName.Multiversx,Fe=[{chain:Ve,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:Ve,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];var Me=require("@vleap/warps"),Re=Me.WarpChainName.Vibechain,me=[{chain:Re,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:Re,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var ye={multiversx:{mainnet:Pe,testnet:Fe,devnet:Ne},vibechain:{mainnet:me,testnet:me,devnet:me}},we=(i,e,t)=>(ye[i]?.[e]||[]).find(a=>a.identifier===t)||null,je=(i,e)=>ye[i]?.[e]||[];var ne=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new j.WarpCache(e.cache?.type)}async getAccount(e){let r=await W(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(_.Address.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=W(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(_.Address.newFromBech32(e)),a=t.getFungibleTokensOfAccount(_.Address.newFromBech32(e)),[s,c]=await Promise.all([r,a]),o=s.balance>0?[{...this.chain.nativeToken,amount:s.balance}]:[];return o.push(...c.map(p=>({chain:this.chain.name,identifier:p.token.identifier,name:p.raw.name,symbol:p.raw.ticker,amount:p.amount,decimals:p.raw.decimals,logoUrl:p.raw.assets?.pngUrl||"",price:p.raw.price?Number(p.raw.price):void 0,supply:p.raw.supply?BigInt(p.raw.supply):void 0}))),o}async getAsset(e){let t=j.WarpCacheKey.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let a=we(this.chain.name,this.config.env,e);if(a)return{chain:this.chain.name,identifier:e,name:a.name,symbol:a.symbol,amount:0n,decimals:a.decimals,logoUrl:a.logoUrl};let s=new _.TokenComputer,c=G(e)?0n:s.extractNonceFromExtendedIdentifier(e),o=new _.Token({identifier:e,nonce:BigInt(c||0)}),p=s.isFungible(o),h=W(this.chain,this.config.env,this.config).createNetworkProvider(),f=Z(e),g=await h.doGetGeneric(`tokens/${f}`),T={chain:this.chain.name,identifier:o.identifier,name:g.name,symbol:g.ticker,amount:0n,decimals:g.decimals,logoUrl:g.assets?.pngUrl||"#",price:g.price?Number(g.price):void 0,supply:g.supply?BigInt(g.supply):void 0};return this.cache.set(t,T,j.CacheTtl.OneHour),T}async getAction(e,t=!1){let r=W(this.chain,this.config.env,this.config),a=t?await r.awaitCompletedTransaction(e):await r.getTransaction(e);return{chain:this.chain.name,id:a.hash,receiver:a.receiver.toBech32(),sender:a.sender.toBech32(),value:a.value,function:a.function,status:this.toActionStatus(a),createdAt:this.toActionCreatedAt(a),error:a?.smartContractResults.map(s=>s.raw.returnMessage)[0]||null,tx:a}}async getAccountActions(e,t){let r=W(this.chain,this.config.env,this.config).createNetworkProvider(),a=`accounts/${e}/transactions`,s=new URLSearchParams,c=t?.size||25,o=t?.page||0;if(o>0){let h=o*c;s.append("from",h.toString())}return c!==25&&s.append("size",c.toString()),s.toString()&&(a+=`?${s.toString()}`),(await r.doGetGeneric(a)).map(h=>({chain:this.chain.name,id:h.txHash,receiver:h.receiver,sender:h.sender,value:h.value,function:h.function,status:this.toActionStatus(h),createdAt:this.toActionCreatedAt(h)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};var w=require("@multiversx/sdk-core"),U=require("@vleap/warps");var X=require("@multiversx/sdk-core"),C=require("@vleap/warps");var n=require("@multiversx/sdk-core"),De=require("@vleap/warps");var u={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:i=>i.config.user?.wallets?.[i.chain]},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:i=>i.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:i=>i.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",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 Xe={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},v={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},Oe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Oe||{}),Le=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Le||{}),Ce={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},H={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var Je=new RegExp(`${u.ArgParamsSeparator}(.*)`),O=class{constructor(e){this.coreSerializer=new De.WarpSerializer(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(n.OptionType.ClassName)||e.hasClassOrSuperclass(n.OptionValue.ClassName)){if(!e.isSet())return m.Option+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return m.Option+u.ArgParamsSeparator+r}if(t.hasExactClass(n.VariadicType.ClassName)||e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let r=e.getItems(),a=this.typedToString(r[0]),s=a.indexOf(u.ArgParamsSeparator),c=a.substring(0,s),o=r.map(h=>{let f=this.typedToString(h),g=f.indexOf(u.ArgParamsSeparator);return f.substring(g+1)}),p=c.startsWith(m.Struct)?u.ArgStructSeparator:u.ArgListSeparator;return m.Vector+u.ArgParamsSeparator+c+u.ArgParamsSeparator+o.join(p)}if(t.hasExactClass(n.OptionalType.ClassName)||e.hasClassOrSuperclass(n.OptionalValue.ClassName)){if(!e.isSet())return v.Optional+u.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return v.Optional+u.ArgParamsSeparator+r}if(t.hasExactClass(n.ListType.ClassName)||e.hasClassOrSuperclass(n.List.ClassName)){let r=e.getItems(),s=r.map(o=>this.typedToString(o).split(u.ArgParamsSeparator)[0])[0],c=r.map(o=>this.typedToString(o).split(u.ArgParamsSeparator)[1]);return v.List+u.ArgParamsSeparator+s+u.ArgParamsSeparator+c.join(u.ArgListSeparator)}if(t.hasExactClass(n.CompositeType.ClassName)||e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let r=e.getItems(),a=r.map(p=>this.typedToString(p).split(u.ArgParamsSeparator)[0]),s=r.map(p=>this.typedToString(p).split(u.ArgParamsSeparator)[1]),c=a.join(u.ArgCompositeSeparator),o=s.join(u.ArgCompositeSeparator);return`${m.Tuple}(${c})${u.ArgParamsSeparator}${o}`}if(t.hasExactClass(n.BigUIntType.ClassName)||e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||t.getName()==="BigUint")return m.Biguint+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(n.U8Type.ClassName)||e.hasClassOrSuperclass(n.U8Value.ClassName))return m.Uint8+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U16Type.ClassName)||e.hasClassOrSuperclass(n.U16Value.ClassName))return m.Uint16+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U32Type.ClassName)||e.hasClassOrSuperclass(n.U32Value.ClassName))return m.Uint32+u.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(n.U64Type.ClassName)||e.hasClassOrSuperclass(n.U64Value.ClassName))return m.Uint64+u.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(n.StringType.ClassName)||e.hasClassOrSuperclass(n.StringValue.ClassName))return m.String+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.BooleanType.ClassName)||e.hasClassOrSuperclass(n.BooleanValue.ClassName))return m.Bool+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.AddressType.ClassName)||e.hasClassOrSuperclass(n.AddressValue.ClassName))return m.Address+u.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(n.BytesType.ClassName)||e.hasClassOrSuperclass(n.BytesValue.ClassName))return m.Hex+u.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),a=e.getFieldValue("token_nonce").valueOf(),s=e.getFieldValue("amount").valueOf(),o=new n.TokenComputer().computeExtendedIdentifier(new n.Token({identifier:r,nonce:BigInt(a)}));return m.Asset+u.ArgParamsSeparator+o+u.ArgCompositeSeparator+s}if(t.hasExactClass(n.StructType.ClassName)||e.hasClassOrSuperclass(n.Struct.ClassName)){let r=e,s=r.getType().getName(),c=r.getFields();if(c.length===0)return`${m.Struct}(${s})${u.ArgParamsSeparator}`;let o=c.map(p=>{let h=p.name,f=p.value,g=f.getType(),T=this.typedToString(f).split(u.ArgParamsSeparator)[1];return`(${h}${u.ArgParamsSeparator}${this.typeToString(g)})${T}`});return`${m.Struct}(${s})${u.ArgParamsSeparator}${o.join(u.ArgListSeparator)}`}if(t.hasExactClass(n.TokenIdentifierType.ClassName)||e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return v.Token+u.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(n.CodeMetadataType.ClassName)||e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return v.CodeMeta+u.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(m.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(u.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e.startsWith(m.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new n.StructType(r,[])}if(e===m.String)return new n.StringType;if(e===m.Uint8)return new n.U8Type;if(e===m.Uint16)return new n.U16Type;if(e===m.Uint32)return new n.U32Type;if(e===m.Uint64)return new n.U64Type;if(e===m.Biguint)return new n.BigUIntType;if(e===m.Bool)return new n.BooleanType;if(e===m.Address)return new n.AddressType;if(e===m.Hex)return new n.BytesType;if(e===m.Asset)return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);if(e===v.Token)return new n.TokenIdentifierType;if(e===v.CodeMeta)return new n.CodeMetadataType;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===m.Option){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t===m.Vector){let a=r.indexOf(u.ArgParamsSeparator),s=r.substring(0,a),c=r.substring(a+1),o=s.startsWith(m.Struct)?u.ArgStructSeparator:u.ArgListSeparator,h=c.split(o).map(f=>this.stringToTyped(`${s}:${f}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(s)),h)}if(t.startsWith(m.Tuple)){let a=t.match(/\(([^)]+)\)/)?.[1],s=r.split(u.ArgCompositeSeparator),c=a.split(u.ArgCompositeSeparator),o=s.map((h,f)=>this.stringToTyped(c[f]+u.ArgParamsSeparator+h)),p=o.map(h=>h.getType());return new n.CompositeValue(new n.CompositeType(...p),o)}if(t.startsWith(m.Struct)){let a=t.match(/\(([^)]+)\)/),s=a?a[1]:"CustomStruct";if(!r)return new n.Struct(new n.StructType(s,[]),[]);let c=r.split(u.ArgListSeparator),o=[],p=[];return c.forEach(h=>{let f=h.match(new RegExp(`^\\(([^${u.ArgParamsSeparator}]+)${u.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(f){let[,g,T,A]=f,y=this.stringToTyped(`${T}${u.ArgParamsSeparator}${A}`);o.push(new n.FieldDefinition(g,"",y.getType())),p.push(new n.Field(y,g))}}),new n.Struct(new n.StructType(s,o),p)}if(t===m.String)return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t===m.Uint8)return r?new n.U8Value(Number(r)):new n.NothingValue;if(t===m.Uint16)return r?new n.U16Value(Number(r)):new n.NothingValue;if(t===m.Uint32)return r?new n.U32Value(Number(r)):new n.NothingValue;if(t===m.Uint64)return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t===m.Biguint)return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t===m.Bool)return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t===m.Address)return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t===m.Hex)return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t===m.Asset){let[a,s]=r.split(u.ArgCompositeSeparator),c=new n.TokenComputer,o=G(a)?Z(a):c.extractIdentifierFromExtendedIdentifier(a),p=G(a)?0n:c.extractNonceFromExtendedIdentifier(a);return new n.Struct(this.nativeToType("asset"),[new n.Field(new n.TokenIdentifierValue(o),"token_identifier"),new n.Field(new n.U64Value(BigInt(p)),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(s)),"amount")])}if(t===v.Null)return new n.NothingValue;if(t===v.Optional){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t===v.List){let[a,s]=r.split(Je,2),o=s.split(u.ArgListSeparator).map(p=>this.stringToTyped(a+u.ArgParamsSeparator+p));return new n.List(this.nativeToType(a),o)}if(t===v.Token)return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t===v.CodeMeta)return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(n.OptionType.ClassName))return m.Option+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.VariadicType.ClassName))return m.Vector+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.StringType.ClassName))return m.String;if(e.hasExactClass(n.U8Type.ClassName))return m.Uint8;if(e.hasExactClass(n.U16Type.ClassName))return m.Uint16;if(e.hasExactClass(n.U32Type.ClassName))return m.Uint32;if(e.hasExactClass(n.U64Type.ClassName))return m.Uint64;if(e.hasExactClass(n.BigUIntType.ClassName))return m.Biguint;if(e.hasExactClass(n.BooleanType.ClassName))return m.Bool;if(e.hasExactClass(n.AddressType.ClassName))return m.Address;if(e.hasExactClass(n.BytesType.ClassName))return m.Hex;if(e.hasExactClass(n.TokenIdentifierType.ClassName))return v.Token;if(e.hasExactClass(n.OptionalType.ClassName))return v.Optional+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.ListType.ClassName))return v.List+u.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(n.CodeMetadataType.ClassName))return v.CodeMeta;if(e.hasExactClass(n.StructType.ClassName)&&e.getClassName()==="EsdtTokenPayment")return m.Asset;if(e.hasExactClass(n.StructType.ClassName))return`${m.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var K=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new M(e,t),this.serializer=new O({typeRegistry:this.typeRegistry}),this.cache=new C.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,C.findWarpExecutableAction)(e),a=this.cache.get(C.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],s=await this.extractContractResults(e,t,a),c=(0,C.getNextInfo)(this.config,[],e,r,s),o=(0,C.applyResultsToMessages)(e,s.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:(0,C.getWarpWalletAddressFromConfig)(this.config,this.chain.name),txHash:t.hash,tx:t,next:c,values:s.values,valuesRaw:[],results:s.results,messages:o}}async extractContractResults(e,t,r){let{action:a,actionIndex:s}=(0,C.findWarpExecutableAction)(e),c=[],o={};if(!e.results||a.type!=="contract")return{values:c,results:o};if(!Object.values(e.results).some(A=>A.includes("out")||A.includes("event"))){for(let[A,y]of Object.entries(e.results))o[A]=y;return{values:c,results:await(0,C.evaluateResultsCommon)(e,o,s,r,this.serializer.coreSerializer,this.config.transform?.runner)}}let h=await this.abi.getAbiForAction(a),f=new X.TransactionEventsParser({abi:h}),T=new X.SmartContractTransactionsOutcomeParser({abi:h}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[A,y]of Object.entries(e.results)){if(y.startsWith(C.WarpConstants.Transform.Prefix))continue;if(y.startsWith("input.")){o[A]=y;continue}let k=(0,C.parseResultsOutIndex)(y);if(k!==null&&k!==s){o[A]=null;continue}let[I,B,D]=y.split(".");if(I==="event"){if(!B||isNaN(Number(D)))continue;let F=Number(D),x=(0,X.findEventsByFirstTopic)(t,B),Y=f.parseEvents({events:x})[0],ue=Object.values(Y)[F]||null;c.push(ue),o[A]=ue&&ue.valueOf()}else if(I==="out"||I.startsWith("out[")){if(!B)continue;let F=Number(B),x=T.values[F-1]||null;D&&(x=x[D]||null),x&&typeof x=="object"&&(x="toFixed"in x?x.toFixed():x.valueOf()),c.push(x),o[A]=x&&x.valueOf()}else o[A]=y}return{values:c,results:await(0,C.evaluateResultsCommon)(e,o,s,r,this.serializer.coreSerializer)}}async extractQueryResults(e,t,r,a){let s=t.map(h=>this.serializer.typedToString(h)),c=t.map(h=>this.serializer.typedToNative(h)[1]),o={};if(!e.results)return{values:s,valuesRaw:c,results:o};let p=h=>{let f=h.split(".").slice(1).map(T=>parseInt(T)-1);if(f.length===0)return;let g=c[f[0]];for(let T=1;T<f.length;T++){if(g==null)return;g=g[f[T]]}return g};for(let[h,f]of Object.entries(e.results)){if(f.startsWith(C.WarpConstants.Transform.Prefix))continue;let g=(0,C.parseResultsOutIndex)(f);if(g!==null&&g!==r){o[h]=null;continue}f.startsWith("out.")||f==="out"||f.startsWith("out[")?o[h]=p(f)||null:o[h]=f}return{values:s,valuesRaw:c,results:await(0,C.evaluateResultsCommon)(e,o,r,a,this.serializer.coreSerializer)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,s=e.inputs,c=e.meta,o=new Map,p=new Set,h=this;async function f(y,k=[]){if(o.has(y))return o.get(y);if(p.has(y))throw new Error(`Circular dependency detected at action ${y}`);p.add(y);let I=t.actions[y-1];if(!I)throw new Error(`Action ${y} not found`);let B;if(I.type==="query")B=await a.executeQuery(t,y,k);else if(I.type==="collect")B=await a.executeCollect(t,y,k,c);else throw new Error(`Unsupported or interactive action type: ${I.type}`);if(o.set(y,B),t.results)for(let D of Object.values(t.results)){let x=String(D).match(/^out\[(\d+)\]/);if(x){let Y=parseInt(x[1],10);Y!==y&&!o.has(Y)&&await f(Y)}}return p.delete(y),B}await f(r,s);let g={};for(let y of o.values())for(let[k,I]of Object.entries(y.results))I!==null?g[k]=I:k in g||(g[k]=null);let T=await(0,C.evaluateResultsCommon)(t,g,r,s,this.serializer.coreSerializer,this.config.transform?.runner);return{...o.get(r),action:r,results:T}}};var Ye="EGLD-000000",ae=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new O({typeRegistry:this.typeRegistry}),this.abi=new M(this.config,this.chain),this.results=new K(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=(0,U.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=w.Address.newFromBech32(t),a=new w.TransactionsFactoryConfig({chainID:e.chain.chainId}),s=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,c=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,p=(c?e.transfers[0].amount:0n)+e.value;return await new w.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:w.Address.newFromBech32(e.destination),nativeAmount:p,tokenTransfers:c?[]:this.toTokenTransfers(e.transfers),data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(e){let t=(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,U.getWarpActionByIndex)(e.warp,e.action),a=w.Address.newFromBech32(t),s=e.args.map(o=>this.serializer.stringToTyped(o)),c=new w.TransactionsFactoryConfig({chainID:e.chain.chainId});return new w.SmartContractTransactionsFactory({config:c}).createTransactionForExecute(a,{contract:w.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,U.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(F=>this.serializer.stringToTyped(F)),s=W(e.chain,this.config.env,this.config),c=w.Address.newFromBech32(e.destination),o=s.createSmartContractController(r),p=o.createQuery({contract:c,function:t.func||"",arguments:a}),h=await o.runQuery(p),f=h.returnCode==="ok",g=new w.ArgSerializer,T=r.getEndpoint(h.function||t.func||""),A=(h.returnDataParts||[]).map(F=>Buffer.from(F)),y=g.buffersToValues(A,T.output),{values:k,valuesRaw:I,results:B}=await this.results.extractQueryResults(e.warp,y,e.action,e.resolvedInputs),D=(0,U.getNextInfo)(this.config,[],e.warp,e.action,B);return{success:f,warp:e.warp,action:e.action,user:(0,U.getWarpWalletAddressFromConfig)(this.config,e.chain.name),txHash:null,tx:null,next:D,values:k,valuesRaw:I,results:B,messages:(0,U.applyResultsToMessages)(e.warp,B)}}async signMessage(e,t){let r=w.UserSecretKey.fromString(t);return(await new w.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Ye}:t).map(t=>{let a=new w.TokenComputer().extractNonceFromExtendedIdentifier(t.identifier);return new w.TokenTransfer({token:new w.Token({identifier:t.identifier,nonce:BigInt(a||0)}),amount:t.amount})})}};var se=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ce[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let s=H[t];if(s)return s}if(e){let s=H[e];if(s)return s}let r=this.getPrimaryExplorer();return H[r]||H[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=H[a];s&&(r[a]=`${s}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let s=H[a];s&&(r[a]=`${s}/transactions/${e}`)}),r}};var d=require("@multiversx/sdk-core"),P=require("@vleap/warps");var We={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var b=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var ie=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),ve=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var oe=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new P.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=(0,P.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=d.Address.newFromBech32(this.userWallet),s=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,c=()=>t&&r?[d.BytesValue.fromHex(e),d.BytesValue.fromUTF8(t),d.BytesValue.fromHex(r)]:t?[d.BytesValue.fromHex(e),d.BytesValue.fromUTF8(t)]:[d.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:d.Address.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:c()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.Address.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[d.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(a,{contract:d.Address.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[d.BytesValue.fromUTF8(e),d.BytesValue.fromHex(t),d.BytesValue.fromHex(r)]:[d.BytesValue.fromUTF8(e),d.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.Address.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.BytesValue.fromHex(e),d.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.Address.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[d.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.Address.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[d.BytesValue.fromHex(e),new d.AddressValue(new d.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=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:d.Address.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=d.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:d.Address.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.BytesValue.fromHex(e),d.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=P.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return P.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let s=d.Address.newFromBech32(b(this.config.env)),c=this.getController(),o=c.createQuery({contract:s,function:"getInfoByAlias",arguments:[d.BytesValue.fromUTF8(e)]}),p=await c.runQuery(o),[h]=c.parseQueryResponse(p),f=h?ie(h):null,g=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:g},t.ttl),{registryInfo:f,brand:g}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=P.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let g=this.cache.get(r);if(g)return P.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),g}let a=d.Address.newFromBech32(b(this.config.env)),s=this.getController(),c=s.createQuery({contract:a,function:"getInfoByHash",arguments:[d.BytesValue.fromHex(e)]}),o=await s.runQuery(c),[p]=s.parseQueryResponse(o),h=p?ie(p):null,f=h?.brand?await this.fetchBrand(h.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:h,brand:f},t.ttl),{registryInfo:h,brand:f}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=d.Address.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserWarps",arguments:[new d.AddressValue(new d.Address(t))]}),c=await a.runQuery(s),[o]=a.parseQueryResponse(c);return o.map(ie)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=d.Address.newFromBech32(b(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserBrands",arguments:[new d.AddressValue(new d.Address(t))]}),c=await a.runQuery(s),[o]=a.parseQueryResponse(c),p=o.map(g=>g.toString("hex")),h={ttl:365*24*60*60};return(await Promise.all(p.map(g=>this.fetchBrand(g,h)))).filter(g=>g!==null)}catch{return[]}}async fetchBrand(e,t){let r=P.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return P.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let c=W(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await c.getTransaction(e),p=JSON.parse(o.data.toString());return p.meta={chain:this.chain.name,hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,p,t.ttl),p}catch{return null}}async loadRegistryConfigs(){let e=d.Address.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?ve(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new d.TransactionsFactoryConfig({chainID:this.chain.chainId}),t=d.AbiRegistry.create(We);return new d.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=W(this.chain,this.config.env,this.config),t=d.AbiRegistry.create(We);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var V=require("@multiversx/sdk-core"),L=require("@vleap/warps");var ce=class{constructor(e,t){this.config=e;this.chain=t;this.entry=W(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new L.WarpCache(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=(0,L.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?V.UserSecretKey.fromPem(t):V.UserSecretKey.fromString(t),s=new V.Account(a);if(e.nonce===0n){let c=await this.entry.recallAccountNonce(s.address),o=this.cache.get(`nonce:${s.address.toBech32()}`)||0,p=BigInt(Math.max(o,Number(c)));e.nonce=p}return e.signature=await s.signTransaction(e),this.cache.set(`nonce:${s.address.toBech32()}`,Number(s.nonce),L.CacheTtl.OneHour),e}async signMessage(e){let t=(0,L.getWarpWalletPrivateKeyFromConfig)(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let a=t.startsWith("-----")?V.UserSecretKey.fromPem(t):V.UserSecretKey.fromString(t),s=new V.UserSigner(a),c=new TextEncoder().encode(e),o=await s.sign(c);return Buffer.from(o).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=V.Mnemonic.fromString(e).deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:e}}generate(){let e=V.Mnemonic.generate(),t=e.toString(),r=e.deriveKey(0),a=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:a,mnemonic:t}}getAddress(){return(0,L.getWarpWalletAddressFromConfig)(this.config,this.chain.name)}};var pe=(i,e,t)=>(r,a)=>{let s=t[r.env],c=new _e.WarpTypeRegistry;return c.registerType("token",{stringToNative:o=>o,nativeToString:o=>`token:${o}`}),c.registerType("codemeta",{stringToNative:o=>o,nativeToString:o=>`codemeta:${o}`}),c.registerTypeAlias("list","vector"),{chain:i,chainInfo:s,prefix:e,builder:()=>new re(r,s),executor:new ae(r,s,c),results:new K(r,s,c),serializer:new O({typeRegistry:c}),registry:new oe(r,s),explorer:new se(i,r),abiBuilder:()=>new M(r,s),brandBuilder:()=>new te(r,s),dataLoader:new ne(r,s),wallet:new ce(r,s)}};var de={chain:J.WarpChainName.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},Te=pe(J.WarpChainName.Multiversx,"multiversx",{mainnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de},testnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de},devnet:{name:J.WarpChainName.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:de}});var he=require("@vleap/warps");var He={chain:he.WarpChainName.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},xe={name:he.WarpChainName.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:He},Ae=pe(he.WarpChainName.Vibechain,"vibe",{mainnet:xe,testnet:xe,devnet:xe});var et=(i,e)=>[Te(i,e),Ae(i,e)],tt=()=>[Ee.WarpChainName.Multiversx,Ee.WarpChainName.Vibechain];var le=require("@vleap/warps");var rt=i=>new le.WarpSerializer().nativeToString(v.Token,i),nt=i=>new le.WarpSerializer().nativeToString(v.CodeMeta,i),at=(i,e)=>new le.WarpSerializer().nativeToString(v.Optional,i),st=i=>new le.WarpSerializer().nativeToString(v.List,i);var l=require("@multiversx/sdk-core"),it=(i,e)=>i?l.OptionValue.newProvided(i):e?l.OptionValue.newMissingTyped(e):l.OptionValue.newMissing(),ot=(i,e)=>i?new l.OptionalValue(i.getType(),i):e?new l.OptionalValue(e):l.OptionalValue.newMissing(),ct=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new l.List(e,i)},pt=i=>l.VariadicValue.fromItems(...i),lt=i=>{let e=i.map(t=>t.getType());return new l.CompositeValue(new l.CompositeType(...e),i)},ut=i=>l.StringValue.fromUTF8(i),mt=i=>new l.U8Value(i),dt=i=>new l.U16Value(i),ht=i=>new l.U32Value(i),gt=i=>new l.U64Value(i),ft=i=>new l.BigUIntValue(BigInt(i)),yt=i=>new l.BooleanValue(i),wt=i=>new l.AddressValue(l.Address.newFromBech32(i)),Ct=i=>new l.TokenIdentifierValue(i),Wt=i=>l.BytesValue.fromHex(i),vt=i=>new l.Struct(new l.StructType("EsdtTokenPayment",[new l.FieldDefinition("token_identifier","",new l.TokenIdentifierType),new l.FieldDefinition("token_nonce","",new l.U64Type),new l.FieldDefinition("amount","",new l.BigUIntType)]),[new l.Field(new l.TokenIdentifierValue(i.token.identifier),"token_identifier"),new l.Field(new l.U64Value(BigInt(i.token.nonce)),"token_nonce"),new l.Field(new l.BigUIntValue(BigInt(i.amount)),"amount")]),Tt=i=>new l.CodeMetadataValue(l.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),xt=()=>new l.NothingValue;0&&(module.exports={ExplorerUrls,KnownTokens,MultiversxExplorers,MultiversxExplorersConfig,NativeTokenEgld,NativeTokenVibe,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxDataLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxInputTypes,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,WarpMultiversxWallet,address_value,asset_value,biguint_value,boolean_value,codemeta,codemeta_value,composite_value,createMultiversxAdapter,findKnownTokenById,getAllMultiversxAdapters,getAllMultiversxChainNames,getKnownTokensForChain,getMultiversxAdapter,getMultiversxEntrypoint,getMultiversxRegistryAddress,getNormalizedTokenIdentifier,getVibechainAdapter,hex_value,isNativeToken,list,list_value,nothing_value,option,option_value,optional_value,string_value,toTypedConfigInfo,toTypedRegistryInfo,token,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var or={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}};import{Address as Lt,TransactionsFactoryConfig as je,TransferTransactionsFactory as Ge}from"@multiversx/sdk-core";import{getMainChainInfo as Qt,WarpBuilder as Ke,WarpCache as qe,WarpCacheKey as Je,WarpLogger as zt}from"@vleap/warps";import{Address as S,ArgSerializer as Pe,DevnetEntrypoint as _e,MainnetEntrypoint as Oe,SmartContractTransactionsFactory as ke,TestnetEntrypoint as Ne,Token as Ue,TokenComputer as $e,TokenTransfer as Me,TransactionsFactoryConfig as $t,TransferTransactionsFactory as Le}from"@multiversx/sdk-core";import{applyResultsToMessages as Qe,findKnownTokenById as ze,getNextInfo as He,getWarpActionByIndex as et,shiftBigintBy as De,WarpConstants as Mt}from"@vleap/warps";import{AbiRegistry as M}from"@multiversx/sdk-core";import{getMainChainInfo as st,WarpCache as Jt,WarpCacheKey as Xt,WarpConstants as ot,WarpLogger as ct}from"@vleap/warps";import{WarpLogger as it}from"@vleap/warps";var O=class{constructor(t){this.config=t}async getContract(t,e){try{let i=await m.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}`);return{address:t,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return it.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(t,e){try{let i=await m.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return it.error("WarpContractLoader: getVerificationInfo error",r),null}}};var x=class{constructor(t){this.config=t;this.contractLoader=new O(this.config),this.cache=new Jt(this.config.cache?.type)}async createFromRaw(t){return JSON.parse(t)}async createFromTransaction(t){let e=await this.createFromRaw(t.data.toString());return e.meta={hash:t.hash,creator:t.sender.bech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},e}async createFromTransactionHash(t,e){let r=Xt.WarpAbi(this.config.env,t);if(e){let a=this.cache.get(r);if(a)return ct.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${t}`),a}let n=st(this.config),o=m.getChainEntrypoint(n,this.config.env).createNetworkProvider();try{let a=await o.getTransaction(t),u=await this.createFromTransaction(a);return e&&e.ttl&&u&&this.cache.set(r,u,e.ttl),u}catch(a){return ct.error("WarpAbiBuilder: Error creating from transaction hash",a),null}}async getAbiForAction(t){if(t.abi)return await this.fetchAbi(t);if(!t.address)throw new Error("WarpActionExecutor: Address not found");let e=st(this.config),r=await this.contractLoader.getVerificationInfo(t.address,e);if(!r)throw new Error("WarpActionExecutor: Verification info not found");return M.create(r.abi)}async fetchAbi(t){if(!t.abi)throw new Error("WarpActionExecutor: ABI not found");if(t.abi.startsWith(ot.IdentifierType.Hash)){let e=t.abi.split(ot.IdentifierParamSeparator)[1],r=await this.createFromTransactionHash(e);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${t.abi}`);return M.create(r.content)}else{let r=await(await fetch(t.abi)).json();return M.create(r)}}};import{findEventsByFirstTopic as ie,SmartContractTransactionsOutcomeParser as se,TransactionEventsParser as oe}from"@multiversx/sdk-core";import{applyResultsToMessages as ce,evaluateResultsCommon as k,getNextInfo as ue,getWarpActionByIndex as pe,parseResultsOutIndex as Ft,WarpCache as le,WarpCacheKey as fe,WarpConstants as Pt}from"@vleap/warps";import{Address as Yt,AddressType as ut,AddressValue as pt,BigUIntType as L,BigUIntValue as Q,BooleanType as lt,BooleanValue as ft,BytesType as gt,BytesValue as dt,CodeMetadata as Zt,CodeMetadataType as yt,CodeMetadataValue as mt,CompositeType as ht,CompositeValue as wt,Field as z,FieldDefinition as H,List as Tt,ListType as te,NothingValue as C,OptionalType as ee,OptionalValue as D,OptionType as re,OptionValue as j,StringType as Ct,StringValue as Wt,Struct as ne,StructType as bt,TokenIdentifierType as G,TokenIdentifierValue as K,U16Type as It,U16Value as At,U32Type as vt,U32Value as Bt,U64Type as q,U64Value as J,U8Type as xt,U8Value as Et,VariadicType as Vt,VariadicValue as Rt}from"@multiversx/sdk-core";import{WarpConstants as W,WarpSerializer as ae}from"@vleap/warps";var St=new RegExp(`${W.ArgParamsSeparator}(.*)`),B=class{constructor(){this.coreSerializer=new ae}typedToString(t){if(t.hasClassOrSuperclass(j.ClassName))return t.isSet()?`option:${this.typedToString(t.getTypedValue())}`:"option:null";if(t.hasClassOrSuperclass(D.ClassName))return t.isSet()?`optional:${this.typedToString(t.getTypedValue())}`:"optional:null";if(t.hasClassOrSuperclass(Tt.ClassName)){let e=t.getItems(),n=e.map(o=>this.typedToString(o).split(W.ArgParamsSeparator)[0])[0],i=e.map(o=>this.typedToString(o).split(W.ArgParamsSeparator)[1]);return`list:${n}:${i.join(",")}`}if(t.hasClassOrSuperclass(Rt.ClassName)){let e=t.getItems(),n=e.map(o=>this.typedToString(o).split(W.ArgParamsSeparator)[0])[0],i=e.map(o=>this.typedToString(o).split(W.ArgParamsSeparator)[1]);return`variadic:${n}:${i.join(",")}`}if(t.hasClassOrSuperclass(wt.ClassName)){let e=t.getItems(),r=e.map(a=>this.typedToString(a).split(W.ArgParamsSeparator)[0]),n=e.map(a=>this.typedToString(a).split(W.ArgParamsSeparator)[1]),i=r.join(W.ArgCompositeSeparator),o=n.join(W.ArgCompositeSeparator);return`composite(${i}):${o}`}if(t.hasClassOrSuperclass(Q.ClassName)||t.getType().getName()==="BigUint")return`biguint:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(Et.ClassName))return`uint8:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(At.ClassName))return`uint16:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(Bt.ClassName))return`uint32:${t.valueOf().toNumber()}`;if(t.hasClassOrSuperclass(J.ClassName))return`uint64:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(Wt.ClassName))return`string:${t.valueOf()}`;if(t.hasClassOrSuperclass(ft.ClassName))return`bool:${t.valueOf()}`;if(t.hasClassOrSuperclass(pt.ClassName))return`address:${t.valueOf().bech32()}`;if(t.hasClassOrSuperclass(K.ClassName))return`token:${t.valueOf()}`;if(t.hasClassOrSuperclass(dt.ClassName))return`hex:${t.valueOf().toString("hex")}`;if(t.hasClassOrSuperclass(mt.ClassName))return`codemeta:${t.valueOf().toBuffer().toString("hex")}`;if(t.getType().getName()==="EsdtTokenPayment"){let e=t.getFieldValue("token_identifier").valueOf(),r=t.getFieldValue("token_nonce").valueOf(),n=t.getFieldValue("amount").valueOf();return`esdt:${e}|${r}|${n}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${t.getClassName()}`)}typedToNative(t){let e=this.typedToString(t);return this.coreSerializer.stringToNative(e)}nativeToTyped(t,e){let r=this.coreSerializer.nativeToString(t,e);return this.stringToTyped(r)}nativeToType(t){if(t.startsWith("composite")){let e=t.match(/\(([^)]+)\)/)?.[1];return new ht(...e.split(W.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(t==="string")return new Ct;if(t==="uint8")return new xt;if(t==="uint16")return new It;if(t==="uint32")return new vt;if(t==="uint64")return new q;if(t==="biguint")return new L;if(t==="bool")return new lt;if(t==="address")return new ut;if(t==="token")return new G;if(t==="hex")return new gt;if(t==="codemeta")return new yt;if(t==="esdt"||t==="nft")return new bt("EsdtTokenPayment",[new H("token_identifier","",new G),new H("token_nonce","",new q),new H("amount","",new L)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${t}`)}stringToTyped(t){let[e,r]=t.split(/:(.*)/,2);if(e==="null"||e===null)return new C;if(e==="option"){let n=this.stringToTyped(r);return n instanceof C?j.newMissingTyped(n.getType()):j.newProvided(n)}if(e==="optional"){let n=this.stringToTyped(r);return n instanceof C?D.newMissing():new D(n.getType(),n)}if(e==="list"){let[n,i]=r.split(St,2),a=i.split(",").map(u=>this.stringToTyped(`${n}:${u}`));return new Tt(this.nativeToType(n),a)}if(e==="variadic"){let[n,i]=r.split(St,2),a=i.split(",").map(u=>this.stringToTyped(`${n}:${u}`));return new Rt(new Vt(this.nativeToType(n)),a)}if(e.startsWith("composite")){let n=e.match(/\(([^)]+)\)/)?.[1],i=r.split(W.ArgCompositeSeparator),o=n.split(W.ArgCompositeSeparator),a=i.map((c,p)=>this.stringToTyped(`${o[p]}:${c}`)),u=a.map(c=>c.getType());return new wt(new ht(...u),a)}if(e==="string")return r?Wt.fromUTF8(r):new C;if(e==="uint8")return r?new Et(Number(r)):new C;if(e==="uint16")return r?new At(Number(r)):new C;if(e==="uint32")return r?new Bt(Number(r)):new C;if(e==="uint64")return r?new J(BigInt(r)):new C;if(e==="biguint")return r?new Q(BigInt(r)):new C;if(e==="bool")return r?new ft(typeof r=="boolean"?r:r==="true"):new C;if(e==="address")return r?new pt(Yt.newFromBech32(r)):new C;if(e==="token")return r?new K(r):new C;if(e==="hex")return r?dt.fromHex(r):new C;if(e==="codemeta")return new mt(Zt.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(e==="esdt"){let n=r.split(W.ArgCompositeSeparator);return new ne(this.nativeToType("esdt"),[new z(new K(n[0]),"token_identifier"),new z(new J(BigInt(n[1])),"token_nonce"),new z(new Q(BigInt(n[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${e}`)}typeToString(t){if(t instanceof re)return"option:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof ee)return"optional:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof te)return"list:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof Vt)return"variadic:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof Ct)return"string";if(t instanceof xt)return"uint8";if(t instanceof It)return"uint16";if(t instanceof vt)return"uint32";if(t instanceof q)return"uint64";if(t instanceof L)return"biguint";if(t instanceof lt)return"bool";if(t instanceof ut)return"address";if(t instanceof G)return"token";if(t instanceof gt)return"hex";if(t instanceof yt)return"codemeta";if(t instanceof bt&&t.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${t.getClassName()}`)}};var E=class{constructor(t){this.config=t;this.abi=new x(t),this.serializer=new B,this.cache=new le(t.cache?.type)}async getTransactionExecutionResults(t,e,r){let n=this.cache.get(fe.WarpExecutable(this.config.env,t.meta?.hash||"",e))??[],i=await this.extractContractResults(t,e,r,n),o=ue(this.config,t,e,i),a=ce(t,i.results);return{success:r.status.isSuccessful(),warp:t,action:e,user:this.config.user?.wallet||null,txHash:r.hash,next:o,values:i.values,results:i.results,messages:a}}async extractContractResults(t,e,r,n){let i=pe(t,e),o=[],a={};if(!t.results||i.type!=="contract")return{values:o,results:a};if(!Object.values(t.results).some(h=>h.includes("out")||h.includes("event"))){for(let[h,f]of Object.entries(t.results))a[h]=f;return{values:o,results:await k(t,a,e,n)}}let c=await this.abi.getAbiForAction(i),p=new oe({abi:c}),d=new se({abi:c}).parseExecute({transactionOnNetwork:r,function:i.func||void 0});for(let[h,f]of Object.entries(t.results)){if(f.startsWith(Pt.Transform.Prefix))continue;if(f.startsWith("input.")){a[h]=f;continue}let b=Ft(f);if(b!==null&&b!==e){a[h]=null;continue}let[w,A,I]=f.split(".");if(w==="event"){if(!A||isNaN(Number(I)))continue;let P=Number(I),y=ie(r,A),R=p.parseEvents({events:y})[0],_=Object.values(R)[P]||null;o.push(_),a[h]=_&&_.valueOf()}else if(w==="out"||w.startsWith("out[")){if(!A)continue;let P=Number(A),y=d.values[P-1]||null;I&&(y=y[I]||null),y&&typeof y=="object"&&(y="toFixed"in y?y.toFixed():y.valueOf()),o.push(y),a[h]=y&&y.valueOf()}else a[h]=f}return{values:o,results:await k(t,a,e,n)}}async extractQueryResults(t,e,r,n){let i=e.map(c=>this.serializer.typedToString(c)),o=e.map(c=>this.serializer.typedToNative(c)[1]),a={};if(!t.results)return{values:i,results:a};let u=c=>{let p=c.split(".").slice(1).map(d=>parseInt(d)-1);if(p.length===0)return;let l=o[p[0]];for(let d=1;d<p.length;d++){if(l==null)return;l=l[p[d]]}return l};for(let[c,p]of Object.entries(t.results)){if(p.startsWith(Pt.Transform.Prefix))continue;let l=Ft(p);if(l!==null&&l!==r){a[c]=null;continue}p.startsWith("out.")||p==="out"||p.startsWith("out[")?a[c]=u(p)||null:a[c]=p}return{values:i,results:await k(t,a,r,n)}}async resolveWarpResultsRecursively(t){let e=t.warp,r=t.entryActionIndex,n=t.executor,i=t.inputs,o=t.meta,a=new Map,u=new Set,c=this;async function p(f,b=[]){if(a.has(f))return a.get(f);if(u.has(f))throw new Error(`Circular dependency detected at action ${f}`);u.add(f);let w=e.actions[f-1];if(!w)throw new Error(`Action ${f} not found`);let A;if(w.type==="query")A=await n.executeQuery(e,f,b);else if(w.type==="collect")A=await n.executeCollect(e,f,b,o);else throw new Error(`Unsupported or interactive action type: ${w.type}`);if(a.set(f,A),e.results)for(let I of Object.values(e.results)){let y=String(I).match(/^out\[(\d+)\]/);if(y){let R=parseInt(y[1],10);R!==f&&!a.has(R)&&await p(R)}}return u.delete(f),A}await p(r,i);let l={};for(let f of a.values())for(let[b,w]of Object.entries(f.results))w!==null?l[b]=w:b in l||(l[b]=null);let d=await k(e,l,r,i);return{...a.get(r),action:r,results:d}}};import{Address as ge,AddressValue as de,BigUIntType as ye,BigUIntValue as _t,BooleanValue as me,BytesValue as he,CodeMetadata as we,CodeMetadataValue as Te,CompositeType as Ce,CompositeValue as We,Field as X,FieldDefinition as Y,List as be,NothingValue as Ie,OptionalValue as Z,OptionValue as tt,StringValue as Ae,Struct as ve,StructType as Be,TokenIdentifierType as xe,TokenIdentifierValue as Ot,U16Value as Ee,U32Value as Ve,U64Type as Re,U64Value as kt,U8Value as Se,VariadicValue as Fe}from"@multiversx/sdk-core";var rn=(s,t)=>s?tt.newProvided(s):t?tt.newMissingTyped(t):tt.newMissing(),nn=(s,t)=>s?new Z(s.getType(),s):t?new Z(t):Z.newMissing(),an=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let t=s[0].getType();return new be(t,s)},sn=s=>Fe.fromItems(...s),on=s=>{let t=s.map(e=>e.getType());return new We(new Ce(...t),s)},v=s=>Ae.fromUTF8(s),cn=s=>new Se(s),un=s=>new Ee(s),Nt=s=>new Ve(s),pn=s=>new kt(s),ln=s=>new _t(BigInt(s)),fn=s=>new me(s),gn=s=>new de(ge.newFromBech32(s)),dn=s=>new Ot(s),yn=s=>he.fromHex(s),Ut=s=>new ve(new Be("EsdtTokenPayment",[new Y("token_identifier","",new xe),new Y("token_nonce","",new Re),new Y("amount","",new ye)]),[new X(new Ot(s.token.identifier),"token_identifier"),new X(new kt(BigInt(s.token.nonce)),"token_nonce"),new X(new _t(BigInt(s.amount)),"amount")]),mn=s=>new Te(we.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),hn=()=>new Ie;var m=class s{constructor(t){this.config=t;this.serializer=new B,this.abi=new x(this.config),this.results=new E(this.config)}async createTransaction(t){let e=et(t.warp,t.action),r=null;if(e.type==="transfer")r=await this.createTransferTransaction(t);else if(e.type==="contract")r=await this.createContractCallTransaction(t);else{if(e.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(e.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${e.type})`);return r}async createTransferTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let e=S.newFromBech32(this.config.user.wallet),r=new $t({chainID:t.chain.chainId}),n=t.data?Buffer.from(this.serializer.stringToTyped(t.data).valueOf()):null;return new Le({config:r}).createTransactionForTransfer(e,{receiver:S.newFromBech32(t.destination),nativeAmount:t.value,data:n?new Uint8Array(n):void 0})}async createContractCallTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let e=et(t.warp,t.action),r=S.newFromBech32(this.config.user.wallet),n=t.args.map(o=>this.serializer.stringToTyped(o)),i=new $t({chainID:t.chain.chainId});return new ke({config:i}).createTransactionForExecute(r,{contract:S.newFromBech32(t.destination),function:"func"in e&&e.func||"",gasLimit:"gasLimit"in e?BigInt(e.gasLimit||0):0n,arguments:n,nativeTransferAmount:t.value})}async executeQuery(t){let e=et(t.warp,t.action);if(e.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${e.type}`);let r=await this.abi.getAbiForAction(e),n=t.args.map(I=>this.serializer.stringToTyped(I)),i=s.getChainEntrypoint(t.chain,this.config.env),o=S.newFromBech32(t.destination),a=i.createSmartContractController(r),u=a.createQuery({contract:o,function:e.func||"",arguments:n}),c=await a.runQuery(u),p=c.returnCode==="ok",l=new Pe,d=r.getEndpoint(c.function||e.func||""),h=(c.returnDataParts||[]).map(I=>Buffer.from(I)),f=l.buffersToValues(h,d.output),{values:b,results:w}=await this.results.extractQueryResults(t.warp,f,t.action,t.resolvedInputs),A=He(this.config,t.warp,t.action,w);return{success:p,warp:t.warp,action:t.action,user:this.config.user?.wallet||null,txHash:null,next:A,values:b,results:w,messages:Qe(t.warp,w)}}async preprocessInput(t,e,r,n){if(r==="esdt"){let[i,o,a,u]=n.split(Mt.ArgCompositeSeparator);if(u)return e;let c=new Ue({identifier:i,nonce:BigInt(o)});if(!new $e().isFungible(c))return e;let d=ze(i)?.decimals;if(d||(d=(await(await fetch(`${t.apiUrl}/tokens/${i}`)).json()).decimals),!d)throw new Error(`WarpActionExecutor: Decimals not found for token ${i}`);let h=Ut(new Me({token:c,amount:De(a,d)}));return this.serializer.typedToString(h)+Mt.ArgCompositeSeparator+d}return e}static getChainEntrypoint(t,e){let r="warp-sdk",n="api";return e==="devnet"?new _e(t.apiUrl,n,r):e==="testnet"?new Ne(t.apiUrl,n,r):new Oe(t.apiUrl,n,r)}};var N=class{constructor(t){this.config=t,this.cache=new qe(t.cache?.type),this.core=new Ke(t)}createInscriptionTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpBuilder: user address not set");let e=Qt(this.config),r=new je({chainID:e.chainId}),n=new Ge({config:r}),i=Lt.newFromBech32(this.config.user.wallet),o=JSON.stringify(t),a=n.createTransactionForTransfer(i,{receiver:Lt.newFromBech32(this.config.user.wallet),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return a.gasLimit=a.gasLimit+BigInt(2e6),a}async createFromTransaction(t,e=!1){let r=await this.core.createFromRaw(t.data.toString(),e);return r.meta={hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},r}async createFromTransactionHash(t,e){let r=Je.Warp(this.config.env,t);if(e){let a=this.cache.get(r);if(a)return zt.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),a}let n=Qt(this.config),o=m.getChainEntrypoint(n,this.config.env).createNetworkProvider();try{let a=await o.getTransaction(t),u=await this.createFromTransaction(a);return e&&e.ttl&&u&&this.cache.set(r,u,e.ttl),u}catch(a){return zt.error("WarpBuilder: Error creating from transaction hash",a),null}}};import{AbiRegistry as Dt,Address as T,AddressValue as nt,BytesValue as g,SmartContractTransactionsFactory as Ye,TransactionsFactoryConfig as Ze}from"@multiversx/sdk-core";import{getMainChainInfo as at,toTypedChainInfo as jt,WarpCache as tr,WarpCacheKey as V,WarpConfig as er,WarpLogger as F}from"@vleap/warps";var rt={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var U=s=>({hash:s.hash.toString("hex"),alias:s.alias?.toString()||null,trust:s.trust.toString(),owner:s.owner.toString(),createdAt:s.created_at.toNumber(),upgradedAt:s.upgraded_at?.toNumber(),brand:s.brand?.toString("hex")||null,upgrade:s.upgrade?.toString("hex")||null}),Ht=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(t=>t.toBech32())});var $=class{constructor(t){this.config=t,this.cache=new tr(t.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]}}async init(){await this.loadRegistryConfigs()}createWarpRegisterTransaction(t,e,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let n=T.newFromBech32(this.config.user.wallet),i=()=>this.isCurrentUserAdmin()?BigInt(0):e&&r?this.registryConfig.unitPrice*BigInt(3):e?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>e&&r?[g.fromHex(t),g.fromUTF8(e),g.fromHex(r)]:e?[g.fromHex(t),g.fromUTF8(e)]:[g.fromHex(t)];return this.getFactory().createTransactionForExecute(n,{contract:this.getRegistryContractAddress(),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:o()})}createWarpUnregisterTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[g.fromHex(t)]})}createWarpUpgradeTransaction(t,e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[g.fromUTF8(t),g.fromHex(e)]})}createWarpAliasSetTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[g.fromHex(t),g.fromUTF8(e)]})}createWarpVerifyTransaction(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[g.fromHex(t)]})}createWarpTransferOwnershipTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[g.fromHex(t),new nt(new T(e))]})}createBrandRegisterTransaction(t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[g.fromHex(t)]})}createWarpBrandingTransaction(t,e){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let r=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(r,{contract:this.getRegistryContractAddress(),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[g.fromHex(t),g.fromHex(e)]})}async getInfoByAlias(t,e){try{let r=V.RegistryInfo(this.config.env,t),n=e?this.cache.get(r):null;if(n)return F.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${t}`),n;let i=this.getRegistryContractAddress(),o=this.getController(),a=o.createQuery({contract:i,function:"getInfoByAlias",arguments:[g.fromUTF8(t)]}),u=await o.runQuery(a),[c]=o.parseQueryResponse(u),p=c?U(c):null,l=p?.brand?await this.fetchBrand(p.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:p,brand:l},e.ttl),{registryInfo:p,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(t,e){try{let r=V.RegistryInfo(this.config.env,t);if(e){let l=this.cache.get(r);if(l)return F.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${t}`),l}let n=this.getRegistryContractAddress(),i=this.getController(),o=i.createQuery({contract:n,function:"getInfoByHash",arguments:[g.fromHex(t)]}),a=await i.runQuery(o),[u]=i.parseQueryResponse(a),c=u?U(u):null,p=c?.brand?await this.fetchBrand(c.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:c,brand:p},e.ttl),{registryInfo:c,brand:p}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(t){try{let e=t||this.config.user?.wallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=this.getRegistryContractAddress(),n=this.getController(),i=n.createQuery({contract:r,function:"getUserWarps",arguments:[new nt(new T(e))]}),o=await n.runQuery(i),[a]=n.parseQueryResponse(o);return a.map(U)}catch{return[]}}async getUserBrands(t){try{let e=t||this.config.user?.wallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=this.getRegistryContractAddress(),n=this.getController(),i=n.createQuery({contract:r,function:"getUserBrands",arguments:[new nt(new T(e))]}),o=await n.runQuery(i),[a]=n.parseQueryResponse(o),u=a.map(l=>l.toString("hex")),c={ttl:365*24*60*60};return(await Promise.all(u.map(l=>this.fetchBrand(l,c)))).filter(l=>l!==null)}catch{return[]}}async getChainInfos(t){let e=V.ChainInfos(this.config.env);if(t&&t.ttl){let c=this.cache.get(e);if(c)return F.info("WarpRegistry (getChainInfos): ChainInfos found in cache"),c}let r=this.getRegistryContractAddress(),n=this.getController(),i=n.createQuery({contract:r,function:"getChains",arguments:[]}),o=await n.runQuery(i),[a]=n.parseQueryResponse(o),u=a.map(jt);if(t&&t.ttl){for(let c of u)this.cache.set(V.ChainInfo(this.config.env,c.chain),c,t.ttl);this.cache.set(e,u,t.ttl)}return u}async getChainInfo(t,e){try{let r=V.ChainInfo(this.config.env,t),n=e?this.cache.get(r):null;if(n)return F.info(`WarpRegistry (getChainInfo): ChainInfo found in cache: ${t}`),n;let i=this.getRegistryContractAddress(),o=this.getController(),a=o.createQuery({contract:i,function:"getChain",arguments:[g.fromUTF8(t)]}),u=await o.runQuery(a),[c]=o.parseQueryResponse(u),p=c?jt(c):null;return e&&e.ttl&&p&&this.cache.set(r,p,e.ttl),p}catch{return null}}async setChain(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"setChain",gasLimit:BigInt(1e7),arguments:[v(t.name),v(t.displayName),v(t.chainId),Nt(t.blockTime),v(t.addressHrp),v(t.apiUrl),v(t.explorerUrl),v(t.nativeToken)]})}async removeChain(t){if(!this.config.user?.wallet)throw new Error("WarpRegistry: user address not set");let e=T.newFromBech32(this.config.user.wallet);return this.getFactory().createTransactionForExecute(e,{contract:this.getRegistryContractAddress(),function:"removeChain",gasLimit:BigInt(1e7),arguments:[v(t)]})}async fetchBrand(t,e){let r=V.Brand(this.config.env,t),n=e?this.cache.get(r):null;if(n)return F.info(`WarpRegistry (fetchBrand): Brand found in cache: ${t}`),n;let i=at(this.config),a=m.getChainEntrypoint(i,this.config.env).createNetworkProvider();try{let u=await a.getTransaction(t),c=JSON.parse(u.data.toString());return c.meta={hash:u.hash,creator:u.sender.bech32(),createdAt:new Date(u.timestamp*1e3).toISOString()},e&&e.ttl&&this.cache.set(r,c,e.ttl),c}catch{return null}}getRegistryContractAddress(){return T.newFromBech32(this.config.registry?.contract||er.Registry.Contract(this.config.env))}async loadRegistryConfigs(){let t=this.getRegistryContractAddress(),e=this.getController(),[r]=await e.query({contract:t,function:"getConfig",arguments:[]}),n=r?Ht(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let t=at(this.config),e=new Ze({chainID:t.chainId}),r=Dt.create(rt);return new Ye({config:e,abi:r})}getController(){let t=at(this.config),e=m.getChainEntrypoint(t,this.config.env),r=Dt.create(rt);return e.createSmartContractController(r)}isCurrentUserAdmin(){return!!this.config.user?.wallet&&this.registryConfig.admins.includes(this.config.user.wallet)}};var ma=s=>({chain:"multiversx",builder:new N(s),executor:new m(s),results:new E(s),serializer:new B,registry:new $(s)});import{Address as Gt,TransactionsFactoryConfig as rr,TransferTransactionsFactory as nr}from"@multiversx/sdk-core";import{getMainChainInfo as Kt,WarpBrandBuilder as ar,WarpLogger as ir}from"@vleap/warps";import{Buffer as sr}from"buffer";var qt=class{constructor(t){this.config=t,this.core=new ar(t)}createInscriptionTransaction(t){if(!this.config.user?.wallet)throw new Error("BrandBuilder: user address not set");let e=Kt(this.config),r=new rr({chainID:e.chainId}),n=new nr({config:r}),i=Gt.newFromBech32(this.config.user.wallet),o=JSON.stringify(t);return n.createTransactionForNativeTokenTransfer(i,{receiver:Gt.newFromBech32(this.config.user.wallet),nativeAmount:BigInt(0),data:Uint8Array.from(sr.from(o))})}async createFromTransaction(t,e=!1){return await this.core.createFromRaw(t.data.toString(),e)}async createFromTransactionHash(t){let e=Kt(this.config),n=m.getChainEntrypoint(e,this.config.env).createNetworkProvider();try{let i=await n.getTransaction(t);return this.createFromTransaction(i)}catch(i){return ir.error("BrandBuilder: Error creating from transaction hash",i),null}}};export{x as WarpMultiversxAbi,qt as WarpMultiversxBrandBuilder,N as WarpMultiversxBuilder,or as WarpMultiversxConstants,O as WarpMultiversxContractLoader,m as WarpMultiversxExecutor,$ as WarpMultiversxRegistry,E as WarpMultiversxResults,B as WarpMultiversxSerializer,gn as address_value,ln as biguint_value,fn as boolean_value,mn as codemeta_value,on as composite_value,Ut as esdt_value,ma as getMultiversxAdapter,yn as hex_value,an as list_value,hn as nothing_value,rn as option_value,nn as optional_value,v as string_value,dn as token_value,un as u16_value,Nt as u32_value,pn as u64_value,cn as u8_value,sn as variadic_value};
1
+ import{WarpChainName as At}from"@vleap/warps";import{WarpChainName as O}from"@vleap/warps";import{WarpTypeRegistry as _r}from"@vleap/warps";import{AbiRegistry as oe,Address as Pt,TransactionsFactoryConfig as Vt,TransferTransactionsFactory as kt}from"@multiversx/sdk-core";import{getLatestProtocolIdentifier as Ft,getWarpWalletAddressFromConfig as Rt,WarpCache as Mt,WarpCacheKey as Ot,WarpConstants as Oe,WarpLogger as Le}from"@vleap/warps";import{DevnetEntrypoint as It,MainnetEntrypoint as Bt,TestnetEntrypoint as Nt}from"@multiversx/sdk-core";import{getProviderUrl as Ut}from"@vleap/warps";var k=i=>!i.includes("-"),D=i=>k(i)?`${i}-000000`:i,f=(i,e,t)=>{let r="warp-sdk",a=t?Ut(t,i.name,e,i.defaultApiUrl):i.defaultApiUrl;return e==="devnet"?new It({url:a,kind:"api",clientName:r}):e==="testnet"?new Nt({url:a,kind:"api",clientName:r}):new Bt({url:a,kind:"api",clientName:r})};import{WarpLogger as Me}from"@vleap/warps";var _=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await f(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return Me.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await f(t,this.config.env,this.config).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return Me.error("WarpContractLoader: getVerificationInfo error",r),null}}};var N=class{constructor(e,t){this.config=e;this.chain=t;this.contractLoader=new _(this.config),this.cache=new Mt(this.config.cache?.type)}async createInscriptionTransaction(e){let t=Rt(this.config,this.chain.name);if(!t)throw new Error("WarpBuilder: user address not set");let r=new Vt({chainID:this.chain.chainId}),n=new kt({config:r}),a=Pt.newFromBech32(t),o={protocol:Ft("abi"),content:e},s=JSON.stringify(o),c=await n.createTransactionForTransfer(a,{receiver:a,nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Ot.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return Le.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=f(this.chain,this.config.env,this.config).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return Le.error("WarpAbiBuilder: Error creating from transaction hash",o),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chain);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return oe.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Oe.IdentifierType.Hash)){let t=e.abi.split(Oe.ArgParamsSeparator)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return oe.create(r.content)}else{let r=await(await fetch(e.abi)).json();return oe.create(r)}}};import{Address as De,TransactionsFactoryConfig as Lt,TransferTransactionsFactory as Dt}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as _t,WarpBrandBuilder as Ht,WarpLogger as Gt}from"@vleap/warps";import{Buffer as $t}from"buffer";var H=class{constructor(e,t){this.config=e;this.chain=t;this.core=new Ht(e)}async createInscriptionTransaction(e){let t=_t(this.config,this.chain.name);if(!t)throw new Error("BrandBuilder: user address not set");let r=new Lt({chainID:this.chain.chainId}),n=new Dt({config:r}),a=De.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:De.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from($t.from(o))})}async createFromTransaction(e,t=!1){let r=await this.core.createFromRaw(e.data.toString(),t);return r.meta={chain:this.chain.name,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},r}async createFromTransactionHash(e){let r=f(this.chain,this.config.env,this.config).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Gt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as _e,TransactionsFactoryConfig as zt,TransferTransactionsFactory as Kt}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as qt,WarpBuilder as He,WarpCache as Qt,WarpCacheKey as jt,WarpLogger as Ge}from"@vleap/warps";var G=class extends He{constructor(t,r){super(t);this.config=t;this.chain=r;this.cache=new Qt(t.cache?.type),this.core=new He(t)}async createInscriptionTransaction(t){let r=qt(this.config,this.chain.name);if(!r)throw new Error("WarpBuilder: user address not set");let n=new zt({chainID:this.chain.chainId}),a=new Kt({config:n}),o=_e.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:_e.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain.name,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=jt.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Ge.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=f(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Ge.error("WarpBuilder: Error creating from transaction hash",s),null}}};import{Address as ce,Token as er,TokenComputer as tr}from"@multiversx/sdk-core";import{CacheTtl as rr,WarpCache as nr,WarpCacheKey as ar}from"@vleap/warps";import{WarpChainName as Xt}from"@vleap/warps";var $e=Xt.Multiversx,ze=[{chain:$e,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:$e,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Jt}from"@vleap/warps";var T=Jt.Multiversx,Ke=[{chain:T,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:T,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:T,identifier:"SEGLD-3ad2d0",name:"StakedEGLD",symbol:"SEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/SEGLD-3ad2d0/icon.png"},{chain:T,identifier:"HSEGLD-c13a4e",name:"HatomSEGLD",symbol:"HSEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HSEGLD-c13a4e/icon.png"},{chain:T,identifier:"UTK-2f80e9",name:"xMoney UTK",symbol:"UTK",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/UTK-2f80e9/icon.png"},{chain:T,identifier:"USDC-c76f1f",name:"WrappedUSDC",symbol:"USDC",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDC-c76f1f/icon.png"},{chain:T,identifier:"WEGLD-bd4d79",name:"WrappedEGLD",symbol:"WEGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WEGLD-bd4d79/icon.png"},{chain:T,identifier:"HTM-f51d55",name:"Hatom",symbol:"HTM",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HTM-f51d55/icon.png"},{chain:T,identifier:"MEX-455c57",name:"MEX",symbol:"MEX",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/MEX-455c57/icon.png"},{chain:T,identifier:"WTAO-4f5363",name:"WrappedTAO",symbol:"WTAO",decimals:9,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WTAO-4f5363/icon.png"},{chain:T,identifier:"HEGLD-d61095",name:"HatomEGLD",symbol:"HEGLD",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/HEGLD-d61095/icon.png"},{chain:T,identifier:"WBTC-5349b3",name:"WrappedBTC",symbol:"WBTC",decimals:8,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WBTC-5349b3/icon.png"},{chain:T,identifier:"WETH-b4ca29",name:"WrappedETH",symbol:"WETH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/WETH-b4ca29/icon.png"},{chain:T,identifier:"USH-111e09",name:"HatomUSD",symbol:"USH",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USH-111e09/icon.png"},{chain:T,identifier:"USDT-f8c08c",name:"WrappedUSDT",symbol:"USDT",decimals:6,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/USDT-f8c08c/icon.png"}];import{WarpChainName as Yt}from"@vleap/warps";var qe=Yt.Multiversx,Qe=[{chain:qe,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"},{chain:qe,identifier:"EGLD-000000",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://tools.multiversx.com/assets-cdn/tokens/EGLD-000000/icon.png"}];import{WarpChainName as Zt}from"@vleap/warps";var je=Zt.Vibechain,$=[{chain:je,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},{chain:je,identifier:"VIBE-000000",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"}];var Xe={multiversx:{mainnet:Ke,testnet:Qe,devnet:ze},vibechain:{mainnet:$,testnet:$,devnet:$}},Je=(i,e,t)=>(Xe[i]?.[e]||[]).find(n=>n.identifier===t)||null,Ea=(i,e)=>Xe[i]?.[e]||[];var z=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new nr(e.cache?.type)}async getAccount(e){let r=await f(this.chain,this.config.env,this.config).createNetworkProvider().getAccount(ce.newFromBech32(e));return{chain:this.chain.name,address:r.address.toBech32(),balance:r.balance}}async getAccountAssets(e){let t=f(this.chain,this.config.env,this.config).createNetworkProvider(),r=t.getAccount(ce.newFromBech32(e)),n=t.getFungibleTokensOfAccount(ce.newFromBech32(e)),[a,o]=await Promise.all([r,n]),s=a.balance>0?[{...this.chain.nativeToken,amount:a.balance}]:[];return s.push(...o.map(c=>({chain:this.chain.name,identifier:c.token.identifier,name:c.raw.name,symbol:c.raw.ticker,amount:c.amount,decimals:c.raw.decimals,logoUrl:c.raw.assets?.pngUrl||"",price:c.raw.price?Number(c.raw.price):void 0,supply:c.raw.supply?BigInt(c.raw.supply):void 0}))),s}async getAsset(e){let t=ar.Asset(this.config.env,this.chain.name,e),r=this.cache.get(t);if(r)return r;let n=Je(this.chain.name,this.config.env,e);if(n)return{chain:this.chain.name,identifier:e,name:n.name,symbol:n.symbol,amount:0n,decimals:n.decimals,logoUrl:n.logoUrl};let a=new tr,o=k(e)?0n:a.extractNonceFromExtendedIdentifier(e),s=new er({identifier:e,nonce:BigInt(o||0)}),c=a.isFungible(s),u=f(this.chain,this.config.env,this.config).createNetworkProvider(),d=D(e),m=await u.doGetGeneric(`tokens/${d}`),C={chain:this.chain.name,identifier:s.identifier,name:m.name,symbol:m.ticker,amount:0n,decimals:m.decimals,logoUrl:m.assets?.pngUrl||"#",price:m.price?Number(m.price):void 0,supply:m.supply?BigInt(m.supply):void 0};return this.cache.set(t,C,rr.OneHour),C}async getAction(e,t=!1){let r=f(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=f(this.chain,this.config.env,this.config).createNetworkProvider(),n=`accounts/${e}/transactions`,a=new URLSearchParams,o=t?.size||25,s=t?.page||0;if(s>0){let u=s*o;a.append("from",u.toString())}return o!==25&&a.append("size",o.toString()),a.toString()&&(n+=`?${a.toString()}`),(await r.doGetGeneric(n)).map(u=>({chain:this.chain.name,id:u.txHash,receiver:u.receiver,sender:u.sender,value:u.value,function:u.function,status:this.toActionStatus(u),createdAt:this.toActionCreatedAt(u)}))}toActionStatus(e){return e.status.isSuccessful()?"success":e.status.isFailed()?"failed":"pending"}toActionCreatedAt(e){return new Date(e.timestamp||e.timestamp*1e3).toISOString()}};import{Address as M,ArgSerializer as Wr,SmartContractTransactionsFactory as vr,Token as Tr,TokenComputer as xr,TokenTransfer as Ar,TransactionsFactoryConfig as yt,TransferTransactionsFactory as Er,UserSecretKey as br,UserSigner as Sr}from"@multiversx/sdk-core";import{applyResultsToMessages as Ir,getNextInfo as Br,getWarpActionByIndex as Ae,getWarpWalletAddressFromConfig as Ee}from"@vleap/warps";import{findEventsByFirstTopic as mr,SmartContractTransactionsOutcomeParser as dr,TransactionEventsParser as hr}from"@multiversx/sdk-core";import{applyResultsToMessages as gr,evaluateResultsCommon as Y,findWarpExecutableAction as ht,getNextInfo as fr,getWarpWalletAddressFromConfig as yr,parseResultsOutIndex as gt,WarpCache as wr,WarpCacheKey as Cr,WarpConstants as ft}from"@vleap/warps";import{Address as or,AddressType as pe,AddressValue as Ze,BigUIntType as K,BigUIntValue as le,BooleanType as ue,BooleanValue as et,BytesType as me,BytesValue as tt,CodeMetadata as cr,CodeMetadataType as de,CodeMetadataValue as rt,CompositeType as he,CompositeValue as nt,Field as q,FieldDefinition as Q,List as at,ListType as st,NothingValue as b,OptionalType as it,OptionalValue as ge,OptionType as ot,OptionValue as fe,StringType as ye,StringValue as ct,Struct as j,StructType as V,Token as pr,TokenComputer as pt,TokenIdentifierType as X,TokenIdentifierValue as we,U16Type as Ce,U16Value as lt,U32Type as We,U32Value as ut,U64Type as J,U64Value as ve,U8Type as Te,U8Value as mt,VariadicType as xe,VariadicValue as dt}from"@multiversx/sdk-core";import{WarpSerializer as lr}from"@vleap/warps";var p={HttpProtocolPrefix:"http",IdentifierParamName:"warp",IdentifierParamSeparator:":",IdentifierChainDefault:"multiversx",IdentifierType:{Alias:"alias",Hash:"hash"},Globals:{UserWallet:{Placeholder:"USER_WALLET",Accessor:i=>i.config.user?.wallets?.[i.chain]},ChainApiUrl:{Placeholder:"CHAIN_API",Accessor:i=>i.chainInfo.defaultApiUrl},ChainAddressHrp:{Placeholder:"CHAIN_ADDRESS_HRP",Accessor:i=>i.chainInfo.addressHrp}},Vars:{Query:"query",Env:"env"},ArgParamsSeparator:":",ArgCompositeSeparator:"|",ArgListSeparator:",",ArgStructSeparator:";",Transform:{Prefix:"transform:"},Source:{UserWallet:"user:wallet"},Position:{Payload:"payload:"}},l={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 Ha={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},y={Null:"null",Optional:"optional",List:"list",Token:"token",CodeMeta:"codemeta"},sr=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(sr||{}),ir=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(ir||{}),Ye={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},P={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var ur=new RegExp(`${p.ArgParamsSeparator}(.*)`),U=class{constructor(e){this.coreSerializer=new lr(e)}typedToString(e){let t=e.getType();if(t.hasExactClass(ot.ClassName)||e.hasClassOrSuperclass(fe.ClassName)){if(!e.isSet())return l.Option+p.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return l.Option+p.ArgParamsSeparator+r}if(t.hasExactClass(xe.ClassName)||e.hasClassOrSuperclass(dt.ClassName)){let r=e.getItems(),n=this.typedToString(r[0]),a=n.indexOf(p.ArgParamsSeparator),o=n.substring(0,a),s=r.map(u=>{let d=this.typedToString(u),m=d.indexOf(p.ArgParamsSeparator);return d.substring(m+1)}),c=o.startsWith(l.Struct)?p.ArgStructSeparator:p.ArgListSeparator;return l.Vector+p.ArgParamsSeparator+o+p.ArgParamsSeparator+s.join(c)}if(t.hasExactClass(it.ClassName)||e.hasClassOrSuperclass(ge.ClassName)){if(!e.isSet())return y.Optional+p.ArgParamsSeparator+"null";let r=this.typedToString(e.getTypedValue());return y.Optional+p.ArgParamsSeparator+r}if(t.hasExactClass(st.ClassName)||e.hasClassOrSuperclass(at.ClassName)){let r=e.getItems(),a=r.map(s=>this.typedToString(s).split(p.ArgParamsSeparator)[0])[0],o=r.map(s=>this.typedToString(s).split(p.ArgParamsSeparator)[1]);return y.List+p.ArgParamsSeparator+a+p.ArgParamsSeparator+o.join(p.ArgListSeparator)}if(t.hasExactClass(he.ClassName)||e.hasClassOrSuperclass(nt.ClassName)){let r=e.getItems(),n=r.map(c=>this.typedToString(c).split(p.ArgParamsSeparator)[0]),a=r.map(c=>this.typedToString(c).split(p.ArgParamsSeparator)[1]),o=n.join(p.ArgCompositeSeparator),s=a.join(p.ArgCompositeSeparator);return`${l.Tuple}(${o})${p.ArgParamsSeparator}${s}`}if(t.hasExactClass(K.ClassName)||e.hasClassOrSuperclass(le.ClassName)||t.getName()==="BigUint")return l.Biguint+p.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(Te.ClassName)||e.hasClassOrSuperclass(mt.ClassName))return l.Uint8+p.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(Ce.ClassName)||e.hasClassOrSuperclass(lt.ClassName))return l.Uint16+p.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(We.ClassName)||e.hasClassOrSuperclass(ut.ClassName))return l.Uint32+p.ArgParamsSeparator+e.valueOf().toNumber();if(t.hasExactClass(J.ClassName)||e.hasClassOrSuperclass(ve.ClassName))return l.Uint64+p.ArgParamsSeparator+BigInt(e.valueOf().toFixed());if(t.hasExactClass(ye.ClassName)||e.hasClassOrSuperclass(ct.ClassName))return l.String+p.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(ue.ClassName)||e.hasClassOrSuperclass(et.ClassName))return l.Bool+p.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(pe.ClassName)||e.hasClassOrSuperclass(Ze.ClassName))return l.Address+p.ArgParamsSeparator+e.valueOf().toBech32();if(t.hasExactClass(me.ClassName)||e.hasClassOrSuperclass(tt.ClassName))return l.Hex+p.ArgParamsSeparator+e.valueOf().toString("hex");if(t.getName()==="EsdtTokenPayment"){let r=e.getFieldValue("token_identifier").valueOf(),n=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf(),s=new pt().computeExtendedIdentifier(new pr({identifier:r,nonce:BigInt(n)}));return l.Asset+p.ArgParamsSeparator+s+p.ArgCompositeSeparator+a}if(t.hasExactClass(V.ClassName)||e.hasClassOrSuperclass(j.ClassName)){let r=e,a=r.getType().getName(),o=r.getFields();if(o.length===0)return`${l.Struct}(${a})${p.ArgParamsSeparator}`;let s=o.map(c=>{let u=c.name,d=c.value,m=d.getType(),C=this.typedToString(d).split(p.ArgParamsSeparator)[1];return`(${u}${p.ArgParamsSeparator}${this.typeToString(m)})${C}`});return`${l.Struct}(${a})${p.ArgParamsSeparator}${s.join(p.ArgListSeparator)}`}if(t.hasExactClass(X.ClassName)||e.hasClassOrSuperclass(we.ClassName))return y.Token+p.ArgParamsSeparator+e.valueOf();if(t.hasExactClass(de.ClassName)||e.hasClassOrSuperclass(rt.ClassName))return y.CodeMeta+p.ArgParamsSeparator+e.valueOf().toString();throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith(l.Tuple)){let t=e.match(/\(([^)]+)\)/)?.[1];return new he(...t.split(p.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e.startsWith(l.Struct)){let t=e.match(/\(([^)]+)\)/);if(!t)throw new Error("Struct type must include a name in the format struct(Name)");let r=t[1];return new V(r,[])}if(e===l.String)return new ye;if(e===l.Uint8)return new Te;if(e===l.Uint16)return new Ce;if(e===l.Uint32)return new We;if(e===l.Uint64)return new J;if(e===l.Biguint)return new K;if(e===l.Bool)return new ue;if(e===l.Address)return new pe;if(e===l.Hex)return new me;if(e===l.Asset)return new V("EsdtTokenPayment",[new Q("token_identifier","",new X),new Q("token_nonce","",new J),new Q("amount","",new K)]);if(e===y.Token)return new X;if(e===y.CodeMeta)return new de;throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t===l.Option){let n=this.stringToTyped(r);return n instanceof b?fe.newMissingTyped(n.getType()):fe.newProvided(n)}if(t===l.Vector){let n=r.indexOf(p.ArgParamsSeparator),a=r.substring(0,n),o=r.substring(n+1),s=a.startsWith(l.Struct)?p.ArgStructSeparator:p.ArgListSeparator,u=o.split(s).map(d=>this.stringToTyped(`${a}:${d}`));return new dt(new xe(this.nativeToType(a)),u)}if(t.startsWith(l.Tuple)){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(p.ArgCompositeSeparator),o=n.split(p.ArgCompositeSeparator),s=a.map((u,d)=>this.stringToTyped(o[d]+p.ArgParamsSeparator+u)),c=s.map(u=>u.getType());return new nt(new he(...c),s)}if(t.startsWith(l.Struct)){let n=t.match(/\(([^)]+)\)/),a=n?n[1]:"CustomStruct";if(!r)return new j(new V(a,[]),[]);let o=r.split(p.ArgListSeparator),s=[],c=[];return o.forEach(u=>{let d=u.match(new RegExp(`^\\(([^${p.ArgParamsSeparator}]+)${p.ArgParamsSeparator}([^)]+)\\)(.+)$`));if(d){let[,m,C,v]=d,h=this.stringToTyped(`${C}${p.ArgParamsSeparator}${v}`);s.push(new Q(m,"",h.getType())),c.push(new q(h,m))}}),new j(new V(a,s),c)}if(t===l.String)return r?ct.fromUTF8(r):new b;if(t===l.Uint8)return r?new mt(Number(r)):new b;if(t===l.Uint16)return r?new lt(Number(r)):new b;if(t===l.Uint32)return r?new ut(Number(r)):new b;if(t===l.Uint64)return r?new ve(BigInt(r)):new b;if(t===l.Biguint)return r?new le(BigInt(r)):new b;if(t===l.Bool)return r?new et(typeof r=="boolean"?r:r==="true"):new b;if(t===l.Address)return r?new Ze(or.newFromBech32(r)):new b;if(t===l.Hex)return r?tt.fromHex(r):new b;if(t===l.Asset){let[n,a]=r.split(p.ArgCompositeSeparator),o=new pt,s=k(n)?D(n):o.extractIdentifierFromExtendedIdentifier(n),c=k(n)?0n:o.extractNonceFromExtendedIdentifier(n);return new j(this.nativeToType("asset"),[new q(new we(s),"token_identifier"),new q(new ve(BigInt(c)),"token_nonce"),new q(new le(BigInt(a)),"amount")])}if(t===y.Null)return new b;if(t===y.Optional){let n=this.stringToTyped(r);return n instanceof b?ge.newMissing():new ge(n.getType(),n)}if(t===y.List){let[n,a]=r.split(ur,2),s=a.split(p.ArgListSeparator).map(c=>this.stringToTyped(n+p.ArgParamsSeparator+c));return new at(this.nativeToType(n),s)}if(t===y.Token)return r?new we(r):new b;if(t===y.CodeMeta)return new rt(cr.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e.hasExactClass(ot.ClassName))return l.Option+p.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(xe.ClassName))return l.Vector+p.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(ye.ClassName))return l.String;if(e.hasExactClass(Te.ClassName))return l.Uint8;if(e.hasExactClass(Ce.ClassName))return l.Uint16;if(e.hasExactClass(We.ClassName))return l.Uint32;if(e.hasExactClass(J.ClassName))return l.Uint64;if(e.hasExactClass(K.ClassName))return l.Biguint;if(e.hasExactClass(ue.ClassName))return l.Bool;if(e.hasExactClass(pe.ClassName))return l.Address;if(e.hasExactClass(me.ClassName))return l.Hex;if(e.hasExactClass(X.ClassName))return y.Token;if(e.hasExactClass(it.ClassName))return y.Optional+p.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(st.ClassName))return y.List+p.ArgParamsSeparator+this.typeToString(e.getFirstTypeParameter());if(e.hasExactClass(de.ClassName))return y.CodeMeta;if(e.hasExactClass(V.ClassName)&&e.getClassName()==="EsdtTokenPayment")return l.Asset;if(e.hasExactClass(V.ClassName))return`${l.Struct}(${e.getName()})`;throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var F=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.abi=new N(e,t),this.serializer=new U({typeRegistry:this.typeRegistry}),this.cache=new wr(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=ht(e),n=this.cache.get(Cr.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=fr(this.config,[],e,r,a),s=gr(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:yr(this.config,this.chain.name),txHash:t.hash,tx:t,next:o,values:a.values,valuesRaw:[],results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=ht(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(v=>v.includes("out")||v.includes("event"))){for(let[v,h]of Object.entries(e.results))s[v]=h;return{values:o,results:await Y(e,s,a,r,this.serializer.coreSerializer,this.config.transform?.runner)}}let u=await this.abi.getAbiForAction(n),d=new hr({abi:u}),C=new dr({abi:u}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[v,h]of Object.entries(e.results)){if(h.startsWith(ft.Transform.Prefix))continue;if(h.startsWith("input.")){s[v]=h;continue}let S=gt(h);if(S!==null&&S!==a){s[v]=null;continue}let[A,E,B]=h.split(".");if(A==="event"){if(!E||isNaN(Number(B)))continue;let I=Number(B),W=mr(t,E),R=d.parseEvents({events:W})[0],L=Object.values(R)[I]||null;o.push(L),s[v]=L&&L.valueOf()}else if(A==="out"||A.startsWith("out[")){if(!E)continue;let I=Number(E),W=C.values[I-1]||null;B&&(W=W[B]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),o.push(W),s[v]=W&&W.valueOf()}else s[v]=h}return{values:o,results:await Y(e,s,a,r,this.serializer.coreSerializer)}}async extractQueryResults(e,t,r,n){let a=t.map(u=>this.serializer.typedToString(u)),o=t.map(u=>this.serializer.typedToNative(u)[1]),s={};if(!e.results)return{values:a,valuesRaw:o,results:s};let c=u=>{let d=u.split(".").slice(1).map(C=>parseInt(C)-1);if(d.length===0)return;let m=o[d[0]];for(let C=1;C<d.length;C++){if(m==null)return;m=m[d[C]]}return m};for(let[u,d]of Object.entries(e.results)){if(d.startsWith(ft.Transform.Prefix))continue;let m=gt(d);if(m!==null&&m!==r){s[u]=null;continue}d.startsWith("out.")||d==="out"||d.startsWith("out[")?s[u]=c(d)||null:s[u]=d}return{values:a,valuesRaw:o,results:await Y(e,s,r,n,this.serializer.coreSerializer)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,u=this;async function d(h,S=[]){if(s.has(h))return s.get(h);if(c.has(h))throw new Error(`Circular dependency detected at action ${h}`);c.add(h);let A=t.actions[h-1];if(!A)throw new Error(`Action ${h} not found`);let E;if(A.type==="query")E=await n.executeQuery(t,h,S);else if(A.type==="collect")E=await n.executeCollect(t,h,S,o);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(s.set(h,E),t.results)for(let B of Object.values(t.results)){let W=String(B).match(/^out\[(\d+)\]/);if(W){let R=parseInt(W[1],10);R!==h&&!s.has(R)&&await d(R)}}return c.delete(h),E}await d(r,a);let m={};for(let h of s.values())for(let[S,A]of Object.entries(h.results))A!==null?m[S]=A:S in m||(m[S]=null);let C=await Y(t,m,r,a,this.serializer.coreSerializer,this.config.transform?.runner);return{...s.get(r),action:r,results:C}}};var Nr="EGLD-000000",Z=class{constructor(e,t,r){this.config=e;this.chain=t;this.typeRegistry=r;this.serializer=new U({typeRegistry:this.typeRegistry}),this.abi=new N(this.config,this.chain),this.results=new F(this.config,this.chain,this.typeRegistry)}async createTransaction(e){let t=Ae(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=Ee(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=M.newFromBech32(t),n=new yt({chainID:e.chain.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null,o=e.transfers.length===1&&e.transfers[0].identifier===this.chain.nativeToken?.identifier,c=(o?e.transfers[0].amount:0n)+e.value;return await new Er({config:n}).createTransactionForTransfer(r,{receiver:M.newFromBech32(e.destination),nativeAmount:c,tokenTransfers:o?[]:this.toTokenTransfers(e.transfers),data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=Ee(this.config,e.chain.name);if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=Ae(e.warp,e.action),n=M.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new yt({chainID:e.chain.chainId});return new vr({config:o}).createTransactionForExecute(n,{contract:M.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,tokenTransfers:this.toTokenTransfers(e.transfers),nativeTransferAmount:e.value})}async executeQuery(e){let t=Ae(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(I=>this.serializer.stringToTyped(I)),a=f(e.chain,this.config.env,this.config),o=M.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),u=await s.runQuery(c),d=u.returnCode==="ok",m=new Wr,C=r.getEndpoint(u.function||t.func||""),v=(u.returnDataParts||[]).map(I=>Buffer.from(I)),h=m.buffersToValues(v,C.output),{values:S,valuesRaw:A,results:E}=await this.results.extractQueryResults(e.warp,h,e.action,e.resolvedInputs),B=Br(this.config,[],e.warp,e.action,E);return{success:d,warp:e.warp,action:e.action,user:Ee(this.config,e.chain.name),txHash:null,tx:null,next:B,values:S,valuesRaw:A,results:E,messages:Ir(e.warp,E)}}async signMessage(e,t){let r=br.fromString(t);return(await new Sr(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}toTokenTransfers(e){return e.map(t=>t.identifier===this.chain.nativeToken.identifier?{...t,identifier:Nr}:t).map(t=>{let n=new xr().extractNonceFromExtendedIdentifier(t.identifier);return new Ar({token:new Tr({identifier:t.identifier,nonce:BigInt(n||0)}),amount:t.amount})})}};var ee=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=Ye[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let a=P[t];if(a)return a}if(e){let a=P[e];if(a)return a}let r=this.getPrimaryExplorer();return P[r]||P[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getAssetUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=P[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=P[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Ct,Address as g,AddressValue as Se,BytesValue as w,SmartContractTransactionsFactory as Pr,TransactionsFactoryConfig as Vr}from"@multiversx/sdk-core";import{getWarpWalletAddressFromConfig as kr,WarpCache as Fr,WarpCacheKey as Ie,WarpLogger as Be}from"@vleap/warps";var be={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var x=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var te=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),wt=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var re=class{constructor(e,t){this.config=e;this.chain=t;this.cache=new Fr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=kr(this.config,this.chain.name)}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=g.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[w.fromHex(e),w.fromUTF8(t),w.fromHex(r)]:t?[w.fromHex(e),w.fromUTF8(t)]:[w.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:g.newFromBech32(x(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:g.newFromBech32(x(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[w.fromHex(e)]})}async createWarpUpgradeTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(n,{contract:g.newFromBech32(x(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:r?[w.fromUTF8(e),w.fromHex(t),w.fromHex(r)]:[w.fromUTF8(e),w.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:g.newFromBech32(x(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e),w.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:g.newFromBech32(x(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[w.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:g.newFromBech32(x(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[w.fromHex(e),new Se(new g(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=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:g.newFromBech32(x(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=g.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:g.newFromBech32(x(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[w.fromHex(e),w.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=Ie.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Be.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=g.newFromBech32(x(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[w.fromUTF8(e)]}),c=await o.runQuery(s),[u]=o.parseQueryResponse(c),d=u?te(u):null,m=d?.brand?await this.fetchBrand(d.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:d,brand:m},t.ttl),{registryInfo:d,brand:m}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=Ie.RegistryInfo(this.config.env,e);if(t){let m=this.cache.get(r);if(m)return Be.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),m}let n=g.newFromBech32(x(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[w.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),u=c?te(c):null,d=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:d},t.ttl),{registryInfo:u,brand:d}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=g.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new Se(new g(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map(te)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=g.newFromBech32(x(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new Se(new g(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(m=>m.toString("hex")),u={ttl:365*24*60*60};return(await Promise.all(c.map(m=>this.fetchBrand(m,u)))).filter(m=>m!==null)}catch{return[]}}async fetchBrand(e,t){let r=Ie.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return Be.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=f(this.chain,this.config.env,this.config).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={chain:this.chain.name,hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=g.newFromBech32(x(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?wt(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new Vr({chainID:this.chain.chainId}),t=Ct.create(be);return new Pr({config:e,abi:t})}getController(){let e=f(this.chain,this.config.env,this.config),t=Ct.create(be);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};import{Account as Rr,Mnemonic as Wt,UserSecretKey as ne,UserSigner as Mr}from"@multiversx/sdk-core";import{CacheTtl as Or,getWarpWalletAddressFromConfig as Lr,getWarpWalletPrivateKeyFromConfig as vt,WarpCache as Dr}from"@vleap/warps";var ae=class{constructor(e,t){this.config=e;this.chain=t;this.entry=f(t,e.env,e),this.provider=this.entry.createNetworkProvider(),this.cache=new Dr(e.cache?.type)}async signTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");let t=vt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?ne.fromPem(t):ne.fromString(t),a=new Rr(n);if(e.nonce===0n){let o=await this.entry.recallAccountNonce(a.address),s=this.cache.get(`nonce:${a.address.toBech32()}`)||0,c=BigInt(Math.max(s,Number(o)));e.nonce=c}return e.signature=await a.signTransaction(e),this.cache.set(`nonce:${a.address.toBech32()}`,Number(a.nonce),Or.OneHour),e}async signMessage(e){let t=vt(this.config,this.chain.name);if(!t)throw new Error("Wallet not initialized - no private key provided");let n=t.startsWith("-----")?ne.fromPem(t):ne.fromString(t),a=new Mr(n),o=new TextEncoder().encode(e),s=await a.sign(o);return Buffer.from(s).toString("hex")}async sendTransaction(e){if(!e||typeof e!="object")throw new Error("Invalid transaction object");if(!e.signature)throw new Error("Transaction must be signed before sending");return await this.entry.sendTransaction(e)}create(e){let r=Wt.fromString(e).deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:e}}generate(){let e=Wt.generate(),t=e.toString(),r=e.deriveKey(0),n=r.hex();return{address:r.generatePublicKey().toAddress(this.chain.addressHrp).toBech32(),privateKey:n,mnemonic:t}}getAddress(){return Lr(this.config,this.chain.name)}};var se=(i,e,t)=>(r,n)=>{let a=t[r.env],o=new _r;return o.registerType("token",{stringToNative:s=>s,nativeToString:s=>`token:${s}`}),o.registerType("codemeta",{stringToNative:s=>s,nativeToString:s=>`codemeta:${s}`}),o.registerTypeAlias("list","vector"),{chain:i,chainInfo:a,prefix:e,builder:()=>new G(r,a),executor:new Z(r,a,o),results:new F(r,a,o),serializer:new U({typeRegistry:o}),registry:new re(r,a),explorer:new ee(i,r),abiBuilder:()=>new N(r,a),brandBuilder:()=>new H(r,a),dataLoader:new z(r,a),wallet:new ae(r,a)}};var Ne={chain:O.Multiversx,identifier:"EGLD",name:"eGold",symbol:"EGLD",decimals:18,logoUrl:"https://vleap.ai/images/tokens/egld.svg"},Tt=se(O.Multiversx,"multiversx",{mainnet:{name:O.Multiversx,displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne},testnet:{name:O.Multiversx,displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://testnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne},devnet:{name:O.Multiversx,displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",defaultApiUrl:"https://devnet-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/multiversx.svg",nativeToken:Ne}});import{WarpChainName as Pe}from"@vleap/warps";var Hr={chain:Pe.Vibechain,identifier:"VIBE",name:"VIBE",symbol:"VIBE",decimals:18,logoUrl:"https://vleap.ai/images/tokens/vibe.svg"},Ue={name:Pe.Vibechain,displayName:"VibeChain",chainId:"V",blockTime:600,addressHrp:"vibe",defaultApiUrl:"https://vibeox-api.multiversx.com",logoUrl:"https://vleap.ai/images/chains/vibechain.svg",nativeToken:Hr},xt=se(Pe.Vibechain,"vibe",{mainnet:Ue,testnet:Ue,devnet:Ue});var zi=(i,e)=>[Tt(i,e),xt(i,e)],Ki=()=>[At.Multiversx,At.Vibechain];import{WarpSerializer as ie}from"@vleap/warps";var io=i=>new ie().nativeToString(y.Token,i),oo=i=>new ie().nativeToString(y.CodeMeta,i),co=(i,e)=>new ie().nativeToString(y.Optional,i),po=i=>new ie().nativeToString(y.List,i);import{Address as Gr,AddressValue as $r,BigUIntType as zr,BigUIntValue as Et,BooleanValue as Kr,BytesValue as qr,CodeMetadata as Qr,CodeMetadataValue as jr,CompositeType as Xr,CompositeValue as Jr,Field as Ve,FieldDefinition as ke,List as Yr,NothingValue as Zr,OptionalValue as Fe,OptionValue as Re,StringValue as en,Struct as tn,StructType as rn,TokenIdentifierType as nn,TokenIdentifierValue as bt,U16Value as an,U32Value as sn,U64Type as on,U64Value as St,U8Value as cn,VariadicValue as pn}from"@multiversx/sdk-core";var fo=(i,e)=>i?Re.newProvided(i):e?Re.newMissingTyped(e):Re.newMissing(),yo=(i,e)=>i?new Fe(i.getType(),i):e?new Fe(e):Fe.newMissing(),wo=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new Yr(e,i)},Co=i=>pn.fromItems(...i),Wo=i=>{let e=i.map(t=>t.getType());return new Jr(new Xr(...e),i)},vo=i=>en.fromUTF8(i),To=i=>new cn(i),xo=i=>new an(i),Ao=i=>new sn(i),Eo=i=>new St(i),bo=i=>new Et(BigInt(i)),So=i=>new Kr(i),Io=i=>new $r(Gr.newFromBech32(i)),Bo=i=>new bt(i),No=i=>qr.fromHex(i),Uo=i=>new tn(new rn("EsdtTokenPayment",[new ke("token_identifier","",new nn),new ke("token_nonce","",new on),new ke("amount","",new zr)]),[new Ve(new bt(i.token.identifier),"token_identifier"),new Ve(new St(BigInt(i.token.nonce)),"token_nonce"),new Ve(new Et(BigInt(i.amount)),"amount")]),Po=i=>new jr(Qr.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Vo=()=>new Zr;export{P as ExplorerUrls,Xe as KnownTokens,sr as MultiversxExplorers,Ye as MultiversxExplorersConfig,Ne as NativeTokenEgld,Hr as NativeTokenVibe,ir as VibechainExplorers,N as WarpMultiversxAbiBuilder,H as WarpMultiversxBrandBuilder,G as WarpMultiversxBuilder,Ha as WarpMultiversxConstants,_ as WarpMultiversxContractLoader,z as WarpMultiversxDataLoader,Z as WarpMultiversxExecutor,ee as WarpMultiversxExplorer,y as WarpMultiversxInputTypes,re as WarpMultiversxRegistry,F as WarpMultiversxResults,U as WarpMultiversxSerializer,ae as WarpMultiversxWallet,Io as address_value,Uo as asset_value,bo as biguint_value,So as boolean_value,oo as codemeta,Po as codemeta_value,Wo as composite_value,se as createMultiversxAdapter,Je as findKnownTokenById,zi as getAllMultiversxAdapters,Ki as getAllMultiversxChainNames,Ea as getKnownTokensForChain,Tt as getMultiversxAdapter,f as getMultiversxEntrypoint,x as getMultiversxRegistryAddress,D as getNormalizedTokenIdentifier,xt as getVibechainAdapter,No as hex_value,k as isNativeToken,po as list,wo as list_value,Vo as nothing_value,co as option,fo as option_value,yo as optional_value,vo as string_value,wt as toTypedConfigInfo,te as toTypedRegistryInfo,io as token,Bo as token_value,xo as u16_value,Ao as u32_value,Eo as u64_value,To as u8_value,Co as variadic_value};
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@vleap/warps-adapter-multiversx",
3
- "version": "0.2.0-alpha.6",
3
+ "version": "0.2.0-alpha.60",
4
4
  "description": "",
5
- "main": "./dist/index.js",
5
+ "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
- "module": "./dist/index.js",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "default": "./dist/index.mjs"
13
+ }
14
+ },
8
15
  "scripts": {
9
16
  "build": "tsup",
10
- "test": "jest --config jest.config.js",
17
+ "test": "jest --config jest.config.mjs",
11
18
  "lint": "tsc --noEmit",
12
19
  "prepare": "npm run build",
13
20
  "preversion": "npm run lint && npm run build"
@@ -18,19 +25,19 @@
18
25
  "dist"
19
26
  ],
20
27
  "devDependencies": {
21
- "@types/jest": "^29.5.14",
22
- "jest": "^30.0.0",
23
- "jest-environment-jsdom": "^30.0.0",
28
+ "@types/jest": "^30.0.0",
29
+ "jest": "^30.1.3",
30
+ "jest-environment-jsdom": "^30.1.2",
24
31
  "jest-fetch-mock": "^3.0.3",
25
- "ts-jest": "^29.4.0",
32
+ "ts-jest": "^29.4.1",
26
33
  "tsup": "^8.5.0",
27
- "typescript": "^5.8.3"
34
+ "typescript": "^5.9.2"
28
35
  },
29
36
  "publishConfig": {
30
37
  "access": "public"
31
38
  },
32
39
  "dependencies": {
33
- "@multiversx/sdk-core": "^14.2.1",
34
- "@vleap/warps": "^3.0.0-alpha.40"
40
+ "@multiversx/sdk-core": "^15.1.1",
41
+ "@vleap/warps": "^3.0.0-alpha.113"
35
42
  }
36
43
  }
package/dist/index.d.mts DELETED
@@ -1,160 +0,0 @@
1
- import { WarpInitConfig, Adapter, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, AdapterWarpBuilder, Warp, WarpChainInfo, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, WarpChainEnv, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, WarpChain, AdapterWarpResults, WarpActionIndex, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
2
- import { TypedValue, Type, OptionValue, OptionalValue, List, VariadicValue, CompositeValue, StringValue, U8Value, U16Value, U32Value, U64Value, BigUIntValue, BooleanValue, AddressValue, TokenIdentifierValue, BytesValue, TokenTransfer, Struct, CodeMetadataValue, NothingValue, TransactionOnNetwork, AbiRegistry, Transaction, NetworkEntrypoint, Address } from '@multiversx/sdk-core';
3
-
4
- declare const WarpMultiversxConstants: {
5
- Egld: {
6
- Identifier: string;
7
- EsdtIdentifier: string;
8
- DisplayName: string;
9
- Decimals: number;
10
- };
11
- };
12
-
13
- declare const getMultiversxAdapter: (config: WarpInitConfig) => Adapter;
14
-
15
- declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
16
- declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
17
- declare const list_value: (values: TypedValue[]) => List;
18
- declare const variadic_value: (values: TypedValue[]) => VariadicValue;
19
- declare const composite_value: (values: TypedValue[]) => CompositeValue;
20
- declare const string_value: (value: string) => StringValue;
21
- declare const u8_value: (value: number) => U8Value;
22
- declare const u16_value: (value: number) => U16Value;
23
- declare const u32_value: (value: number) => U32Value;
24
- declare const u64_value: (value: bigint) => U64Value;
25
- declare const biguint_value: (value: bigint | string | number) => BigUIntValue;
26
- declare const boolean_value: (value: boolean) => BooleanValue;
27
- declare const address_value: (value: string) => AddressValue;
28
- declare const token_value: (value: string) => TokenIdentifierValue;
29
- declare const hex_value: (value: string) => BytesValue;
30
- declare const esdt_value: (value: TokenTransfer) => Struct;
31
- declare const codemeta_value: (hexString: string) => CodeMetadataValue;
32
- declare const nothing_value: () => NothingValue;
33
-
34
- declare class WarpMultiversxAbi {
35
- private readonly config;
36
- private readonly contractLoader;
37
- private readonly cache;
38
- constructor(config: WarpInitConfig);
39
- createFromRaw(encoded: string): Promise<WarpAbi>;
40
- createFromTransaction(tx: TransactionOnNetwork): Promise<WarpAbi>;
41
- createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<WarpAbi | null>;
42
- getAbiForAction(action: WarpContractAction | WarpQueryAction): Promise<AbiRegistry>;
43
- fetchAbi(action: WarpContractAction | WarpQueryAction): Promise<AbiRegistry>;
44
- }
45
-
46
- declare class WarpMultiversxBrandBuilder {
47
- private config;
48
- private core;
49
- constructor(config: WarpInitConfig);
50
- createInscriptionTransaction(brand: WarpBrand): Transaction;
51
- createFromTransaction(tx: TransactionOnNetwork, validateSchema?: boolean): Promise<WarpBrand>;
52
- createFromTransactionHash(hash: string): Promise<WarpBrand | null>;
53
- }
54
-
55
- declare class WarpMultiversxBuilder implements AdapterWarpBuilder {
56
- private config;
57
- private cache;
58
- private core;
59
- constructor(config: WarpInitConfig);
60
- createInscriptionTransaction(warp: Warp): Transaction;
61
- createFromTransaction(tx: TransactionOnNetwork, validate?: boolean): Promise<Warp>;
62
- createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<Warp | null>;
63
- }
64
-
65
- declare class WarpMultiversxContractLoader {
66
- private readonly config;
67
- constructor(config: WarpInitConfig);
68
- getContract(address: string, chain: WarpChainInfo): Promise<WarpContract | null>;
69
- getVerificationInfo(address: string, chain: WarpChainInfo): Promise<WarpContractVerification | null>;
70
- }
71
-
72
- declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
73
- private readonly config;
74
- private readonly serializer;
75
- private readonly abi;
76
- private readonly results;
77
- constructor(config: WarpInitConfig);
78
- createTransaction(executable: WarpExecutable): Promise<Transaction>;
79
- createTransferTransaction(executable: WarpExecutable): Promise<Transaction>;
80
- createContractCallTransaction(executable: WarpExecutable): Promise<Transaction>;
81
- executeQuery(executable: WarpExecutable): Promise<WarpExecution>;
82
- preprocessInput(chain: WarpChainInfo, input: string, type: WarpActionInputType, value: string): Promise<string>;
83
- static getChainEntrypoint(chainInfo: WarpChainInfo, env: WarpChainEnv): NetworkEntrypoint;
84
- }
85
-
86
- declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
87
- private config;
88
- private cache;
89
- registryConfig: WarpRegistryConfigInfo;
90
- constructor(config: WarpInitConfig);
91
- init(): Promise<void>;
92
- createWarpRegisterTransaction(txHash: string, alias?: string | null, brand?: string | null): Transaction;
93
- createWarpUnregisterTransaction(txHash: string): Transaction;
94
- createWarpUpgradeTransaction(alias: string, txHash: string): Transaction;
95
- createWarpAliasSetTransaction(txHash: string, alias: string): Transaction;
96
- createWarpVerifyTransaction(txHash: string): Transaction;
97
- createWarpTransferOwnershipTransaction(txHash: string, newOwner: string): Transaction;
98
- createBrandRegisterTransaction(txHash: string): Transaction;
99
- createWarpBrandingTransaction(warpHash: string, brandHash: string): Transaction;
100
- getInfoByAlias(alias: string, cache?: WarpCacheConfig): Promise<{
101
- registryInfo: WarpRegistryInfo | null;
102
- brand: WarpBrand | null;
103
- }>;
104
- getInfoByHash(hash: string, cache?: WarpCacheConfig): Promise<{
105
- registryInfo: WarpRegistryInfo | null;
106
- brand: WarpBrand | null;
107
- }>;
108
- getUserWarpRegistryInfos(user?: string): Promise<WarpRegistryInfo[]>;
109
- getUserBrands(user?: string): Promise<WarpBrand[]>;
110
- getChainInfos(cache?: WarpCacheConfig): Promise<WarpChainInfo[]>;
111
- getChainInfo(chain: WarpChain, cache?: WarpCacheConfig): Promise<WarpChainInfo | null>;
112
- setChain(info: WarpChainInfo): Promise<Transaction>;
113
- removeChain(chain: WarpChain): Promise<Transaction>;
114
- fetchBrand(hash: string, cache?: WarpCacheConfig): Promise<WarpBrand | null>;
115
- getRegistryContractAddress(): Address;
116
- private loadRegistryConfigs;
117
- private getFactory;
118
- private getController;
119
- private isCurrentUserAdmin;
120
- }
121
-
122
- declare class WarpMultiversxResults implements AdapterWarpResults {
123
- private readonly config;
124
- private readonly abi;
125
- private readonly serializer;
126
- private readonly cache;
127
- constructor(config: WarpInitConfig);
128
- getTransactionExecutionResults(warp: Warp, actionIndex: WarpActionIndex, tx: TransactionOnNetwork): Promise<WarpExecution>;
129
- extractContractResults(warp: Warp, actionIndex: WarpActionIndex, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
130
- values: any[];
131
- results: WarpExecutionResults;
132
- }>;
133
- extractQueryResults(warp: Warp, typedValues: TypedValue[], actionIndex: number, inputs: ResolvedInput[]): Promise<{
134
- values: any[];
135
- results: WarpExecutionResults;
136
- }>;
137
- resolveWarpResultsRecursively(props: {
138
- warp: Warp;
139
- entryActionIndex: number;
140
- executor: {
141
- executeQuery: Function;
142
- executeCollect: Function;
143
- };
144
- inputs: ResolvedInput[];
145
- meta?: Record<string, any>;
146
- }): Promise<any>;
147
- }
148
-
149
- declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
150
- readonly coreSerializer: WarpSerializer;
151
- constructor();
152
- typedToString(value: TypedValue): string;
153
- typedToNative(value: TypedValue): [WarpActionInputType, WarpNativeValue];
154
- nativeToTyped(type: WarpActionInputType, value: WarpNativeValue): TypedValue;
155
- nativeToType(type: BaseWarpActionInputType): WarpAdapterGenericType;
156
- stringToTyped(value: string): TypedValue;
157
- typeToString(type: Type): WarpActionInputType;
158
- }
159
-
160
- export { WarpMultiversxAbi, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxAdapter, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };