@vleap/warps-adapter-multiversx 0.2.0-alpha.19 → 0.2.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +61 -23
- package/dist/index.d.ts +61 -23
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { WarpChainEnv,
|
|
1
|
+
import { WarpChainEnv, AdapterWarpAbiBuilder, WarpClientConfig, WarpChain, WarpChainInfo, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, AdapterWarpExplorer, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
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 } from '@multiversx/sdk-core';
|
|
3
3
|
|
|
4
4
|
declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
|
|
5
5
|
|
|
6
6
|
declare const WarpMultiversxConstants: {
|
|
7
|
-
ChainName: string;
|
|
8
|
-
ChainPrefix: string;
|
|
9
7
|
Egld: {
|
|
10
8
|
Identifier: string;
|
|
11
9
|
EsdtIdentifier: string;
|
|
@@ -13,8 +11,30 @@ declare const WarpMultiversxConstants: {
|
|
|
13
11
|
Decimals: number;
|
|
14
12
|
};
|
|
15
13
|
};
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
declare enum MultiversxExplorers {
|
|
15
|
+
MultiversxExplorer = "multiversx_explorer",
|
|
16
|
+
MultiversxExplorerDevnet = "multiversx_explorer_devnet",
|
|
17
|
+
MultiversxExplorerTestnet = "multiversx_explorer_testnet"
|
|
18
|
+
}
|
|
19
|
+
declare enum VibechainExplorers {
|
|
20
|
+
VibechainExplorer = "vibechain_explorer",
|
|
21
|
+
VibechainExplorerDevnet = "vibechain_explorer_devnet",
|
|
22
|
+
VibechainExplorerTestnet = "vibechain_explorer_testnet"
|
|
23
|
+
}
|
|
24
|
+
type ExplorerName = MultiversxExplorers | VibechainExplorers;
|
|
25
|
+
declare const MultiversxExplorersConfig: {
|
|
26
|
+
readonly multiversx: {
|
|
27
|
+
readonly mainnet: readonly [MultiversxExplorers.MultiversxExplorer];
|
|
28
|
+
readonly testnet: readonly [MultiversxExplorers.MultiversxExplorerTestnet];
|
|
29
|
+
readonly devnet: readonly [MultiversxExplorers.MultiversxExplorerDevnet];
|
|
30
|
+
};
|
|
31
|
+
readonly vibechain: {
|
|
32
|
+
readonly mainnet: readonly [VibechainExplorers.VibechainExplorer];
|
|
33
|
+
readonly testnet: readonly [VibechainExplorers.VibechainExplorerTestnet];
|
|
34
|
+
readonly devnet: readonly [VibechainExplorers.VibechainExplorerDevnet];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
declare const ExplorerUrls: Record<ExplorerName, string>;
|
|
18
38
|
|
|
19
39
|
declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
|
|
20
40
|
declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
|
|
@@ -37,9 +57,11 @@ declare const nothing_value: () => NothingValue;
|
|
|
37
57
|
|
|
38
58
|
declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
|
|
39
59
|
private readonly config;
|
|
60
|
+
private readonly chain;
|
|
61
|
+
private readonly chainInfo;
|
|
40
62
|
private readonly contractLoader;
|
|
41
63
|
private readonly cache;
|
|
42
|
-
constructor(config: WarpClientConfig);
|
|
64
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
43
65
|
createFromRaw(encoded: string): Promise<WarpAbi>;
|
|
44
66
|
createFromTransaction(tx: TransactionOnNetwork): Promise<WarpAbi>;
|
|
45
67
|
createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<WarpAbi | null>;
|
|
@@ -48,9 +70,11 @@ declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
|
|
|
48
70
|
}
|
|
49
71
|
|
|
50
72
|
declare class WarpMultiversxBrandBuilder {
|
|
51
|
-
private config;
|
|
52
|
-
private
|
|
53
|
-
|
|
73
|
+
private readonly config;
|
|
74
|
+
private readonly chain;
|
|
75
|
+
private readonly chainInfo;
|
|
76
|
+
private readonly core;
|
|
77
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
54
78
|
createInscriptionTransaction(brand: WarpBrand): Promise<Transaction>;
|
|
55
79
|
createFromTransaction(tx: TransactionOnNetwork, validateSchema?: boolean): Promise<WarpBrand>;
|
|
56
80
|
createFromTransactionHash(hash: string): Promise<WarpBrand | null>;
|
|
@@ -58,9 +82,11 @@ declare class WarpMultiversxBrandBuilder {
|
|
|
58
82
|
|
|
59
83
|
declare class WarpMultiversxBuilder extends WarpBuilder implements AdapterWarpBuilder {
|
|
60
84
|
protected readonly config: WarpClientConfig;
|
|
61
|
-
private
|
|
62
|
-
private
|
|
63
|
-
|
|
85
|
+
private readonly chain;
|
|
86
|
+
private readonly chainInfo;
|
|
87
|
+
private readonly cache;
|
|
88
|
+
private readonly core;
|
|
89
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
64
90
|
createInscriptionTransaction(warp: Warp): Promise<Transaction>;
|
|
65
91
|
createFromTransaction(tx: TransactionOnNetwork, validate?: boolean): Promise<Warp>;
|
|
66
92
|
createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<Warp | null>;
|
|
@@ -75,10 +101,12 @@ declare class WarpMultiversxContractLoader {
|
|
|
75
101
|
|
|
76
102
|
declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
|
|
77
103
|
private readonly config;
|
|
104
|
+
private readonly chain;
|
|
105
|
+
private readonly chainInfo;
|
|
78
106
|
private readonly serializer;
|
|
79
107
|
private readonly abi;
|
|
80
108
|
private readonly results;
|
|
81
|
-
constructor(config: WarpClientConfig);
|
|
109
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
82
110
|
createTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
83
111
|
createTransferTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
84
112
|
createContractCallTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
@@ -89,16 +117,28 @@ declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
|
|
|
89
117
|
}
|
|
90
118
|
|
|
91
119
|
declare class WarpMultiversxExplorer implements AdapterWarpExplorer {
|
|
92
|
-
private readonly
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
120
|
+
private readonly chain;
|
|
121
|
+
private readonly config;
|
|
122
|
+
constructor(chain: WarpChain, config: WarpClientConfig);
|
|
123
|
+
private getExplorers;
|
|
124
|
+
private getPrimaryExplorer;
|
|
125
|
+
private getExplorerUrlByName;
|
|
126
|
+
getAccountUrl(address: string, explorer?: ExplorerName): string;
|
|
127
|
+
getTransactionUrl(hash: string, explorer?: ExplorerName): string;
|
|
128
|
+
getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string;
|
|
129
|
+
getTokenUrl(tokenAddress: string, explorer?: ExplorerName): string;
|
|
130
|
+
getContractUrl(contractAddress: string, explorer?: ExplorerName): string;
|
|
131
|
+
getAllExplorers(): readonly ExplorerName[];
|
|
132
|
+
getExplorerByName(name: string): ExplorerName | undefined;
|
|
133
|
+
getAccountUrls(address: string): Record<ExplorerName, string>;
|
|
134
|
+
getTransactionUrls(hash: string): Record<ExplorerName, string>;
|
|
96
135
|
}
|
|
97
136
|
|
|
98
137
|
declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
99
138
|
private config;
|
|
100
139
|
private cache;
|
|
101
140
|
private userWallet;
|
|
141
|
+
private chainInfo;
|
|
102
142
|
registryConfig: WarpRegistryConfigInfo;
|
|
103
143
|
constructor(config: WarpClientConfig);
|
|
104
144
|
init(): Promise<void>;
|
|
@@ -121,10 +161,6 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
|
121
161
|
}>;
|
|
122
162
|
getUserWarpRegistryInfos(user?: string): Promise<WarpRegistryInfo[]>;
|
|
123
163
|
getUserBrands(user?: string): Promise<WarpBrand[]>;
|
|
124
|
-
getChainInfos(cache?: WarpCacheConfig): Promise<WarpChainInfo[]>;
|
|
125
|
-
getChainInfo(chain: WarpChain, cache?: WarpCacheConfig): Promise<WarpChainInfo | null>;
|
|
126
|
-
setChain(info: WarpChainInfo): Promise<Transaction>;
|
|
127
|
-
removeChain(chain: WarpChain): Promise<Transaction>;
|
|
128
164
|
fetchBrand(hash: string, cache?: WarpCacheConfig): Promise<WarpBrand | null>;
|
|
129
165
|
private loadRegistryConfigs;
|
|
130
166
|
private getFactory;
|
|
@@ -134,10 +170,12 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
|
134
170
|
|
|
135
171
|
declare class WarpMultiversxResults implements AdapterWarpResults {
|
|
136
172
|
private readonly config;
|
|
173
|
+
private readonly chain;
|
|
174
|
+
private readonly chainInfo;
|
|
137
175
|
private readonly abi;
|
|
138
176
|
private readonly serializer;
|
|
139
177
|
private readonly cache;
|
|
140
|
-
constructor(config: WarpClientConfig);
|
|
178
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
141
179
|
getTransactionExecutionResults(warp: Warp, tx: TransactionOnNetwork): Promise<WarpExecution>;
|
|
142
180
|
extractContractResults(warp: Warp, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
|
|
143
181
|
values: any[];
|
|
@@ -170,4 +208,4 @@ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
|
|
|
170
208
|
typeToString(type: Type): WarpActionInputType;
|
|
171
209
|
}
|
|
172
210
|
|
|
173
|
-
export { WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value,
|
|
211
|
+
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxRegistryAddress, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { WarpChainEnv,
|
|
1
|
+
import { WarpChainEnv, AdapterWarpAbiBuilder, WarpClientConfig, WarpChain, WarpChainInfo, WarpAbi, WarpCacheConfig, WarpContractAction, WarpQueryAction, WarpBrand, WarpBuilder, AdapterWarpBuilder, Warp, WarpContract, WarpContractVerification, AdapterWarpExecutor, WarpExecutable, WarpExecution, WarpActionInputType, AdapterWarpExplorer, AdapterWarpRegistry, WarpRegistryConfigInfo, WarpRegistryInfo, AdapterWarpResults, ResolvedInput, WarpExecutionResults, AdapterWarpSerializer, WarpSerializer, WarpNativeValue, BaseWarpActionInputType, WarpAdapterGenericType } from '@vleap/warps';
|
|
2
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 } from '@multiversx/sdk-core';
|
|
3
3
|
|
|
4
4
|
declare const getMultiversxRegistryAddress: (env: WarpChainEnv) => "erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36" | "erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe";
|
|
5
5
|
|
|
6
6
|
declare const WarpMultiversxConstants: {
|
|
7
|
-
ChainName: string;
|
|
8
|
-
ChainPrefix: string;
|
|
9
7
|
Egld: {
|
|
10
8
|
Identifier: string;
|
|
11
9
|
EsdtIdentifier: string;
|
|
@@ -13,8 +11,30 @@ declare const WarpMultiversxConstants: {
|
|
|
13
11
|
Decimals: number;
|
|
14
12
|
};
|
|
15
13
|
};
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
declare enum MultiversxExplorers {
|
|
15
|
+
MultiversxExplorer = "multiversx_explorer",
|
|
16
|
+
MultiversxExplorerDevnet = "multiversx_explorer_devnet",
|
|
17
|
+
MultiversxExplorerTestnet = "multiversx_explorer_testnet"
|
|
18
|
+
}
|
|
19
|
+
declare enum VibechainExplorers {
|
|
20
|
+
VibechainExplorer = "vibechain_explorer",
|
|
21
|
+
VibechainExplorerDevnet = "vibechain_explorer_devnet",
|
|
22
|
+
VibechainExplorerTestnet = "vibechain_explorer_testnet"
|
|
23
|
+
}
|
|
24
|
+
type ExplorerName = MultiversxExplorers | VibechainExplorers;
|
|
25
|
+
declare const MultiversxExplorersConfig: {
|
|
26
|
+
readonly multiversx: {
|
|
27
|
+
readonly mainnet: readonly [MultiversxExplorers.MultiversxExplorer];
|
|
28
|
+
readonly testnet: readonly [MultiversxExplorers.MultiversxExplorerTestnet];
|
|
29
|
+
readonly devnet: readonly [MultiversxExplorers.MultiversxExplorerDevnet];
|
|
30
|
+
};
|
|
31
|
+
readonly vibechain: {
|
|
32
|
+
readonly mainnet: readonly [VibechainExplorers.VibechainExplorer];
|
|
33
|
+
readonly testnet: readonly [VibechainExplorers.VibechainExplorerTestnet];
|
|
34
|
+
readonly devnet: readonly [VibechainExplorers.VibechainExplorerDevnet];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
declare const ExplorerUrls: Record<ExplorerName, string>;
|
|
18
38
|
|
|
19
39
|
declare const option_value: (value: TypedValue | null, type?: Type) => OptionValue;
|
|
20
40
|
declare const optional_value: (value: TypedValue | null, type?: Type) => OptionalValue;
|
|
@@ -37,9 +57,11 @@ declare const nothing_value: () => NothingValue;
|
|
|
37
57
|
|
|
38
58
|
declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
|
|
39
59
|
private readonly config;
|
|
60
|
+
private readonly chain;
|
|
61
|
+
private readonly chainInfo;
|
|
40
62
|
private readonly contractLoader;
|
|
41
63
|
private readonly cache;
|
|
42
|
-
constructor(config: WarpClientConfig);
|
|
64
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
43
65
|
createFromRaw(encoded: string): Promise<WarpAbi>;
|
|
44
66
|
createFromTransaction(tx: TransactionOnNetwork): Promise<WarpAbi>;
|
|
45
67
|
createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<WarpAbi | null>;
|
|
@@ -48,9 +70,11 @@ declare class WarpMultiversxAbiBuilder implements AdapterWarpAbiBuilder {
|
|
|
48
70
|
}
|
|
49
71
|
|
|
50
72
|
declare class WarpMultiversxBrandBuilder {
|
|
51
|
-
private config;
|
|
52
|
-
private
|
|
53
|
-
|
|
73
|
+
private readonly config;
|
|
74
|
+
private readonly chain;
|
|
75
|
+
private readonly chainInfo;
|
|
76
|
+
private readonly core;
|
|
77
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
54
78
|
createInscriptionTransaction(brand: WarpBrand): Promise<Transaction>;
|
|
55
79
|
createFromTransaction(tx: TransactionOnNetwork, validateSchema?: boolean): Promise<WarpBrand>;
|
|
56
80
|
createFromTransactionHash(hash: string): Promise<WarpBrand | null>;
|
|
@@ -58,9 +82,11 @@ declare class WarpMultiversxBrandBuilder {
|
|
|
58
82
|
|
|
59
83
|
declare class WarpMultiversxBuilder extends WarpBuilder implements AdapterWarpBuilder {
|
|
60
84
|
protected readonly config: WarpClientConfig;
|
|
61
|
-
private
|
|
62
|
-
private
|
|
63
|
-
|
|
85
|
+
private readonly chain;
|
|
86
|
+
private readonly chainInfo;
|
|
87
|
+
private readonly cache;
|
|
88
|
+
private readonly core;
|
|
89
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
64
90
|
createInscriptionTransaction(warp: Warp): Promise<Transaction>;
|
|
65
91
|
createFromTransaction(tx: TransactionOnNetwork, validate?: boolean): Promise<Warp>;
|
|
66
92
|
createFromTransactionHash(hash: string, cache?: WarpCacheConfig): Promise<Warp | null>;
|
|
@@ -75,10 +101,12 @@ declare class WarpMultiversxContractLoader {
|
|
|
75
101
|
|
|
76
102
|
declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
|
|
77
103
|
private readonly config;
|
|
104
|
+
private readonly chain;
|
|
105
|
+
private readonly chainInfo;
|
|
78
106
|
private readonly serializer;
|
|
79
107
|
private readonly abi;
|
|
80
108
|
private readonly results;
|
|
81
|
-
constructor(config: WarpClientConfig);
|
|
109
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
82
110
|
createTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
83
111
|
createTransferTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
84
112
|
createContractCallTransaction(executable: WarpExecutable): Promise<Transaction>;
|
|
@@ -89,16 +117,28 @@ declare class WarpMultiversxExecutor implements AdapterWarpExecutor {
|
|
|
89
117
|
}
|
|
90
118
|
|
|
91
119
|
declare class WarpMultiversxExplorer implements AdapterWarpExplorer {
|
|
92
|
-
private readonly
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
120
|
+
private readonly chain;
|
|
121
|
+
private readonly config;
|
|
122
|
+
constructor(chain: WarpChain, config: WarpClientConfig);
|
|
123
|
+
private getExplorers;
|
|
124
|
+
private getPrimaryExplorer;
|
|
125
|
+
private getExplorerUrlByName;
|
|
126
|
+
getAccountUrl(address: string, explorer?: ExplorerName): string;
|
|
127
|
+
getTransactionUrl(hash: string, explorer?: ExplorerName): string;
|
|
128
|
+
getBlockUrl(blockNumber: string | number, explorer?: ExplorerName): string;
|
|
129
|
+
getTokenUrl(tokenAddress: string, explorer?: ExplorerName): string;
|
|
130
|
+
getContractUrl(contractAddress: string, explorer?: ExplorerName): string;
|
|
131
|
+
getAllExplorers(): readonly ExplorerName[];
|
|
132
|
+
getExplorerByName(name: string): ExplorerName | undefined;
|
|
133
|
+
getAccountUrls(address: string): Record<ExplorerName, string>;
|
|
134
|
+
getTransactionUrls(hash: string): Record<ExplorerName, string>;
|
|
96
135
|
}
|
|
97
136
|
|
|
98
137
|
declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
99
138
|
private config;
|
|
100
139
|
private cache;
|
|
101
140
|
private userWallet;
|
|
141
|
+
private chainInfo;
|
|
102
142
|
registryConfig: WarpRegistryConfigInfo;
|
|
103
143
|
constructor(config: WarpClientConfig);
|
|
104
144
|
init(): Promise<void>;
|
|
@@ -121,10 +161,6 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
|
121
161
|
}>;
|
|
122
162
|
getUserWarpRegistryInfos(user?: string): Promise<WarpRegistryInfo[]>;
|
|
123
163
|
getUserBrands(user?: string): Promise<WarpBrand[]>;
|
|
124
|
-
getChainInfos(cache?: WarpCacheConfig): Promise<WarpChainInfo[]>;
|
|
125
|
-
getChainInfo(chain: WarpChain, cache?: WarpCacheConfig): Promise<WarpChainInfo | null>;
|
|
126
|
-
setChain(info: WarpChainInfo): Promise<Transaction>;
|
|
127
|
-
removeChain(chain: WarpChain): Promise<Transaction>;
|
|
128
164
|
fetchBrand(hash: string, cache?: WarpCacheConfig): Promise<WarpBrand | null>;
|
|
129
165
|
private loadRegistryConfigs;
|
|
130
166
|
private getFactory;
|
|
@@ -134,10 +170,12 @@ declare class WarpMultiversxRegistry implements AdapterWarpRegistry {
|
|
|
134
170
|
|
|
135
171
|
declare class WarpMultiversxResults implements AdapterWarpResults {
|
|
136
172
|
private readonly config;
|
|
173
|
+
private readonly chain;
|
|
174
|
+
private readonly chainInfo;
|
|
137
175
|
private readonly abi;
|
|
138
176
|
private readonly serializer;
|
|
139
177
|
private readonly cache;
|
|
140
|
-
constructor(config: WarpClientConfig);
|
|
178
|
+
constructor(config: WarpClientConfig, chain: WarpChain, chainInfo: WarpChainInfo);
|
|
141
179
|
getTransactionExecutionResults(warp: Warp, tx: TransactionOnNetwork): Promise<WarpExecution>;
|
|
142
180
|
extractContractResults(warp: Warp, tx: TransactionOnNetwork, inputs: ResolvedInput[]): Promise<{
|
|
143
181
|
values: any[];
|
|
@@ -170,4 +208,4 @@ declare class WarpMultiversxSerializer implements AdapterWarpSerializer {
|
|
|
170
208
|
typeToString(type: Type): WarpActionInputType;
|
|
171
209
|
}
|
|
172
210
|
|
|
173
|
-
export { WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value,
|
|
211
|
+
export { type ExplorerName, ExplorerUrls, MultiversxExplorers, MultiversxExplorersConfig, VibechainExplorers, WarpMultiversxAbiBuilder, WarpMultiversxBrandBuilder, WarpMultiversxBuilder, WarpMultiversxConstants, WarpMultiversxContractLoader, WarpMultiversxExecutor, WarpMultiversxExplorer, WarpMultiversxRegistry, WarpMultiversxResults, WarpMultiversxSerializer, address_value, biguint_value, boolean_value, codemeta_value, composite_value, esdt_value, getMultiversxRegistryAddress, hex_value, list_value, nothing_value, option_value, optional_value, string_value, token_value, u16_value, u32_value, u64_value, u8_value, variadic_value };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Y=Object.defineProperty;var st=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var ct=Object.prototype.hasOwnProperty;var ut=(i,t)=>{for(var e in t)Y(i,e,{get:t[e],enumerable:!0})},pt=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ot(t))!ct.call(i,a)&&a!==e&&Y(i,a,{get:()=>t[a],enumerable:!(r=st(t,a))||r.enumerable});return i};var lt=i=>pt(Y({},"__esModule",{value:!0}),i);var Et={};ut(Et,{WarpMultiversxAbiBuilder:()=>O,WarpMultiversxBrandBuilder:()=>H,WarpMultiversxBuilder:()=>D,WarpMultiversxConstants:()=>V,WarpMultiversxContractLoader:()=>Q,WarpMultiversxExecutor:()=>v,WarpMultiversxExplorer:()=>j,WarpMultiversxRegistry:()=>G,WarpMultiversxResults:()=>N,WarpMultiversxSerializer:()=>_,address_value:()=>vt,biguint_value:()=>Tt,boolean_value:()=>Ct,codemeta_value:()=>At,composite_value:()=>yt,esdt_value:()=>tt,getMultiversxAdapter:()=>z,getMultiversxRegistryAddress:()=>W,hex_value:()=>It,list_value:()=>dt,nothing_value:()=>xt,option_value:()=>ft,optional_value:()=>mt,string_value:()=>P,token_value:()=>bt,u16_value:()=>wt,u32_value:()=>Z,u64_value:()=>Wt,u8_value:()=>ht,variadic_value:()=>gt});module.exports=lt(Et);var W=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var V={ChainName:"multiversx",ChainPrefix:"mvx",Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}};var J=require("@multiversx/sdk-core"),B=require("@vleap/warps");var et=require("@vleap/warps");var d=require("@multiversx/sdk-core"),x=require("@vleap/warps");var q=require("@multiversx/sdk-core"),h=require("@vleap/warps");var n=require("@multiversx/sdk-core"),b=require("@vleap/warps"),nt=new RegExp(`${b.WarpConstants.ArgParamsSeparator}(.*)`),_=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(p=>this.typedToString(p).split(b.WarpConstants.ArgParamsSeparator)[0])[0],s=e.map(p=>this.typedToString(p).split(b.WarpConstants.ArgParamsSeparator)[1]);return`list:${a}:${s.join(",")}`}if(t.hasClassOrSuperclass(n.VariadicValue.ClassName)){let e=t.getItems(),a=e.map(p=>this.typedToString(p).split(b.WarpConstants.ArgParamsSeparator)[0])[0],s=e.map(p=>this.typedToString(p).split(b.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${a}:${s.join(",")}`}if(t.hasClassOrSuperclass(n.CompositeValue.ClassName)){let e=t.getItems(),r=e.map(o=>this.typedToString(o).split(b.WarpConstants.ArgParamsSeparator)[0]),a=e.map(o=>this.typedToString(o).split(b.WarpConstants.ArgParamsSeparator)[1]),s=r.join(b.WarpConstants.ArgCompositeSeparator),p=a.join(b.WarpConstants.ArgCompositeSeparator);return`composite(${s}):${p}`}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().toBech32()}`;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().toString()}`;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,s]=r.split(nt,2),o=s.split(",").map(f=>this.stringToTyped(`${a}:${f}`));return new n.List(this.nativeToType(a),o)}if(e==="variadic"){let[a,s]=r.split(nt,2),o=s.split(",").map(f=>this.stringToTyped(`${a}:${f}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),o)}if(e.startsWith("composite")){let a=e.match(/\(([^)]+)\)/)?.[1],s=r.split(b.WarpConstants.ArgCompositeSeparator),p=a.split(b.WarpConstants.ArgCompositeSeparator),o=s.map((l,m)=>this.stringToTyped(`${p[m]}:${l}`)),f=o.map(l=>l.getType());return new n.CompositeValue(new n.CompositeType(...f),o)}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 N=class{constructor(t){this.config=t;this.abi=new O(t),this.serializer=new _,this.cache=new h.WarpCache(t.cache?.type)}async getTransactionExecutionResults(t,e){let{actionIndex:r}=(0,h.findWarpExecutableAction)(t),a=this.cache.get(h.WarpCacheKey.WarpExecutable(this.config.env,t.meta?.hash||"",r))??[],s=z(this.config),p=await this.extractContractResults(t,e,a),o=(0,h.getNextInfo)(this.config,s,t,r,p),f=(0,h.applyResultsToMessages)(t,p.results);return{success:e.status.isSuccessful(),warp:t,action:r,user:this.config.user?.wallets?.[V.ChainName]||null,txHash:e.hash,next:o,values:p.values,results:p.results,messages:f}}async extractContractResults(t,e,r){let{action:a,actionIndex:s}=(0,h.findWarpExecutableAction)(t),p=[],o={};if(!t.results||a.type!=="contract")return{values:p,results:o};if(!Object.values(t.results).some(I=>I.includes("out")||I.includes("event"))){for(let[I,y]of Object.entries(t.results))o[I]=y;return{values:p,results:await(0,h.evaluateResultsCommon)(t,o,s,r)}}let l=await this.abi.getAbiForAction(a),m=new q.TransactionEventsParser({abi:l}),T=new q.SmartContractTransactionsOutcomeParser({abi:l}).parseExecute({transactionOnNetwork:e,function:a.func||void 0});for(let[I,y]of Object.entries(t.results)){if(y.startsWith(h.WarpConstants.Transform.Prefix))continue;if(y.startsWith("input.")){o[I]=y;continue}let S=(0,h.parseResultsOutIndex)(y);if(S!==null&&S!==s){o[I]=null;continue}let[A,F,k]=y.split(".");if(A==="event"){if(!F||isNaN(Number(k)))continue;let R=Number(k),C=(0,q.findEventsByFirstTopic)(e,F),L=m.parseEvents({events:C})[0],K=Object.values(L)[R]||null;p.push(K),o[I]=K&&K.valueOf()}else if(A==="out"||A.startsWith("out[")){if(!F)continue;let R=Number(F),C=T.values[R-1]||null;k&&(C=C[k]||null),C&&typeof C=="object"&&(C="toFixed"in C?C.toFixed():C.valueOf()),p.push(C),o[I]=C&&C.valueOf()}else o[I]=y}return{values:p,results:await(0,h.evaluateResultsCommon)(t,o,s,r)}}async extractQueryResults(t,e,r,a){let s=e.map(l=>this.serializer.typedToString(l)),p=e.map(l=>this.serializer.typedToNative(l)[1]),o={};if(!t.results)return{values:s,results:o};let f=l=>{let m=l.split(".").slice(1).map(T=>parseInt(T)-1);if(m.length===0)return;let g=p[m[0]];for(let T=1;T<m.length;T++){if(g==null)return;g=g[m[T]]}return g};for(let[l,m]of Object.entries(t.results)){if(m.startsWith(h.WarpConstants.Transform.Prefix))continue;let g=(0,h.parseResultsOutIndex)(m);if(g!==null&&g!==r){o[l]=null;continue}m.startsWith("out.")||m==="out"||m.startsWith("out[")?o[l]=f(m)||null:o[l]=m}return{values:s,results:await(0,h.evaluateResultsCommon)(t,o,r,a)}}async resolveWarpResultsRecursively(t){let e=t.warp,r=t.entryActionIndex,a=t.executor,s=t.inputs,p=t.meta,o=new Map,f=new Set,l=this;async function m(y,S=[]){if(o.has(y))return o.get(y);if(f.has(y))throw new Error(`Circular dependency detected at action ${y}`);f.add(y);let A=e.actions[y-1];if(!A)throw new Error(`Action ${y} not found`);let F;if(A.type==="query")F=await a.executeQuery(e,y,S);else if(A.type==="collect")F=await a.executeCollect(e,y,S,p);else throw new Error(`Unsupported or interactive action type: ${A.type}`);if(o.set(y,F),e.results)for(let k of Object.values(e.results)){let C=String(k).match(/^out\[(\d+)\]/);if(C){let L=parseInt(C[1],10);L!==y&&!o.has(L)&&await m(L)}}return f.delete(y),F}await m(r,s);let g={};for(let y of o.values())for(let[S,A]of Object.entries(y.results))A!==null?g[S]=A:S in g||(g[S]=null);let T=await(0,h.evaluateResultsCommon)(e,g,r,s);return{...o.get(r),action:r,results:T}}};var c=require("@multiversx/sdk-core"),ft=(i,t)=>i?c.OptionValue.newProvided(i):t?c.OptionValue.newMissingTyped(t):c.OptionValue.newMissing(),mt=(i,t)=>i?new c.OptionalValue(i.getType(),i):t?new c.OptionalValue(t):c.OptionalValue.newMissing(),dt=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)},gt=i=>c.VariadicValue.fromItems(...i),yt=i=>{let t=i.map(e=>e.getType());return new c.CompositeValue(new c.CompositeType(...t),i)},P=i=>c.StringValue.fromUTF8(i),ht=i=>new c.U8Value(i),wt=i=>new c.U16Value(i),Z=i=>new c.U32Value(i),Wt=i=>new c.U64Value(i),Tt=i=>new c.BigUIntValue(BigInt(i)),Ct=i=>new c.BooleanValue(i),vt=i=>new c.AddressValue(c.Address.newFromBech32(i)),bt=i=>new c.TokenIdentifierValue(i),It=i=>c.BytesValue.fromHex(i),tt=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")]),At=i=>new c.CodeMetadataValue(c.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),xt=()=>new c.NothingValue;var v=class i{constructor(t){this.config=t;this.serializer=new _,this.abi=new O(this.config),this.results=new N(this.config)}async createTransaction(t){let e=(0,x.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){let e=this.config.user?.wallets?.[t.chain.name];if(!e)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=d.Address.newFromBech32(e),a=new d.TransactionsFactoryConfig({chainID:t.chain.chainId}),s=t.data?Buffer.from(this.serializer.stringToTyped(t.data).valueOf()):null;return new d.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:d.Address.newFromBech32(t.destination),nativeAmount:t.value,data:s?new Uint8Array(s):void 0})}async createContractCallTransaction(t){let e=this.config.user?.wallets?.[t.chain.name];if(!e)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,x.getWarpActionByIndex)(t.warp,t.action),a=d.Address.newFromBech32(e),s=t.args.map(o=>this.serializer.stringToTyped(o)),p=new d.TransactionsFactoryConfig({chainID:t.chain.chainId});return new d.SmartContractTransactionsFactory({config:p}).createTransactionForExecute(a,{contract:d.Address.newFromBech32(t.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:s,nativeTransferAmount:t.value})}async executeQuery(t){let e=(0,x.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(R=>this.serializer.stringToTyped(R)),s=i.getChainEntrypoint(t.chain,this.config.env),p=d.Address.newFromBech32(t.destination),o=s.createSmartContractController(r),f=o.createQuery({contract:p,function:e.func||"",arguments:a}),l=await o.runQuery(f),m=l.returnCode==="ok",g=new d.ArgSerializer,T=r.getEndpoint(l.function||e.func||""),I=(l.returnDataParts||[]).map(R=>Buffer.from(R)),y=g.buffersToValues(I,T.output),{values:S,results:A}=await this.results.extractQueryResults(t.warp,y,t.action,t.resolvedInputs),F=z(this.config),k=(0,x.getNextInfo)(this.config,F,t.warp,t.action,A);return{success:m,warp:t.warp,action:t.action,user:this.config.user?.wallets?.[t.chain.name]||null,txHash:null,next:k,values:S,results:A,messages:(0,x.applyResultsToMessages)(t.warp,A)}}async preprocessInput(t,e,r,a){if(r==="esdt"){let[s,p,o,f]=a.split(x.WarpConstants.ArgCompositeSeparator);if(f)return e;let l=new d.Token({identifier:s,nonce:BigInt(p)});if(!new d.TokenComputer().isFungible(l))return e;let T=(0,x.findKnownTokenById)(s)?.decimals;if(T||(T=(await(await fetch(`${t.apiUrl}/tokens/${s}`)).json()).decimals),!T)throw new Error(`WarpActionExecutor: Decimals not found for token ${s}`);let I=tt(new d.TokenTransfer({token:l,amount:(0,x.shiftBigintBy)(o,T)}));return this.serializer.typedToString(I)+x.WarpConstants.ArgCompositeSeparator+T}return e}static getChainEntrypoint(t,e){let r="warp-sdk";return e==="devnet"?new d.DevnetEntrypoint({url:t.apiUrl,kind:"api",clientName:r}):e==="testnet"?new d.TestnetEntrypoint({url:t.apiUrl,kind:"api",clientName:r}):new d.MainnetEntrypoint({url:t.apiUrl,kind:"api",clientName:r})}async signMessage(t,e){let r=d.UserSecretKey.fromString(e);return(await new d.UserSigner(r).sign(new Uint8Array(Buffer.from(t,"utf-8")))).toString()}};var Q=class{constructor(t){this.config=t}async getContract(t,e){try{let s=await v.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}`);return{address:t,owner:s.ownerAddress,verified:s.isVerified||!1}}catch(r){return et.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(t,e){try{let s=await v.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}/verification`);return{codeHash:s.codeHash,abi:s.source.abi}}catch(r){return et.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var O=class{constructor(t){this.config=t;this.contractLoader=new Q(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={chain:V.ChainName,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},e}async createFromTransactionHash(t,e){let r=B.WarpCacheKey.WarpAbi(this.config.env,t);if(e){let o=this.cache.get(r);if(o)return B.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${t}`),o}let a=(0,B.getMainChainInfo)(this.config),p=v.getChainEntrypoint(a,this.config.env).createNetworkProvider();try{let o=await p.getTransaction(t),f=await this.createFromTransaction(o);return e&&e.ttl&&f&&this.cache.set(r,f,e.ttl),f}catch(o){return B.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",o),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 J.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.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(e);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${t.abi}`);return J.AbiRegistry.create(r.content)}else{let r=await(await fetch(t.abi)).json();return J.AbiRegistry.create(r)}}};var U=require("@multiversx/sdk-core"),M=require("@vleap/warps"),at=require("buffer");var H=class{constructor(t){this.config=t;this.core=new M.WarpBrandBuilder(t)}async createInscriptionTransaction(t){let e=(0,M.getMainChainInfo)(this.config),r=this.config.user?.wallets?.[e.name];if(!r)throw new Error("BrandBuilder: user address not set");let a=new U.TransactionsFactoryConfig({chainID:e.chainId}),s=new U.TransferTransactionsFactory({config:a}),p=U.Address.newFromBech32(r),o=JSON.stringify(t);return await s.createTransactionForNativeTokenTransfer(p,{receiver:U.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(at.Buffer.from(o))})}async createFromTransaction(t,e=!1){return await this.core.createFromRaw(t.data.toString(),e)}async createFromTransactionHash(t){let e=(0,M.getMainChainInfo)(this.config),a=v.getChainEntrypoint(e,this.config.env).createNetworkProvider();try{let s=await a.getTransaction(t);return this.createFromTransaction(s)}catch(s){return M.WarpLogger.error("BrandBuilder: Error creating from transaction hash",s),null}}};var $=require("@multiversx/sdk-core"),E=require("@vleap/warps");var D=class extends E.WarpBuilder{constructor(e){super(e);this.config=e;this.cache=new E.WarpCache(e.cache?.type),this.core=new E.WarpBuilder(e)}async createInscriptionTransaction(e){let r=(0,E.getMainChainInfo)(this.config),a=this.config.user?.wallets?.[r.name];if(!a)throw new Error("WarpBuilder: user address not set");let s=new $.TransactionsFactoryConfig({chainID:r.chainId}),p=new $.TransferTransactionsFactory({config:s}),o=$.Address.newFromBech32(a),f=JSON.stringify(e),l=await p.createTransactionForTransfer(o,{receiver:$.Address.newFromBech32(a),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(f))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromTransaction(e,r=!1){let a=await this.core.createFromRaw(e.data.toString(),r);return a.meta={chain:V.ChainName,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},a}async createFromTransactionHash(e,r){let a=E.WarpCacheKey.Warp(this.config.env,e);if(r){let f=this.cache.get(a);if(f)return E.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${e}`),f}let s=(0,E.getMainChainInfo)(this.config),o=v.getChainEntrypoint(s,this.config.env).createNetworkProvider();try{let f=await o.getTransaction(e),l=await this.createFromTransaction(f);return r&&r.ttl&&l&&this.cache.set(a,l,r.ttl),l}catch(f){return E.WarpLogger.error("WarpBuilder: Error creating from transaction hash",f),null}}};var j=class{constructor(t){this.chainInfo=t}getAccountUrl(t){return`${this.chainInfo.explorerUrl}/accounts/${t}`}getTransactionUrl(t){return`${this.chainInfo.explorerUrl}/transactions/${t}`}};var u=require("@multiversx/sdk-core"),w=require("@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 X=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),it=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(t=>t.toBech32())});var G=class{constructor(t){this.config=t;this.cache=new w.WarpCache(t.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[V.ChainName]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(t,e,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=u.Address.newFromBech32(this.userWallet),s=()=>this.isCurrentUserAdmin()?BigInt(0):e&&r?this.registryConfig.unitPrice*BigInt(3):e?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,p=()=>e&&r?[u.BytesValue.fromHex(t),u.BytesValue.fromUTF8(e),u.BytesValue.fromHex(r)]:e?[u.BytesValue.fromHex(t),u.BytesValue.fromUTF8(e)]:[u.BytesValue.fromHex(t)];return await this.getFactory().createTransactionForExecute(a,{contract:u.Address.newFromBech32(W(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:s(),arguments:p()})}async createWarpUnregisterTransaction(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:u.Address.newFromBech32(W(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(t)]})}async createWarpUpgradeTransaction(t,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 r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(W(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromUTF8(t),u.BytesValue.fromHex(e)]})}async createWarpAliasSetTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(W(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(t),u.BytesValue.fromUTF8(e)]})}async createWarpVerifyTransaction(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:u.Address.newFromBech32(W(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(t)]})}async createWarpTransferOwnershipTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(W(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[u.BytesValue.fromHex(t),new u.AddressValue(new u.Address(e))]})}async createBrandRegisterTransaction(t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:u.Address.newFromBech32(W(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(t)]})}async createWarpBrandingTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:u.Address.newFromBech32(W(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[u.BytesValue.fromHex(t),u.BytesValue.fromHex(e)]})}async getInfoByAlias(t,e){try{let r=w.WarpCacheKey.RegistryInfo(this.config.env,t),a=e?this.cache.get(r):null;if(a)return w.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${t}`),a;let s=u.Address.newFromBech32(W(this.config.env)),p=this.getController(),o=p.createQuery({contract:s,function:"getInfoByAlias",arguments:[u.BytesValue.fromUTF8(t)]}),f=await p.runQuery(o),[l]=p.parseQueryResponse(f),m=l?X(l):null,g=m?.brand?await this.fetchBrand(m.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:m,brand:g},e.ttl),{registryInfo:m,brand:g}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(t,e){try{let r=w.WarpCacheKey.RegistryInfo(this.config.env,t);if(e){let g=this.cache.get(r);if(g)return w.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${t}`),g}let a=u.Address.newFromBech32(W(this.config.env)),s=this.getController(),p=s.createQuery({contract:a,function:"getInfoByHash",arguments:[u.BytesValue.fromHex(t)]}),o=await s.runQuery(p),[f]=s.parseQueryResponse(o),l=f?X(f):null,m=l?.brand?await this.fetchBrand(l.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:l,brand:m},e.ttl),{registryInfo:l,brand:m}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(t){try{let e=t||this.userWallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(W(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserWarps",arguments:[new u.AddressValue(new u.Address(e))]}),p=await a.runQuery(s),[o]=a.parseQueryResponse(p);return o.map(X)}catch{return[]}}async getUserBrands(t){try{let e=t||this.userWallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=u.Address.newFromBech32(W(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getUserBrands",arguments:[new u.AddressValue(new u.Address(e))]}),p=await a.runQuery(s),[o]=a.parseQueryResponse(p),f=o.map(g=>g.toString("hex")),l={ttl:365*24*60*60};return(await Promise.all(f.map(g=>this.fetchBrand(g,l)))).filter(g=>g!==null)}catch{return[]}}async getChainInfos(t){let e=w.WarpCacheKey.ChainInfos(this.config.env);if(t&&t.ttl){let l=this.cache.get(e);if(l)return w.WarpLogger.info("WarpRegistry (getChainInfos): ChainInfos found in cache"),l}let r=u.Address.newFromBech32(W(this.config.env)),a=this.getController(),s=a.createQuery({contract:r,function:"getChains",arguments:[]}),p=await a.runQuery(s),[o]=a.parseQueryResponse(p),f=o.map(w.toTypedChainInfo);if(t&&t.ttl){for(let l of f)this.cache.set(w.WarpCacheKey.ChainInfo(this.config.env,l.chain),l,t.ttl);this.cache.set(e,f,t.ttl)}return f}async getChainInfo(t,e){try{let r=w.WarpCacheKey.ChainInfo(this.config.env,t),a=e?this.cache.get(r):null;if(a)return w.WarpLogger.info(`WarpRegistry (getChainInfo): ChainInfo found in cache: ${t}`),a;let s=u.Address.newFromBech32(W(this.config.env)),p=this.getController(),o=p.createQuery({contract:s,function:"getChain",arguments:[u.BytesValue.fromUTF8(t)]}),f=await p.runQuery(o),[l]=p.parseQueryResponse(f),m=l?(0,w.toTypedChainInfo)(l):null;return e&&e.ttl&&m&&this.cache.set(r,m,e.ttl),m}catch{return null}}async setChain(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=u.Address.newFromBech32(this.userWallet);return this.getFactory().createTransactionForExecute(e,{contract:u.Address.newFromBech32(W(this.config.env)),function:"setChain",gasLimit:BigInt(1e7),arguments:[P(t.name),P(t.displayName),P(t.chainId),Z(t.blockTime),P(t.addressHrp),P(t.apiUrl),P(t.explorerUrl),P(t.nativeToken)]})}async removeChain(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=u.Address.newFromBech32(this.userWallet);return this.getFactory().createTransactionForExecute(e,{contract:u.Address.newFromBech32(W(this.config.env)),function:"removeChain",gasLimit:BigInt(1e7),arguments:[P(t)]})}async fetchBrand(t,e){let r=w.WarpCacheKey.Brand(this.config.env,t),a=e?this.cache.get(r):null;if(a)return w.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${t}`),a;let s=(0,w.getMainChainInfo)(this.config),o=v.getChainEntrypoint(s,this.config.env).createNetworkProvider();try{let f=await o.getTransaction(t),l=JSON.parse(f.data.toString());return l.meta={hash:f.hash,creator:f.sender.toBech32(),createdAt:new Date(f.timestamp*1e3).toISOString()},e&&e.ttl&&this.cache.set(r,l,e.ttl),l}catch{return null}}async loadRegistryConfigs(){let t=u.Address.newFromBech32(W(this.config.env)),e=this.getController(),[r]=await e.query({contract:t,function:"getConfig",arguments:[]}),a=r?it(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let t=(0,w.getMainChainInfo)(this.config),e=new u.TransactionsFactoryConfig({chainID:t.chainId}),r=u.AbiRegistry.create(rt);return new u.SmartContractTransactionsFactory({config:e,abi:r})}getController(){let t=(0,w.getMainChainInfo)(this.config),e=v.getChainEntrypoint(t,this.config.env),r=u.AbiRegistry.create(rt);return e.createSmartContractController(r)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var z=i=>({chain:V.ChainName,prefix:V.ChainPrefix,builder:()=>new D(i),executor:new v(i),results:new N(i),serializer:new _,registry:new G(i),explorer:t=>new j(t),abiBuilder:()=>new O(i),brandBuilder:()=>new H(i)});0&&(module.exports={WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,address_value,biguint_value,boolean_value,codemeta_value,composite_value,esdt_value,getMultiversxAdapter,getMultiversxRegistryAddress,hex_value,list_value,nothing_value,option_value,optional_value,string_value,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
|
1
|
+
"use strict";var J=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ue=Object.getOwnPropertyNames;var pe=Object.prototype.hasOwnProperty;var le=(s,e)=>{for(var t in e)J(s,t,{get:e[t],enumerable:!0})},fe=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ue(e))!pe.call(s,a)&&a!==t&&J(s,a,{get:()=>e[a],enumerable:!(r=ce(e,a))||r.enumerable});return s};var me=s=>fe(J({},"__esModule",{value:!0}),s);var Ue={};le(Ue,{ExplorerUrls:()=>N,MultiversxExplorers:()=>te,MultiversxExplorersConfig:()=>X,VibechainExplorers:()=>re,WarpMultiversxAbiBuilder:()=>U,WarpMultiversxBrandBuilder:()=>L,WarpMultiversxBuilder:()=>q,WarpMultiversxConstants:()=>de,WarpMultiversxContractLoader:()=>$,WarpMultiversxExecutor:()=>T,WarpMultiversxExplorer:()=>D,WarpMultiversxRegistry:()=>H,WarpMultiversxResults:()=>P,WarpMultiversxSerializer:()=>R,address_value:()=>Ie,biguint_value:()=>Ee,boolean_value:()=>Ae,codemeta_value:()=>Se,composite_value:()=>We,esdt_value:()=>Y,getMultiversxRegistryAddress:()=>b,hex_value:()=>Ve,list_value:()=>he,nothing_value:()=>Fe,option_value:()=>ye,optional_value:()=>ge,string_value:()=>Te,token_value:()=>Be,u16_value:()=>Ce,u32_value:()=>ve,u64_value:()=>be,u8_value:()=>xe,variadic_value:()=>we});module.exports=me(Ue);var b=s=>{if(s==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(s==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var de={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},te=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(te||{}),re=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(re||{}),X={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},N={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};var c=require("@multiversx/sdk-core"),ye=(s,e)=>s?c.OptionValue.newProvided(s):e?c.OptionValue.newMissingTyped(e):c.OptionValue.newMissing(),ge=(s,e)=>s?new c.OptionalValue(s.getType(),s):e?new c.OptionalValue(e):c.OptionalValue.newMissing(),he=s=>{if(s.length===0)throw new Error("Cannot create a list from an empty array");let e=s[0].getType();return new c.List(e,s)},we=s=>c.VariadicValue.fromItems(...s),We=s=>{let e=s.map(t=>t.getType());return new c.CompositeValue(new c.CompositeType(...e),s)},Te=s=>c.StringValue.fromUTF8(s),xe=s=>new c.U8Value(s),Ce=s=>new c.U16Value(s),ve=s=>new c.U32Value(s),be=s=>new c.U64Value(s),Ee=s=>new c.BigUIntValue(BigInt(s)),Ae=s=>new c.BooleanValue(s),Ie=s=>new c.AddressValue(c.Address.newFromBech32(s)),Be=s=>new c.TokenIdentifierValue(s),Ve=s=>c.BytesValue.fromHex(s),Y=s=>new c.Struct(new c.StructType("EsdtTokenPayment",[new c.FieldDefinition("token_identifier","",new c.TokenIdentifierType),new c.FieldDefinition("token_nonce","",new c.U64Type),new c.FieldDefinition("amount","",new c.BigUIntType)]),[new c.Field(new c.TokenIdentifierValue(s.token.identifier),"token_identifier"),new c.Field(new c.U64Value(BigInt(s.token.nonce)),"token_nonce"),new c.Field(new c.BigUIntValue(BigInt(s.amount)),"amount")]),Se=s=>new c.CodeMetadataValue(c.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(s,"hex")))),Fe=()=>new c.NothingValue;var j=require("@multiversx/sdk-core"),V=require("@vleap/warps");var Z=require("@vleap/warps");var d=require("@multiversx/sdk-core"),E=require("@vleap/warps");var O=require("@multiversx/sdk-core"),h=require("@vleap/warps");var n=require("@multiversx/sdk-core"),x=require("@vleap/warps"),ne=new RegExp(`${x.WarpConstants.ArgParamsSeparator}(.*)`),R=class{constructor(){this.coreSerializer=new x.WarpSerializer}typedToString(e){if(e.hasClassOrSuperclass(n.OptionValue.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(n.OptionalValue.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(n.List.ClassName)){let t=e.getItems(),a=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[0])[0],i=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[1]);return`list:${a}:${i.join(",")}`}if(e.hasClassOrSuperclass(n.VariadicValue.ClassName)){let t=e.getItems(),a=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[0])[0],i=t.map(u=>this.typedToString(u).split(x.WarpConstants.ArgParamsSeparator)[1]);return`variadic:${a}:${i.join(",")}`}if(e.hasClassOrSuperclass(n.CompositeValue.ClassName)){let t=e.getItems(),r=t.map(o=>this.typedToString(o).split(x.WarpConstants.ArgParamsSeparator)[0]),a=t.map(o=>this.typedToString(o).split(x.WarpConstants.ArgParamsSeparator)[1]),i=r.join(x.WarpConstants.ArgCompositeSeparator),u=a.join(x.WarpConstants.ArgCompositeSeparator);return`composite(${i}):${u}`}if(e.hasClassOrSuperclass(n.BigUIntValue.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.U8Value.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U16Value.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U32Value.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(n.U64Value.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(n.StringValue.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BooleanValue.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.AddressValue.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(n.TokenIdentifierValue.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(n.BytesValue.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(n.CodeMetadataValue.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),a=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${a}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new n.CompositeType(...t.split(x.WarpConstants.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new n.StringType;if(e==="uint8")return new n.U8Type;if(e==="uint16")return new n.U16Type;if(e==="uint32")return new n.U32Type;if(e==="uint64")return new n.U64Type;if(e==="biguint")return new n.BigUIntType;if(e==="bool")return new n.BooleanType;if(e==="address")return new n.AddressType;if(e==="token")return new n.TokenIdentifierType;if(e==="hex")return new n.BytesType;if(e==="codemeta")return new n.CodeMetadataType;if(e==="esdt"||e==="nft")return new n.StructType("EsdtTokenPayment",[new n.FieldDefinition("token_identifier","",new n.TokenIdentifierType),new n.FieldDefinition("token_nonce","",new n.U64Type),new n.FieldDefinition("amount","",new n.BigUIntType)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new n.NothingValue;if(t==="option"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionValue.newMissingTyped(a.getType()):n.OptionValue.newProvided(a)}if(t==="optional"){let a=this.stringToTyped(r);return a instanceof n.NothingValue?n.OptionalValue.newMissing():new n.OptionalValue(a.getType(),a)}if(t==="list"){let[a,i]=r.split(ne,2),o=i.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.List(this.nativeToType(a),o)}if(t==="variadic"){let[a,i]=r.split(ne,2),o=i.split(",").map(l=>this.stringToTyped(`${a}:${l}`));return new n.VariadicValue(new n.VariadicType(this.nativeToType(a)),o)}if(t.startsWith("composite")){let a=t.match(/\(([^)]+)\)/)?.[1],i=r.split(x.WarpConstants.ArgCompositeSeparator),u=a.split(x.WarpConstants.ArgCompositeSeparator),o=i.map((f,m)=>this.stringToTyped(`${u[m]}:${f}`)),l=o.map(f=>f.getType());return new n.CompositeValue(new n.CompositeType(...l),o)}if(t==="string")return r?n.StringValue.fromUTF8(r):new n.NothingValue;if(t==="uint8")return r?new n.U8Value(Number(r)):new n.NothingValue;if(t==="uint16")return r?new n.U16Value(Number(r)):new n.NothingValue;if(t==="uint32")return r?new n.U32Value(Number(r)):new n.NothingValue;if(t==="uint64")return r?new n.U64Value(BigInt(r)):new n.NothingValue;if(t==="biguint")return r?new n.BigUIntValue(BigInt(r)):new n.NothingValue;if(t==="bool")return r?new n.BooleanValue(typeof r=="boolean"?r:r==="true"):new n.NothingValue;if(t==="address")return r?new n.AddressValue(n.Address.newFromBech32(r)):new n.NothingValue;if(t==="token")return r?new n.TokenIdentifierValue(r):new n.NothingValue;if(t==="hex")return r?n.BytesValue.fromHex(r):new n.NothingValue;if(t==="codemeta")return new n.CodeMetadataValue(n.CodeMetadata.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let a=r.split(x.WarpConstants.ArgCompositeSeparator);return new n.Struct(this.nativeToType("esdt"),[new n.Field(new n.TokenIdentifierValue(a[0]),"token_identifier"),new n.Field(new n.U64Value(BigInt(a[1])),"token_nonce"),new n.Field(new n.BigUIntValue(BigInt(a[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof n.OptionType)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.OptionalType)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.ListType)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.VariadicType)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof n.StringType)return"string";if(e instanceof n.U8Type)return"uint8";if(e instanceof n.U16Type)return"uint16";if(e instanceof n.U32Type)return"uint32";if(e instanceof n.U64Type)return"uint64";if(e instanceof n.BigUIntType)return"biguint";if(e instanceof n.BooleanType)return"bool";if(e instanceof n.AddressType)return"address";if(e instanceof n.TokenIdentifierType)return"token";if(e instanceof n.BytesType)return"hex";if(e instanceof n.CodeMetadataType)return"codemeta";if(e instanceof n.StructType&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var P=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new U(e,t,r),this.serializer=new R,this.cache=new h.WarpCache(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=(0,h.findWarpExecutableAction)(e),a=this.cache.get(h.WarpCacheKey.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],i=await this.extractContractResults(e,t,a),u=(0,h.getNextInfo)(this.config,[],e,r,i),o=(0,h.applyResultsToMessages)(e,i.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:u,values:i.values,results:i.results,messages:o}}async extractContractResults(e,t,r){let{action:a,actionIndex:i}=(0,h.findWarpExecutableAction)(e),u=[],o={};if(!e.results||a.type!=="contract")return{values:u,results:o};if(!Object.values(e.results).some(C=>C.includes("out")||C.includes("event"))){for(let[C,g]of Object.entries(e.results))o[C]=g;return{values:u,results:await(0,h.evaluateResultsCommon)(e,o,i,r)}}let f=await this.abi.getAbiForAction(a),m=new O.TransactionEventsParser({abi:f}),w=new O.SmartContractTransactionsOutcomeParser({abi:f}).parseExecute({transactionOnNetwork:t,function:a.func||void 0});for(let[C,g]of Object.entries(e.results)){if(g.startsWith(h.WarpConstants.Transform.Prefix))continue;if(g.startsWith("input.")){o[C]=g;continue}let A=(0,h.parseResultsOutIndex)(g);if(A!==null&&A!==i){o[C]=null;continue}let[v,B,I]=g.split(".");if(v==="event"){if(!B||isNaN(Number(I)))continue;let z=Number(I),W=(0,O.findEventsByFirstTopic)(t,B),M=m.parseEvents({events:W})[0],Q=Object.values(M)[z]||null;u.push(Q),o[C]=Q&&Q.valueOf()}else if(v==="out"||v.startsWith("out[")){if(!B)continue;let z=Number(B),W=w.values[z-1]||null;I&&(W=W[I]||null),W&&typeof W=="object"&&(W="toFixed"in W?W.toFixed():W.valueOf()),u.push(W),o[C]=W&&W.valueOf()}else o[C]=g}return{values:u,results:await(0,h.evaluateResultsCommon)(e,o,i,r)}}async extractQueryResults(e,t,r,a){let i=t.map(f=>this.serializer.typedToString(f)),u=t.map(f=>this.serializer.typedToNative(f)[1]),o={};if(!e.results)return{values:i,results:o};let l=f=>{let m=f.split(".").slice(1).map(w=>parseInt(w)-1);if(m.length===0)return;let y=u[m[0]];for(let w=1;w<m.length;w++){if(y==null)return;y=y[m[w]]}return y};for(let[f,m]of Object.entries(e.results)){if(m.startsWith(h.WarpConstants.Transform.Prefix))continue;let y=(0,h.parseResultsOutIndex)(m);if(y!==null&&y!==r){o[f]=null;continue}m.startsWith("out.")||m==="out"||m.startsWith("out[")?o[f]=l(m)||null:o[f]=m}return{values:i,results:await(0,h.evaluateResultsCommon)(e,o,r,a)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,a=e.executor,i=e.inputs,u=e.meta,o=new Map,l=new Set,f=this;async function m(g,A=[]){if(o.has(g))return o.get(g);if(l.has(g))throw new Error(`Circular dependency detected at action ${g}`);l.add(g);let v=t.actions[g-1];if(!v)throw new Error(`Action ${g} not found`);let B;if(v.type==="query")B=await a.executeQuery(t,g,A);else if(v.type==="collect")B=await a.executeCollect(t,g,A,u);else throw new Error(`Unsupported or interactive action type: ${v.type}`);if(o.set(g,B),t.results)for(let I of Object.values(t.results)){let W=String(I).match(/^out\[(\d+)\]/);if(W){let M=parseInt(W[1],10);M!==g&&!o.has(M)&&await m(M)}}return l.delete(g),B}await m(r,i);let y={};for(let g of o.values())for(let[A,v]of Object.entries(g.results))v!==null?y[A]=v:A in y||(y[A]=null);let w=await(0,h.evaluateResultsCommon)(t,y,r,i);return{...o.get(r),action:r,results:w}}};var T=class s{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new R,this.abi=new U(this.config,this.chain,this.chainInfo),this.results=new P(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=(0,E.getWarpActionByIndex)(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=d.Address.newFromBech32(t),a=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId}),i=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new d.TransferTransactionsFactory({config:a}).createTransactionForTransfer(r,{receiver:d.Address.newFromBech32(e.destination),nativeAmount:e.value,data:i?new Uint8Array(i):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=(0,E.getWarpActionByIndex)(e.warp,e.action),a=d.Address.newFromBech32(t),i=e.args.map(o=>this.serializer.stringToTyped(o)),u=new d.TransactionsFactoryConfig({chainID:e.chainInfo.chainId});return new d.SmartContractTransactionsFactory({config:u}).createTransactionForExecute(a,{contract:d.Address.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:i,nativeTransferAmount:e.value})}async executeQuery(e){let t=(0,E.getWarpActionByIndex)(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),a=e.args.map(I=>this.serializer.stringToTyped(I)),i=s.getChainEntrypoint(e.chainInfo,this.config.env),u=d.Address.newFromBech32(e.destination),o=i.createSmartContractController(r),l=o.createQuery({contract:u,function:t.func||"",arguments:a}),f=await o.runQuery(l),m=f.returnCode==="ok",y=new d.ArgSerializer,w=r.getEndpoint(f.function||t.func||""),C=(f.returnDataParts||[]).map(I=>Buffer.from(I)),g=y.buffersToValues(C,w.output),{values:A,results:v}=await this.results.extractQueryResults(e.warp,g,e.action,e.resolvedInputs),B=(0,E.getNextInfo)(this.config,[],e.warp,e.action,v);return{success:m,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:B,values:A,results:v,messages:(0,E.applyResultsToMessages)(e.warp,v)}}async preprocessInput(e,t,r,a){if(r==="esdt"){let[i,u,o,l]=a.split(E.WarpConstants.ArgCompositeSeparator);if(l)return t;let f=new d.Token({identifier:i,nonce:BigInt(u)});if(!new d.TokenComputer().isFungible(f))return t;let w=(0,E.findKnownTokenById)(i)?.decimals;if(w||(w=(await(await fetch(`${e.apiUrl}/tokens/${i}`)).json()).decimals),!w)throw new Error(`WarpActionExecutor: Decimals not found for token ${i}`);let C=Y(new d.TokenTransfer({token:f,amount:(0,E.shiftBigintBy)(o,w)}));return this.serializer.typedToString(C)+E.WarpConstants.ArgCompositeSeparator+w}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new d.DevnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new d.TestnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r}):new d.MainnetEntrypoint({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=d.UserSecretKey.fromString(t);return(await new d.UserSigner(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var $=class{constructor(e){this.config=e}async getContract(e,t){try{let i=await T.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return Z.WarpLogger.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let i=await T.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return Z.WarpLogger.error("WarpContractLoader: getVerificationInfo error",r),null}}};var U=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new $(this.config),this.cache=new V.WarpCache(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=V.WarpCacheKey.WarpAbi(this.config.env,e);if(t){let u=this.cache.get(r);if(u)return V.WarpLogger.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),u}let i=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let u=await i.getTransaction(e),o=await this.createFromTransaction(u);return t&&t.ttl&&o&&this.cache.set(r,o,t.ttl),o}catch(u){return V.WarpLogger.error("WarpAbiBuilder: Error creating from transaction hash",u),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chainInfo);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return j.AbiRegistry.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(V.WarpConstants.IdentifierType.Hash)){let t=e.abi.split(V.WarpConstants.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return j.AbiRegistry.create(r.content)}else{let r=await(await fetch(e.abi)).json();return j.AbiRegistry.create(r)}}};var k=require("@multiversx/sdk-core"),G=require("@vleap/warps"),ae=require("buffer");var L=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new G.WarpBrandBuilder(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new k.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),a=new k.TransferTransactionsFactory({config:r}),i=k.Address.newFromBech32(t),u=JSON.stringify(e);return await a.createTransactionForNativeTokenTransfer(i,{receiver:k.Address.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(ae.Buffer.from(u))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let a=await r.getTransaction(e);return this.createFromTransaction(a)}catch(a){return G.WarpLogger.error("BrandBuilder: Error creating from transaction hash",a),null}}};var _=require("@multiversx/sdk-core"),S=require("@vleap/warps");var q=class extends S.WarpBuilder{constructor(t,r,a){super(t);this.config=t;this.chain=r;this.chainInfo=a;this.cache=new S.WarpCache(t.cache?.type),this.core=new S.WarpBuilder(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let a=new _.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),i=new _.TransferTransactionsFactory({config:a}),u=_.Address.newFromBech32(r),o=JSON.stringify(t),l=await i.createTransactionForTransfer(u,{receiver:_.Address.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(o))});return l.gasLimit=l.gasLimit+BigInt(2e6),l}async createFromTransaction(t,r=!1){let a=await this.core.createFromRaw(t.data.toString(),r);return a.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},a}async createFromTransactionHash(t,r){let a=S.WarpCacheKey.Warp(this.config.env,t);if(r){let o=this.cache.get(a);if(o)return S.WarpLogger.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),o}let u=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await u.getTransaction(t),l=await this.createFromTransaction(o);return r&&r.ttl&&l&&this.cache.set(a,l,r.ttl),l}catch(o){return S.WarpLogger.error("WarpBuilder: Error creating from transaction hash",o),null}}};var D=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=X[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let i=N[t];if(i)return i}if(e){let i=N[e];if(i)return i}let r=this.getPrimaryExplorer();return N[r]||N[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getTokenUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let i=N[a];i&&(r[a]=`${i}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(a=>{let i=N[a];i&&(r[a]=`${i}/transactions/${e}`)}),r}};var p=require("@multiversx/sdk-core"),F=require("@vleap/warps");var ee={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var ie=(s,e,t)=>(r,a)=>{let i=t[r.env];return{chain:s,chainInfo:i,prefix:e,builder:()=>new q(r,s,i),executor:new T(r,s,i),results:new P(r,s),serializer:new R,registry:new H(r),explorer:new D(s,r),abiBuilder:()=>new U(r,s,i),brandBuilder:()=>new L(r,s,i)}};var se=ie("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var K=s=>({hash:s.hash.toString("hex"),alias:s.alias?.toString()||null,trust:s.trust.toString(),owner:s.owner.toString(),createdAt:s.created_at.toNumber(),upgradedAt:s.upgraded_at?.toNumber(),brand:s.brand?.toString("hex")||null,upgrade:s.upgrade?.toString("hex")||null}),oe=s=>({unitPrice:BigInt(s.unit_price.toString()),admins:s.admins.map(e=>e.toBech32())});var H=class{constructor(e){this.config=e;let t=se(e);this.chainInfo=t.chainInfo,this.cache=new F.WarpCache(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let a=p.Address.newFromBech32(this.userWallet),i=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,u=()=>t&&r?[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t),p.BytesValue.fromHex(r)]:t?[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t)]:[p.BytesValue.fromHex(e)];return await this.getFactory().createTransactionForExecute(a,{contract:p.Address.newFromBech32(b(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:u()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromUTF8(e),p.BytesValue.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e),p.BytesValue.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[p.BytesValue.fromHex(e),new p.AddressValue(new p.Address(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:p.Address.newFromBech32(b(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:p.Address.newFromBech32(b(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[p.BytesValue.fromHex(e),p.BytesValue.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),a;let i=p.Address.newFromBech32(b(this.config.env)),u=this.getController(),o=u.createQuery({contract:i,function:"getInfoByAlias",arguments:[p.BytesValue.fromUTF8(e)]}),l=await u.runQuery(o),[f]=u.parseQueryResponse(l),m=f?K(f):null,y=m?.brand?await this.fetchBrand(m.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:m,brand:y},t.ttl),{registryInfo:m,brand:y}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=F.WarpCacheKey.RegistryInfo(this.config.env,e);if(t){let y=this.cache.get(r);if(y)return F.WarpLogger.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),y}let a=p.Address.newFromBech32(b(this.config.env)),i=this.getController(),u=i.createQuery({contract:a,function:"getInfoByHash",arguments:[p.BytesValue.fromHex(e)]}),o=await i.runQuery(u),[l]=i.parseQueryResponse(o),f=l?K(l):null,m=f?.brand?await this.fetchBrand(f.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:f,brand:m},t.ttl),{registryInfo:f,brand:m}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(b(this.config.env)),a=this.getController(),i=a.createQuery({contract:r,function:"getUserWarps",arguments:[new p.AddressValue(new p.Address(t))]}),u=await a.runQuery(i),[o]=a.parseQueryResponse(u);return o.map(K)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=p.Address.newFromBech32(b(this.config.env)),a=this.getController(),i=a.createQuery({contract:r,function:"getUserBrands",arguments:[new p.AddressValue(new p.Address(t))]}),u=await a.runQuery(i),[o]=a.parseQueryResponse(u),l=o.map(y=>y.toString("hex")),f={ttl:365*24*60*60};return(await Promise.all(l.map(y=>this.fetchBrand(y,f)))).filter(y=>y!==null)}catch{return[]}}async fetchBrand(e,t){let r=F.WarpCacheKey.Brand(this.config.env,e),a=t?this.cache.get(r):null;if(a)return F.WarpLogger.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),a;let u=T.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await u.getTransaction(e),l=JSON.parse(o.data.toString());return l.meta={hash:o.hash,creator:o.sender.toBech32(),createdAt:new Date(o.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,l,t.ttl),l}catch{return null}}async loadRegistryConfigs(){let e=p.Address.newFromBech32(b(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),a=r?oe(r):null;this.registryConfig=a||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new p.TransactionsFactoryConfig({chainID:this.chainInfo.chainId}),t=p.AbiRegistry.create(ee);return new p.SmartContractTransactionsFactory({config:e,abi:t})}getController(){let e=T.getChainEntrypoint(this.chainInfo,this.config.env),t=p.AbiRegistry.create(ee);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};0&&(module.exports={ExplorerUrls,MultiversxExplorers,MultiversxExplorersConfig,VibechainExplorers,WarpMultiversxAbiBuilder,WarpMultiversxBrandBuilder,WarpMultiversxBuilder,WarpMultiversxConstants,WarpMultiversxContractLoader,WarpMultiversxExecutor,WarpMultiversxExplorer,WarpMultiversxRegistry,WarpMultiversxResults,WarpMultiversxSerializer,address_value,biguint_value,boolean_value,codemeta_value,composite_value,esdt_value,getMultiversxRegistryAddress,hex_value,list_value,nothing_value,option_value,optional_value,string_value,token_value,u16_value,u32_value,u64_value,u8_value,variadic_value});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var g=a=>{if(a==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(a==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var A={ChainName:"multiversx",ChainPrefix:"mvx",Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}};import{AbiRegistry as st}from"@multiversx/sdk-core";import{getMainChainInfo as Qt,WarpCache as Xe,WarpCacheKey as Ye,WarpConstants as Ht,WarpLogger as Dt}from"@vleap/warps";import{WarpLogger as zt}from"@vleap/warps";import{Address as _,ArgSerializer as ke,DevnetEntrypoint as Ne,MainnetEntrypoint as Ue,SmartContractTransactionsFactory as Me,TestnetEntrypoint as $e,Token as qe,TokenComputer as Le,TokenTransfer as ze,TransactionsFactoryConfig as qt,TransferTransactionsFactory as Qe,UserSecretKey as He,UserSigner as De}from"@multiversx/sdk-core";import{applyResultsToMessages as je,findKnownTokenById as Ge,getNextInfo as Ke,getWarpActionByIndex as it,shiftBigintBy as Je,WarpConstants as Lt}from"@vleap/warps";import{findEventsByFirstTopic as ue,SmartContractTransactionsOutcomeParser as pe,TransactionEventsParser as le}from"@multiversx/sdk-core";import{applyResultsToMessages as fe,evaluateResultsCommon as N,findWarpExecutableAction as Pt,getNextInfo as me,parseResultsOutIndex as _t,WarpCache as de,WarpCacheKey as ge,WarpConstants as Ot}from"@vleap/warps";import{Address as re,AddressType as pt,AddressValue as lt,BigUIntType as H,BigUIntValue as D,BooleanType as ft,BooleanValue as mt,BytesType as dt,BytesValue as gt,CodeMetadata as ne,CodeMetadataType as yt,CodeMetadataValue as ht,CompositeType as wt,CompositeValue as Wt,Field as j,FieldDefinition as G,List as Tt,ListType as ae,NothingValue as C,OptionalType as ie,OptionalValue as K,OptionType as se,OptionValue as J,StringType as Ct,StringValue as vt,Struct as oe,StructType as bt,TokenIdentifierType as X,TokenIdentifierValue as Y,U16Type as It,U16Value as At,U32Type as xt,U32Value as Bt,U64Type as Z,U64Value as tt,U8Type as Et,U8Value as St,VariadicType as Vt,VariadicValue as Ft}from"@multiversx/sdk-core";import{WarpConstants as v,WarpSerializer as ce}from"@vleap/warps";var Rt=new RegExp(`${v.ArgParamsSeparator}(.*)`),S=class{constructor(){this.coreSerializer=new ce}typedToString(t){if(t.hasClassOrSuperclass(J.ClassName))return t.isSet()?`option:${this.typedToString(t.getTypedValue())}`:"option:null";if(t.hasClassOrSuperclass(K.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(v.ArgParamsSeparator)[0])[0],i=e.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[1]);return`list:${n}:${i.join(",")}`}if(t.hasClassOrSuperclass(Ft.ClassName)){let e=t.getItems(),n=e.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[0])[0],i=e.map(o=>this.typedToString(o).split(v.ArgParamsSeparator)[1]);return`variadic:${n}:${i.join(",")}`}if(t.hasClassOrSuperclass(Wt.ClassName)){let e=t.getItems(),r=e.map(s=>this.typedToString(s).split(v.ArgParamsSeparator)[0]),n=e.map(s=>this.typedToString(s).split(v.ArgParamsSeparator)[1]),i=r.join(v.ArgCompositeSeparator),o=n.join(v.ArgCompositeSeparator);return`composite(${i}):${o}`}if(t.hasClassOrSuperclass(D.ClassName)||t.getType().getName()==="BigUint")return`biguint:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(St.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(tt.ClassName))return`uint64:${BigInt(t.valueOf().toFixed())}`;if(t.hasClassOrSuperclass(vt.ClassName))return`string:${t.valueOf()}`;if(t.hasClassOrSuperclass(mt.ClassName))return`bool:${t.valueOf()}`;if(t.hasClassOrSuperclass(lt.ClassName))return`address:${t.valueOf().toBech32()}`;if(t.hasClassOrSuperclass(Y.ClassName))return`token:${t.valueOf()}`;if(t.hasClassOrSuperclass(gt.ClassName))return`hex:${t.valueOf().toString("hex")}`;if(t.hasClassOrSuperclass(ht.ClassName))return`codemeta:${t.valueOf().toString()}`;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 wt(...e.split(v.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(t==="string")return new Ct;if(t==="uint8")return new Et;if(t==="uint16")return new It;if(t==="uint32")return new xt;if(t==="uint64")return new Z;if(t==="biguint")return new H;if(t==="bool")return new ft;if(t==="address")return new pt;if(t==="token")return new X;if(t==="hex")return new dt;if(t==="codemeta")return new yt;if(t==="esdt"||t==="nft")return new bt("EsdtTokenPayment",[new G("token_identifier","",new X),new G("token_nonce","",new Z),new G("amount","",new H)]);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?K.newMissing():new K(n.getType(),n)}if(e==="list"){let[n,i]=r.split(Rt,2),s=i.split(",").map(u=>this.stringToTyped(`${n}:${u}`));return new Tt(this.nativeToType(n),s)}if(e==="variadic"){let[n,i]=r.split(Rt,2),s=i.split(",").map(u=>this.stringToTyped(`${n}:${u}`));return new Ft(new Vt(this.nativeToType(n)),s)}if(e.startsWith("composite")){let n=e.match(/\(([^)]+)\)/)?.[1],i=r.split(v.ArgCompositeSeparator),o=n.split(v.ArgCompositeSeparator),s=i.map((c,p)=>this.stringToTyped(`${o[p]}:${c}`)),u=s.map(c=>c.getType());return new Wt(new wt(...u),s)}if(e==="string")return r?vt.fromUTF8(r):new C;if(e==="uint8")return r?new St(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 tt(BigInt(r)):new C;if(e==="biguint")return r?new D(BigInt(r)):new C;if(e==="bool")return r?new mt(typeof r=="boolean"?r:r==="true"):new C;if(e==="address")return r?new lt(re.newFromBech32(r)):new C;if(e==="token")return r?new Y(r):new C;if(e==="hex")return r?gt.fromHex(r):new C;if(e==="codemeta")return new ht(ne.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(e==="esdt"){let n=r.split(v.ArgCompositeSeparator);return new oe(this.nativeToType("esdt"),[new j(new Y(n[0]),"token_identifier"),new j(new tt(BigInt(n[1])),"token_nonce"),new j(new D(BigInt(n[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${e}`)}typeToString(t){if(t instanceof se)return"option:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof ie)return"optional:"+this.typeToString(t.getFirstTypeParameter());if(t instanceof ae)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 Et)return"uint8";if(t instanceof It)return"uint16";if(t instanceof xt)return"uint32";if(t instanceof Z)return"uint64";if(t instanceof H)return"biguint";if(t instanceof ft)return"bool";if(t instanceof pt)return"address";if(t instanceof X)return"token";if(t instanceof dt)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 F=class{constructor(t){this.config=t;this.abi=new V(t),this.serializer=new S,this.cache=new de(t.cache?.type)}async getTransactionExecutionResults(t,e){let{actionIndex:r}=Pt(t),n=this.cache.get(ge.WarpExecutable(this.config.env,t.meta?.hash||"",r))??[],i=U(this.config),o=await this.extractContractResults(t,e,n),s=me(this.config,i,t,r,o),u=fe(t,o.results);return{success:e.status.isSuccessful(),warp:t,action:r,user:this.config.user?.wallets?.[A.ChainName]||null,txHash:e.hash,next:s,values:o.values,results:o.results,messages:u}}async extractContractResults(t,e,r){let{action:n,actionIndex:i}=Pt(t),o=[],s={};if(!t.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(t.results).some(W=>W.includes("out")||W.includes("event"))){for(let[W,m]of Object.entries(t.results))s[W]=m;return{values:o,results:await N(t,s,i,r)}}let c=await this.abi.getAbiForAction(n),p=new le({abi:c}),y=new pe({abi:c}).parseExecute({transactionOnNetwork:e,function:n.func||void 0});for(let[W,m]of Object.entries(t.results)){if(m.startsWith(Ot.Transform.Prefix))continue;if(m.startsWith("input.")){s[W]=m;continue}let b=_t(m);if(b!==null&&b!==i){s[W]=null;continue}let[T,I,E]=m.split(".");if(T==="event"){if(!I||isNaN(Number(E)))continue;let x=Number(E),h=ue(e,I),P=p.parseEvents({events:h})[0],k=Object.values(P)[x]||null;o.push(k),s[W]=k&&k.valueOf()}else if(T==="out"||T.startsWith("out[")){if(!I)continue;let x=Number(I),h=y.values[x-1]||null;E&&(h=h[E]||null),h&&typeof h=="object"&&(h="toFixed"in h?h.toFixed():h.valueOf()),o.push(h),s[W]=h&&h.valueOf()}else s[W]=m}return{values:o,results:await N(t,s,i,r)}}async extractQueryResults(t,e,r,n){let i=e.map(c=>this.serializer.typedToString(c)),o=e.map(c=>this.serializer.typedToNative(c)[1]),s={};if(!t.results)return{values:i,results:s};let u=c=>{let p=c.split(".").slice(1).map(y=>parseInt(y)-1);if(p.length===0)return;let f=o[p[0]];for(let y=1;y<p.length;y++){if(f==null)return;f=f[p[y]]}return f};for(let[c,p]of Object.entries(t.results)){if(p.startsWith(Ot.Transform.Prefix))continue;let f=_t(p);if(f!==null&&f!==r){s[c]=null;continue}p.startsWith("out.")||p==="out"||p.startsWith("out[")?s[c]=u(p)||null:s[c]=p}return{values:i,results:await N(t,s,r,n)}}async resolveWarpResultsRecursively(t){let e=t.warp,r=t.entryActionIndex,n=t.executor,i=t.inputs,o=t.meta,s=new Map,u=new Set,c=this;async function p(m,b=[]){if(s.has(m))return s.get(m);if(u.has(m))throw new Error(`Circular dependency detected at action ${m}`);u.add(m);let T=e.actions[m-1];if(!T)throw new Error(`Action ${m} not found`);let I;if(T.type==="query")I=await n.executeQuery(e,m,b);else if(T.type==="collect")I=await n.executeCollect(e,m,b,o);else throw new Error(`Unsupported or interactive action type: ${T.type}`);if(s.set(m,I),e.results)for(let E of Object.values(e.results)){let h=String(E).match(/^out\[(\d+)\]/);if(h){let P=parseInt(h[1],10);P!==m&&!s.has(P)&&await p(P)}}return u.delete(m),I}await p(r,i);let f={};for(let m of s.values())for(let[b,T]of Object.entries(m.results))T!==null?f[b]=T:b in f||(f[b]=null);let y=await N(e,f,r,i);return{...s.get(r),action:r,results:y}}};import{Address as ye,AddressValue as he,BigUIntType as we,BigUIntValue as kt,BooleanValue as We,BytesValue as Te,CodeMetadata as Ce,CodeMetadataValue as ve,CompositeType as be,CompositeValue as Ie,Field as et,FieldDefinition as rt,List as Ae,NothingValue as xe,OptionalValue as nt,OptionValue as at,StringValue as Be,Struct as Ee,StructType as Se,TokenIdentifierType as Ve,TokenIdentifierValue as Nt,U16Value as Fe,U32Value as Re,U64Type as Pe,U64Value as Ut,U8Value as _e,VariadicValue as Oe}from"@multiversx/sdk-core";var Hr=(a,t)=>a?at.newProvided(a):t?at.newMissingTyped(t):at.newMissing(),Dr=(a,t)=>a?new nt(a.getType(),a):t?new nt(t):nt.newMissing(),jr=a=>{if(a.length===0)throw new Error("Cannot create a list from an empty array");let t=a[0].getType();return new Ae(t,a)},Gr=a=>Oe.fromItems(...a),Kr=a=>{let t=a.map(e=>e.getType());return new Ie(new be(...t),a)},B=a=>Be.fromUTF8(a),Jr=a=>new _e(a),Xr=a=>new Fe(a),Mt=a=>new Re(a),Yr=a=>new Ut(a),Zr=a=>new kt(BigInt(a)),tn=a=>new We(a),en=a=>new he(ye.newFromBech32(a)),rn=a=>new Nt(a),nn=a=>Te.fromHex(a),$t=a=>new Ee(new Se("EsdtTokenPayment",[new rt("token_identifier","",new Ve),new rt("token_nonce","",new Pe),new rt("amount","",new we)]),[new et(new Nt(a.token.identifier),"token_identifier"),new et(new Ut(BigInt(a.token.nonce)),"token_nonce"),new et(new kt(BigInt(a.amount)),"amount")]),an=a=>new ve(Ce.newFromBytes(Uint8Array.from(Buffer.from(a,"hex")))),sn=()=>new xe;var w=class a{constructor(t){this.config=t;this.serializer=new S,this.abi=new V(this.config),this.results=new F(this.config)}async createTransaction(t){let e=it(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){let e=this.config.user?.wallets?.[t.chain.name];if(!e)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=_.newFromBech32(e),n=new qt({chainID:t.chain.chainId}),i=t.data?Buffer.from(this.serializer.stringToTyped(t.data).valueOf()):null;return new Qe({config:n}).createTransactionForTransfer(r,{receiver:_.newFromBech32(t.destination),nativeAmount:t.value,data:i?new Uint8Array(i):void 0})}async createContractCallTransaction(t){let e=this.config.user?.wallets?.[t.chain.name];if(!e)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=it(t.warp,t.action),n=_.newFromBech32(e),i=t.args.map(s=>this.serializer.stringToTyped(s)),o=new qt({chainID:t.chain.chainId});return new Me({config:o}).createTransactionForExecute(n,{contract:_.newFromBech32(t.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:i,nativeTransferAmount:t.value})}async executeQuery(t){let e=it(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(x=>this.serializer.stringToTyped(x)),i=a.getChainEntrypoint(t.chain,this.config.env),o=_.newFromBech32(t.destination),s=i.createSmartContractController(r),u=s.createQuery({contract:o,function:e.func||"",arguments:n}),c=await s.runQuery(u),p=c.returnCode==="ok",f=new ke,y=r.getEndpoint(c.function||e.func||""),W=(c.returnDataParts||[]).map(x=>Buffer.from(x)),m=f.buffersToValues(W,y.output),{values:b,results:T}=await this.results.extractQueryResults(t.warp,m,t.action,t.resolvedInputs),I=U(this.config),E=Ke(this.config,I,t.warp,t.action,T);return{success:p,warp:t.warp,action:t.action,user:this.config.user?.wallets?.[t.chain.name]||null,txHash:null,next:E,values:b,results:T,messages:je(t.warp,T)}}async preprocessInput(t,e,r,n){if(r==="esdt"){let[i,o,s,u]=n.split(Lt.ArgCompositeSeparator);if(u)return e;let c=new qe({identifier:i,nonce:BigInt(o)});if(!new Le().isFungible(c))return e;let y=Ge(i)?.decimals;if(y||(y=(await(await fetch(`${t.apiUrl}/tokens/${i}`)).json()).decimals),!y)throw new Error(`WarpActionExecutor: Decimals not found for token ${i}`);let W=$t(new ze({token:c,amount:Je(s,y)}));return this.serializer.typedToString(W)+Lt.ArgCompositeSeparator+y}return e}static getChainEntrypoint(t,e){let r="warp-sdk";return e==="devnet"?new Ne({url:t.apiUrl,kind:"api",clientName:r}):e==="testnet"?new $e({url:t.apiUrl,kind:"api",clientName:r}):new Ue({url:t.apiUrl,kind:"api",clientName:r})}async signMessage(t,e){let r=He.fromString(e);return(await new De(r).sign(new Uint8Array(Buffer.from(t,"utf-8")))).toString()}};var M=class{constructor(t){this.config=t}async getContract(t,e){try{let i=await w.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}`);return{address:t,owner:i.ownerAddress,verified:i.isVerified||!1}}catch(r){return zt.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(t,e){try{let i=await w.getChainEntrypoint(e,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${t}/verification`);return{codeHash:i.codeHash,abi:i.source.abi}}catch(r){return zt.error("WarpContractLoader: getVerificationInfo error",r),null}}};var V=class{constructor(t){this.config=t;this.contractLoader=new M(this.config),this.cache=new Xe(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={chain:A.ChainName,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},e}async createFromTransactionHash(t,e){let r=Ye.WarpAbi(this.config.env,t);if(e){let s=this.cache.get(r);if(s)return Dt.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${t}`),s}let n=Qt(this.config),o=w.getChainEntrypoint(n,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(t),u=await this.createFromTransaction(s);return e&&e.ttl&&u&&this.cache.set(r,u,e.ttl),u}catch(s){return Dt.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=Qt(this.config),r=await this.contractLoader.getVerificationInfo(t.address,e);if(!r)throw new Error("WarpActionExecutor: Verification info not found");return st.create(r.abi)}async fetchAbi(t){if(!t.abi)throw new Error("WarpActionExecutor: ABI not found");if(t.abi.startsWith(Ht.IdentifierType.Hash)){let e=t.abi.split(Ht.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(e);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${t.abi}`);return st.create(r.content)}else{let r=await(await fetch(t.abi)).json();return st.create(r)}}};import{Address as jt,TransactionsFactoryConfig as Ze,TransferTransactionsFactory as tr}from"@multiversx/sdk-core";import{getMainChainInfo as Gt,WarpBrandBuilder as er,WarpLogger as rr}from"@vleap/warps";import{Buffer as nr}from"buffer";var $=class{constructor(t){this.config=t;this.core=new er(t)}async createInscriptionTransaction(t){let e=Gt(this.config),r=this.config.user?.wallets?.[e.name];if(!r)throw new Error("BrandBuilder: user address not set");let n=new Ze({chainID:e.chainId}),i=new tr({config:n}),o=jt.newFromBech32(r),s=JSON.stringify(t);return await i.createTransactionForNativeTokenTransfer(o,{receiver:jt.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(nr.from(s))})}async createFromTransaction(t,e=!1){return await this.core.createFromRaw(t.data.toString(),e)}async createFromTransactionHash(t){let e=Gt(this.config),n=w.getChainEntrypoint(e,this.config.env).createNetworkProvider();try{let i=await n.getTransaction(t);return this.createFromTransaction(i)}catch(i){return rr.error("BrandBuilder: Error creating from transaction hash",i),null}}};import{Address as Kt,TransactionsFactoryConfig as ar,TransferTransactionsFactory as ir}from"@multiversx/sdk-core";import{getMainChainInfo as Jt,WarpBuilder as Xt,WarpCache as sr,WarpCacheKey as or,WarpLogger as Yt}from"@vleap/warps";var q=class extends Xt{constructor(e){super(e);this.config=e;this.cache=new sr(e.cache?.type),this.core=new Xt(e)}async createInscriptionTransaction(e){let r=Jt(this.config),n=this.config.user?.wallets?.[r.name];if(!n)throw new Error("WarpBuilder: user address not set");let i=new ar({chainID:r.chainId}),o=new ir({config:i}),s=Kt.newFromBech32(n),u=JSON.stringify(e),c=await o.createTransactionForTransfer(s,{receiver:Kt.newFromBech32(n),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(u))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(e,r=!1){let n=await this.core.createFromRaw(e.data.toString(),r);return n.meta={chain:A.ChainName,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},n}async createFromTransactionHash(e,r){let n=or.Warp(this.config.env,e);if(r){let u=this.cache.get(n);if(u)return Yt.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${e}`),u}let i=Jt(this.config),s=w.getChainEntrypoint(i,this.config.env).createNetworkProvider();try{let u=await s.getTransaction(e),c=await this.createFromTransaction(u);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(u){return Yt.error("WarpBuilder: Error creating from transaction hash",u),null}}};var L=class{constructor(t){this.chainInfo=t}getAccountUrl(t){return`${this.chainInfo.explorerUrl}/accounts/${t}`}getTransactionUrl(t){return`${this.chainInfo.explorerUrl}/transactions/${t}`}};import{AbiRegistry as te,Address as l,AddressValue as ct,BytesValue as d,SmartContractTransactionsFactory as ur,TransactionsFactoryConfig as pr}from"@multiversx/sdk-core";import{getMainChainInfo as ut,toTypedChainInfo as ee,WarpCache as lr,WarpCacheKey as R,WarpLogger as O}from"@vleap/warps";var ot={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 z=a=>({hash:a.hash.toString("hex"),alias:a.alias?.toString()||null,trust:a.trust.toString(),owner:a.owner.toString(),createdAt:a.created_at.toNumber(),upgradedAt:a.upgraded_at?.toNumber(),brand:a.brand?.toString("hex")||null,upgrade:a.upgrade?.toString("hex")||null}),Zt=a=>({unitPrice:BigInt(a.unit_price.toString()),admins:a.admins.map(t=>t.toBech32())});var Q=class{constructor(t){this.config=t;this.cache=new lr(t.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[A.ChainName]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(t,e,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=l.newFromBech32(this.userWallet),i=()=>this.isCurrentUserAdmin()?BigInt(0):e&&r?this.registryConfig.unitPrice*BigInt(3):e?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>e&&r?[d.fromHex(t),d.fromUTF8(e),d.fromHex(r)]:e?[d.fromHex(t),d.fromUTF8(e)]:[d.fromHex(t)];return await this.getFactory().createTransactionForExecute(n,{contract:l.newFromBech32(g(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:i(),arguments:o()})}async createWarpUnregisterTransaction(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:l.newFromBech32(g(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(t)]})}async createWarpUpgradeTransaction(t,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 r=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:l.newFromBech32(g(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromUTF8(t),d.fromHex(e)]})}async createWarpAliasSetTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:l.newFromBech32(g(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(t),d.fromUTF8(e)]})}async createWarpVerifyTransaction(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:l.newFromBech32(g(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(t)]})}async createWarpTransferOwnershipTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:l.newFromBech32(g(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[d.fromHex(t),new ct(new l(e))]})}async createBrandRegisterTransaction(t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(e,{contract:l.newFromBech32(g(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(t)]})}async createWarpBrandingTransaction(t,e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=l.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:l.newFromBech32(g(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(t),d.fromHex(e)]})}async getInfoByAlias(t,e){try{let r=R.RegistryInfo(this.config.env,t),n=e?this.cache.get(r):null;if(n)return O.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${t}`),n;let i=l.newFromBech32(g(this.config.env)),o=this.getController(),s=o.createQuery({contract:i,function:"getInfoByAlias",arguments:[d.fromUTF8(t)]}),u=await o.runQuery(s),[c]=o.parseQueryResponse(u),p=c?z(c):null,f=p?.brand?await this.fetchBrand(p.brand):null;return e&&e.ttl&&this.cache.set(r,{registryInfo:p,brand:f},e.ttl),{registryInfo:p,brand:f}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(t,e){try{let r=R.RegistryInfo(this.config.env,t);if(e){let f=this.cache.get(r);if(f)return O.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${t}`),f}let n=l.newFromBech32(g(this.config.env)),i=this.getController(),o=i.createQuery({contract:n,function:"getInfoByHash",arguments:[d.fromHex(t)]}),s=await i.runQuery(o),[u]=i.parseQueryResponse(s),c=u?z(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.userWallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=l.newFromBech32(g(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserWarps",arguments:[new ct(new l(e))]}),o=await n.runQuery(i),[s]=n.parseQueryResponse(o);return s.map(z)}catch{return[]}}async getUserBrands(t){try{let e=t||this.userWallet;if(!e)throw new Error("WarpRegistry: user address not set");let r=l.newFromBech32(g(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getUserBrands",arguments:[new ct(new l(e))]}),o=await n.runQuery(i),[s]=n.parseQueryResponse(o),u=s.map(f=>f.toString("hex")),c={ttl:365*24*60*60};return(await Promise.all(u.map(f=>this.fetchBrand(f,c)))).filter(f=>f!==null)}catch{return[]}}async getChainInfos(t){let e=R.ChainInfos(this.config.env);if(t&&t.ttl){let c=this.cache.get(e);if(c)return O.info("WarpRegistry (getChainInfos): ChainInfos found in cache"),c}let r=l.newFromBech32(g(this.config.env)),n=this.getController(),i=n.createQuery({contract:r,function:"getChains",arguments:[]}),o=await n.runQuery(i),[s]=n.parseQueryResponse(o),u=s.map(ee);if(t&&t.ttl){for(let c of u)this.cache.set(R.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=R.ChainInfo(this.config.env,t),n=e?this.cache.get(r):null;if(n)return O.info(`WarpRegistry (getChainInfo): ChainInfo found in cache: ${t}`),n;let i=l.newFromBech32(g(this.config.env)),o=this.getController(),s=o.createQuery({contract:i,function:"getChain",arguments:[d.fromUTF8(t)]}),u=await o.runQuery(s),[c]=o.parseQueryResponse(u),p=c?ee(c):null;return e&&e.ttl&&p&&this.cache.set(r,p,e.ttl),p}catch{return null}}async setChain(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=l.newFromBech32(this.userWallet);return this.getFactory().createTransactionForExecute(e,{contract:l.newFromBech32(g(this.config.env)),function:"setChain",gasLimit:BigInt(1e7),arguments:[B(t.name),B(t.displayName),B(t.chainId),Mt(t.blockTime),B(t.addressHrp),B(t.apiUrl),B(t.explorerUrl),B(t.nativeToken)]})}async removeChain(t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let e=l.newFromBech32(this.userWallet);return this.getFactory().createTransactionForExecute(e,{contract:l.newFromBech32(g(this.config.env)),function:"removeChain",gasLimit:BigInt(1e7),arguments:[B(t)]})}async fetchBrand(t,e){let r=R.Brand(this.config.env,t),n=e?this.cache.get(r):null;if(n)return O.info(`WarpRegistry (fetchBrand): Brand found in cache: ${t}`),n;let i=ut(this.config),s=w.getChainEntrypoint(i,this.config.env).createNetworkProvider();try{let u=await s.getTransaction(t),c=JSON.parse(u.data.toString());return c.meta={hash:u.hash,creator:u.sender.toBech32(),createdAt:new Date(u.timestamp*1e3).toISOString()},e&&e.ttl&&this.cache.set(r,c,e.ttl),c}catch{return null}}async loadRegistryConfigs(){let t=l.newFromBech32(g(this.config.env)),e=this.getController(),[r]=await e.query({contract:t,function:"getConfig",arguments:[]}),n=r?Zt(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let t=ut(this.config),e=new pr({chainID:t.chainId}),r=te.create(ot);return new ur({config:e,abi:r})}getController(){let t=ut(this.config),e=w.getChainEntrypoint(t,this.config.env),r=te.create(ot);return e.createSmartContractController(r)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};var U=a=>({chain:A.ChainName,prefix:A.ChainPrefix,builder:()=>new q(a),executor:new w(a),results:new F(a),serializer:new S,registry:new Q(a),explorer:t=>new L(t),abiBuilder:()=>new V(a),brandBuilder:()=>new $(a)});export{V as WarpMultiversxAbiBuilder,$ as WarpMultiversxBrandBuilder,q as WarpMultiversxBuilder,A as WarpMultiversxConstants,M as WarpMultiversxContractLoader,w as WarpMultiversxExecutor,L as WarpMultiversxExplorer,Q as WarpMultiversxRegistry,F as WarpMultiversxResults,S as WarpMultiversxSerializer,en as address_value,Zr as biguint_value,tn as boolean_value,an as codemeta_value,Kr as composite_value,$t as esdt_value,U as getMultiversxAdapter,g as getMultiversxRegistryAddress,nn as hex_value,jr as list_value,sn as nothing_value,Hr as option_value,Dr as optional_value,B as string_value,rn as token_value,Xr as u16_value,Mt as u32_value,Yr as u64_value,Jr as u8_value,Gr as variadic_value};
|
|
1
|
+
var T=i=>{if(i==="devnet")return"erd1qqqqqqqqqqqqqpgqje2f99vr6r7sk54thg03c9suzcvwr4nfl3tsfkdl36";if(i==="testnet")throw new Error("Multiversx testnet is not supported");return"erd1qqqqqqqqqqqqqpgq3mrpj3u6q7tejv6d7eqhnyd27n9v5c5tl3ts08mffe"};var pr={Egld:{Identifier:"EGLD",EsdtIdentifier:"EGLD-000000",DisplayName:"eGold",Decimals:18}},Xe=(r=>(r.MultiversxExplorer="multiversx_explorer",r.MultiversxExplorerDevnet="multiversx_explorer_devnet",r.MultiversxExplorerTestnet="multiversx_explorer_testnet",r))(Xe||{}),Ye=(r=>(r.VibechainExplorer="vibechain_explorer",r.VibechainExplorerDevnet="vibechain_explorer_devnet",r.VibechainExplorerTestnet="vibechain_explorer_testnet",r))(Ye||{}),oe={multiversx:{mainnet:["multiversx_explorer"],testnet:["multiversx_explorer_testnet"],devnet:["multiversx_explorer_devnet"]},vibechain:{mainnet:["vibechain_explorer"],testnet:["vibechain_explorer_testnet"],devnet:["vibechain_explorer_devnet"]}},B={multiversx_explorer:"https://explorer.multiversx.com",multiversx_explorer_devnet:"https://devnet-explorer.multiversx.com",multiversx_explorer_testnet:"https://testnet-explorer.multiversx.com",vibechain_explorer:"https://vibeox-explorer.multiversx.com",vibechain_explorer_devnet:"https://vibeox-explorer.multiversx.com",vibechain_explorer_testnet:"https://vibeox-explorer.multiversx.com"};import{Address as Ze,AddressValue as et,BigUIntType as tt,BigUIntValue as ce,BooleanValue as rt,BytesValue as nt,CodeMetadata as at,CodeMetadataValue as it,CompositeType as st,CompositeValue as ot,Field as L,FieldDefinition as q,List as ct,NothingValue as ut,OptionalValue as D,OptionValue as H,StringValue as pt,Struct as lt,StructType as ft,TokenIdentifierType as mt,TokenIdentifierValue as ue,U16Value as dt,U32Value as yt,U64Type as gt,U64Value as pe,U8Value as ht,VariadicValue as wt}from"@multiversx/sdk-core";var gr=(i,e)=>i?H.newProvided(i):e?H.newMissingTyped(e):H.newMissing(),hr=(i,e)=>i?new D(i.getType(),i):e?new D(e):D.newMissing(),wr=i=>{if(i.length===0)throw new Error("Cannot create a list from an empty array");let e=i[0].getType();return new ct(e,i)},Wr=i=>wt.fromItems(...i),Tr=i=>{let e=i.map(t=>t.getType());return new ot(new st(...e),i)},xr=i=>pt.fromUTF8(i),Cr=i=>new ht(i),vr=i=>new dt(i),br=i=>new yt(i),Er=i=>new pe(i),Ar=i=>new ce(BigInt(i)),Ir=i=>new rt(i),Br=i=>new et(Ze.newFromBech32(i)),Vr=i=>new ue(i),Sr=i=>nt.fromHex(i),le=i=>new lt(new ft("EsdtTokenPayment",[new q("token_identifier","",new mt),new q("token_nonce","",new gt),new q("amount","",new tt)]),[new L(new ue(i.token.identifier),"token_identifier"),new L(new pe(BigInt(i.token.nonce)),"token_nonce"),new L(new ce(BigInt(i.amount)),"amount")]),Fr=i=>new it(at.newFromBytes(Uint8Array.from(Buffer.from(i,"hex")))),Rr=()=>new ut;import{AbiRegistry as re}from"@multiversx/sdk-core";import{WarpCache as Gt,WarpCacheKey as Kt,WarpConstants as Le,WarpLogger as qe}from"@vleap/warps";import{WarpLogger as $e}from"@vleap/warps";import{Address as F,ArgSerializer as Ut,DevnetEntrypoint as Nt,MainnetEntrypoint as Pt,SmartContractTransactionsFactory as kt,TestnetEntrypoint as _t,Token as Ot,TokenComputer as Mt,TokenTransfer as $t,TransactionsFactoryConfig as Oe,TransferTransactionsFactory as Lt,UserSecretKey as qt,UserSigner as Dt}from"@multiversx/sdk-core";import{applyResultsToMessages as Ht,findKnownTokenById as zt,getNextInfo as Qt,getWarpActionByIndex as te,shiftBigintBy as jt,WarpConstants as Me}from"@vleap/warps";import{findEventsByFirstTopic as At,SmartContractTransactionsOutcomeParser as It,TransactionEventsParser as Bt}from"@multiversx/sdk-core";import{applyResultsToMessages as Vt,evaluateResultsCommon as N,findWarpExecutableAction as Pe,getNextInfo as St,parseResultsOutIndex as ke,WarpCache as Ft,WarpCacheKey as Rt,WarpConstants as _e}from"@vleap/warps";import{Address as Wt,AddressType as fe,AddressValue as me,BigUIntType as z,BigUIntValue as Q,BooleanType as de,BooleanValue as ye,BytesType as ge,BytesValue as he,CodeMetadata as Tt,CodeMetadataType as we,CodeMetadataValue as We,CompositeType as Te,CompositeValue as xe,Field as j,FieldDefinition as G,List as Ce,ListType as xt,NothingValue as x,OptionalType as Ct,OptionalValue as K,OptionType as vt,OptionValue as J,StringType as ve,StringValue as be,Struct as bt,StructType as Ee,TokenIdentifierType as X,TokenIdentifierValue as Y,U16Type as Ae,U16Value as Ie,U32Type as Be,U32Value as Ve,U64Type as Z,U64Value as ee,U8Type as Se,U8Value as Fe,VariadicType as Re,VariadicValue as Ue}from"@multiversx/sdk-core";import{WarpConstants as C,WarpSerializer as Et}from"@vleap/warps";var Ne=new RegExp(`${C.ArgParamsSeparator}(.*)`),A=class{constructor(){this.coreSerializer=new Et}typedToString(e){if(e.hasClassOrSuperclass(J.ClassName))return e.isSet()?`option:${this.typedToString(e.getTypedValue())}`:"option:null";if(e.hasClassOrSuperclass(K.ClassName))return e.isSet()?`optional:${this.typedToString(e.getTypedValue())}`:"optional:null";if(e.hasClassOrSuperclass(Ce.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[1]);return`list:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(Ue.ClassName)){let t=e.getItems(),n=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[0])[0],a=t.map(o=>this.typedToString(o).split(C.ArgParamsSeparator)[1]);return`variadic:${n}:${a.join(",")}`}if(e.hasClassOrSuperclass(xe.ClassName)){let t=e.getItems(),r=t.map(s=>this.typedToString(s).split(C.ArgParamsSeparator)[0]),n=t.map(s=>this.typedToString(s).split(C.ArgParamsSeparator)[1]),a=r.join(C.ArgCompositeSeparator),o=n.join(C.ArgCompositeSeparator);return`composite(${a}):${o}`}if(e.hasClassOrSuperclass(Q.ClassName)||e.getType().getName()==="BigUint")return`biguint:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(Fe.ClassName))return`uint8:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ie.ClassName))return`uint16:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(Ve.ClassName))return`uint32:${e.valueOf().toNumber()}`;if(e.hasClassOrSuperclass(ee.ClassName))return`uint64:${BigInt(e.valueOf().toFixed())}`;if(e.hasClassOrSuperclass(be.ClassName))return`string:${e.valueOf()}`;if(e.hasClassOrSuperclass(ye.ClassName))return`bool:${e.valueOf()}`;if(e.hasClassOrSuperclass(me.ClassName))return`address:${e.valueOf().toBech32()}`;if(e.hasClassOrSuperclass(Y.ClassName))return`token:${e.valueOf()}`;if(e.hasClassOrSuperclass(he.ClassName))return`hex:${e.valueOf().toString("hex")}`;if(e.hasClassOrSuperclass(We.ClassName))return`codemeta:${e.valueOf().toString()}`;if(e.getType().getName()==="EsdtTokenPayment"){let t=e.getFieldValue("token_identifier").valueOf(),r=e.getFieldValue("token_nonce").valueOf(),n=e.getFieldValue("amount").valueOf();return`esdt:${t}|${r}|${n}`}throw new Error(`WarpArgSerializer (typedToString): Unsupported input type: ${e.getClassName()}`)}typedToNative(e){let t=this.typedToString(e);return this.coreSerializer.stringToNative(t)}nativeToTyped(e,t){let r=this.coreSerializer.nativeToString(e,t);return this.stringToTyped(r)}nativeToType(e){if(e.startsWith("composite")){let t=e.match(/\(([^)]+)\)/)?.[1];return new Te(...t.split(C.ArgCompositeSeparator).map(r=>this.nativeToType(r)))}if(e==="string")return new ve;if(e==="uint8")return new Se;if(e==="uint16")return new Ae;if(e==="uint32")return new Be;if(e==="uint64")return new Z;if(e==="biguint")return new z;if(e==="bool")return new de;if(e==="address")return new fe;if(e==="token")return new X;if(e==="hex")return new ge;if(e==="codemeta")return new we;if(e==="esdt"||e==="nft")return new Ee("EsdtTokenPayment",[new G("token_identifier","",new X),new G("token_nonce","",new Z),new G("amount","",new z)]);throw new Error(`WarpArgSerializer (nativeToType): Unsupported input type: ${e}`)}stringToTyped(e){let[t,r]=e.split(/:(.*)/,2);if(t==="null"||t===null)return new x;if(t==="option"){let n=this.stringToTyped(r);return n instanceof x?J.newMissingTyped(n.getType()):J.newProvided(n)}if(t==="optional"){let n=this.stringToTyped(r);return n instanceof x?K.newMissing():new K(n.getType(),n)}if(t==="list"){let[n,a]=r.split(Ne,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Ce(this.nativeToType(n),s)}if(t==="variadic"){let[n,a]=r.split(Ne,2),s=a.split(",").map(c=>this.stringToTyped(`${n}:${c}`));return new Ue(new Re(this.nativeToType(n)),s)}if(t.startsWith("composite")){let n=t.match(/\(([^)]+)\)/)?.[1],a=r.split(C.ArgCompositeSeparator),o=n.split(C.ArgCompositeSeparator),s=a.map((u,p)=>this.stringToTyped(`${o[p]}:${u}`)),c=s.map(u=>u.getType());return new xe(new Te(...c),s)}if(t==="string")return r?be.fromUTF8(r):new x;if(t==="uint8")return r?new Fe(Number(r)):new x;if(t==="uint16")return r?new Ie(Number(r)):new x;if(t==="uint32")return r?new Ve(Number(r)):new x;if(t==="uint64")return r?new ee(BigInt(r)):new x;if(t==="biguint")return r?new Q(BigInt(r)):new x;if(t==="bool")return r?new ye(typeof r=="boolean"?r:r==="true"):new x;if(t==="address")return r?new me(Wt.newFromBech32(r)):new x;if(t==="token")return r?new Y(r):new x;if(t==="hex")return r?he.fromHex(r):new x;if(t==="codemeta")return new We(Tt.newFromBytes(Uint8Array.from(Buffer.from(r,"hex"))));if(t==="esdt"){let n=r.split(C.ArgCompositeSeparator);return new bt(this.nativeToType("esdt"),[new j(new Y(n[0]),"token_identifier"),new j(new ee(BigInt(n[1])),"token_nonce"),new j(new Q(BigInt(n[2])),"amount")])}throw new Error(`WarpArgSerializer (stringToTyped): Unsupported input type: ${t}`)}typeToString(e){if(e instanceof vt)return"option:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Ct)return"optional:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof xt)return"list:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof Re)return"variadic:"+this.typeToString(e.getFirstTypeParameter());if(e instanceof ve)return"string";if(e instanceof Se)return"uint8";if(e instanceof Ae)return"uint16";if(e instanceof Be)return"uint32";if(e instanceof Z)return"uint64";if(e instanceof z)return"biguint";if(e instanceof de)return"bool";if(e instanceof fe)return"address";if(e instanceof X)return"token";if(e instanceof ge)return"hex";if(e instanceof we)return"codemeta";if(e instanceof Ee&&e.getClassName()==="EsdtTokenPayment")return"esdt";throw new Error(`WarpArgSerializer (typeToString): Unsupported input type: ${e.getClassName()}`)}};var V=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.abi=new I(e,t,r),this.serializer=new A,this.cache=new Ft(e.cache?.type)}async getTransactionExecutionResults(e,t){let{actionIndex:r}=Pe(e),n=this.cache.get(Rt.WarpExecutable(this.config.env,e.meta?.hash||"",r))??[],a=await this.extractContractResults(e,t,n),o=St(this.config,[],e,r,a),s=Vt(e,a.results);return{success:t.status.isSuccessful(),warp:e,action:r,user:this.config.user?.wallets?.[this.chain]||null,txHash:t.hash,next:o,values:a.values,results:a.results,messages:s}}async extractContractResults(e,t,r){let{action:n,actionIndex:a}=Pe(e),o=[],s={};if(!e.results||n.type!=="contract")return{values:o,results:s};if(!Object.values(e.results).some(w=>w.includes("out")||w.includes("event"))){for(let[w,f]of Object.entries(e.results))s[w]=f;return{values:o,results:await N(e,s,a,r)}}let u=await this.abi.getAbiForAction(n),p=new Bt({abi:u}),y=new It({abi:u}).parseExecute({transactionOnNetwork:t,function:n.func||void 0});for(let[w,f]of Object.entries(e.results)){if(f.startsWith(_e.Transform.Prefix))continue;if(f.startsWith("input.")){s[w]=f;continue}let v=ke(f);if(v!==null&&v!==a){s[w]=null;continue}let[W,E,b]=f.split(".");if(W==="event"){if(!E||isNaN(Number(b)))continue;let R=Number(b),g=At(t,E),S=p.parseEvents({events:g})[0],U=Object.values(S)[R]||null;o.push(U),s[w]=U&&U.valueOf()}else if(W==="out"||W.startsWith("out[")){if(!E)continue;let R=Number(E),g=y.values[R-1]||null;b&&(g=g[b]||null),g&&typeof g=="object"&&(g="toFixed"in g?g.toFixed():g.valueOf()),o.push(g),s[w]=g&&g.valueOf()}else s[w]=f}return{values:o,results:await N(e,s,a,r)}}async extractQueryResults(e,t,r,n){let a=t.map(u=>this.serializer.typedToString(u)),o=t.map(u=>this.serializer.typedToNative(u)[1]),s={};if(!e.results)return{values:a,results:s};let c=u=>{let p=u.split(".").slice(1).map(y=>parseInt(y)-1);if(p.length===0)return;let l=o[p[0]];for(let y=1;y<p.length;y++){if(l==null)return;l=l[p[y]]}return l};for(let[u,p]of Object.entries(e.results)){if(p.startsWith(_e.Transform.Prefix))continue;let l=ke(p);if(l!==null&&l!==r){s[u]=null;continue}p.startsWith("out.")||p==="out"||p.startsWith("out[")?s[u]=c(p)||null:s[u]=p}return{values:a,results:await N(e,s,r,n)}}async resolveWarpResultsRecursively(e){let t=e.warp,r=e.entryActionIndex,n=e.executor,a=e.inputs,o=e.meta,s=new Map,c=new Set,u=this;async function p(f,v=[]){if(s.has(f))return s.get(f);if(c.has(f))throw new Error(`Circular dependency detected at action ${f}`);c.add(f);let W=t.actions[f-1];if(!W)throw new Error(`Action ${f} not found`);let E;if(W.type==="query")E=await n.executeQuery(t,f,v);else if(W.type==="collect")E=await n.executeCollect(t,f,v,o);else throw new Error(`Unsupported or interactive action type: ${W.type}`);if(s.set(f,E),t.results)for(let b of Object.values(t.results)){let g=String(b).match(/^out\[(\d+)\]/);if(g){let S=parseInt(g[1],10);S!==f&&!s.has(S)&&await p(S)}}return c.delete(f),E}await p(r,a);let l={};for(let f of s.values())for(let[v,W]of Object.entries(f.results))W!==null?l[v]=W:v in l||(l[v]=null);let y=await N(t,l,r,a);return{...s.get(r),action:r,results:y}}};var h=class i{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.serializer=new A,this.abi=new I(this.config,this.chain,this.chainInfo),this.results=new V(this.config,this.chain,this.chainInfo)}async createTransaction(e){let t=te(e.warp,e.action),r=null;if(t.type==="transfer")r=await this.createTransferTransaction(e);else if(t.type==="contract")r=await this.createContractCallTransaction(e);else{if(t.type==="query")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeQuery instead");if(t.type==="collect")throw new Error("WarpMultiversxExecutor: Invalid action type for createTransactionForExecute; Use executeCollect instead")}if(!r)throw new Error(`WarpMultiversxExecutor: Invalid action type (${t.type})`);return r}async createTransferTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createTransfer - user address not set");let r=F.newFromBech32(t),n=new Oe({chainID:e.chainInfo.chainId}),a=e.data?Buffer.from(this.serializer.stringToTyped(e.data).valueOf()):null;return new Lt({config:n}).createTransactionForTransfer(r,{receiver:F.newFromBech32(e.destination),nativeAmount:e.value,data:a?new Uint8Array(a):void 0})}async createContractCallTransaction(e){let t=this.config.user?.wallets?.[e.chain];if(!t)throw new Error("WarpMultiversxExecutor: createContractCall - user address not set");let r=te(e.warp,e.action),n=F.newFromBech32(t),a=e.args.map(s=>this.serializer.stringToTyped(s)),o=new Oe({chainID:e.chainInfo.chainId});return new kt({config:o}).createTransactionForExecute(n,{contract:F.newFromBech32(e.destination),function:"func"in r&&r.func||"",gasLimit:"gasLimit"in r?BigInt(r.gasLimit||0):0n,arguments:a,nativeTransferAmount:e.value})}async executeQuery(e){let t=te(e.warp,e.action);if(t.type!=="query")throw new Error(`WarpMultiversxExecutor: Invalid action type for executeQuery: ${t.type}`);let r=await this.abi.getAbiForAction(t),n=e.args.map(b=>this.serializer.stringToTyped(b)),a=i.getChainEntrypoint(e.chainInfo,this.config.env),o=F.newFromBech32(e.destination),s=a.createSmartContractController(r),c=s.createQuery({contract:o,function:t.func||"",arguments:n}),u=await s.runQuery(c),p=u.returnCode==="ok",l=new Ut,y=r.getEndpoint(u.function||t.func||""),w=(u.returnDataParts||[]).map(b=>Buffer.from(b)),f=l.buffersToValues(w,y.output),{values:v,results:W}=await this.results.extractQueryResults(e.warp,f,e.action,e.resolvedInputs),E=Qt(this.config,[],e.warp,e.action,W);return{success:p,warp:e.warp,action:e.action,user:this.config.user?.wallets?.[e.chain]||null,txHash:null,next:E,values:v,results:W,messages:Ht(e.warp,W)}}async preprocessInput(e,t,r,n){if(r==="esdt"){let[a,o,s,c]=n.split(Me.ArgCompositeSeparator);if(c)return t;let u=new Ot({identifier:a,nonce:BigInt(o)});if(!new Mt().isFungible(u))return t;let y=zt(a)?.decimals;if(y||(y=(await(await fetch(`${e.apiUrl}/tokens/${a}`)).json()).decimals),!y)throw new Error(`WarpActionExecutor: Decimals not found for token ${a}`);let w=le(new $t({token:u,amount:jt(s,y)}));return this.serializer.typedToString(w)+Me.ArgCompositeSeparator+y}return t}static getChainEntrypoint(e,t){let r="warp-sdk";return t==="devnet"?new Nt({url:e.apiUrl,kind:"api",clientName:r}):t==="testnet"?new _t({url:e.apiUrl,kind:"api",clientName:r}):new Pt({url:e.apiUrl,kind:"api",clientName:r})}async signMessage(e,t){let r=qt.fromString(t);return(await new Dt(r).sign(new Uint8Array(Buffer.from(e,"utf-8")))).toString()}};var P=class{constructor(e){this.config=e}async getContract(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}`);return{address:e,owner:a.ownerAddress,verified:a.isVerified||!1}}catch(r){return $e.error("WarpContractLoader: getContract error",r),null}}async getVerificationInfo(e,t){try{let a=await h.getChainEntrypoint(t,this.config.env).createNetworkProvider().doGetGeneric(`accounts/${e}/verification`);return{codeHash:a.codeHash,abi:a.source.abi}}catch(r){return $e.error("WarpContractLoader: getVerificationInfo error",r),null}}};var I=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.contractLoader=new P(this.config),this.cache=new Gt(this.config.cache?.type)}async createFromRaw(e){return JSON.parse(e)}async createFromTransaction(e){let t=await this.createFromRaw(e.data.toString());return t.meta={chain:this.chain,hash:e.hash,creator:e.sender.toBech32(),createdAt:new Date(e.timestamp*1e3).toISOString()},t}async createFromTransactionHash(e,t){let r=Kt.WarpAbi(this.config.env,e);if(t){let o=this.cache.get(r);if(o)return qe.info(`WarpAbiBuilder (createFromTransactionHash): Warp abi found in cache: ${e}`),o}let a=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let o=await a.getTransaction(e),s=await this.createFromTransaction(o);return t&&t.ttl&&s&&this.cache.set(r,s,t.ttl),s}catch(o){return qe.error("WarpAbiBuilder: Error creating from transaction hash",o),null}}async getAbiForAction(e){if(e.abi)return await this.fetchAbi(e);if(!e.address)throw new Error("WarpActionExecutor: Address not found");let t=await this.contractLoader.getVerificationInfo(e.address,this.chainInfo);if(!t)throw new Error("WarpActionExecutor: Verification info not found");return re.create(t.abi)}async fetchAbi(e){if(!e.abi)throw new Error("WarpActionExecutor: ABI not found");if(e.abi.startsWith(Le.IdentifierType.Hash)){let t=e.abi.split(Le.IdentifierParamSeparatorDefault)[1],r=await this.createFromTransactionHash(t);if(!r)throw new Error(`WarpActionExecutor: ABI not found for hash: ${e.abi}`);return re.create(r.content)}else{let r=await(await fetch(e.abi)).json();return re.create(r)}}};import{Address as De,TransactionsFactoryConfig as Jt,TransferTransactionsFactory as Xt}from"@multiversx/sdk-core";import{WarpBrandBuilder as Yt,WarpLogger as Zt}from"@vleap/warps";import{Buffer as er}from"buffer";var k=class{constructor(e,t,r){this.config=e;this.chain=t;this.chainInfo=r;this.core=new Yt(e)}async createInscriptionTransaction(e){let t=this.config.user?.wallets?.[this.chain];if(!t)throw new Error("BrandBuilder: user address not set");let r=new Jt({chainID:this.chainInfo.chainId}),n=new Xt({config:r}),a=De.newFromBech32(t),o=JSON.stringify(e);return await n.createTransactionForNativeTokenTransfer(a,{receiver:De.newFromBech32(t),nativeAmount:BigInt(0),data:Uint8Array.from(er.from(o))})}async createFromTransaction(e,t=!1){return await this.core.createFromRaw(e.data.toString(),t)}async createFromTransactionHash(e){let r=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let n=await r.getTransaction(e);return this.createFromTransaction(n)}catch(n){return Zt.error("BrandBuilder: Error creating from transaction hash",n),null}}};import{Address as He,TransactionsFactoryConfig as tr,TransferTransactionsFactory as rr}from"@multiversx/sdk-core";import{WarpBuilder as ze,WarpCache as nr,WarpCacheKey as ar,WarpLogger as Qe}from"@vleap/warps";var _=class extends ze{constructor(t,r,n){super(t);this.config=t;this.chain=r;this.chainInfo=n;this.cache=new nr(t.cache?.type),this.core=new ze(t)}async createInscriptionTransaction(t){let r=this.config.user?.wallets?.[this.chain];if(!r)throw new Error("WarpBuilder: user address not set");let n=new tr({chainID:this.chainInfo.chainId}),a=new rr({config:n}),o=He.newFromBech32(r),s=JSON.stringify(t),c=await a.createTransactionForTransfer(o,{receiver:He.newFromBech32(r),nativeAmount:BigInt(0),data:Uint8Array.from(Buffer.from(s))});return c.gasLimit=c.gasLimit+BigInt(2e6),c}async createFromTransaction(t,r=!1){let n=await this.core.createFromRaw(t.data.toString(),r);return n.meta={chain:this.chain,hash:t.hash,creator:t.sender.toBech32(),createdAt:new Date(t.timestamp*1e3).toISOString()},n}async createFromTransactionHash(t,r){let n=ar.Warp(this.config.env,t);if(r){let s=this.cache.get(n);if(s)return Qe.info(`WarpBuilder (createFromTransactionHash): Warp found in cache: ${t}`),s}let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(t),c=await this.createFromTransaction(s);return r&&r.ttl&&c&&this.cache.set(n,c,r.ttl),c}catch(s){return Qe.error("WarpBuilder: Error creating from transaction hash",s),null}}};var O=class{constructor(e,t){this.chain=e;this.config=t}getExplorers(){let e=oe[this.chain];if(!e)return["multiversx_explorer"];let t=e[this.config.env];return t||["multiversx_explorer"]}getPrimaryExplorer(){return this.getExplorers()[0]}getExplorerUrlByName(e){let t=this.config.preferences?.explorers?.[this.chain];if(t&&!e){let a=B[t];if(a)return a}if(e){let a=B[e];if(a)return a}let r=this.getPrimaryExplorer();return B[r]||B[r]}getAccountUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getTransactionUrl(e,t){return`${this.getExplorerUrlByName(t)}/transactions/${e}`}getBlockUrl(e,t){return`${this.getExplorerUrlByName(t)}/blocks/${e}`}getTokenUrl(e,t){return`${this.getExplorerUrlByName(t)}/tokens/${e}`}getContractUrl(e,t){return`${this.getExplorerUrlByName(t)}/accounts/${e}`}getAllExplorers(){return this.getExplorers()}getExplorerByName(e){return this.getExplorers().find(r=>r.toLowerCase()===e.toLowerCase())}getAccountUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=B[n];a&&(r[n]=`${a}/accounts/${e}`)}),r}getTransactionUrls(e){let t=this.getAllExplorers(),r={};return t.forEach(n=>{let a=B[n];a&&(r[n]=`${a}/transactions/${e}`)}),r}};import{AbiRegistry as Je,Address as m,AddressValue as ae,BytesValue as d,SmartContractTransactionsFactory as sr,TransactionsFactoryConfig as or}from"@multiversx/sdk-core";import{WarpCache as cr,WarpCacheKey as ie,WarpLogger as se}from"@vleap/warps";var ne={buildInfo:{rustc:{version:"1.86.0",commitHash:"05f9846f893b09a1be1fc8560e33fc3c815cfecb",commitDate:"2025-03-31",channel:"Stable",short:"rustc 1.86.0 (05f9846f8 2025-03-31)"},contractCrate:{name:"registry",version:"0.0.1"},framework:{name:"multiversx-sc",version:"0.51.1"}},name:"RegistryContract",constructor:{inputs:[{name:"unit_price",type:"BigUint"},{name:"vault",type:"Address"}],outputs:[]},upgradeConstructor:{inputs:[],outputs:[]},endpoints:[{name:"registerWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias_opt",type:"optional<bytes>",multi_arg:!0},{name:"brand_opt",type:"optional<bytes>",multi_arg:!0}],outputs:[],allow_multiple_var_args:!0},{name:"unregisterWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"upgradeWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"alias",type:"bytes"},{name:"new_warp",type:"bytes"}],outputs:[]},{name:"setWarpAlias",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"},{name:"alias",type:"bytes"}],outputs:[]},{name:"forceRemoveAlias",mutability:"mutable",inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"verifyWarp",mutability:"mutable",inputs:[{name:"warp",type:"bytes"}],outputs:[]},{name:"transferOwnership",mutability:"mutable",inputs:[{name:"warp",type:"bytes"},{name:"new_owner",type:"Address"}],outputs:[]},{name:"getUserWarps",mutability:"readonly",inputs:[{name:"address",type:"Address"}],outputs:[{type:"variadic<InfoView>",multi_result:!0}]},{name:"getInfoByAlias",mutability:"readonly",inputs:[{name:"alias",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"getInfoByHash",mutability:"readonly",inputs:[{name:"hash",type:"bytes"}],outputs:[{type:"InfoView"}]},{name:"setVault",onlyOwner:!0,mutability:"mutable",inputs:[{name:"vault",type:"Address"}],outputs:[]},{name:"setUnitPrice",onlyOwner:!0,mutability:"mutable",inputs:[{name:"amount",type:"BigUint"}],outputs:[]},{name:"addAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"removeAdmin",onlyOwner:!0,mutability:"mutable",inputs:[{name:"address",type:"Address"}],outputs:[]},{name:"getConfig",mutability:"readonly",inputs:[],outputs:[{type:"ConfigView"}]},{name:"registerBrand",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"hash",type:"bytes"}],outputs:[]},{name:"brandWarp",mutability:"mutable",payableInTokens:["EGLD"],inputs:[{name:"warp",type:"bytes"},{name:"brand",type:"bytes"}],outputs:[]},{name:"getUserBrands",mutability:"readonly",inputs:[{name:"user",type:"Address"}],outputs:[{type:"variadic<bytes>",multi_result:!0}]},{name:"setChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}],outputs:[]},{name:"removeChain",onlyOwner:!0,mutability:"mutable",inputs:[{name:"name",type:"bytes"}],outputs:[]},{name:"getChain",mutability:"readonly",inputs:[{name:"name",type:"bytes"}],outputs:[{type:"ChainView"}]},{name:"getChains",mutability:"readonly",inputs:[],outputs:[{type:"variadic<ChainView>",multi_result:!0}]}],events:[{identifier:"warpRegistered",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpUnregistered",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"warpUpgraded",inputs:[{name:"alias",type:"bytes",indexed:!0},{name:"new_warp",type:"bytes",indexed:!0},{name:"trust",type:"bytes",indexed:!0}]},{identifier:"warpVerified",inputs:[{name:"hash",type:"bytes",indexed:!0}]},{identifier:"aliasUpdated",inputs:[{name:"hash",type:"bytes",indexed:!0},{name:"alias",type:"bytes",indexed:!0}]},{identifier:"ownershipTransferred",inputs:[{name:"warp",type:"bytes",indexed:!0},{name:"old_owner",type:"Address",indexed:!0},{name:"new_owner",type:"Address",indexed:!0}]}],esdtAttributes:[],hasCallback:!1,types:{ChainView:{type:"struct",fields:[{name:"name",type:"bytes"},{name:"display_name",type:"bytes"},{name:"chain_id",type:"bytes"},{name:"block_time",type:"u32"},{name:"address_hrp",type:"bytes"},{name:"api_url",type:"bytes"},{name:"explorer_url",type:"bytes"},{name:"native_token",type:"bytes"}]},ConfigView:{type:"struct",fields:[{name:"unit_price",type:"BigUint"},{name:"admins",type:"List<Address>"}]},InfoView:{type:"struct",fields:[{name:"hash",type:"bytes"},{name:"alias",type:"Option<bytes>"},{name:"trust",type:"bytes"},{name:"owner",type:"Address"},{name:"created_at",type:"u64"},{name:"upgraded_at",type:"u64"},{name:"brand",type:"Option<bytes>"},{name:"upgrade",type:"Option<bytes>"}]}}};var je=(i,e,t)=>(r,n)=>{let a=t[r.env];return{chain:i,chainInfo:a,prefix:e,builder:()=>new _(r,i,a),executor:new h(r,i,a),results:new V(r,i),serializer:new A,registry:new M(r),explorer:new O(i,r),abiBuilder:()=>new I(r,i,a),brandBuilder:()=>new k(r,i,a)}};var Ge=je("multiversx","mvx",{mainnet:{displayName:"MultiversX",chainId:"1",blockTime:6e3,addressHrp:"erd",apiUrl:"https://api.multiversx.com",nativeToken:"EGLD"},testnet:{displayName:"MultiversX Testnet",chainId:"T",blockTime:6e3,addressHrp:"erd",apiUrl:"https://testnet-api.multiversx.com",nativeToken:"EGLD"},devnet:{displayName:"MultiversX Devnet",chainId:"D",blockTime:6e3,addressHrp:"erd",apiUrl:"https://devnet-api.multiversx.com",nativeToken:"EGLD"}});var $=i=>({hash:i.hash.toString("hex"),alias:i.alias?.toString()||null,trust:i.trust.toString(),owner:i.owner.toString(),createdAt:i.created_at.toNumber(),upgradedAt:i.upgraded_at?.toNumber(),brand:i.brand?.toString("hex")||null,upgrade:i.upgrade?.toString("hex")||null}),Ke=i=>({unitPrice:BigInt(i.unit_price.toString()),admins:i.admins.map(e=>e.toBech32())});var M=class{constructor(e){this.config=e;let t=Ge(e);this.chainInfo=t.chainInfo,this.cache=new cr(e.cache?.type),this.registryConfig={unitPrice:BigInt(0),admins:[]},this.userWallet=this.config.user?.wallets?.[t.chain]||null}async init(){await this.loadRegistryConfigs()}getRegistryConfig(){return this.registryConfig}async createWarpRegisterTransaction(e,t,r){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let n=m.newFromBech32(this.userWallet),a=()=>this.isCurrentUserAdmin()?BigInt(0):t&&r?this.registryConfig.unitPrice*BigInt(3):t?this.registryConfig.unitPrice*BigInt(2):this.registryConfig.unitPrice,o=()=>t&&r?[d.fromHex(e),d.fromUTF8(t),d.fromHex(r)]:t?[d.fromHex(e),d.fromUTF8(t)]:[d.fromHex(e)];return await this.getFactory().createTransactionForExecute(n,{contract:m.newFromBech32(T(this.config.env)),function:"registerWarp",gasLimit:BigInt(1e7),nativeTransferAmount:a(),arguments:o()})}async createWarpUnregisterTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"unregisterWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpUpgradeTransaction(e,t){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"upgradeWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromUTF8(e),d.fromHex(t)]})}async createWarpAliasSetTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"setWarpAlias",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromUTF8(t)]})}async createWarpVerifyTransaction(e){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"verifyWarp",gasLimit:BigInt(1e7),arguments:[d.fromHex(e)]})}async createWarpTransferOwnershipTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"transferOwnership",gasLimit:BigInt(1e7),arguments:[d.fromHex(e),new ae(new m(t))]})}async createBrandRegisterTransaction(e){if(this.registryConfig.unitPrice===BigInt(0))throw new Error("WarpRegistry: config not loaded. forgot to call init()?");if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let t=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(t,{contract:m.newFromBech32(T(this.config.env)),function:"registerBrand",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e)]})}async createWarpBrandingTransaction(e,t){if(!this.userWallet)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(this.userWallet);return await this.getFactory().createTransactionForExecute(r,{contract:m.newFromBech32(T(this.config.env)),function:"brandWarp",gasLimit:BigInt(1e7),nativeTransferAmount:this.isCurrentUserAdmin()?void 0:this.registryConfig.unitPrice,arguments:[d.fromHex(e),d.fromHex(t)]})}async getInfoByAlias(e,t){try{let r=ie.RegistryInfo(this.config.env,e),n=t?this.cache.get(r):null;if(n)return se.info(`WarpRegistry (getInfoByAlias): RegistryInfo found in cache: ${e}`),n;let a=m.newFromBech32(T(this.config.env)),o=this.getController(),s=o.createQuery({contract:a,function:"getInfoByAlias",arguments:[d.fromUTF8(e)]}),c=await o.runQuery(s),[u]=o.parseQueryResponse(c),p=u?$(u):null,l=p?.brand?await this.fetchBrand(p.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:p,brand:l},t.ttl),{registryInfo:p,brand:l}}catch{return{registryInfo:null,brand:null}}}async getInfoByHash(e,t){try{let r=ie.RegistryInfo(this.config.env,e);if(t){let l=this.cache.get(r);if(l)return se.info(`WarpRegistry (getInfoByHash): RegistryInfo found in cache: ${e}`),l}let n=m.newFromBech32(T(this.config.env)),a=this.getController(),o=a.createQuery({contract:n,function:"getInfoByHash",arguments:[d.fromHex(e)]}),s=await a.runQuery(o),[c]=a.parseQueryResponse(s),u=c?$(c):null,p=u?.brand?await this.fetchBrand(u.brand):null;return t&&t.ttl&&this.cache.set(r,{registryInfo:u,brand:p},t.ttl),{registryInfo:u,brand:p}}catch{return{registryInfo:null,brand:null}}}async getUserWarpRegistryInfos(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(T(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserWarps",arguments:[new ae(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o);return s.map($)}catch{return[]}}async getUserBrands(e){try{let t=e||this.userWallet;if(!t)throw new Error("WarpRegistry: user address not set");let r=m.newFromBech32(T(this.config.env)),n=this.getController(),a=n.createQuery({contract:r,function:"getUserBrands",arguments:[new ae(new m(t))]}),o=await n.runQuery(a),[s]=n.parseQueryResponse(o),c=s.map(l=>l.toString("hex")),u={ttl:365*24*60*60};return(await Promise.all(c.map(l=>this.fetchBrand(l,u)))).filter(l=>l!==null)}catch{return[]}}async fetchBrand(e,t){let r=ie.Brand(this.config.env,e),n=t?this.cache.get(r):null;if(n)return se.info(`WarpRegistry (fetchBrand): Brand found in cache: ${e}`),n;let o=h.getChainEntrypoint(this.chainInfo,this.config.env).createNetworkProvider();try{let s=await o.getTransaction(e),c=JSON.parse(s.data.toString());return c.meta={hash:s.hash,creator:s.sender.toBech32(),createdAt:new Date(s.timestamp*1e3).toISOString()},t&&t.ttl&&this.cache.set(r,c,t.ttl),c}catch{return null}}async loadRegistryConfigs(){let e=m.newFromBech32(T(this.config.env)),t=this.getController(),[r]=await t.query({contract:e,function:"getConfig",arguments:[]}),n=r?Ke(r):null;this.registryConfig=n||{unitPrice:BigInt(0),admins:[]}}getFactory(){let e=new or({chainID:this.chainInfo.chainId}),t=Je.create(ne);return new sr({config:e,abi:t})}getController(){let e=h.getChainEntrypoint(this.chainInfo,this.config.env),t=Je.create(ne);return e.createSmartContractController(t)}isCurrentUserAdmin(){return!!this.userWallet&&this.registryConfig.admins.includes(this.userWallet)}};export{B as ExplorerUrls,Xe as MultiversxExplorers,oe as MultiversxExplorersConfig,Ye as VibechainExplorers,I as WarpMultiversxAbiBuilder,k as WarpMultiversxBrandBuilder,_ as WarpMultiversxBuilder,pr as WarpMultiversxConstants,P as WarpMultiversxContractLoader,h as WarpMultiversxExecutor,O as WarpMultiversxExplorer,M as WarpMultiversxRegistry,V as WarpMultiversxResults,A as WarpMultiversxSerializer,Br as address_value,Ar as biguint_value,Ir as boolean_value,Fr as codemeta_value,Tr as composite_value,le as esdt_value,T as getMultiversxRegistryAddress,Sr as hex_value,wr as list_value,Rr as nothing_value,gr as option_value,hr as optional_value,xr as string_value,Vr as token_value,vr as u16_value,br as u32_value,Er as u64_value,Cr as u8_value,Wr as variadic_value};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vleap/warps-adapter-multiversx",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.20",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@multiversx/sdk-core": "^15.0.0",
|
|
34
|
-
"@vleap/warps": "^3.0.0-alpha.
|
|
34
|
+
"@vleap/warps": "^3.0.0-alpha.61"
|
|
35
35
|
}
|
|
36
36
|
}
|