@turnkey/react-wallet-kit 1.6.2 → 1.7.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 (27) hide show
  1. package/dist/components/send-transaction/SendTransaction.d.ts +12 -0
  2. package/dist/components/send-transaction/SendTransaction.d.ts.map +1 -0
  3. package/dist/components/send-transaction/SendTransaction.js +65 -0
  4. package/dist/components/send-transaction/SendTransaction.js.map +1 -0
  5. package/dist/components/send-transaction/SendTransaction.mjs +89 -0
  6. package/dist/components/send-transaction/SendTransaction.mjs.map +1 -0
  7. package/dist/components/send-transaction/helpers.d.ts +4 -0
  8. package/dist/components/send-transaction/helpers.d.ts.map +1 -0
  9. package/dist/components/send-transaction/helpers.js +31 -0
  10. package/dist/components/send-transaction/helpers.js.map +1 -0
  11. package/dist/components/send-transaction/helpers.mjs +28 -0
  12. package/dist/components/send-transaction/helpers.mjs.map +1 -0
  13. package/dist/providers/client/Provider.d.ts.map +1 -1
  14. package/dist/providers/client/Provider.js +102 -2
  15. package/dist/providers/client/Provider.js.map +1 -1
  16. package/dist/providers/client/Provider.mjs +1047 -884
  17. package/dist/providers/client/Provider.mjs.map +1 -1
  18. package/dist/providers/client/Types.d.ts +22 -1
  19. package/dist/providers/client/Types.d.ts.map +1 -1
  20. package/dist/providers/client/Types.js.map +1 -1
  21. package/dist/providers/client/Types.mjs.map +1 -1
  22. package/dist/styles.css +1 -1
  23. package/dist/typedoc-entry/index.d.ts +1 -1
  24. package/dist/typedoc-entry/index.d.ts.map +1 -1
  25. package/dist/types/method-types.d.ts +9 -1
  26. package/dist/types/method-types.d.ts.map +1 -1
  27. package/package.json +5 -4
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ export declare function SendTransactionPage({ icon, action, caip2, successPageDuration, onSuccess, onError, }: {
3
+ icon?: React.ReactNode;
4
+ action: () => Promise<{
5
+ txHash?: string;
6
+ }>;
7
+ caip2: string;
8
+ successPageDuration?: number;
9
+ onSuccess?: () => void;
10
+ onError?: (error: any) => void;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=SendTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendTransaction.d.ts","sourceRoot":"","sources":["../../../src/components/send-transaction/SendTransaction.tsx"],"names":[],"mappings":";AAOA,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,MAAM,EACN,KAAK,EACL,mBAA0B,EAC1B,SAAS,EACT,OAAO,GACR,EAAE;IACD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC,2CA4DA"}
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Hook = require('../../providers/modal/Hook.js');
5
+ var clsx = require('clsx');
6
+ var Action = require('../auth/Action.js');
7
+ var Success = require('../design/Success.js');
8
+ var react = require('react');
9
+ var helpers = require('./helpers.js');
10
+
11
+ function SendTransactionPage({
12
+ icon,
13
+ action,
14
+ caip2,
15
+ successPageDuration = 2000,
16
+ onSuccess,
17
+ onError
18
+ }) {
19
+ const {
20
+ closeModal,
21
+ isMobile
22
+ } = Hook.useModal();
23
+ const [completed, setCompleted] = react.useState(false);
24
+ const [storedTxHash, setStoredTxHash] = react.useState();
25
+ if (completed) {
26
+ return jsxRuntime.jsxs("div", {
27
+ className: clsx("flex flex-col items-center justify-center py-5 text-center gap-2", isMobile ? "w-full" : "w-72"),
28
+ children: [jsxRuntime.jsx(Success.SuccessPage, {
29
+ text: "Transaction Sent!",
30
+ duration: successPageDuration,
31
+ onComplete: () => {
32
+ onSuccess?.();
33
+ closeModal();
34
+ }
35
+ }), storedTxHash && jsxRuntime.jsx("a", {
36
+ href: helpers.getExplorerUrl(storedTxHash, caip2),
37
+ target: "_blank",
38
+ rel: "noopener noreferrer",
39
+ className: "text-primary-light dark:text-primary-dark underline text-sm mt-2",
40
+ children: "View on Explorer"
41
+ })]
42
+ });
43
+ }
44
+ return jsxRuntime.jsx("div", {
45
+ className: clsx("flex flex-col items-center justify-center py-5 text-center", isMobile ? "w-full" : "w-72"),
46
+ children: jsxRuntime.jsx(Action.ActionPage, {
47
+ title: "Sending Transaction",
48
+ icon: icon,
49
+ action: async () => {
50
+ try {
51
+ const result = await action();
52
+ setStoredTxHash(result?.txHash);
53
+ setCompleted(true);
54
+ } catch (err) {
55
+ onError?.(err);
56
+ throw err;
57
+ }
58
+ },
59
+ closeOnComplete: false
60
+ })
61
+ });
62
+ }
63
+
64
+ exports.SendTransactionPage = SendTransactionPage;
65
+ //# sourceMappingURL=SendTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendTransaction.js","sources":["../../../src/components/send-transaction/SendTransaction.tsx"],"sourcesContent":[null],"names":["SendTransactionPage","icon","action","caip2","successPageDuration","onSuccess","onError","closeModal","isMobile","useModal","completed","setCompleted","useState","storedTxHash","setStoredTxHash","_jsxs","className","clsx","children","_jsx","SuccessPage","text","duration","onComplete","href","getExplorerUrl","target","rel","ActionPage","title","result","txHash","err","closeOnComplete"],"mappings":";;;;;;;;;;SAOgBA,mBAAmBA,CAAC;EAClCC,IAAI;EACJC,MAAM;EACNC,KAAK;AACLC,EAAAA,mBAAmB,GAAG,IAAI;EAC1BC,SAAS;AACTC,EAAAA;AAAO,CAQR,EAAA;EACC,MAAM;IAAEC,UAAU;AAAEC,IAAAA;GAAU,GAAGC,aAAQ,EAAE;EAC3C,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGF,cAAQ,EAAsB;AAEtE,EAAA,IAAIF,SAAS,EAAE;IACb,OACEK,eAAA,CAAA,KAAA,EAAA;MACEC,SAAS,EAAEC,IAAI,CACb,kEAAkE,EAClET,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAU,MAAAA,QAAA,EAAA,CAEDC,cAAA,CAACC,mBAAW,EAAA;AACVC,QAAAA,IAAI,EAAC,mBAAmB;AACxBC,QAAAA,QAAQ,EAAElB,mBAAmB;QAC7BmB,UAAU,EAAEA,MAAK;AACflB,UAAAA,SAAS,IAAI;AACbE,UAAAA,UAAU,EAAE;AACd,QAAA;AAAC,OAAA,CACD,EAEDM,YAAY,IACXM,cAAA,CAAA,GAAA,EAAA;AACEK,QAAAA,IAAI,EAAEC,sBAAc,CAACZ,YAAY,EAAEV,KAAK,CAAC;AACzCuB,QAAAA,MAAM,EAAC,QAAQ;AACfC,QAAAA,GAAG,EAAC,qBAAqB;AACzBX,QAAAA,SAAS,EAAC,kEAAkE;AAAAE,QAAAA,QAAA,EAAA;AAAA,OAAA,CAI/E;AAAA,KAAA,CACG;AAEV,EAAA;EAEA,OACEC,cAAA,CAAA,KAAA,EAAA;IACEH,SAAS,EAAEC,IAAI,CACb,4DAA4D,EAC5DT,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAC7B;AAAAU,IAAAA,QAAA,EAEDC,cAAA,CAACS,iBAAU,EAAA;AACTC,MAAAA,KAAK,EAAC,qBAAqB;AAC3B5B,MAAAA,IAAI,EAAEA,IAAI;MACVC,MAAM,EAAE,YAAW;QACjB,IAAI;AACF,UAAA,MAAM4B,MAAM,GAAG,MAAM5B,MAAM,EAAE;AAC7BY,UAAAA,eAAe,CAACgB,MAAM,EAAEC,MAAM,CAAC;UAC/BpB,YAAY,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,OAAOqB,GAAG,EAAE;UACZ1B,OAAO,GAAG0B,GAAG,CAAC;AACd,UAAA,MAAMA,GAAG;AACX,QAAA;MACF,CAAC;AACDC,MAAAA,eAAe,EAAE;KAAK;AACtB,GAAA,CACE;AAEV;;;;"}
@@ -0,0 +1,89 @@
1
+ import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../_virtual/_rollupPluginBabelHelpers.mjs';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useModal } from '../../providers/modal/Hook.mjs';
4
+ import clsx from 'clsx';
5
+ import { ActionPage } from '../auth/Action.mjs';
6
+ import { SuccessPage } from '../design/Success.mjs';
7
+ import { useState } from 'react';
8
+ import { getExplorerUrl } from './helpers.mjs';
9
+
10
+ function SendTransactionPage(_ref) {
11
+ var icon = _ref.icon,
12
+ _action = _ref.action,
13
+ caip2 = _ref.caip2,
14
+ _ref$successPageDurat = _ref.successPageDuration,
15
+ successPageDuration = _ref$successPageDurat === void 0 ? 2000 : _ref$successPageDurat,
16
+ onSuccess = _ref.onSuccess,
17
+ onError = _ref.onError;
18
+ var _useModal = useModal(),
19
+ closeModal = _useModal.closeModal,
20
+ isMobile = _useModal.isMobile;
21
+ var _useState = useState(false),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ completed = _useState2[0],
24
+ setCompleted = _useState2[1];
25
+ var _useState3 = useState(),
26
+ _useState4 = _slicedToArray(_useState3, 2),
27
+ storedTxHash = _useState4[0],
28
+ setStoredTxHash = _useState4[1];
29
+ if (completed) {
30
+ return jsxs("div", {
31
+ className: clsx("flex flex-col items-center justify-center py-5 text-center gap-2", isMobile ? "w-full" : "w-72"),
32
+ children: [jsx(SuccessPage, {
33
+ text: "Transaction Sent!",
34
+ duration: successPageDuration,
35
+ onComplete: function onComplete() {
36
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
37
+ closeModal();
38
+ }
39
+ }), storedTxHash && jsx("a", {
40
+ href: getExplorerUrl(storedTxHash, caip2),
41
+ target: "_blank",
42
+ rel: "noopener noreferrer",
43
+ className: "text-primary-light dark:text-primary-dark underline text-sm mt-2",
44
+ children: "View on Explorer"
45
+ })]
46
+ });
47
+ }
48
+ return jsx("div", {
49
+ className: clsx("flex flex-col items-center justify-center py-5 text-center", isMobile ? "w-full" : "w-72"),
50
+ children: jsx(ActionPage, {
51
+ title: "Sending Transaction",
52
+ icon: icon,
53
+ action: function () {
54
+ var _action2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
55
+ var result, _t;
56
+ return _regenerator().w(function (_context) {
57
+ while (1) switch (_context.p = _context.n) {
58
+ case 0:
59
+ _context.p = 0;
60
+ _context.n = 1;
61
+ return _action();
62
+ case 1:
63
+ result = _context.v;
64
+ setStoredTxHash(result === null || result === void 0 ? void 0 : result.txHash);
65
+ setCompleted(true);
66
+ _context.n = 3;
67
+ break;
68
+ case 2:
69
+ _context.p = 2;
70
+ _t = _context.v;
71
+ onError === null || onError === void 0 ? void 0 : onError(_t);
72
+ throw _t;
73
+ case 3:
74
+ return _context.a(2);
75
+ }
76
+ }, _callee, null, [[0, 2]]);
77
+ }));
78
+ function action() {
79
+ return _action2.apply(this, arguments);
80
+ }
81
+ return action;
82
+ }(),
83
+ closeOnComplete: false
84
+ })
85
+ });
86
+ }
87
+
88
+ export { SendTransactionPage };
89
+ //# sourceMappingURL=SendTransaction.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendTransaction.mjs","sources":["../../../src/components/send-transaction/SendTransaction.tsx"],"sourcesContent":[null],"names":["SendTransactionPage","_ref","icon","action","caip2","_ref$successPageDurat","successPageDuration","onSuccess","onError","_useModal","useModal","closeModal","isMobile","_useState","useState","_useState2","_slicedToArray","completed","setCompleted","_useState3","_useState4","storedTxHash","setStoredTxHash","_jsxs","className","clsx","children","_jsx","SuccessPage","text","duration","onComplete","href","getExplorerUrl","target","rel","ActionPage","title","_action2","_asyncToGenerator","_regenerator","m","_callee","result","_t","w","_context","p","n","v","txHash","a","apply","arguments","closeOnComplete"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare function getExplorerUrl(txHash: string, caip2: string): string;
3
+ export declare function getChainLogo(caip2: string): React.ReactNode;
4
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/components/send-transaction/helpers.tsx"],"names":[],"mappings":";AAEA,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAepE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAI3D"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Svg = require('../design/Svg.js');
5
+
6
+ function getExplorerUrl(txHash, caip2) {
7
+ switch (caip2) {
8
+ case "eip155:8453":
9
+ return `https://basescan.org/tx/${txHash}`;
10
+ case "eip155:84532":
11
+ return `https://sepolia.basescan.org/tx/${txHash}`;
12
+ case "eip155:1":
13
+ return `https://etherscan.io/tx/${txHash}`;
14
+ case "eip155:11155111":
15
+ return `https://sepolia.etherscan.io/tx/${txHash}`;
16
+ case "eip155:137":
17
+ return `https://polygonscan.com/tx/${txHash}`;
18
+ default:
19
+ return `https://etherscan.io/tx/${txHash}`;
20
+ }
21
+ }
22
+ function getChainLogo(caip2) {
23
+ const Logo = caip2.startsWith("solana:") ? Svg.SolanaLogo : Svg.EthereumLogo;
24
+ return jsxRuntime.jsx(Logo, {
25
+ className: "h-10 w-10 rounded-full"
26
+ });
27
+ }
28
+
29
+ exports.getChainLogo = getChainLogo;
30
+ exports.getExplorerUrl = getExplorerUrl;
31
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/components/send-transaction/helpers.tsx"],"sourcesContent":[null],"names":["getExplorerUrl","txHash","caip2","getChainLogo","Logo","startsWith","SolanaLogo","EthereumLogo","_jsx","className"],"mappings":";;;;;AAEM,SAAUA,cAAcA,CAACC,MAAc,EAAEC,KAAa,EAAA;AAC1D,EAAA,QAAQA,KAAK;AACX,IAAA,KAAK,aAAa;MAChB,OAAO,CAAA,wBAAA,EAA2BD,MAAM,CAAA,CAAE;AAC5C,IAAA,KAAK,cAAc;MACjB,OAAO,CAAA,gCAAA,EAAmCA,MAAM,CAAA,CAAE;AACpD,IAAA,KAAK,UAAU;MACb,OAAO,CAAA,wBAAA,EAA2BA,MAAM,CAAA,CAAE;AAC5C,IAAA,KAAK,iBAAiB;MACpB,OAAO,CAAA,gCAAA,EAAmCA,MAAM,CAAA,CAAE;AACpD,IAAA,KAAK,YAAY;MACf,OAAO,CAAA,2BAAA,EAA8BA,MAAM,CAAA,CAAE;AAC/C,IAAA;MACE,OAAO,CAAA,wBAAA,EAA2BA,MAAM,CAAA,CAAE;AAC9C;AACF;AAEM,SAAUE,YAAYA,CAACD,KAAa,EAAA;EACxC,MAAME,IAAI,GAAGF,KAAK,CAACG,UAAU,CAAC,SAAS,CAAC,GAAGC,cAAU,GAAGC,gBAAY;EAEpE,OAAOC,eAACJ,IAAI,EAAA;AAACK,IAAAA,SAAS,EAAC;IAA2B;AACpD;;;;;"}
@@ -0,0 +1,28 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { SolanaLogo, EthereumLogo } from '../design/Svg.mjs';
3
+
4
+ function getExplorerUrl(txHash, caip2) {
5
+ switch (caip2) {
6
+ case "eip155:8453":
7
+ return "https://basescan.org/tx/".concat(txHash);
8
+ case "eip155:84532":
9
+ return "https://sepolia.basescan.org/tx/".concat(txHash);
10
+ case "eip155:1":
11
+ return "https://etherscan.io/tx/".concat(txHash);
12
+ case "eip155:11155111":
13
+ return "https://sepolia.etherscan.io/tx/".concat(txHash);
14
+ case "eip155:137":
15
+ return "https://polygonscan.com/tx/".concat(txHash);
16
+ default:
17
+ return "https://etherscan.io/tx/".concat(txHash);
18
+ }
19
+ }
20
+ function getChainLogo(caip2) {
21
+ var Logo = caip2.startsWith("solana:") ? SolanaLogo : EthereumLogo;
22
+ return jsx(Logo, {
23
+ className: "h-10 w-10 rounded-full"
24
+ });
25
+ }
26
+
27
+ export { getChainLogo, getExplorerUrl };
28
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.mjs","sources":["../../../src/components/send-transaction/helpers.tsx"],"sourcesContent":[null],"names":["getExplorerUrl","txHash","caip2","concat","getChainLogo","Logo","startsWith","SolanaLogo","EthereumLogo","_jsx","className"],"mappings":";;;AAEM,SAAUA,cAAcA,CAACC,MAAc,EAAEC,KAAa,EAAA;AAC1D,EAAA,QAAQA,KAAK;AACX,IAAA,KAAK,aAAa;MAChB,OAAA,0BAAA,CAAAC,MAAA,CAAkCF,MAAM,CAAA;AAC1C,IAAA,KAAK,cAAc;MACjB,OAAA,kCAAA,CAAAE,MAAA,CAA0CF,MAAM,CAAA;AAClD,IAAA,KAAK,UAAU;MACb,OAAA,0BAAA,CAAAE,MAAA,CAAkCF,MAAM,CAAA;AAC1C,IAAA,KAAK,iBAAiB;MACpB,OAAA,kCAAA,CAAAE,MAAA,CAA0CF,MAAM,CAAA;AAClD,IAAA,KAAK,YAAY;MACf,OAAA,6BAAA,CAAAE,MAAA,CAAqCF,MAAM,CAAA;AAC7C,IAAA;MACE,OAAA,0BAAA,CAAAE,MAAA,CAAkCF,MAAM,CAAA;AAC5C;AACF;AAEM,SAAUG,YAAYA,CAACF,KAAa,EAAA;EACxC,IAAMG,IAAI,GAAGH,KAAK,CAACI,UAAU,CAAC,SAAS,CAAC,GAAGC,UAAU,GAAGC,YAAY;EAEpE,OAAOC,IAACJ,IAAI,EAAA;AAACK,IAAAA,SAAS,EAAC;IAA2B;AACpD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"AAsGA,OAAO,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAuB5E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAM3B,MAAM,kBAAkB,CAAC;AA2D1B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA8oLxD,CAAC"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../src/providers/client/Provider.tsx"],"names":[],"mappings":"AAyGA,OAAO,EAAE,SAAS,EAA4C,MAAM,OAAO,CAAC;AAwB5E,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAM3B,MAAM,kBAAkB,CAAC;AA8D1B;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA8xLxD,CAAC"}
@@ -32,6 +32,8 @@ var RemovePhoneNumber = require('../../components/user/RemovePhoneNumber.js');
32
32
  var Verify = require('../../components/verify/Verify.js');
33
33
  var OnRamp = require('../../components/onramp/OnRamp.js');
34
34
  var Svg = require('../../components/design/Svg.js');
35
+ var SendTransaction = require('../../components/send-transaction/SendTransaction.js');
36
+ var helpers = require('../../components/send-transaction/helpers.js');
35
37
 
36
38
  /**
37
39
  * Provides Turnkey client authentication, session management, wallet operations, and user profile management
@@ -1475,10 +1477,18 @@ const ClientProvider = ({
1475
1477
  if (!client) throw new sdkTypes.TurnkeyError("Client is not initialized.", sdkTypes.TurnkeyErrorCodes.CLIENT_NOT_INITIALIZED);
1476
1478
  return utils.withTurnkeyErrorHandling(() => client.signTransaction(params), () => logout(), callbacks, "Failed to sign transaction");
1477
1479
  }, [client, callbacks, logout]);
1480
+ const ethSendTransaction = react.useCallback(async params => {
1481
+ if (!client) throw new sdkTypes.TurnkeyError("Client is not initialized.", sdkTypes.TurnkeyErrorCodes.CLIENT_NOT_INITIALIZED);
1482
+ return utils.withTurnkeyErrorHandling(() => client.ethSendTransaction(params), () => logout(), callbacks, "Failed to send eth transaction");
1483
+ }, [client, callbacks, logout]);
1478
1484
  const signAndSendTransaction = react.useCallback(async params => {
1479
1485
  if (!client) throw new sdkTypes.TurnkeyError("Client is not initialized.", sdkTypes.TurnkeyErrorCodes.CLIENT_NOT_INITIALIZED);
1480
- return utils.withTurnkeyErrorHandling(() => client.signAndSendTransaction(params), () => logout(), callbacks, "Failed to sign transaction");
1486
+ return utils.withTurnkeyErrorHandling(() => client.signAndSendTransaction(params), () => logout(), callbacks, "Failed to sign and send transaction");
1481
1487
  }, [client, callbacks, logout]);
1488
+ const pollTransactionStatus = react.useCallback(async params => {
1489
+ if (!client) throw new sdkTypes.TurnkeyError("Client is not initialized.", sdkTypes.TurnkeyErrorCodes.CLIENT_NOT_INITIALIZED);
1490
+ return utils.withTurnkeyErrorHandling(() => client.pollTransactionStatus(params), () => logout(), callbacks, "Failed to poll transaction status");
1491
+ }, [client, callbacks]);
1482
1492
  const fetchOrCreateP256ApiKeyUser = react.useCallback(async params => {
1483
1493
  if (!client) throw new sdkTypes.TurnkeyError("Client is not initialized.", sdkTypes.TurnkeyErrorCodes.CLIENT_NOT_INITIALIZED);
1484
1494
  return utils.withTurnkeyErrorHandling(() => client.fetchOrCreateP256ApiKeyUser(params), () => logout(), callbacks, "Failed to fetch or create delegated access user");
@@ -3522,6 +3532,93 @@ const ClientProvider = ({
3522
3532
  throw new sdkTypes.TurnkeyError("Failed to remove user phone number.", sdkTypes.TurnkeyErrorCodes.UPDATE_USER_PHONE_NUMBER_ERROR, error);
3523
3533
  }
3524
3534
  }, [getSession, pushPage]);
3535
+ const handleSendTransaction = react.useCallback(async params => {
3536
+ const session = await getSession();
3537
+ const organizationId = params.organizationId || session?.organizationId;
3538
+ if (!organizationId) {
3539
+ throw new sdkTypes.TurnkeyError("A session or passed in organization ID is required.", sdkTypes.TurnkeyErrorCodes.INVALID_REQUEST);
3540
+ }
3541
+ const {
3542
+ transaction,
3543
+ icon,
3544
+ stampWith,
3545
+ successPageDuration = 2000
3546
+ } = params;
3547
+ const {
3548
+ from,
3549
+ to,
3550
+ caip2,
3551
+ value,
3552
+ data,
3553
+ nonce,
3554
+ gasLimit,
3555
+ maxFeePerGas,
3556
+ maxPriorityFeePerGas,
3557
+ sponsor
3558
+ } = transaction;
3559
+ const cleanedData = data && data !== "0x" && data !== "" ? data : undefined;
3560
+ return new Promise((resolve, reject) => {
3561
+ const action = async () => {
3562
+ const tx = {
3563
+ from,
3564
+ to,
3565
+ caip2,
3566
+ sponsor: sponsor ?? false,
3567
+ ...(value ? {
3568
+ value
3569
+ } : {}),
3570
+ ...(cleanedData ? {
3571
+ data: cleanedData
3572
+ } : {}),
3573
+ ...(nonce ? {
3574
+ nonce
3575
+ } : {}),
3576
+ ...(gasLimit ? {
3577
+ gasLimit
3578
+ } : {}),
3579
+ ...(maxFeePerGas ? {
3580
+ maxFeePerGas
3581
+ } : {}),
3582
+ ...(maxPriorityFeePerGas ? {
3583
+ maxPriorityFeePerGas
3584
+ } : {})
3585
+ };
3586
+ const sendTransactionStatusId = await ethSendTransaction({
3587
+ organizationId,
3588
+ transaction: tx,
3589
+ stampWith
3590
+ });
3591
+ if (!sendTransactionStatusId) {
3592
+ throw new sdkTypes.TurnkeyError("Missing sendTransactionStatusId", sdkTypes.TurnkeyErrorCodes.ETH_SEND_TRANSACTION_ERROR);
3593
+ }
3594
+ const pollResult = await pollTransactionStatus({
3595
+ organizationId,
3596
+ sendTransactionStatusId
3597
+ });
3598
+ const txHash = pollResult?.eth?.txHash;
3599
+ if (!txHash) {
3600
+ throw new sdkTypes.TurnkeyError("Missing txHash in transaction result", sdkTypes.TurnkeyErrorCodes.POLL_TRANSACTION_STATUS_ERROR);
3601
+ }
3602
+ return {
3603
+ txHash
3604
+ };
3605
+ };
3606
+ pushPage({
3607
+ key: "Send Transaction",
3608
+ showTitle: false,
3609
+ preventBack: true,
3610
+ onClose: () => reject(new sdkTypes.TurnkeyError("User canceled the transaction.", sdkTypes.TurnkeyErrorCodes.USER_CANCELED)),
3611
+ content: jsxRuntime.jsx(SendTransaction.SendTransactionPage, {
3612
+ icon: icon ?? helpers.getChainLogo(caip2),
3613
+ action: action,
3614
+ caip2: caip2,
3615
+ successPageDuration: successPageDuration,
3616
+ onSuccess: () => resolve(),
3617
+ onError: err => reject(err)
3618
+ })
3619
+ });
3620
+ });
3621
+ }, [pushPage, client]);
3525
3622
  const handleOnRamp = react.useCallback(async params => {
3526
3623
  const {
3527
3624
  walletAccount,
@@ -3875,7 +3972,9 @@ const ClientProvider = ({
3875
3972
  refreshWallets,
3876
3973
  signMessage,
3877
3974
  signTransaction,
3975
+ ethSendTransaction,
3878
3976
  signAndSendTransaction,
3977
+ pollTransactionStatus,
3879
3978
  fetchUser,
3880
3979
  fetchOrCreateP256ApiKeyUser,
3881
3980
  fetchOrCreatePolicies,
@@ -3935,7 +4034,8 @@ const ClientProvider = ({
3935
4034
  handleRemoveUserEmail,
3936
4035
  handleRemoveUserPhoneNumber,
3937
4036
  handleVerifyAppProofs,
3938
- handleOnRamp
4037
+ handleOnRamp,
4038
+ handleSendTransaction
3939
4039
  },
3940
4040
  children: children
3941
4041
  });