@hyperbridge/sdk 1.4.7-rc0000000001 → 1.4.8

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.
@@ -1104,6 +1104,15 @@ declare class SubstrateChain implements IChain {
1104
1104
  * @returns {IStateMachine} The corresponding enum value.
1105
1105
  */
1106
1106
  declare function convertStateMachineIdToEnum(id: string): IStateMachine;
1107
+ /**
1108
+ * Converts a state machine enum representation to a string.
1109
+ * @param {IStateMachine} stateMachine - The state machine enum object.
1110
+ * @returns {string} The state machine ID string like "EVM-97" or "SUBSTRATE-cere".
1111
+ */
1112
+ declare function convertStateMachineEnumToString(stateMachine: {
1113
+ tag: string;
1114
+ value: number | number[];
1115
+ }): string;
1107
1116
  /**
1108
1117
  * Converts a stateId object back to the state_id format used by the RPC.
1109
1118
  * @param stateId - The stateId object from StateMachineIdParams
@@ -1115,6 +1124,73 @@ declare function convertStateIdToStateMachineId(stateId: {
1115
1124
  Polkadot?: number;
1116
1125
  Kusama?: number;
1117
1126
  }): string;
1127
+ /**
1128
+ * Converts an IGetRequest object to a codec representation.
1129
+ * @param {IGetRequest} request - The IGetRequest object.
1130
+ * @returns The codec representation of the request.
1131
+ */
1132
+ declare function convertIGetRequestToCodec(request: IGetRequest): {
1133
+ readonly source: IStateMachine;
1134
+ readonly dest: IStateMachine;
1135
+ readonly from: number[];
1136
+ readonly nonce: bigint;
1137
+ readonly keys: number[][];
1138
+ readonly context: number[];
1139
+ readonly timeoutTimestamp: bigint;
1140
+ readonly height: bigint;
1141
+ };
1142
+ /**
1143
+ * Convert codec representation back to IGetRequest
1144
+ */
1145
+ declare function convertCodecToIGetRequest(codec: {
1146
+ source: {
1147
+ tag: string;
1148
+ value: number | number[];
1149
+ };
1150
+ dest: {
1151
+ tag: string;
1152
+ value: number | number[];
1153
+ };
1154
+ from: number[];
1155
+ nonce: bigint;
1156
+ keys: number[][];
1157
+ height: bigint;
1158
+ context: number[];
1159
+ timeoutTimestamp: bigint;
1160
+ }): IGetRequest;
1161
+ /**
1162
+ * Converts an IProof object to a codec representation.
1163
+ * @param {IProof} proof - The IProof object.
1164
+ * @returns The codec representation of the proof.
1165
+ */
1166
+ declare function convertIProofToCodec(proof: IProof): {
1167
+ readonly height: {
1168
+ readonly height: bigint;
1169
+ readonly id: {
1170
+ readonly consensusStateId: number[];
1171
+ readonly id: IStateMachine;
1172
+ };
1173
+ };
1174
+ readonly proof: number[];
1175
+ };
1176
+ /**
1177
+ * Converts a codec representation back to an IProof object.
1178
+ * @param {any} codec - The codec representation of the proof.
1179
+ * @returns {IProof} The IProof object.
1180
+ */
1181
+ declare function convertCodecToIProof(codec: {
1182
+ height: {
1183
+ height: bigint;
1184
+ id: {
1185
+ consensusStateId: number[];
1186
+ id: {
1187
+ tag: string;
1188
+ value: number | number[];
1189
+ };
1190
+ };
1191
+ };
1192
+ proof: number[];
1193
+ }): IProof;
1118
1194
  declare function encodeISMPMessage(message: IIsmpMessage): Uint8Array;
1119
1195
 
1120
1196
  /**
@@ -3399,4 +3475,4 @@ declare const popularTokens: {
3399
3475
  "EVM-130": string[];
3400
3476
  };
3401
3477
 
3402
- export { ADDRESS_ZERO, type AllStatusKey, type AssetTeleported, type AssetTeleportedResponse, type BlockMetadata, type CancelOptions, type ChainConfig, ChainConfigService, type ChainId, Chains, type ClientConfig, DEFAULT_ADDRESS, DEFAULT_GRAFFITI, DUMMY_PRIVATE_KEY, type DecodedOrderPlacedLog, type DecodedPostRequestEvent, type DecodedPostResponseEvent, type DispatchGet, type DispatchPost, ERC20Method, type EstimateGasCallData, EvmChain, type EvmChainParams, type ExecutionResult, type FillOptions, type FillerConfig, type GetRequestResponse, type GetRequestWithStatus, type GetResponseByRequestIdResponse, type GetResponseStorageValues, type HexString, type HostParams, HyperClientStatus, type HyperbridgeTxEvents, type IChain, type IConfig, type IEvmConfig, type IGetRequest, type IGetRequestMessage, type IGetResponse, type IGetResponseMessage, type IHyperbridgeConfig, type IIsmpMessage, type IMessage, type IPostRequest, type IPostResponse, type IProof, type IRequestMessage, type ISubstrateConfig, type ITimeoutPostRequestMessage, IndexerClient, type IndexerQueryClient, IntentGateway, type IntentGatewayParams, type IsmpRequest, type NewDeployment, type Order, type OrderResponse, OrderStatus, type OrderStatusMetadata, type OrderWithStatus, type Params, type PaymentInfo, type PostRequestStatus, type PostRequestTimeoutStatus, type PostRequestWithStatus, REQUEST_COMMITMENTS_SLOT, REQUEST_RECEIPTS_SLOT, RESPONSE_COMMITMENTS_SLOT, RESPONSE_RECEIPTS_SLOT, type RequestBody, type RequestCommitment, RequestKind, type RequestResponse, RequestStatus, type RequestStatusKey, type RequestStatusWithMetadata, type ResponseCommitmentWithValues, type RetryConfig, STATE_COMMITMENTS_SLOT, type StateMachineHeight, type StateMachineIdParams, type StateMachineResponse, type StateMachineUpdate, type StorageFacade, SubstrateChain, TESTNET_CHAINS, TeleportStatus, TimeoutStatus, type TimeoutStatusKey, type TokenGatewayAssetTeleportedResponse, type TokenGatewayAssetTeleportedWithStatus, type TokenInfo, type TokenPrice, type TokenPricesResponse, type TokenRegistry, type TokenRegistryResponse, type Transaction, USE_ETHERSCAN_CHAINS, WrappedNativeDecimals, type XcmGatewayParams, __test, addresses, adjustFeeDecimals, assets, bytes20ToBytes32, bytes32ToBytes20, chainIds, coingeckoIds, consensusStateIds, constructRedeemEscrowRequestBody, convertStateIdToStateMachineId, convertStateMachineIdToEnum, createChain, createEvmChain, createIndexerClient, createQueryClient, createRpcUrls, encodeISMPMessage, estimateGasForPost, fetchPrice, generateRootWithProof, getChain, getGasPriceFromEtherscan, getOrderPlacedFromTx, getPostRequestEventFromTx, getPostResponseEventFromTx, getRequestCommitment, getStateCommitmentFieldSlot, getStateCommitmentSlot, getStorageSlot, hexToString, maxBigInt, orderCommitment, popularTokens, postRequestCommitment, queryAssetTeleported, queryGetRequest, queryPostRequest, requestCommitmentKey, retryPromise, teleport, teleportDot, viemChains };
3478
+ export { ADDRESS_ZERO, type AllStatusKey, type AssetTeleported, type AssetTeleportedResponse, type BlockMetadata, type CancelOptions, type ChainConfig, ChainConfigService, type ChainId, Chains, type ClientConfig, DEFAULT_ADDRESS, DEFAULT_GRAFFITI, DUMMY_PRIVATE_KEY, type DecodedOrderPlacedLog, type DecodedPostRequestEvent, type DecodedPostResponseEvent, type DispatchGet, type DispatchPost, ERC20Method, type EstimateGasCallData, EvmChain, type EvmChainParams, type ExecutionResult, type FillOptions, type FillerConfig, type GetRequestResponse, type GetRequestWithStatus, type GetResponseByRequestIdResponse, type GetResponseStorageValues, type HexString, type HostParams, HyperClientStatus, type HyperbridgeTxEvents, type IChain, type IConfig, type IEvmConfig, type IGetRequest, type IGetRequestMessage, type IGetResponse, type IGetResponseMessage, type IHyperbridgeConfig, type IIsmpMessage, type IMessage, type IPostRequest, type IPostResponse, type IProof, type IRequestMessage, type ISubstrateConfig, type ITimeoutPostRequestMessage, IndexerClient, type IndexerQueryClient, IntentGateway, type IntentGatewayParams, type IsmpRequest, type NewDeployment, type Order, type OrderResponse, OrderStatus, type OrderStatusMetadata, type OrderWithStatus, type Params, type PaymentInfo, type PostRequestStatus, type PostRequestTimeoutStatus, type PostRequestWithStatus, REQUEST_COMMITMENTS_SLOT, REQUEST_RECEIPTS_SLOT, RESPONSE_COMMITMENTS_SLOT, RESPONSE_RECEIPTS_SLOT, type RequestBody, type RequestCommitment, RequestKind, type RequestResponse, RequestStatus, type RequestStatusKey, type RequestStatusWithMetadata, type ResponseCommitmentWithValues, type RetryConfig, STATE_COMMITMENTS_SLOT, type StateMachineHeight, type StateMachineIdParams, type StateMachineResponse, type StateMachineUpdate, type StorageFacade, SubstrateChain, TESTNET_CHAINS, TeleportStatus, TimeoutStatus, type TimeoutStatusKey, type TokenGatewayAssetTeleportedResponse, type TokenGatewayAssetTeleportedWithStatus, type TokenInfo, type TokenPrice, type TokenPricesResponse, type TokenRegistry, type TokenRegistryResponse, type Transaction, USE_ETHERSCAN_CHAINS, WrappedNativeDecimals, type XcmGatewayParams, __test, addresses, adjustFeeDecimals, assets, bytes20ToBytes32, bytes32ToBytes20, chainIds, coingeckoIds, consensusStateIds, constructRedeemEscrowRequestBody, convertCodecToIGetRequest, convertCodecToIProof, convertIGetRequestToCodec, convertIProofToCodec, convertStateIdToStateMachineId, convertStateMachineEnumToString, convertStateMachineIdToEnum, createChain, createEvmChain, createIndexerClient, createQueryClient, createRpcUrls, encodeISMPMessage, estimateGasForPost, fetchPrice, generateRootWithProof, getChain, getGasPriceFromEtherscan, getOrderPlacedFromTx, getPostRequestEventFromTx, getPostResponseEventFromTx, getRequestCommitment, getStateCommitmentFieldSlot, getStateCommitmentSlot, getStorageSlot, hexToString, maxBigInt, orderCommitment, popularTokens, postRequestCommitment, queryAssetTeleported, queryGetRequest, queryPostRequest, requestCommitmentKey, retryPromise, teleport, teleportDot, viemChains };
@@ -10,7 +10,6 @@ import { WsProvider, ApiPromise } from '@polkadot/api';
10
10
  import { keccakAsU8a, decodeAddress, keccakAsHex, xxhashAsU8a } from '@polkadot/util-crypto';
11
11
  import { GraphQLClient } from 'graphql-request';
12
12
  import { Decimal } from 'decimal.js';
13
- import stringify from 'safe-stable-stringify';
14
13
  import { createStorage } from 'unstorage';
15
14
  import inMemoryDriver from 'unstorage/drivers/memory';
16
15
  import indexedDBDriver from 'unstorage/drivers/indexedb';
@@ -6611,6 +6610,17 @@ function convertStateMachineIdToEnum(id) {
6611
6610
  }
6612
6611
  return { tag, value };
6613
6612
  }
6613
+ function convertStateMachineEnumToString(stateMachine) {
6614
+ const tag = stateMachine.tag.toUpperCase();
6615
+ if (tag === "EVM" || tag === "POLKADOT" || tag === "KUSAMA") {
6616
+ return `${tag}-${stateMachine.value}`;
6617
+ } else {
6618
+ const bytes = new Uint8Array(stateMachine.value);
6619
+ const decoder = new TextDecoder("utf-8");
6620
+ const decoded = decoder.decode(bytes);
6621
+ return `${tag}-${decoded}`;
6622
+ }
6623
+ }
6614
6624
  function convertStateIdToStateMachineId(stateId) {
6615
6625
  switch (true) {
6616
6626
  case stateId.Evm !== void 0:
@@ -6655,6 +6665,41 @@ function convertIGetRequestToCodec(request) {
6655
6665
  height: request.height
6656
6666
  };
6657
6667
  }
6668
+ function convertCodecToIGetRequest(codec) {
6669
+ return {
6670
+ source: convertStateMachineEnumToString(codec.source),
6671
+ dest: convertStateMachineEnumToString(codec.dest),
6672
+ from: bytesToHex(new Uint8Array(codec.from)),
6673
+ nonce: codec.nonce,
6674
+ keys: codec.keys.map((key) => bytesToHex(new Uint8Array(key))),
6675
+ height: codec.height,
6676
+ context: bytesToHex(new Uint8Array(codec.context)),
6677
+ timeoutTimestamp: codec.timeoutTimestamp
6678
+ };
6679
+ }
6680
+ function convertIProofToCodec(proof) {
6681
+ return {
6682
+ height: {
6683
+ height: proof.height,
6684
+ id: {
6685
+ consensusStateId: Array.from(toBytes(proof.consensusStateId)),
6686
+ id: convertStateMachineIdToEnum(proof.stateMachine)
6687
+ }
6688
+ },
6689
+ proof: Array.from(hexToBytes(proof.proof))
6690
+ };
6691
+ }
6692
+ function convertCodecToIProof(codec) {
6693
+ const consensusStateIdBytes = new Uint8Array(codec.height.id.consensusStateId);
6694
+ const decoder = new TextDecoder("utf-8");
6695
+ const consensusStateId = decoder.decode(consensusStateIdBytes);
6696
+ return {
6697
+ height: codec.height.height,
6698
+ stateMachine: convertStateMachineEnumToString(codec.height.id.id),
6699
+ consensusStateId,
6700
+ proof: bytesToHex(new Uint8Array(codec.proof))
6701
+ };
6702
+ }
6658
6703
  function encodeISMPMessage(message) {
6659
6704
  try {
6660
6705
  return match(message).with({ kind: "PostRequest" }, (message2) => {
@@ -10065,35 +10110,26 @@ var loadDriver = ({ key }) => {
10065
10110
  );
10066
10111
  return null;
10067
10112
  };
10068
-
10069
- // src/storage/index.ts
10070
- var convertBigIntsToSerializable = (value) => {
10071
- if (value === null || value === void 0) return value;
10072
- if (typeof value === "bigint") return { __type: "bigint", value: value.toString() };
10073
- if (Array.isArray(value)) return value.map(convertBigIntsToSerializable);
10074
- if (typeof value === "object") {
10075
- return Object.entries(value).reduce((acc, [k, v]) => {
10076
- acc[k] = convertBigIntsToSerializable(v);
10077
- return acc;
10078
- }, {});
10079
- }
10080
- return value;
10081
- };
10082
- var convertSerializableToBigInts = (value) => {
10083
- if (value === null || value === void 0) return value;
10084
- if (Array.isArray(value)) return value.map(convertSerializableToBigInts);
10085
- if (typeof value === "object" && value !== null) {
10086
- const obj = value;
10087
- if (obj.__type === "bigint" && typeof obj.value === "string") {
10088
- return BigInt(obj.value);
10089
- }
10090
- return Object.entries(obj).reduce((acc, [k, v]) => {
10091
- acc[k] = convertSerializableToBigInts(v);
10092
- return acc;
10093
- }, {});
10094
- }
10095
- return value;
10096
- };
10113
+ function encodeIGetRequest(request) {
10114
+ const codec = convertIGetRequestToCodec(request);
10115
+ const encoded = GetRequest.enc(codec);
10116
+ return bytesToHex(encoded);
10117
+ }
10118
+ function decodeIGetRequest(hex) {
10119
+ const bytes = hexToBytes(hex);
10120
+ const decoded = GetRequest.dec(bytes);
10121
+ return convertCodecToIGetRequest(decoded);
10122
+ }
10123
+ function encodeIProof(proof) {
10124
+ const codec = convertIProofToCodec(proof);
10125
+ const encoded = Proof.enc(codec);
10126
+ return bytesToHex(encoded);
10127
+ }
10128
+ function decodeIProof(hex) {
10129
+ const bytes = hexToBytes(hex);
10130
+ const decoded = Proof.dec(bytes);
10131
+ return convertCodecToIProof(decoded);
10132
+ }
10097
10133
  var detectEnvironment = () => {
10098
10134
  if (typeof process !== "undefined" && !!process.versions?.node) return "node";
10099
10135
  if (typeof globalThis !== "undefined" && "localStorage" in globalThis) return "localstorage";
@@ -10102,24 +10138,36 @@ var detectEnvironment = () => {
10102
10138
  };
10103
10139
  function createCancellationStorage(options = {}) {
10104
10140
  const key = options.env ?? detectEnvironment();
10105
- const driver = loadDriver({ key}) ?? inMemoryDriver;
10141
+ const driver = loadDriver({ key}) ?? inMemoryDriver();
10106
10142
  const baseStorage = createStorage({ driver });
10107
10143
  const getItem = async (key2) => {
10108
10144
  const value = await baseStorage.getItem(key2);
10109
10145
  if (!value) return null;
10110
- try {
10111
- return convertSerializableToBigInts(JSON.parse(value));
10112
- } catch {
10113
- return value;
10146
+ if (key2.includes("getRequest")) {
10147
+ const decoded = decodeIGetRequest(value);
10148
+ return decoded;
10114
10149
  }
10150
+ if (key2.includes("Proof")) {
10151
+ const decoded = decodeIProof(value);
10152
+ return decoded;
10153
+ }
10154
+ throw new Error(`Unknown storage key type: ${key2}`);
10115
10155
  };
10116
10156
  const setItem = async (key2, value) => {
10117
- const serializable = convertBigIntsToSerializable(value);
10118
- const stringified = stringify(serializable) ?? "null";
10119
- await baseStorage.setItem(key2, stringified);
10157
+ if (key2.includes("getRequest") && value && typeof value === "object") {
10158
+ const encoded = encodeIGetRequest(value);
10159
+ await baseStorage.setItem(key2, encoded);
10160
+ return;
10161
+ }
10162
+ if (key2.includes("Proof") && value && typeof value === "object") {
10163
+ const encoded = encodeIProof(value);
10164
+ await baseStorage.setItem(key2, encoded);
10165
+ return;
10166
+ }
10167
+ throw new Error(`Unknown storage key type: ${key2}`);
10120
10168
  };
10121
10169
  const removeItem = async (key2) => {
10122
- baseStorage.removeItem(key2);
10170
+ await baseStorage.removeItem(key2);
10123
10171
  };
10124
10172
  return Object.freeze({
10125
10173
  ...baseStorage,
@@ -12351,6 +12399,8 @@ var Swap = class {
12351
12399
  }
12352
12400
  async createMultiHopSwapThroughPair(client, tokenIn, tokenOut, amountIn, evmChainID, recipient, protocol = "v2", slippagePercentage, dexPairAddress) {
12353
12401
  const wethAsset = this.chainConfigService.getWrappedNativeAssetWithDecimals(evmChainID).asset;
12402
+ const tokenInForPairLookup = tokenIn === ADDRESS_ZERO ? wethAsset : tokenIn;
12403
+ const tokenOutForPairLookup = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut;
12354
12404
  let intermediateToken;
12355
12405
  if (dexPairAddress) {
12356
12406
  const [token0Result, token1Result] = await Promise.all([
@@ -12365,12 +12415,13 @@ var Swap = class {
12365
12415
  functionName: "token1"
12366
12416
  })
12367
12417
  ]);
12368
- intermediateToken = tokenOut.toLowerCase() === token0Result.toLowerCase() ? token1Result : token0Result;
12418
+ const normalizedTokenOut = tokenOut === ADDRESS_ZERO ? wethAsset : tokenOut;
12419
+ intermediateToken = normalizedTokenOut.toLowerCase() === token0Result.toLowerCase() ? token1Result : token0Result;
12369
12420
  } else {
12370
12421
  const { intermediateToken: foundIntermediateToken } = await this.findPair(
12371
12422
  client,
12372
- tokenIn,
12373
- tokenOut,
12423
+ tokenInForPairLookup,
12424
+ tokenOutForPairLookup,
12374
12425
  evmChainID,
12375
12426
  protocol
12376
12427
  );
@@ -12896,6 +12947,8 @@ var IntentGateway = class {
12896
12947
  if (!destIProof) {
12897
12948
  destIProof = yield* this.fetchDestinationProof(order, indexerClient);
12898
12949
  await this.storage.setItem(STORAGE_KEYS.destProof(orderId), destIProof);
12950
+ } else {
12951
+ yield { status: "DESTINATION_FINALIZED", data: { proof: destIProof } };
12899
12952
  }
12900
12953
  let getRequest = await this.storage.getItem(STORAGE_KEYS.getRequest(orderId));
12901
12954
  if (!getRequest) {
@@ -13348,6 +13401,6 @@ async function teleportDot(param_) {
13348
13401
  return stream;
13349
13402
  }
13350
13403
 
13351
- export { ADDRESS_ZERO, ChainConfigService, Chains, DEFAULT_ADDRESS, DEFAULT_GRAFFITI, DUMMY_PRIVATE_KEY, ERC20Method, EvmChain, HyperClientStatus, IndexerClient, IntentGateway, OrderStatus, REQUEST_COMMITMENTS_SLOT, REQUEST_RECEIPTS_SLOT, RESPONSE_COMMITMENTS_SLOT, RESPONSE_RECEIPTS_SLOT, RequestKind, RequestStatus, STATE_COMMITMENTS_SLOT, SubstrateChain, TESTNET_CHAINS, TeleportStatus, TimeoutStatus, USE_ETHERSCAN_CHAINS, WrappedNativeDecimals, __test, addresses, adjustFeeDecimals, assets, bytes20ToBytes32, bytes32ToBytes20, chainIds, coingeckoIds, consensusStateIds, constructRedeemEscrowRequestBody, convertStateIdToStateMachineId, convertStateMachineIdToEnum, createChain, createEvmChain, createIndexerClient, createQueryClient, createRpcUrls, encodeISMPMessage, estimateGasForPost, fetchPrice, generateRootWithProof, getChain, getGasPriceFromEtherscan, getOrderPlacedFromTx, getPostRequestEventFromTx, getPostResponseEventFromTx, getRequestCommitment, getStateCommitmentFieldSlot, getStateCommitmentSlot, getStorageSlot, hexToString, maxBigInt, orderCommitment, popularTokens, postRequestCommitment, queryAssetTeleported, queryGetRequest, queryPostRequest, requestCommitmentKey, retryPromise, teleport, teleportDot, viemChains };
13404
+ export { ADDRESS_ZERO, ChainConfigService, Chains, DEFAULT_ADDRESS, DEFAULT_GRAFFITI, DUMMY_PRIVATE_KEY, ERC20Method, EvmChain, HyperClientStatus, IndexerClient, IntentGateway, OrderStatus, REQUEST_COMMITMENTS_SLOT, REQUEST_RECEIPTS_SLOT, RESPONSE_COMMITMENTS_SLOT, RESPONSE_RECEIPTS_SLOT, RequestKind, RequestStatus, STATE_COMMITMENTS_SLOT, SubstrateChain, TESTNET_CHAINS, TeleportStatus, TimeoutStatus, USE_ETHERSCAN_CHAINS, WrappedNativeDecimals, __test, addresses, adjustFeeDecimals, assets, bytes20ToBytes32, bytes32ToBytes20, chainIds, coingeckoIds, consensusStateIds, constructRedeemEscrowRequestBody, convertCodecToIGetRequest, convertCodecToIProof, convertIGetRequestToCodec, convertIProofToCodec, convertStateIdToStateMachineId, convertStateMachineEnumToString, convertStateMachineIdToEnum, createChain, createEvmChain, createIndexerClient, createQueryClient, createRpcUrls, encodeISMPMessage, estimateGasForPost, fetchPrice, generateRootWithProof, getChain, getGasPriceFromEtherscan, getOrderPlacedFromTx, getPostRequestEventFromTx, getPostResponseEventFromTx, getRequestCommitment, getStateCommitmentFieldSlot, getStateCommitmentSlot, getStorageSlot, hexToString, maxBigInt, orderCommitment, popularTokens, postRequestCommitment, queryAssetTeleported, queryGetRequest, queryPostRequest, requestCommitmentKey, retryPromise, teleport, teleportDot, viemChains };
13352
13405
  //# sourceMappingURL=index.js.map
13353
13406
  //# sourceMappingURL=index.js.map