@dynamic-labs-sdk/tempo 0.0.0-stage → 1.40.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 (121) hide show
  1. package/README.md +96 -2
  2. package/dist/TempoNetworkProvider.types.d.ts +12 -0
  3. package/dist/TempoNetworkProvider.types.d.ts.map +1 -0
  4. package/dist/TempoWalletAccount.types.d.ts +12 -0
  5. package/dist/TempoWalletAccount.types.d.ts.map +1 -0
  6. package/dist/TempoWalletProvider.types.d.ts +48 -0
  7. package/dist/TempoWalletProvider.types.d.ts.map +1 -0
  8. package/dist/addTempoExtension/addTempoExtension.d.ts +24 -0
  9. package/dist/addTempoExtension/addTempoExtension.d.ts.map +1 -0
  10. package/dist/constants.d.ts +6 -0
  11. package/dist/constants.d.ts.map +1 -0
  12. package/dist/errors/InvalidTempoNetworkError/InvalidTempoNetworkError.d.ts +19 -0
  13. package/dist/errors/InvalidTempoNetworkError/InvalidTempoNetworkError.d.ts.map +1 -0
  14. package/dist/errors/InvalidTempoNetworkError/index.d.ts +2 -0
  15. package/dist/errors/InvalidTempoNetworkError/index.d.ts.map +1 -0
  16. package/dist/errors/TempoBusinessAccountTransactionNotSupportedError/TempoBusinessAccountTransactionNotSupportedError.d.ts +17 -0
  17. package/dist/errors/TempoBusinessAccountTransactionNotSupportedError/TempoBusinessAccountTransactionNotSupportedError.d.ts.map +1 -0
  18. package/dist/errors/TempoBusinessAccountTransactionNotSupportedError/index.d.ts +2 -0
  19. package/dist/errors/TempoBusinessAccountTransactionNotSupportedError/index.d.ts.map +1 -0
  20. package/dist/errors/TempoNativeTokenError/TempoNativeTokenError.d.ts +17 -0
  21. package/dist/errors/TempoNativeTokenError/TempoNativeTokenError.d.ts.map +1 -0
  22. package/dist/errors/TempoRawMessageNotUtf8Error/TempoRawMessageNotUtf8Error.d.ts +17 -0
  23. package/dist/errors/TempoRawMessageNotUtf8Error/TempoRawMessageNotUtf8Error.d.ts.map +1 -0
  24. package/dist/errors/TempoRawMessageNotUtf8Error/index.d.ts +2 -0
  25. package/dist/errors/TempoRawMessageNotUtf8Error/index.d.ts.map +1 -0
  26. package/dist/errors/TempoTransactionValidationError/TempoTransactionValidationError.d.ts +19 -0
  27. package/dist/errors/TempoTransactionValidationError/TempoTransactionValidationError.d.ts.map +1 -0
  28. package/dist/errors/TempoTransactionValidationError/index.d.ts +2 -0
  29. package/dist/errors/TempoTransactionValidationError/index.d.ts.map +1 -0
  30. package/dist/errors/TempoTypedDataNotSupportedError/TempoTypedDataNotSupportedError.d.ts +17 -0
  31. package/dist/errors/TempoTypedDataNotSupportedError/TempoTypedDataNotSupportedError.d.ts.map +1 -0
  32. package/dist/errors/TempoTypedDataNotSupportedError/index.d.ts +2 -0
  33. package/dist/errors/TempoTypedDataNotSupportedError/index.d.ts.map +1 -0
  34. package/dist/exports/index.d.ts +12 -0
  35. package/dist/exports/index.d.ts.map +1 -0
  36. package/dist/exports/waas.d.ts +9 -0
  37. package/dist/exports/waas.d.ts.map +1 -0
  38. package/dist/getTempoPublicClient/getTempoPublicClient.d.ts +28 -0
  39. package/dist/getTempoPublicClient/getTempoPublicClient.d.ts.map +1 -0
  40. package/dist/index.cjs +65 -0
  41. package/dist/index.cjs.map +1 -0
  42. package/dist/index.esm.js +57 -0
  43. package/dist/index.esm.js.map +1 -0
  44. package/dist/isTempoNetworkProvider/isTempoNetworkProvider.d.ts +17 -0
  45. package/dist/isTempoNetworkProvider/isTempoNetworkProvider.d.ts.map +1 -0
  46. package/dist/isTempoWalletAccount/isTempoWalletAccount.d.ts +19 -0
  47. package/dist/isTempoWalletAccount/isTempoWalletAccount.d.ts.map +1 -0
  48. package/dist/isTempoWalletProvider/isTempoWalletProvider.d.ts +21 -0
  49. package/dist/isTempoWalletProvider/isTempoWalletProvider.d.ts.map +1 -0
  50. package/dist/registerTempoNetworkProviderBuilder/registerTempoNetworkProviderBuilder.d.ts +4 -0
  51. package/dist/registerTempoNetworkProviderBuilder/registerTempoNetworkProviderBuilder.d.ts.map +1 -0
  52. package/dist/sendTip20Transaction/sendTip20Transaction.d.ts +40 -0
  53. package/dist/sendTip20Transaction/sendTip20Transaction.d.ts.map +1 -0
  54. package/dist/tempoChainIds-BVinmTlR.esm.js +236 -0
  55. package/dist/tempoChainIds-BVinmTlR.esm.js.map +1 -0
  56. package/dist/tempoChainIds-wtNAU12H.cjs +301 -0
  57. package/dist/tempoChainIds-wtNAU12H.cjs.map +1 -0
  58. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  59. package/dist/utils/createTempoNetworkProvider/createTempoNetworkProvider.d.ts +5 -0
  60. package/dist/utils/createTempoNetworkProvider/createTempoNetworkProvider.d.ts.map +1 -0
  61. package/dist/utils/mapNetworkDataToViemChain/index.d.ts +2 -0
  62. package/dist/utils/mapNetworkDataToViemChain/index.d.ts.map +1 -0
  63. package/dist/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.d.ts +19 -0
  64. package/dist/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.d.ts.map +1 -0
  65. package/dist/utils/tempoChainIds/tempoChainIds.d.ts +22 -0
  66. package/dist/utils/tempoChainIds/tempoChainIds.d.ts.map +1 -0
  67. package/dist/utils/tempoConfirmTransaction/index.d.ts +2 -0
  68. package/dist/utils/tempoConfirmTransaction/index.d.ts.map +1 -0
  69. package/dist/utils/tempoConfirmTransaction/tempoConfirmTransaction.d.ts +21 -0
  70. package/dist/utils/tempoConfirmTransaction/tempoConfirmTransaction.d.ts.map +1 -0
  71. package/dist/utils/tempoTransferAmount/index.d.ts +2 -0
  72. package/dist/utils/tempoTransferAmount/index.d.ts.map +1 -0
  73. package/dist/utils/tempoTransferAmount/tempoTransferAmount.d.ts +37 -0
  74. package/dist/utils/tempoTransferAmount/tempoTransferAmount.d.ts.map +1 -0
  75. package/dist/waas/WaasTempoWalletProvider.types.d.ts +23 -0
  76. package/dist/waas/WaasTempoWalletProvider.types.d.ts.map +1 -0
  77. package/dist/waas/addWaasTempoExtension/addWaasTempoExtension.d.ts +21 -0
  78. package/dist/waas/addWaasTempoExtension/addWaasTempoExtension.d.ts.map +1 -0
  79. package/dist/waas/addWaasTempoExtension/index.d.ts +2 -0
  80. package/dist/waas/addWaasTempoExtension/index.d.ts.map +1 -0
  81. package/dist/waas/sendTempoTransaction/index.d.ts +2 -0
  82. package/dist/waas/sendTempoTransaction/index.d.ts.map +1 -0
  83. package/dist/waas/sendTempoTransaction/sendTempoTransaction.d.ts +42 -0
  84. package/dist/waas/sendTempoTransaction/sendTempoTransaction.d.ts.map +1 -0
  85. package/dist/waas/utils/assertValidTempoTransactionCalls/assertValidTempoTransactionCalls.d.ts +18 -0
  86. package/dist/waas/utils/assertValidTempoTransactionCalls/assertValidTempoTransactionCalls.d.ts.map +1 -0
  87. package/dist/waas/utils/assertValidTempoTransactionCalls/index.d.ts +2 -0
  88. package/dist/waas/utils/assertValidTempoTransactionCalls/index.d.ts.map +1 -0
  89. package/dist/waas/utils/assertValidTempoTransactionRequest/assertValidTempoTransactionRequest.d.ts +41 -0
  90. package/dist/waas/utils/assertValidTempoTransactionRequest/assertValidTempoTransactionRequest.d.ts.map +1 -0
  91. package/dist/waas/utils/assertValidTempoTransactionRequest/index.d.ts +3 -0
  92. package/dist/waas/utils/assertValidTempoTransactionRequest/index.d.ts.map +1 -0
  93. package/dist/waas/utils/createViemWalletClientForWaasTempo/createViemWalletClientForWaasTempo.d.ts +41 -0
  94. package/dist/waas/utils/createViemWalletClientForWaasTempo/createViemWalletClientForWaasTempo.d.ts.map +1 -0
  95. package/dist/waas/utils/createViemWalletClientForWaasTempo/index.d.ts +2 -0
  96. package/dist/waas/utils/createViemWalletClientForWaasTempo/index.d.ts.map +1 -0
  97. package/dist/waas/utils/createWalletProviderForWaasTempo/createWalletProviderForWaasTempo.d.ts +23 -0
  98. package/dist/waas/utils/createWalletProviderForWaasTempo/createWalletProviderForWaasTempo.d.ts.map +1 -0
  99. package/dist/waas/utils/createWalletProviderForWaasTempo/index.d.ts +2 -0
  100. package/dist/waas/utils/createWalletProviderForWaasTempo/index.d.ts.map +1 -0
  101. package/dist/waas/utils/isBusinessAccountWalletAccount/index.d.ts +2 -0
  102. package/dist/waas/utils/isBusinessAccountWalletAccount/index.d.ts.map +1 -0
  103. package/dist/waas/utils/isBusinessAccountWalletAccount/isBusinessAccountWalletAccount.d.ts +23 -0
  104. package/dist/waas/utils/isBusinessAccountWalletAccount/isBusinessAccountWalletAccount.d.ts.map +1 -0
  105. package/dist/waas/utils/serializeTempoTransactionForWaas/index.d.ts +3 -0
  106. package/dist/waas/utils/serializeTempoTransactionForWaas/index.d.ts.map +1 -0
  107. package/dist/waas/utils/serializeTempoTransactionForWaas/serializeTempoTransactionForWaas.d.ts +57 -0
  108. package/dist/waas/utils/serializeTempoTransactionForWaas/serializeTempoTransactionForWaas.d.ts.map +1 -0
  109. package/dist/waas/utils/signMessage/index.d.ts +2 -0
  110. package/dist/waas/utils/signMessage/index.d.ts.map +1 -0
  111. package/dist/waas/utils/signMessage/signMessage.d.ts +38 -0
  112. package/dist/waas/utils/signMessage/signMessage.d.ts.map +1 -0
  113. package/dist/waas/utils/signRawMessage/index.d.ts +2 -0
  114. package/dist/waas/utils/signRawMessage/index.d.ts.map +1 -0
  115. package/dist/waas/utils/signRawMessage/signRawMessage.d.ts +37 -0
  116. package/dist/waas/utils/signRawMessage/signRawMessage.d.ts.map +1 -0
  117. package/dist/waas.cjs +758 -0
  118. package/dist/waas.cjs.map +1 -0
  119. package/dist/waas.esm.js +754 -0
  120. package/dist/waas.esm.js.map +1 -0
  121. package/package.json +43 -3
@@ -0,0 +1,17 @@
1
+ import type { NetworkProvider } from '@dynamic-labs-sdk/client';
2
+ import type { TempoNetworkProvider } from '../TempoNetworkProvider.types';
3
+ /**
4
+ * Type guard — returns true if the network provider is for the Tempo chain.
5
+ *
6
+ * @param provider - The network provider to check.
7
+ * @returns Whether the network provider is a Tempo network provider.
8
+ * @example
9
+ * ```ts
10
+ * const tempoProviders = getNetworkProviders().filter(isTempoNetworkProvider);
11
+ * ```
12
+ * @see isTempoWalletAccount
13
+ * @see isTempoWalletProvider
14
+ * @notInstrumented
15
+ */
16
+ export declare const isTempoNetworkProvider: (provider: NetworkProvider) => provider is TempoNetworkProvider;
17
+ //# sourceMappingURL=isTempoNetworkProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isTempoNetworkProvider.d.ts","sourceRoot":"","sources":["../../src/isTempoNetworkProvider/isTempoNetworkProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,aACvB,eAAe,KACxB,QAAQ,IAAI,oBAAkD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { WalletAccount } from '@dynamic-labs-sdk/client';
2
+ import type { TempoWalletAccount } from '../TempoWalletAccount.types';
3
+ /**
4
+ * Type guard — returns true if the wallet account is for the Tempo chain.
5
+ *
6
+ * @param account - The wallet account to check.
7
+ * @returns Whether the wallet account is a Tempo wallet account.
8
+ * @example
9
+ * ```ts
10
+ * if (isTempoWalletAccount(walletAccount)) {
11
+ * const publicClient = await getTempoPublicClient({ walletAccount });
12
+ * }
13
+ * ```
14
+ * @see isTempoWalletProvider
15
+ * @see getTempoPublicClient
16
+ * @notInstrumented
17
+ */
18
+ export declare const isTempoWalletAccount: (account: WalletAccount | TempoWalletAccount) => account is TempoWalletAccount;
19
+ //# sourceMappingURL=isTempoWalletAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isTempoWalletAccount.d.ts","sourceRoot":"","sources":["../../src/isTempoWalletAccount/isTempoWalletAccount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,YACtB,aAAa,GAAG,kBAAkB,KAC1C,OAAO,IAAI,kBAA+C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { WalletProvider } from '@dynamic-labs-sdk/client/core';
2
+ import type { TempoWalletProvider } from '../TempoWalletProvider.types';
3
+ /**
4
+ * Type guard — returns true if the wallet provider is for the Tempo chain.
5
+ *
6
+ * @param provider - The wallet provider to check.
7
+ * @returns Whether the wallet provider is a Tempo wallet provider.
8
+ * @example
9
+ * ```ts
10
+ * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
11
+ *
12
+ * if (isTempoWalletProvider(walletProvider)) {
13
+ * console.log(walletProvider.supportsFeeTokenSelection); // true
14
+ * }
15
+ * ```
16
+ * @see isTempoWalletAccount
17
+ * @see isTempoNetworkProvider
18
+ * @notInstrumented
19
+ */
20
+ export declare const isTempoWalletProvider: (provider: WalletProvider | TempoWalletProvider) => provider is TempoWalletProvider;
21
+ //# sourceMappingURL=isTempoWalletProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isTempoWalletProvider.d.ts","sourceRoot":"","sources":["../../src/isTempoWalletProvider/isTempoWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,aACtB,cAAc,GAAG,mBAAmB,KAC7C,QAAQ,IAAI,mBAAiD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type DynamicClient } from '@dynamic-labs-sdk/client';
2
+ /** @notInstrumented */
3
+ export declare const registerTempoNetworkProviderBuilder: (client: DynamicClient) => void;
4
+ //# sourceMappingURL=registerTempoNetworkProviderBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTempoNetworkProviderBuilder.d.ts","sourceRoot":"","sources":["../../src/registerTempoNetworkProviderBuilder/registerTempoNetworkProviderBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,uBAAuB;AACvB,eAAO,MAAM,mCAAmC,WACtC,aAAa,KACpB,IAYF,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Account, Chain, Hex, Transport, WalletClient } from 'viem';
2
+ type SendTip20TransactionParams = {
3
+ /** Human-readable amount, e.g. '1.5' */
4
+ amount: string;
5
+ /** Token decimals — defaults to 18 */
6
+ decimals?: number;
7
+ /** Recipient address */
8
+ to: string;
9
+ /** TIP-20 token contract address. Required — Tempo has no native token. */
10
+ tokenAddress: string;
11
+ /** Viem WalletClient with a Tempo account. Obtain from the Tempo wallet provider. */
12
+ walletClient: WalletClient<Transport, Chain, Account>;
13
+ };
14
+ /**
15
+ * Sends a TIP-20 token transfer on a Tempo network.
16
+ * Tempo has no native token — all transfers require a token contract address.
17
+ *
18
+ * @param params.amount - Human-readable amount, e.g. '1.5'.
19
+ * @param [params.decimals] - Token decimals. Defaults to 18.
20
+ * @param params.to - Recipient address.
21
+ * @param params.tokenAddress - TIP-20 token contract address.
22
+ * @param params.walletClient - Viem wallet client with a Tempo account.
23
+ * @returns The transaction hash.
24
+ * @throws {TempoNativeTokenError} If tokenAddress is empty.
25
+ * @example
26
+ * ```ts
27
+ * const hash = await sendTip20Transaction({
28
+ * amount: '1.5',
29
+ * to: '0xRecipient',
30
+ * tokenAddress: '0xTip20Token',
31
+ * walletClient,
32
+ * });
33
+ * ```
34
+ * @see getTempoPublicClient
35
+ * @see isTempoWalletAccount
36
+ * @notInstrumented
37
+ */
38
+ export declare const sendTip20Transaction: ({ amount, decimals, to, tokenAddress, walletClient, }: SendTip20TransactionParams) => Promise<Hex>;
39
+ export {};
40
+ //# sourceMappingURL=sendTip20Transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendTip20Transaction.d.ts","sourceRoot":"","sources":["../../src/sendTip20Transaction/sendTip20Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAkBzE,KAAK,0BAA0B,GAAG;IAChC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CACvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,oBAAoB,0DAM9B,0BAA0B,KAAG,OAAO,CAAC,GAAG,CAW1C,CAAC"}
@@ -0,0 +1,236 @@
1
+ import { BaseError, getActiveNetworkData } from "@dynamic-labs-sdk/client";
2
+ import { assertDefined, createBaseNetworkProvider, getDefaultClient, getNetworkProviderBuilderRegistry } from "@dynamic-labs-sdk/client/core";
3
+ import { createPublicClient, http, parseUnits } from "viem";
4
+
5
+ //#region package.json
6
+ var name = "@dynamic-labs-sdk/tempo";
7
+ var version = "1.40.0";
8
+
9
+ //#endregion
10
+ //#region src/errors/TempoNativeTokenError/TempoNativeTokenError.ts
11
+ /**
12
+ * Thrown when a Tempo transaction is attempted without a TIP-20 token contract address.
13
+ * Tempo has no native token, so all value transfers require a token contract address.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * throw new TempoNativeTokenError();
18
+ * ```
19
+ *
20
+ * @see sendTip20Transaction
21
+ * @see TempoWalletProvider
22
+ */
23
+ var TempoNativeTokenError = class extends BaseError {
24
+ constructor() {
25
+ super({
26
+ cause: null,
27
+ code: "tempo_native_token_error",
28
+ docsUrl: null,
29
+ name: "TempoNativeTokenError",
30
+ shortMessage: "Tempo has no native token. Provide a TIP-20 token contract address via tokenAddress."
31
+ });
32
+ }
33
+ };
34
+
35
+ //#endregion
36
+ //#region src/utils/createTempoNetworkProvider/createTempoNetworkProvider.ts
37
+ /** @notInstrumented */
38
+ const createTempoNetworkProvider = (networkData, client) => ({
39
+ ...createBaseNetworkProvider("TEMPO", networkData),
40
+ getBalance: async () => ({ balance: "0" })
41
+ });
42
+
43
+ //#endregion
44
+ //#region src/registerTempoNetworkProviderBuilder/registerTempoNetworkProviderBuilder.ts
45
+ /** @notInstrumented */
46
+ const registerTempoNetworkProviderBuilder = (client) => {
47
+ const networkProviderBuilderRegistry = getNetworkProviderBuilderRegistry(client);
48
+ if (networkProviderBuilderRegistry.get().get("TEMPO")) return;
49
+ networkProviderBuilderRegistry.register({
50
+ builder: (networkData) => createTempoNetworkProvider(networkData, client),
51
+ chain: "TEMPO"
52
+ });
53
+ };
54
+
55
+ //#endregion
56
+ //#region src/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts
57
+ /**
58
+ * Creates a viem Chain object from a NetworkData object.
59
+ * This is a local implementation (not re-exported from EVM) so that the Chain
60
+ * type is always resolved from the same viem instance used by Tempo's viem clients.
61
+ *
62
+ * @param networkData - The network data to convert.
63
+ * @returns The viem chain for the network.
64
+ * @example
65
+ * ```ts
66
+ * const chain = mapNetworkDataToViemChain(networkData);
67
+ * ```
68
+ * @see getTempoPublicClient
69
+ * @see isTempoChainId
70
+ * @notInstrumented
71
+ */
72
+ const mapNetworkDataToViemChain = (networkData) => ({
73
+ blockExplorers: networkData.blockExplorerUrls?.[0] ? { default: {
74
+ name: networkData.blockExplorerUrls[0],
75
+ url: networkData.blockExplorerUrls[0]
76
+ } } : void 0,
77
+ id: Number(networkData.networkId),
78
+ name: networkData.displayName,
79
+ nativeCurrency: networkData.nativeCurrency,
80
+ rpcUrls: { default: { http: networkData.rpcUrls.http } }
81
+ });
82
+
83
+ //#endregion
84
+ //#region src/getTempoPublicClient/getTempoPublicClient.ts
85
+ /**
86
+ * Returns a viem PublicClient for the active Tempo network.
87
+ * Network data (RPC URL, chain config) is resolved from the 'TEMPO' network
88
+ * registry at runtime — not from EVM.
89
+ *
90
+ * @param params.walletAccount - Must have chain === 'TEMPO'.
91
+ * @param [client] - The Dynamic client instance. Only required when using multiple clients.
92
+ * @returns A viem public client connected to the wallet account's active Tempo network.
93
+ * @throws If no network data is found for the wallet account.
94
+ * @example
95
+ * ```ts
96
+ * if (isTempoWalletAccount(walletAccount)) {
97
+ * const publicClient = await getTempoPublicClient({ walletAccount });
98
+ * const blockNumber = await publicClient.getBlockNumber();
99
+ * }
100
+ * ```
101
+ * @see isTempoWalletAccount
102
+ * @see sendTip20Transaction
103
+ * @notInstrumented
104
+ */
105
+ const getTempoPublicClient = async ({ walletAccount }, client = getDefaultClient()) => {
106
+ const { networkData } = await getActiveNetworkData({ walletAccount }, client);
107
+ assertDefined(networkData, `No network data found for Tempo wallet account ${walletAccount.address}`);
108
+ return createPublicClient({
109
+ chain: mapNetworkDataToViemChain(networkData),
110
+ transport: http(networkData.rpcUrls.http[0])
111
+ });
112
+ };
113
+
114
+ //#endregion
115
+ //#region src/isTempoWalletAccount/isTempoWalletAccount.ts
116
+ /**
117
+ * Type guard — returns true if the wallet account is for the Tempo chain.
118
+ *
119
+ * @param account - The wallet account to check.
120
+ * @returns Whether the wallet account is a Tempo wallet account.
121
+ * @example
122
+ * ```ts
123
+ * if (isTempoWalletAccount(walletAccount)) {
124
+ * const publicClient = await getTempoPublicClient({ walletAccount });
125
+ * }
126
+ * ```
127
+ * @see isTempoWalletProvider
128
+ * @see getTempoPublicClient
129
+ * @notInstrumented
130
+ */
131
+ const isTempoWalletAccount = (account) => account.chain === "TEMPO";
132
+
133
+ //#endregion
134
+ //#region src/isTempoWalletProvider/isTempoWalletProvider.ts
135
+ /**
136
+ * Type guard — returns true if the wallet provider is for the Tempo chain.
137
+ *
138
+ * @param provider - The wallet provider to check.
139
+ * @returns Whether the wallet provider is a Tempo wallet provider.
140
+ * @example
141
+ * ```ts
142
+ * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });
143
+ *
144
+ * if (isTempoWalletProvider(walletProvider)) {
145
+ * console.log(walletProvider.supportsFeeTokenSelection); // true
146
+ * }
147
+ * ```
148
+ * @see isTempoWalletAccount
149
+ * @see isTempoNetworkProvider
150
+ * @notInstrumented
151
+ */
152
+ const isTempoWalletProvider = (provider) => provider.chain === "TEMPO";
153
+
154
+ //#endregion
155
+ //#region src/sendTip20Transaction/sendTip20Transaction.ts
156
+ const erc20TransferAbi = [{
157
+ inputs: [{
158
+ name: "_to",
159
+ type: "address"
160
+ }, {
161
+ name: "_value",
162
+ type: "uint256"
163
+ }],
164
+ name: "transfer",
165
+ outputs: [{
166
+ name: "",
167
+ type: "bool"
168
+ }],
169
+ stateMutability: "nonpayable",
170
+ type: "function"
171
+ }];
172
+ /**
173
+ * Sends a TIP-20 token transfer on a Tempo network.
174
+ * Tempo has no native token — all transfers require a token contract address.
175
+ *
176
+ * @param params.amount - Human-readable amount, e.g. '1.5'.
177
+ * @param [params.decimals] - Token decimals. Defaults to 18.
178
+ * @param params.to - Recipient address.
179
+ * @param params.tokenAddress - TIP-20 token contract address.
180
+ * @param params.walletClient - Viem wallet client with a Tempo account.
181
+ * @returns The transaction hash.
182
+ * @throws {TempoNativeTokenError} If tokenAddress is empty.
183
+ * @example
184
+ * ```ts
185
+ * const hash = await sendTip20Transaction({
186
+ * amount: '1.5',
187
+ * to: '0xRecipient',
188
+ * tokenAddress: '0xTip20Token',
189
+ * walletClient,
190
+ * });
191
+ * ```
192
+ * @see getTempoPublicClient
193
+ * @see isTempoWalletAccount
194
+ * @notInstrumented
195
+ */
196
+ const sendTip20Transaction = async ({ amount, decimals = 18, to, tokenAddress, walletClient }) => {
197
+ if (!tokenAddress) throw new TempoNativeTokenError();
198
+ return walletClient.writeContract({
199
+ abi: erc20TransferAbi,
200
+ address: tokenAddress,
201
+ args: [to, parseUnits(amount, decimals)],
202
+ functionName: "transfer"
203
+ });
204
+ };
205
+
206
+ //#endregion
207
+ //#region src/utils/tempoChainIds/tempoChainIds.ts
208
+ /**
209
+ * Immutable protocol-level chain IDs for all Tempo networks.
210
+ * Used by isTempoChainId to identify Tempo chains.
211
+ */
212
+ const TEMPO_CHAIN_IDS = [
213
+ 4217,
214
+ 42429,
215
+ 42431
216
+ ];
217
+ /**
218
+ * Returns true if networkId belongs to a Tempo network.
219
+ * Tempo is EVM-compatible but has no native token and uses custom transaction formats.
220
+ *
221
+ * @param networkId - The network id to check, as a string or number.
222
+ * @returns Whether the network id is one of the Tempo network ids.
223
+ * @example
224
+ * ```ts
225
+ * isTempoChainId('4217'); // true
226
+ * isTempoChainId(1); // false
227
+ * ```
228
+ * @see TEMPO_CHAIN_IDS
229
+ * @see isTempoNetworkProvider
230
+ * @notInstrumented
231
+ */
232
+ const isTempoChainId = (networkId) => TEMPO_CHAIN_IDS.includes(Number(networkId));
233
+
234
+ //#endregion
235
+ export { isTempoWalletAccount as a, registerTempoNetworkProviderBuilder as c, version as d, isTempoWalletProvider as i, TempoNativeTokenError as l, isTempoChainId as n, getTempoPublicClient as o, sendTip20Transaction as r, mapNetworkDataToViemChain as s, TEMPO_CHAIN_IDS as t, name as u };
236
+ //# sourceMappingURL=tempoChainIds-BVinmTlR.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tempoChainIds-BVinmTlR.esm.js","names":[],"sources":["../package.json","../src/errors/TempoNativeTokenError/TempoNativeTokenError.ts","../src/utils/createTempoNetworkProvider/createTempoNetworkProvider.ts","../src/registerTempoNetworkProviderBuilder/registerTempoNetworkProviderBuilder.ts","../src/utils/mapNetworkDataToViemChain/mapNetworkDataToViemChain.ts","../src/getTempoPublicClient/getTempoPublicClient.ts","../src/isTempoWalletAccount/isTempoWalletAccount.ts","../src/isTempoWalletProvider/isTempoWalletProvider.ts","../src/sendTip20Transaction/sendTip20Transaction.ts","../src/utils/tempoChainIds/tempoChainIds.ts"],"sourcesContent":["","import { BaseError } from '@dynamic-labs-sdk/client';\n\n/**\n * Thrown when a Tempo transaction is attempted without a TIP-20 token contract address.\n * Tempo has no native token, so all value transfers require a token contract address.\n *\n * @example\n * ```ts\n * throw new TempoNativeTokenError();\n * ```\n *\n * @see sendTip20Transaction\n * @see TempoWalletProvider\n */\nexport class TempoNativeTokenError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'tempo_native_token_error',\n docsUrl: null,\n name: 'TempoNativeTokenError',\n shortMessage:\n 'Tempo has no native token. Provide a TIP-20 token contract address via tokenAddress.',\n });\n }\n}\n","import type { DynamicClient, NetworkData } from '@dynamic-labs-sdk/client';\nimport { createBaseNetworkProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TempoNetworkProvider } from '../../TempoNetworkProvider.types';\n\n/** @notInstrumented */\nexport const createTempoNetworkProvider = (\n networkData: NetworkData,\n // Tempo has no native token so no RPC balance call is needed.\n // The client param is kept to match the builder signature.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n client: DynamicClient\n): TempoNetworkProvider => ({\n ...createBaseNetworkProvider('TEMPO', networkData),\n getBalance: async () => ({ balance: '0' }),\n});\n","import { type DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getNetworkProviderBuilderRegistry } from '@dynamic-labs-sdk/client/core';\n\nimport { createTempoNetworkProvider } from '../utils/createTempoNetworkProvider/createTempoNetworkProvider';\n\n/** @notInstrumented */\nexport const registerTempoNetworkProviderBuilder = (\n client: DynamicClient\n): void => {\n const networkProviderBuilderRegistry =\n getNetworkProviderBuilderRegistry(client);\n\n if (networkProviderBuilderRegistry.get().get('TEMPO')) {\n return;\n }\n\n networkProviderBuilderRegistry.register({\n builder: (networkData) => createTempoNetworkProvider(networkData, client),\n chain: 'TEMPO',\n });\n};\n","import type { NetworkData } from '@dynamic-labs-sdk/client';\nimport type { Chain } from 'viem';\n\n/**\n * Creates a viem Chain object from a NetworkData object.\n * This is a local implementation (not re-exported from EVM) so that the Chain\n * type is always resolved from the same viem instance used by Tempo's viem clients.\n *\n * @param networkData - The network data to convert.\n * @returns The viem chain for the network.\n * @example\n * ```ts\n * const chain = mapNetworkDataToViemChain(networkData);\n * ```\n * @see getTempoPublicClient\n * @see isTempoChainId\n * @notInstrumented\n */\nexport const mapNetworkDataToViemChain = (networkData: NetworkData): Chain => ({\n blockExplorers: networkData.blockExplorerUrls?.[0]\n ? {\n default: {\n name: networkData.blockExplorerUrls[0],\n url: networkData.blockExplorerUrls[0],\n },\n }\n : undefined,\n id: Number(networkData.networkId),\n name: networkData.displayName,\n nativeCurrency: networkData.nativeCurrency,\n rpcUrls: {\n default: { http: networkData.rpcUrls.http },\n },\n});\n","import {\n type WalletAccount,\n getActiveNetworkData,\n} from '@dynamic-labs-sdk/client';\nimport { assertDefined, getDefaultClient } from '@dynamic-labs-sdk/client/core';\nimport type { Chain, PublicClient, Transport } from 'viem';\nimport { createPublicClient, http } from 'viem';\n\nimport { mapNetworkDataToViemChain } from '../utils/mapNetworkDataToViemChain';\n\ntype GetTempoPublicClientParams = {\n walletAccount: WalletAccount;\n};\n\n/**\n * Returns a viem PublicClient for the active Tempo network.\n * Network data (RPC URL, chain config) is resolved from the 'TEMPO' network\n * registry at runtime — not from EVM.\n *\n * @param params.walletAccount - Must have chain === 'TEMPO'.\n * @param [client] - The Dynamic client instance. Only required when using multiple clients.\n * @returns A viem public client connected to the wallet account's active Tempo network.\n * @throws If no network data is found for the wallet account.\n * @example\n * ```ts\n * if (isTempoWalletAccount(walletAccount)) {\n * const publicClient = await getTempoPublicClient({ walletAccount });\n * const blockNumber = await publicClient.getBlockNumber();\n * }\n * ```\n * @see isTempoWalletAccount\n * @see sendTip20Transaction\n * @notInstrumented\n */\nexport const getTempoPublicClient = async (\n { walletAccount }: GetTempoPublicClientParams,\n client = getDefaultClient()\n): Promise<PublicClient<Transport, Chain>> => {\n const { networkData } = await getActiveNetworkData({ walletAccount }, client);\n\n assertDefined(\n networkData,\n `No network data found for Tempo wallet account ${walletAccount.address}`\n );\n\n return createPublicClient({\n chain: mapNetworkDataToViemChain(networkData),\n transport: http(networkData.rpcUrls.http[0]),\n });\n};\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { TempoWalletAccount } from '../TempoWalletAccount.types';\n\n/**\n * Type guard — returns true if the wallet account is for the Tempo chain.\n *\n * @param account - The wallet account to check.\n * @returns Whether the wallet account is a Tempo wallet account.\n * @example\n * ```ts\n * if (isTempoWalletAccount(walletAccount)) {\n * const publicClient = await getTempoPublicClient({ walletAccount });\n * }\n * ```\n * @see isTempoWalletProvider\n * @see getTempoPublicClient\n * @notInstrumented\n */\nexport const isTempoWalletAccount = (\n account: WalletAccount | TempoWalletAccount\n): account is TempoWalletAccount => account.chain === 'TEMPO';\n","import type { WalletProvider } from '@dynamic-labs-sdk/client/core';\n\nimport type { TempoWalletProvider } from '../TempoWalletProvider.types';\n\n/**\n * Type guard — returns true if the wallet provider is for the Tempo chain.\n *\n * @param provider - The wallet provider to check.\n * @returns Whether the wallet provider is a Tempo wallet provider.\n * @example\n * ```ts\n * const walletProvider = getWalletProviderFromWalletAccount({ walletAccount });\n *\n * if (isTempoWalletProvider(walletProvider)) {\n * console.log(walletProvider.supportsFeeTokenSelection); // true\n * }\n * ```\n * @see isTempoWalletAccount\n * @see isTempoNetworkProvider\n * @notInstrumented\n */\nexport const isTempoWalletProvider = (\n provider: WalletProvider | TempoWalletProvider\n): provider is TempoWalletProvider => provider.chain === 'TEMPO';\n","import type { Account, Chain, Hex, Transport, WalletClient } from 'viem';\nimport { parseUnits } from 'viem';\n\nimport { TempoNativeTokenError } from '../errors/TempoNativeTokenError/TempoNativeTokenError';\n\nconst erc20TransferAbi = [\n {\n inputs: [\n { name: '_to', type: 'address' },\n { name: '_value', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const;\n\ntype SendTip20TransactionParams = {\n /** Human-readable amount, e.g. '1.5' */\n amount: string;\n /** Token decimals — defaults to 18 */\n decimals?: number;\n /** Recipient address */\n to: string;\n /** TIP-20 token contract address. Required — Tempo has no native token. */\n tokenAddress: string;\n /** Viem WalletClient with a Tempo account. Obtain from the Tempo wallet provider. */\n walletClient: WalletClient<Transport, Chain, Account>;\n};\n\n/**\n * Sends a TIP-20 token transfer on a Tempo network.\n * Tempo has no native token — all transfers require a token contract address.\n *\n * @param params.amount - Human-readable amount, e.g. '1.5'.\n * @param [params.decimals] - Token decimals. Defaults to 18.\n * @param params.to - Recipient address.\n * @param params.tokenAddress - TIP-20 token contract address.\n * @param params.walletClient - Viem wallet client with a Tempo account.\n * @returns The transaction hash.\n * @throws {TempoNativeTokenError} If tokenAddress is empty.\n * @example\n * ```ts\n * const hash = await sendTip20Transaction({\n * amount: '1.5',\n * to: '0xRecipient',\n * tokenAddress: '0xTip20Token',\n * walletClient,\n * });\n * ```\n * @see getTempoPublicClient\n * @see isTempoWalletAccount\n * @notInstrumented\n */\nexport const sendTip20Transaction = async ({\n amount,\n decimals = 18,\n to,\n tokenAddress,\n walletClient,\n}: SendTip20TransactionParams): Promise<Hex> => {\n if (!tokenAddress) {\n throw new TempoNativeTokenError();\n }\n\n return walletClient.writeContract({\n abi: erc20TransferAbi,\n address: tokenAddress as Hex,\n args: [to as Hex, parseUnits(amount, decimals)],\n functionName: 'transfer',\n });\n};\n","/* eslint-disable custom-rules/function-name-matches-filename */\n/**\n * Immutable protocol-level chain IDs for all Tempo networks.\n * Used by isTempoChainId to identify Tempo chains.\n */\nexport const TEMPO_CHAIN_IDS = [4217, 42429, 42431] as const;\n\n/**\n * Returns true if networkId belongs to a Tempo network.\n * Tempo is EVM-compatible but has no native token and uses custom transaction formats.\n *\n * @param networkId - The network id to check, as a string or number.\n * @returns Whether the network id is one of the Tempo network ids.\n * @example\n * ```ts\n * isTempoChainId('4217'); // true\n * isTempoChainId(1); // false\n * ```\n * @see TEMPO_CHAIN_IDS\n * @see isTempoNetworkProvider\n * @notInstrumented\n */\nexport const isTempoChainId = (networkId: string | number): boolean =>\n TEMPO_CHAIN_IDS.includes(\n Number(networkId) as (typeof TEMPO_CHAIN_IDS)[number]\n );\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;ACcA,IAAa,wBAAb,cAA2C,UAAU;CACnD,cAAc;AACZ,QAAM;GACJ,OAAO;GACP,MAAM;GACN,SAAS;GACT,MAAM;GACN,cACE;GACH,CAAC;;;;;;;ACjBN,MAAa,8BACX,aAIA,YAC0B;CAC1B,GAAG,0BAA0B,SAAS,YAAY;CAClD,YAAY,aAAa,EAAE,SAAS,KAAK;CAC1C;;;;;ACTD,MAAa,uCACX,WACS;CACT,MAAM,iCACJ,kCAAkC,OAAO;AAE3C,KAAI,+BAA+B,KAAK,CAAC,IAAI,QAAQ,CACnD;AAGF,gCAA+B,SAAS;EACtC,UAAU,gBAAgB,2BAA2B,aAAa,OAAO;EACzE,OAAO;EACR,CAAC;;;;;;;;;;;;;;;;;;;;ACDJ,MAAa,6BAA6B,iBAAqC;CAC7E,gBAAgB,YAAY,oBAAoB,KAC5C,EACE,SAAS;EACP,MAAM,YAAY,kBAAkB;EACpC,KAAK,YAAY,kBAAkB;EACpC,EACF,GACD;CACJ,IAAI,OAAO,YAAY,UAAU;CACjC,MAAM,YAAY;CAClB,gBAAgB,YAAY;CAC5B,SAAS,EACP,SAAS,EAAE,MAAM,YAAY,QAAQ,MAAM,EAC5C;CACF;;;;;;;;;;;;;;;;;;;;;;;;ACCD,MAAa,uBAAuB,OAClC,EAAE,iBACF,SAAS,kBAAkB,KACiB;CAC5C,MAAM,EAAE,gBAAgB,MAAM,qBAAqB,EAAE,eAAe,EAAE,OAAO;AAE7E,eACE,aACA,kDAAkD,cAAc,UACjE;AAED,QAAO,mBAAmB;EACxB,OAAO,0BAA0B,YAAY;EAC7C,WAAW,KAAK,YAAY,QAAQ,KAAK,GAAG;EAC7C,CAAC;;;;;;;;;;;;;;;;;;;;AC7BJ,MAAa,wBACX,YACkC,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;;ACAtD,MAAa,yBACX,aACoC,SAAS,UAAU;;;;AClBzD,MAAM,mBAAmB,CACvB;CACE,QAAQ,CACN;EAAE,MAAM;EAAO,MAAM;EAAW,EAChC;EAAE,MAAM;EAAU,MAAM;EAAW,CACpC;CACD,MAAM;CACN,SAAS,CAAC;EAAE,MAAM;EAAI,MAAM;EAAQ,CAAC;CACrC,iBAAiB;CACjB,MAAM;CACP,CACF;;;;;;;;;;;;;;;;;;;;;;;;;AAuCD,MAAa,uBAAuB,OAAO,EACzC,QACA,WAAW,IACX,IACA,cACA,mBAC8C;AAC9C,KAAI,CAAC,aACH,OAAM,IAAI,uBAAuB;AAGnC,QAAO,aAAa,cAAc;EAChC,KAAK;EACL,SAAS;EACT,MAAM,CAAC,IAAW,WAAW,QAAQ,SAAS,CAAC;EAC/C,cAAc;EACf,CAAC;;;;;;;;;AClEJ,MAAa,kBAAkB;CAAC;CAAM;CAAO;CAAM;;;;;;;;;;;;;;;;AAiBnD,MAAa,kBAAkB,cAC7B,gBAAgB,SACd,OAAO,UAAU,CAClB"}