0xtrails 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/{ccip-Dl3umoGg.js → ccip-DhEkQ6QC.js} +27 -27
  2. package/dist/cctpqueue.d.ts.map +1 -1
  3. package/dist/chains.d.ts +3 -1
  4. package/dist/chains.d.ts.map +1 -1
  5. package/dist/config.d.ts +17 -52
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/constants.d.ts +0 -6
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/{index-sMS_ge1R.js → index-MhD2DA7_.js} +23613 -23893
  10. package/dist/index.d.ts +7 -7
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +319 -944
  13. package/dist/indexerClient.d.ts +9 -6
  14. package/dist/indexerClient.d.ts.map +1 -1
  15. package/dist/intents.d.ts +0 -1
  16. package/dist/intents.d.ts.map +1 -1
  17. package/dist/prepareSend.d.ts.map +1 -1
  18. package/dist/sequenceWallet.d.ts +1 -1
  19. package/dist/sequenceWallet.d.ts.map +1 -1
  20. package/dist/trailsClient.d.ts +3 -3
  21. package/dist/trailsClient.d.ts.map +1 -1
  22. package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
  23. package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
  24. package/dist/transactionIntent/handlers/crossChain.d.ts +3 -1
  25. package/dist/transactionIntent/handlers/crossChain.d.ts.map +1 -1
  26. package/dist/transactionIntent/handlers/sameChainSameToken.d.ts.map +1 -1
  27. package/dist/transactionIntent/types.d.ts +1 -0
  28. package/dist/transactionIntent/types.d.ts.map +1 -1
  29. package/dist/transactions.d.ts +8 -2
  30. package/dist/transactions.d.ts.map +1 -1
  31. package/dist/wallets.d.ts.map +1 -1
  32. package/dist/widget/components/AccountIntentTransactionHistory.d.ts.map +1 -1
  33. package/dist/widget/components/ConfigDisplay.d.ts.map +1 -1
  34. package/dist/widget/components/FeeOptions.d.ts.map +1 -1
  35. package/dist/widget/components/SlippageToleranceSettings.d.ts +1 -0
  36. package/dist/widget/components/SlippageToleranceSettings.d.ts.map +1 -1
  37. package/dist/widget/components/WalletConnect.d.ts.map +1 -1
  38. package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +1 -1
  39. package/dist/widget/hooks/useQuote.d.ts +2 -4
  40. package/dist/widget/hooks/useQuote.d.ts.map +1 -1
  41. package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
  42. package/dist/widget/index.d.ts +1 -0
  43. package/dist/widget/index.d.ts.map +1 -1
  44. package/dist/widget/index.js +4 -2
  45. package/dist/widget/providers/TrailsProvider.d.ts +18 -0
  46. package/dist/widget/providers/TrailsProvider.d.ts.map +1 -0
  47. package/dist/widget/widget.d.ts +3 -3
  48. package/dist/widget/widget.d.ts.map +1 -1
  49. package/package.json +3 -2
  50. package/src/analytics.ts +2 -2
  51. package/src/cctpqueue.ts +6 -3
  52. package/src/chains.ts +62 -29
  53. package/src/config.ts +36 -210
  54. package/src/constants.ts +0 -9
  55. package/src/index.ts +12 -35
  56. package/src/indexerClient.ts +39 -48
  57. package/src/intents.ts +0 -21
  58. package/src/prepareSend.ts +16 -2
  59. package/src/sequenceWallet.ts +1 -2
  60. package/src/trailsClient.ts +17 -12
  61. package/src/transactionIntent/deposits/gaslessDeposit.ts +88 -43
  62. package/src/transactionIntent/deposits/standardDeposit.ts +91 -53
  63. package/src/transactionIntent/handlers/crossChain.ts +88 -0
  64. package/src/transactionIntent/handlers/sameChainSameToken.ts +22 -0
  65. package/src/transactionIntent/types.ts +1 -0
  66. package/src/transactions.ts +122 -24
  67. package/src/wallets.ts +5 -6
  68. package/src/widget/components/AccountIntentTransactionHistory.tsx +5 -0
  69. package/src/widget/components/ConfigDisplay.tsx +19 -59
  70. package/src/widget/components/FeeOptions.tsx +1 -1
  71. package/src/widget/components/SlippageToleranceSettings.tsx +63 -14
  72. package/src/widget/components/WalletConnect.tsx +37 -99
  73. package/src/widget/hooks/useIntentTransactionHistory.ts +9 -1
  74. package/src/widget/hooks/useQuote.ts +11 -17
  75. package/src/widget/hooks/useSendForm.ts +4 -0
  76. package/src/widget/index.tsx +8 -0
  77. package/src/widget/providers/TrailsProvider.tsx +95 -0
  78. package/src/widget/widget.tsx +49 -98
  79. package/dist/trails.d.ts +0 -110
  80. package/dist/trails.d.ts.map +0 -1
  81. package/src/trails.ts +0 -1303
@@ -0,0 +1,95 @@
1
+ import { SequenceHooksProvider } from "@0xsequence/hooks"
2
+ import { createContext, useContext, useMemo } from "react"
3
+ import type { ComponentProps } from "react"
4
+ import {
5
+ DEFAULT_SLIPPAGE_TOLERANCE,
6
+ DEFAULT_WALLETCONNECT_PROJECT_ID,
7
+ PROD_SEQUENCE_INDEXER_URL,
8
+ PROD_SEQUENCE_NODE_GATEWAY_URL,
9
+ PROD_SEQUENCE_PROJECT_ACCESS_KEY,
10
+ PROD_TRAILS_API_URL,
11
+ } from "../../constants.js"
12
+ import { logger } from "../../logger.js"
13
+
14
+ export type SequenceEnv = "prod" | "dev" | "local" | "cors-anywhere"
15
+
16
+ export interface TrailsConfig {
17
+ trailsApiKey: string
18
+ trailsApiUrl?: string
19
+ sequenceIndexerUrl?: string
20
+ sequenceNodeGatewayUrl?: string
21
+ walletConnectProjectId?: string
22
+ slippageTolerance?: string | number
23
+ debug?: boolean
24
+ commitHash?: string
25
+ }
26
+
27
+ export const TrailsContext = createContext<TrailsConfig | null>(null)
28
+
29
+ export const TrailsProvider = ({
30
+ children,
31
+ config = {
32
+ trailsApiKey: PROD_SEQUENCE_PROJECT_ACCESS_KEY,
33
+ },
34
+ }: {
35
+ children: React.ReactNode
36
+ config?: TrailsConfig
37
+ }) => {
38
+ // Populate the trails config with default values if not provided
39
+ const trailsConfig: TrailsConfig = useMemo(() => {
40
+ return {
41
+ trailsApiKey: config.trailsApiKey || PROD_SEQUENCE_PROJECT_ACCESS_KEY,
42
+ trailsApiUrl: config.trailsApiUrl || PROD_TRAILS_API_URL,
43
+ sequenceIndexerUrl:
44
+ config.sequenceIndexerUrl || PROD_SEQUENCE_INDEXER_URL,
45
+ sequenceNodeGatewayUrl:
46
+ config.sequenceNodeGatewayUrl || PROD_SEQUENCE_NODE_GATEWAY_URL,
47
+ walletConnectProjectId:
48
+ config.walletConnectProjectId || DEFAULT_WALLETCONNECT_PROJECT_ID,
49
+ slippageTolerance: config.slippageTolerance || DEFAULT_SLIPPAGE_TOLERANCE,
50
+ debug: config.debug ?? false,
51
+ commitHash: config.commitHash,
52
+ } satisfies TrailsConfig
53
+ }, [
54
+ config.trailsApiKey,
55
+ config.trailsApiUrl,
56
+ config.sequenceIndexerUrl,
57
+ config.sequenceNodeGatewayUrl,
58
+ config.walletConnectProjectId,
59
+ config.slippageTolerance,
60
+ config.debug,
61
+ config.commitHash,
62
+ ])
63
+
64
+ // Create a sequence hooks config based on the trails config
65
+ const sequenceHooksConfig = useMemo(() => {
66
+ return {
67
+ projectAccessKey: trailsConfig.trailsApiKey,
68
+ env: {
69
+ apiUrl: trailsConfig.trailsApiUrl,
70
+ indexerUrl: trailsConfig.sequenceIndexerUrl,
71
+ indexerGatewayUrl: trailsConfig.sequenceIndexerUrl,
72
+ },
73
+ } satisfies ComponentProps<typeof SequenceHooksProvider>["config"]
74
+ }, [trailsConfig])
75
+
76
+ logger.console.log("sequenceHooksConfig", sequenceHooksConfig)
77
+
78
+ return (
79
+ <TrailsContext.Provider value={trailsConfig}>
80
+ <SequenceHooksProvider config={sequenceHooksConfig}>
81
+ {children}
82
+ </SequenceHooksProvider>
83
+ </TrailsContext.Provider>
84
+ )
85
+ }
86
+
87
+ export const useTrails = () => {
88
+ const context = useContext(TrailsContext)
89
+
90
+ if (!context) {
91
+ throw new Error("useTrails must be used within a TrailsProvider")
92
+ }
93
+
94
+ return context
95
+ }
@@ -1,5 +1,4 @@
1
1
  import "@0xsequence/design-system/preset"
2
- import { SequenceHooksContext, SequenceHooksProvider } from "@0xsequence/hooks"
3
2
  import { AaveClient, AaveProvider } from "@aave/react"
4
3
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
5
4
  import { AnimatePresence, motion } from "motion/react"
@@ -38,20 +37,8 @@ import {
38
37
  trackWidgetScreen,
39
38
  } from "../analytics.js"
40
39
  import { getAllChains, getChainInfo, getRpcUrl } from "../chains.js"
41
- import {
42
- getCommitHash,
43
- getDebug,
44
- getSequenceIndexerUrl,
45
- getSequenceNodeGatewayUrl,
46
- getTrailsApiUrl,
47
- setDebug,
48
- setSequenceIndexerUrl,
49
- setSequenceNodeGatewayUrl,
50
- setSequenceProjectAccessKey,
51
- setSlippageTolerance,
52
- setTrailsApiUrl,
53
- setWalletConnectProjectId,
54
- } from "../config.js"
40
+ import { PROD_SEQUENCE_NODE_GATEWAY_URL } from "../constants.js"
41
+ // Config is now managed exclusively by TrailsProvider
55
42
  import { cssObjectToString } from "../cssUtils.js"
56
43
  import {
57
44
  getFullErrorMessage,
@@ -153,6 +140,10 @@ import {
153
140
  import { DEFAULT_MODE } from "../constants.js"
154
141
  import { generateMorphoDepositCalldata } from "../morpho.js"
155
142
  import { generateAaveDepositCalldata } from "../aave.js"
143
+ import {
144
+ TrailsProvider,
145
+ type TrailsConfig,
146
+ } from "./providers/TrailsProvider.js"
156
147
 
157
148
  export const aaveClient = AaveClient.create()
158
149
 
@@ -203,9 +194,9 @@ const isValidToToToken = (toToken: string | null | undefined) => {
203
194
 
204
195
  export type TrailsWidgetProps = {
205
196
  apiKey: string
206
- sequenceIndexerUrl?: string | null
207
- trailsApiUrl?: string | null
208
- sequenceNodeGatewayUrl?: string | null
197
+ sequenceIndexerUrl?: string
198
+ trailsApiUrl?: string
199
+ sequenceNodeGatewayUrl?: string
209
200
  toAddress?: string | null
210
201
  toAmount?: string | null
211
202
  toChainId?: number | string | null
@@ -2113,52 +2104,23 @@ const WidgetInner = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2113
2104
 
2114
2105
  export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2115
2106
  (props, ref) => {
2116
- const sequenceHooksContext = useContext(SequenceHooksContext)
2117
2107
  const wagmiContext = useContext(WagmiContext)
2118
2108
 
2119
- if (props.apiKey) {
2120
- logger.console.log("props.apiKey", props.apiKey)
2121
- setSequenceProjectAccessKey(props.apiKey)
2122
- } else {
2109
+ // Validate required props
2110
+ if (!props.apiKey) {
2123
2111
  throw new Error("apiKey is required")
2124
2112
  }
2125
- if (props.sequenceIndexerUrl) {
2126
- logger.console.log("props.sequenceIndexerUrl", props.sequenceIndexerUrl)
2127
- setSequenceIndexerUrl(props.sequenceIndexerUrl)
2128
- }
2129
- if (props.trailsApiUrl) {
2130
- logger.console.log("props.trailsApiUrl", props.trailsApiUrl)
2131
- setTrailsApiUrl(props.trailsApiUrl)
2132
- }
2133
- if (props.sequenceNodeGatewayUrl) {
2134
- logger.console.log(
2135
- "props.sequenceNodeGatewayUrl",
2136
- props.sequenceNodeGatewayUrl,
2137
- )
2138
- setSequenceNodeGatewayUrl(props.sequenceNodeGatewayUrl)
2139
- }
2140
- if (props.walletConnectProjectId) {
2141
- logger.console.log(
2142
- "props.walletConnectProjectId",
2143
- props.walletConnectProjectId,
2144
- )
2145
- setWalletConnectProjectId(props.walletConnectProjectId)
2146
- }
2147
- if (props.slippageTolerance !== undefined) {
2148
- logger.console.log("props.slippageTolerance", props.slippageTolerance)
2149
- setSlippageTolerance(String(props.slippageTolerance))
2150
- }
2151
- if (typeof props.debug === "boolean" && props.debug !== getDebug()) {
2152
- logger.console.log("props.debug", props.debug)
2153
- setDebug(props.debug)
2154
- }
2155
2113
 
2156
2114
  const wagmiConfig = React.useMemo(() => {
2157
2115
  const chains = getAllChains() as any
2158
2116
  const baseConfig = {
2159
2117
  chains,
2160
2118
  transports: (chains as Array<Chain>).reduce((acc, chain) => {
2161
- const sequenceRpcUrl = getRpcUrl(chain.id, props.apiKey)
2119
+ const sequenceRpcUrl = getRpcUrl(
2120
+ chain.id,
2121
+ props.apiKey,
2122
+ props.sequenceNodeGatewayUrl ?? PROD_SEQUENCE_NODE_GATEWAY_URL,
2123
+ )
2162
2124
  return {
2163
2125
  ...acc,
2164
2126
  [chain.id]: sequenceRpcUrl ? http(sequenceRpcUrl) : http(),
@@ -2181,7 +2143,23 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2181
2143
  : connectors,
2182
2144
  storage,
2183
2145
  })
2184
- }, [props.apiKey, props.decoupleWagmi, props.wagmiConnectors])
2146
+ }, [
2147
+ props.apiKey,
2148
+ props.decoupleWagmi,
2149
+ props.wagmiConnectors,
2150
+ props.sequenceNodeGatewayUrl,
2151
+ ])
2152
+
2153
+ const trailsConfig: TrailsConfig = {
2154
+ trailsApiKey: props.apiKey,
2155
+ trailsApiUrl: props.trailsApiUrl,
2156
+ sequenceIndexerUrl: props.sequenceIndexerUrl,
2157
+ sequenceNodeGatewayUrl: props.sequenceNodeGatewayUrl,
2158
+ walletConnectProjectId: props.walletConnectProjectId,
2159
+ slippageTolerance: props.slippageTolerance
2160
+ ? String(props.slippageTolerance)
2161
+ : undefined,
2162
+ }
2185
2163
 
2186
2164
  // Create content with only the providers that don't exist in parent
2187
2165
  const content = (() => {
@@ -2191,63 +2169,36 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
2191
2169
  </ThemeProvider>
2192
2170
  )
2193
2171
 
2194
- const sequenceConfig = {
2195
- commitHash: getCommitHash(),
2196
- projectAccessKey: props.apiKey,
2197
- env: {
2198
- indexerUrl: props.sequenceIndexerUrl || getSequenceIndexerUrl(),
2199
- indexerGatewayUrl:
2200
- props.sequenceIndexerUrl || getSequenceIndexerUrl(),
2201
- nodeGatewayUrl:
2202
- props.sequenceNodeGatewayUrl || getSequenceNodeGatewayUrl(),
2203
- trailsApiUrl: props.trailsApiUrl || getTrailsApiUrl(),
2204
- },
2205
- }
2206
-
2207
2172
  if (props.decoupleWagmi) {
2208
2173
  return (
2209
- <AaveProvider client={aaveClient}>
2210
- <QueryClientProvider client={queryClient}>
2211
- <SequenceHooksProvider config={sequenceConfig}>
2174
+ <TrailsProvider config={trailsConfig}>
2175
+ <AaveProvider client={aaveClient}>
2176
+ <QueryClientProvider client={queryClient}>
2212
2177
  <WagmiProvider config={wagmiConfig}>
2213
2178
  {widgetContent}
2214
2179
  </WagmiProvider>
2215
- </SequenceHooksProvider>
2216
- </QueryClientProvider>
2217
- </AaveProvider>
2180
+ </QueryClientProvider>
2181
+ </AaveProvider>
2182
+ </TrailsProvider>
2218
2183
  )
2219
2184
  }
2220
2185
 
2221
2186
  const baseContent = (
2222
- <AaveProvider client={aaveClient}>
2223
- <QueryClientProvider client={queryClient}>
2224
- {sequenceHooksContext ? (
2225
- // SequenceHooksProvider exists in parent, don't wrap
2226
- wagmiContext ? (
2227
- // Both providers exist in parent, just render widget
2187
+ <TrailsProvider config={trailsConfig}>
2188
+ <AaveProvider client={aaveClient}>
2189
+ <QueryClientProvider client={queryClient}>
2190
+ {wagmiContext ? (
2191
+ // WagmiProvider exists in parent, don't wrap
2228
2192
  widgetContent
2229
2193
  ) : (
2230
- // Only WagmiProvider missing, wrap with it
2194
+ // WagmiProvider missing, wrap with it
2231
2195
  <WagmiProvider config={wagmiConfig}>
2232
2196
  {widgetContent}
2233
2197
  </WagmiProvider>
2234
- )
2235
- ) : (
2236
- // SequenceHooksProvider missing, wrap with it
2237
- <SequenceHooksProvider config={sequenceConfig}>
2238
- {wagmiContext ? (
2239
- // WagmiProvider exists in parent, don't wrap
2240
- widgetContent
2241
- ) : (
2242
- // WagmiProvider missing, wrap with it
2243
- <WagmiProvider config={wagmiConfig}>
2244
- {widgetContent}
2245
- </WagmiProvider>
2246
- )}
2247
- </SequenceHooksProvider>
2248
- )}
2249
- </QueryClientProvider>
2250
- </AaveProvider>
2198
+ )}
2199
+ </QueryClientProvider>
2200
+ </AaveProvider>
2201
+ </TrailsProvider>
2251
2202
  )
2252
2203
 
2253
2204
  return baseContent
package/dist/trails.d.ts DELETED
@@ -1,110 +0,0 @@
1
- import { TransactionPrecondition, Intent, QuoteIntentRequest, MetaTxn, IntentCalls } from '@0xsequence/trails-api';
2
- import { TrailsClient } from './trailsClient.js';
3
- import { Hex } from 'viem';
4
- import { Connector } from 'wagmi';
5
- import { OriginCallParams, TrailsFee as LocalTrailsFee, calculateIntentAddress, calculateOriginAndDestinationIntentAddresses } from './intents.js';
6
- import { IntentReceiptStatus } from './intentReceiptMonitor.js';
7
- export type WagmiAccount = {
8
- address: `0x${string}`;
9
- isConnected: boolean;
10
- chainId: number;
11
- connector?: Connector;
12
- };
13
- export type UseTrailsConfig = {
14
- account: WagmiAccount;
15
- disableAutoExecute?: boolean;
16
- sequenceProjectAccessKey?: string;
17
- };
18
- export type UseTrailsReturn = {
19
- trailsClient: TrailsClient;
20
- metaTxns: MetaTxn[] | null;
21
- intentCalls: IntentCalls[] | null;
22
- intentPreconditions: TransactionPrecondition[] | null;
23
- trailsFee: LocalTrailsFee | null;
24
- txnHash: Hex | undefined;
25
- committedOriginIntentAddress: string | null;
26
- committedDestinationIntentAddress: string | null;
27
- verificationStatus: {
28
- success: boolean;
29
- calculatedOriginAddress?: string;
30
- calculatedDestinationAddress?: string;
31
- receivedOriginAddress?: string;
32
- receivedDestinationAddress?: string;
33
- } | null;
34
- estimatedGas: bigint | undefined;
35
- isEstimateError: boolean;
36
- estimateError: Error | null;
37
- calculateIntentAddress: typeof calculateIntentAddress;
38
- calculateOriginAndDestinationIntentAddresses: typeof calculateOriginAndDestinationIntentAddresses;
39
- committedIntent: Intent | undefined;
40
- isLoadingCommittedIntent: boolean;
41
- committedConfigError: Error | null;
42
- commitIntent: (intent: Intent) => void;
43
- commitIntentPending: boolean;
44
- commitIntentSuccess: boolean;
45
- commitIntentError: Error | null;
46
- commitIntentArgs: Intent | undefined;
47
- executeIntent: (args: {
48
- intentId: string;
49
- depositTransactionHash: string;
50
- }) => void;
51
- executeIntentPending: boolean;
52
- executeIntentSuccess: boolean;
53
- executeIntentError: Error | null;
54
- getIntentFromQuoteIntent: (args: QuoteIntentRequest) => Promise<Intent>;
55
- operationHashes: {
56
- [key: string]: Hex;
57
- };
58
- sendOriginTransaction: () => Promise<void>;
59
- switchChain: any;
60
- isSwitchingChain: boolean;
61
- switchChainError: Error | null;
62
- isTransactionInProgress: boolean;
63
- isChainSwitchRequired: boolean;
64
- sendTransaction: any;
65
- isSendingTransaction: boolean;
66
- originCallStatus: {
67
- txnHash?: string;
68
- status?: string;
69
- revertReason?: string | null;
70
- gasUsed?: number;
71
- effectiveGasPrice?: string;
72
- } | null;
73
- updateOriginCallStatus: (hash: Hex | undefined, status: "success" | "reverted" | "pending" | "sending", gasUsed?: bigint, effectiveGasPrice?: bigint, revertReason?: string | null) => void;
74
- isEstimatingGas: boolean;
75
- isAutoExecute: boolean;
76
- updateAutoExecute: (enabled: boolean) => void;
77
- receipt: any;
78
- isWaitingForReceipt: boolean;
79
- receiptIsSuccess: boolean;
80
- receiptIsError: boolean;
81
- receiptError: Error | null;
82
- hasAutoExecuted: boolean;
83
- originCallSuccess: boolean;
84
- sentMetaTxns: {
85
- [key: string]: number;
86
- };
87
- clearIntent: () => void;
88
- intentReceiptStatus: IntentReceiptStatus | null;
89
- quoteIntent: (args: QuoteIntentRequest) => void;
90
- quoteIntentPending: boolean;
91
- quoteIntentSuccess: boolean;
92
- quoteIntentError: Error | null;
93
- quoteIntentArgs: QuoteIntentRequest | undefined;
94
- originCallParams: OriginCallParams | null;
95
- updateOriginCallParams: (args: {
96
- originChainId: number;
97
- tokenAddress: string;
98
- } | null) => void;
99
- originBlockTimestamp: number | null;
100
- metaTxnBlockTimestamps: {
101
- [key: string]: {
102
- timestamp: number | null;
103
- error?: string;
104
- };
105
- };
106
- originIntentAddress: string | null;
107
- destinationIntentAddress: string | null;
108
- };
109
- export declare function useTrails(config: UseTrailsConfig): UseTrailsReturn;
110
- //# sourceMappingURL=trails.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trails.d.ts","sourceRoot":"","sources":["../src/trails.ts"],"names":[],"mappings":"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"}