@coinbase/cdp-hooks 0.0.45 → 0.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -1,40 +1,43 @@
1
- import { APIError as n } from "@coinbase/cdp-core";
2
- import { CDPContext as r, CDPHooksProvider as i } from "./index2.js";
3
- import { useConfig as t, useCurrentUser as a, useEnforceAuthenticated as S, useEnforceUnauthenticated as m, useEvmAddress as d, useExportEvmAccount as c, useExportSolanaAccount as p, useGetAccessToken as E, useIsInitialized as g, useIsSignedIn as f, useSendEvmTransaction as v, useSendSolanaTransaction as x, useSendUserOperation as P, useSignEvmHash as l, useSignEvmMessage as T, useSignEvmTransaction as A, useSignEvmTypedData as I, useSignInWithEmail as C, useSignInWithSms as h, useSignOut as O, useSignSolanaMessage as U, useSignSolanaTransaction as k, useSolanaAddress as y, useVerifyEmailOTP as D, useVerifySmsOTP as W, useWaitForUserOperation as H } from "./index3.js";
4
- import { useCreateSpendPermission as V } from "./index4.js";
5
- import { useListSpendPermissions as F } from "./index5.js";
6
- import { useRevokeSpendPermission as L } from "./index6.js";
1
+ import { APIError as n, OAuth2ProviderType as r } from "@coinbase/cdp-core";
2
+ import { CDPContext as i, CDPHooksProvider as t } from "./index2.js";
3
+ import { useConfig as a, useCurrentUser as S, useEnforceAuthenticated as m, useEnforceUnauthenticated as d, useEvmAddress as p, useExportEvmAccount as c, useExportSolanaAccount as g, useGetAccessToken as E, useIsInitialized as f, useIsSignedIn as v, useOAuthState as A, useSendEvmTransaction as P, useSendSolanaTransaction as h, useSendUserOperation as x, useSignEvmHash as T, useSignEvmMessage as l, useSignEvmTransaction as I, useSignEvmTypedData as O, useSignInWithEmail as C, useSignInWithOAuth as y, useSignInWithSms as U, useSignOut as W, useSignSolanaMessage as k, useSignSolanaTransaction as D, useSolanaAddress as H, useVerifyEmailOTP as M, useVerifySmsOTP as V, useWaitForUserOperation as z } from "./index3.js";
4
+ import { useCreateSpendPermission as G } from "./index4.js";
5
+ import { useListSpendPermissions as R } from "./index5.js";
6
+ import { useRevokeSpendPermission as j } from "./index6.js";
7
7
  export {
8
8
  n as APIError,
9
- r as CDPContext,
10
- i as CDPHooksProvider,
11
- t as useConfig,
12
- V as useCreateSpendPermission,
13
- a as useCurrentUser,
14
- S as useEnforceAuthenticated,
15
- m as useEnforceUnauthenticated,
16
- d as useEvmAddress,
9
+ i as CDPContext,
10
+ t as CDPHooksProvider,
11
+ r as OAuth2ProviderType,
12
+ a as useConfig,
13
+ G as useCreateSpendPermission,
14
+ S as useCurrentUser,
15
+ m as useEnforceAuthenticated,
16
+ d as useEnforceUnauthenticated,
17
+ p as useEvmAddress,
17
18
  c as useExportEvmAccount,
18
- p as useExportSolanaAccount,
19
+ g as useExportSolanaAccount,
19
20
  E as useGetAccessToken,
20
- g as useIsInitialized,
21
- f as useIsSignedIn,
22
- F as useListSpendPermissions,
23
- L as useRevokeSpendPermission,
24
- v as useSendEvmTransaction,
25
- x as useSendSolanaTransaction,
26
- P as useSendUserOperation,
27
- l as useSignEvmHash,
28
- T as useSignEvmMessage,
29
- A as useSignEvmTransaction,
30
- I as useSignEvmTypedData,
21
+ f as useIsInitialized,
22
+ v as useIsSignedIn,
23
+ R as useListSpendPermissions,
24
+ A as useOAuthState,
25
+ j as useRevokeSpendPermission,
26
+ P as useSendEvmTransaction,
27
+ h as useSendSolanaTransaction,
28
+ x as useSendUserOperation,
29
+ T as useSignEvmHash,
30
+ l as useSignEvmMessage,
31
+ I as useSignEvmTransaction,
32
+ O as useSignEvmTypedData,
31
33
  C as useSignInWithEmail,
32
- h as useSignInWithSms,
33
- O as useSignOut,
34
- U as useSignSolanaMessage,
35
- k as useSignSolanaTransaction,
36
- y as useSolanaAddress,
37
- D as useVerifyEmailOTP,
38
- W as useVerifySmsOTP,
39
- H as useWaitForUserOperation
34
+ y as useSignInWithOAuth,
35
+ U as useSignInWithSms,
36
+ W as useSignOut,
37
+ k as useSignSolanaMessage,
38
+ D as useSignSolanaTransaction,
39
+ H as useSolanaAddress,
40
+ M as useVerifyEmailOTP,
41
+ V as useVerifySmsOTP,
42
+ z as useWaitForUserOperation
40
43
  };
@@ -1,35 +1,38 @@
1
- import { jsx as l } from "react/jsx-runtime";
2
- import { initialize as C, onAuthStateChange as m } from "@coinbase/cdp-core";
3
- import { createContext as P, useState as o, useEffect as d, useMemo as f, useContext as x } from "react";
4
- const i = P(null);
5
- function w({ children: t, config: e }) {
6
- const [n, u] = o(null), [r, s] = o(!1);
7
- d(() => {
8
- s(!1), (async () => {
9
- await C(e), m((c) => {
10
- u(c);
11
- }), s(!0);
12
- })();
1
+ import { jsx as h } from "react/jsx-runtime";
2
+ import { onOAuthStateChange as m, initialize as P, onAuthStateChange as d } from "@coinbase/cdp-core";
3
+ import { createContext as f, useState as s, useEffect as x, useMemo as S, useContext as A } from "react";
4
+ const a = f(null);
5
+ function I({ children: t, config: e }) {
6
+ const [n, c] = s(null), [r, i] = s(!1), [u, l] = s(null);
7
+ x(() => {
8
+ i(!1), (async () => {
9
+ await P(e), d((o) => {
10
+ c(o);
11
+ }), i(!0);
12
+ })(), m((o) => {
13
+ l(o);
14
+ });
13
15
  }, [e]);
14
- const a = f(
16
+ const C = S(
15
17
  () => ({
16
18
  isInitialized: r,
17
19
  currentUser: n,
18
20
  isSignedIn: !!n,
19
- config: e
21
+ config: e,
22
+ oauthState: u
20
23
  }),
21
- [n, r, e]
24
+ [n, r, e, u]
22
25
  );
23
- return /* @__PURE__ */ l(i.Provider, { value: a, children: t });
26
+ return /* @__PURE__ */ h(a.Provider, { value: C, children: t });
24
27
  }
25
- function I() {
26
- const t = x(i);
28
+ function y() {
29
+ const t = A(a);
27
30
  if (!t)
28
31
  throw new Error("useCDP must be used within a CDPHooksProvider");
29
32
  return t;
30
33
  }
31
34
  export {
32
- i as CDPContext,
33
- w as CDPHooksProvider,
34
- I as useCDP
35
+ a as CDPContext,
36
+ I as CDPHooksProvider,
37
+ y as useCDP
35
38
  };
@@ -1,5 +1,5 @@
1
1
  import { stringToBytes as i } from "./index112.js";
2
- import { encodeLabelhash as h } from "./index248.js";
2
+ import { encodeLabelhash as h } from "./index249.js";
3
3
  import { labelhash as f } from "./index111.js";
4
4
  function y(s) {
5
5
  const o = s.replace(/^\.|\.$/gm, "");
@@ -1,4 +1,4 @@
1
- import { parseAvatarUri as o, parseNftUri as f, getNftTokenUri as v, resolveAvatarUri as l, getJsonImage as A, getMetadataAvatarUri as N } from "./index249.js";
1
+ import { parseAvatarUri as o, parseNftUri as f, getNftTokenUri as v, resolveAvatarUri as l, getJsonImage as A, getMetadataAvatarUri as N } from "./index250.js";
2
2
  async function b(r, { gatewayUrls: t, record: e }) {
3
3
  return /eip155:/i.test(e) ? U(r, { gatewayUrls: t, record: e }) : o({ uri: e, gatewayUrls: t });
4
4
  }
@@ -1,5 +1,5 @@
1
- import { fromNumber as a } from "./index250.js";
2
- import { toRpc as e } from "./index251.js";
1
+ import { fromNumber as a } from "./index251.js";
2
+ import { toRpc as e } from "./index252.js";
3
3
  function n(t) {
4
4
  return {
5
5
  ...typeof t.baseFeePerGas == "bigint" && {
@@ -1,5 +1,5 @@
1
1
  import { recoverAddress as i } from "./index153.js";
2
- import { hashAuthorization as e } from "./index252.js";
2
+ import { hashAuthorization as e } from "./index248.js";
3
3
  async function a(o) {
4
4
  const { authorization: r, signature: t } = o;
5
5
  return i({
@@ -1,6 +1,6 @@
1
1
  import { from as t } from "./index253.js";
2
2
  import { encode as m } from "./index254.js";
3
- import { concat as c } from "./index250.js";
3
+ import { concat as c } from "./index251.js";
4
4
  function s(o, e) {
5
5
  const { bytecode: r, args: n } = e;
6
6
  return c(r, o.inputs?.length && n?.length ? m(o.inputs, n) : "0x");
@@ -1,6 +1,6 @@
1
1
  import { from as c, fromAbi as m, NotFoundError as i, getSelector as s } from "./index253.js";
2
2
  import { encode as u } from "./index254.js";
3
- import { concat as d } from "./index250.js";
3
+ import { concat as d } from "./index251.js";
4
4
  function S(o, ...t) {
5
5
  const { overloads: r } = o, e = r ? p([o, ...r], o.name, {
6
6
  args: t[0]
@@ -1,6 +1,19 @@
1
- function n(e) {
2
- return `[${e.slice(2)}]`;
1
+ import { concatHex as i } from "./index117.js";
2
+ import { hexToBytes as m } from "./index112.js";
3
+ import { numberToHex as c } from "./index113.js";
4
+ import { toRlp as d } from "./index158.js";
5
+ import { keccak256 as f } from "./index114.js";
6
+ function b(o) {
7
+ const { chainId: t, nonce: r, to: s } = o, e = o.contractAddress ?? o.address, n = f(i([
8
+ "0x05",
9
+ d([
10
+ t ? c(t) : "0x",
11
+ e,
12
+ r ? c(r) : "0x"
13
+ ])
14
+ ]));
15
+ return s === "bytes" ? m(n) : n;
3
16
  }
4
17
  export {
5
- n as encodeLabelhash
18
+ b as hashAuthorization
6
19
  };
@@ -1,139 +1,6 @@
1
- import { readContract as w } from "./index59.js";
2
- import { EnsAvatarUriResolutionError as d, EnsAvatarInvalidNftUriError as p, EnsAvatarUnsupportedNamespaceError as I, EnsAvatarInvalidMetadataError as y } from "./index103.js";
3
- const v = /(?<protocol>https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?<root>\/)?(?<subpath>ipfs\/|ipns\/)?(?<target>[\w\-.]+)(?<subtarget>\/.*)?/, A = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?<target>[\w\-.]+))?(?<subtarget>\/.*)?$/, b = /^data:([a-zA-Z\-/+]*);base64,([^"].*)/, E = /^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;
4
- async function k(e) {
5
- try {
6
- const t = await fetch(e, { method: "HEAD" });
7
- return t.status === 200 ? t.headers.get("content-type")?.startsWith("image/") : !1;
8
- } catch (t) {
9
- return typeof t == "object" && typeof t.response < "u" || !globalThis.hasOwnProperty("Image") ? !1 : new Promise((n) => {
10
- const a = new Image();
11
- a.onload = () => {
12
- n(!0);
13
- }, a.onerror = () => {
14
- n(!1);
15
- }, a.src = e;
16
- });
17
- }
18
- }
19
- function l(e, t) {
20
- return e ? e.endsWith("/") ? e.slice(0, -1) : e : t;
21
- }
22
- function C({ uri: e, gatewayUrls: t }) {
23
- const n = b.test(e);
24
- if (n)
25
- return { uri: e, isOnChain: !0, isEncoded: n };
26
- const a = l(t?.ipfs, "https://ipfs.io"), r = l(t?.arweave, "https://arweave.net"), f = e.match(v), { protocol: i, subpath: c, target: s, subtarget: h = "" } = f?.groups || {}, u = i === "ipns:/" || c === "ipns/", m = i === "ipfs:/" || c === "ipfs/" || A.test(e);
27
- if (e.startsWith("http") && !u && !m) {
28
- let g = e;
29
- return t?.arweave && (g = e.replace(/https:\/\/arweave.net/g, t?.arweave)), { uri: g, isOnChain: !1, isEncoded: !1 };
30
- }
31
- if ((u || m) && s)
32
- return {
33
- uri: `${a}/${u ? "ipns" : "ipfs"}/${s}${h}`,
34
- isOnChain: !1,
35
- isEncoded: !1
36
- };
37
- if (i === "ar:/" && s)
38
- return {
39
- uri: `${r}/${s}${h || ""}`,
40
- isOnChain: !1,
41
- isEncoded: !1
42
- };
43
- let o = e.replace(E, "");
44
- if (o.startsWith("<svg") && (o = `data:image/svg+xml;base64,${btoa(o)}`), o.startsWith("data:") || o.startsWith("{"))
45
- return {
46
- uri: o,
47
- isOnChain: !0,
48
- isEncoded: !1
49
- };
50
- throw new d({ uri: e });
51
- }
52
- function U(e) {
53
- if (typeof e != "object" || !("image" in e) && !("image_url" in e) && !("image_data" in e))
54
- throw new y({ data: e });
55
- return e.image || e.image_url || e.image_data;
56
- }
57
- async function $({ gatewayUrls: e, uri: t }) {
58
- try {
59
- const n = await fetch(t).then((r) => r.json());
60
- return await R({
61
- gatewayUrls: e,
62
- uri: U(n)
63
- });
64
- } catch {
65
- throw new d({ uri: t });
66
- }
67
- }
68
- async function R({ gatewayUrls: e, uri: t }) {
69
- const { uri: n, isOnChain: a } = C({ uri: t, gatewayUrls: e });
70
- if (a || await k(n))
71
- return n;
72
- throw new d({ uri: t });
73
- }
74
- function D(e) {
75
- let t = e;
76
- t.startsWith("did:nft:") && (t = t.replace("did:nft:", "").replace(/_/g, "/"));
77
- const [n, a, r] = t.split("/"), [f, i] = n.split(":"), [c, s] = a.split(":");
78
- if (!f || f.toLowerCase() !== "eip155")
79
- throw new p({ reason: "Only EIP-155 supported" });
80
- if (!i)
81
- throw new p({ reason: "Chain ID not found" });
82
- if (!s)
83
- throw new p({
84
- reason: "Contract address not found"
85
- });
86
- if (!r)
87
- throw new p({ reason: "Token ID not found" });
88
- if (!c)
89
- throw new p({ reason: "ERC namespace not found" });
90
- return {
91
- chainID: Number.parseInt(i),
92
- namespace: c.toLowerCase(),
93
- contractAddress: s,
94
- tokenID: r
95
- };
96
- }
97
- async function O(e, { nft: t }) {
98
- if (t.namespace === "erc721")
99
- return w(e, {
100
- address: t.contractAddress,
101
- abi: [
102
- {
103
- name: "tokenURI",
104
- type: "function",
105
- stateMutability: "view",
106
- inputs: [{ name: "tokenId", type: "uint256" }],
107
- outputs: [{ name: "", type: "string" }]
108
- }
109
- ],
110
- functionName: "tokenURI",
111
- args: [BigInt(t.tokenID)]
112
- });
113
- if (t.namespace === "erc1155")
114
- return w(e, {
115
- address: t.contractAddress,
116
- abi: [
117
- {
118
- name: "uri",
119
- type: "function",
120
- stateMutability: "view",
121
- inputs: [{ name: "_id", type: "uint256" }],
122
- outputs: [{ name: "", type: "string" }]
123
- }
124
- ],
125
- functionName: "uri",
126
- args: [BigInt(t.tokenID)]
127
- });
128
- throw new I({ namespace: t.namespace });
1
+ function n(e) {
2
+ return `[${e.slice(2)}]`;
129
3
  }
130
4
  export {
131
- l as getGateway,
132
- U as getJsonImage,
133
- $ as getMetadataAvatarUri,
134
- O as getNftTokenUri,
135
- k as isImageUri,
136
- R as parseAvatarUri,
137
- D as parseNftUri,
138
- C as resolveAvatarUri
5
+ n as encodeLabelhash
139
6
  };
@@ -1,158 +1,139 @@
1
- import { BaseError as o } from "./index261.js";
2
- import { stringify as b } from "./index262.js";
3
- import { pad as d, assertEndOffset as m, assertSize as g, assertStartOffset as p } from "./index263.js";
4
- const $ = /* @__PURE__ */ new TextEncoder(), h = /* @__PURE__ */ Array.from({ length: 256 }, (t, e) => e.toString(16).padStart(2, "0"));
5
- function y(t, e = {}) {
6
- const { strict: r = !1 } = e;
7
- if (!t)
8
- throw new f(t);
9
- if (typeof t != "string")
10
- throw new f(t);
11
- if (r && !/^0x[0-9a-fA-F]*$/.test(t))
12
- throw new l(t);
13
- if (!t.startsWith("0x"))
14
- throw new l(t);
15
- }
16
- function B(...t) {
17
- return `0x${t.reduce((e, r) => e + r.replace("0x", ""), "")}`;
18
- }
19
- function P(t, e = {}) {
20
- const r = `0x${Number(t)}`;
21
- return typeof e.size == "number" ? (g(r, e.size), x(r, e.size)) : r;
22
- }
23
- function w(t, e = {}) {
24
- let r = "";
25
- for (let i = 0; i < t.length; i++)
26
- r += h[t[i]];
27
- const n = `0x${r}`;
28
- return typeof e.size == "number" ? (g(n, e.size), E(n, e.size)) : n;
29
- }
30
- function V(t, e = {}) {
31
- const { signed: r, size: n } = e, i = BigInt(t);
32
- let s;
33
- n ? r ? s = (1n << BigInt(n) * 8n - 1n) - 1n : s = 2n ** (BigInt(n) * 8n) - 1n : typeof t == "number" && (s = BigInt(Number.MAX_SAFE_INTEGER));
34
- const u = typeof s == "bigint" && r ? -s - 1n : 0;
35
- if (s && i > s || i < u) {
36
- const a = typeof t == "bigint" ? "n" : "";
37
- throw new O({
38
- max: s ? `${s}${a}` : void 0,
39
- min: `${u}${a}`,
40
- signed: r,
41
- size: n,
42
- value: `${t}${a}`
43
- });
44
- }
45
- const c = `0x${(r && i < 0 ? (1n << BigInt(n * 8)) + BigInt(i) : i).toString(16)}`;
46
- return n ? x(c, n) : c;
47
- }
48
- function j(t, e = {}) {
49
- return w($.encode(t), e);
50
- }
51
- function x(t, e) {
52
- return d(t, { dir: "left", size: e });
53
- }
54
- function E(t, e) {
55
- return d(t, { dir: "right", size: e });
56
- }
57
- function v(t, e, r, n = {}) {
58
- const { strict: i } = n;
59
- p(t, e);
60
- const s = `0x${t.replace("0x", "").slice((e ?? 0) * 2, (r ?? t.length) * 2)}`;
61
- return i && m(s, e, r), s;
62
- }
63
- function A(t) {
64
- return Math.ceil((t.length - 2) / 2);
65
- }
66
- function N(t, e = {}) {
67
- const { strict: r = !1 } = e;
1
+ import { readContract as w } from "./index59.js";
2
+ import { EnsAvatarUriResolutionError as d, EnsAvatarInvalidNftUriError as p, EnsAvatarUnsupportedNamespaceError as I, EnsAvatarInvalidMetadataError as y } from "./index103.js";
3
+ const v = /(?<protocol>https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?<root>\/)?(?<subpath>ipfs\/|ipns\/)?(?<target>[\w\-.]+)(?<subtarget>\/.*)?/, A = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?<target>[\w\-.]+))?(?<subtarget>\/.*)?$/, b = /^data:([a-zA-Z\-/+]*);base64,([^"].*)/, E = /^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;
4
+ async function k(e) {
68
5
  try {
69
- return y(t, { strict: r }), !0;
70
- } catch {
71
- return !1;
72
- }
73
- }
74
- class O extends o {
75
- constructor({ max: e, min: r, signed: n, size: i, value: s }) {
76
- super(`Number \`${s}\` is not in safe${i ? ` ${i * 8}-bit` : ""}${n ? " signed" : " unsigned"} integer range ${e ? `(\`${r}\` to \`${e}\`)` : `(above \`${r}\`)`}`), Object.defineProperty(this, "name", {
77
- enumerable: !0,
78
- configurable: !0,
79
- writable: !0,
80
- value: "Hex.IntegerOutOfRangeError"
6
+ const t = await fetch(e, { method: "HEAD" });
7
+ return t.status === 200 ? t.headers.get("content-type")?.startsWith("image/") : !1;
8
+ } catch (t) {
9
+ return typeof t == "object" && typeof t.response < "u" || !globalThis.hasOwnProperty("Image") ? !1 : new Promise((n) => {
10
+ const a = new Image();
11
+ a.onload = () => {
12
+ n(!0);
13
+ }, a.onerror = () => {
14
+ n(!1);
15
+ }, a.src = e;
81
16
  });
82
17
  }
83
18
  }
84
- class f extends o {
85
- constructor(e) {
86
- super(`Value \`${typeof e == "object" ? b(e) : e}\` of type \`${typeof e}\` is an invalid hex type.`, {
87
- metaMessages: ['Hex types must be represented as `"0x${string}"`.']
88
- }), Object.defineProperty(this, "name", {
89
- enumerable: !0,
90
- configurable: !0,
91
- writable: !0,
92
- value: "Hex.InvalidHexTypeError"
93
- });
19
+ function l(e, t) {
20
+ return e ? e.endsWith("/") ? e.slice(0, -1) : e : t;
21
+ }
22
+ function C({ uri: e, gatewayUrls: t }) {
23
+ const n = b.test(e);
24
+ if (n)
25
+ return { uri: e, isOnChain: !0, isEncoded: n };
26
+ const a = l(t?.ipfs, "https://ipfs.io"), r = l(t?.arweave, "https://arweave.net"), f = e.match(v), { protocol: i, subpath: c, target: s, subtarget: h = "" } = f?.groups || {}, u = i === "ipns:/" || c === "ipns/", m = i === "ipfs:/" || c === "ipfs/" || A.test(e);
27
+ if (e.startsWith("http") && !u && !m) {
28
+ let g = e;
29
+ return t?.arweave && (g = e.replace(/https:\/\/arweave.net/g, t?.arweave)), { uri: g, isOnChain: !1, isEncoded: !1 };
94
30
  }
95
- }
96
- class l extends o {
97
- constructor(e) {
98
- super(`Value \`${e}\` is an invalid hex value.`, {
99
- metaMessages: [
100
- 'Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).'
101
- ]
102
- }), Object.defineProperty(this, "name", {
103
- enumerable: !0,
104
- configurable: !0,
105
- writable: !0,
106
- value: "Hex.InvalidHexValueError"
31
+ if ((u || m) && s)
32
+ return {
33
+ uri: `${a}/${u ? "ipns" : "ipfs"}/${s}${h}`,
34
+ isOnChain: !1,
35
+ isEncoded: !1
36
+ };
37
+ if (i === "ar:/" && s)
38
+ return {
39
+ uri: `${r}/${s}${h || ""}`,
40
+ isOnChain: !1,
41
+ isEncoded: !1
42
+ };
43
+ let o = e.replace(E, "");
44
+ if (o.startsWith("<svg") && (o = `data:image/svg+xml;base64,${btoa(o)}`), o.startsWith("data:") || o.startsWith("{"))
45
+ return {
46
+ uri: o,
47
+ isOnChain: !0,
48
+ isEncoded: !1
49
+ };
50
+ throw new d({ uri: e });
51
+ }
52
+ function U(e) {
53
+ if (typeof e != "object" || !("image" in e) && !("image_url" in e) && !("image_data" in e))
54
+ throw new y({ data: e });
55
+ return e.image || e.image_url || e.image_data;
56
+ }
57
+ async function $({ gatewayUrls: e, uri: t }) {
58
+ try {
59
+ const n = await fetch(t).then((r) => r.json());
60
+ return await R({
61
+ gatewayUrls: e,
62
+ uri: U(n)
107
63
  });
64
+ } catch {
65
+ throw new d({ uri: t });
108
66
  }
109
67
  }
110
- class _ extends o {
111
- constructor({ givenSize: e, maxSize: r }) {
112
- super(`Size cannot exceed \`${r}\` bytes. Given size: \`${e}\` bytes.`), Object.defineProperty(this, "name", {
113
- enumerable: !0,
114
- configurable: !0,
115
- writable: !0,
116
- value: "Hex.SizeOverflowError"
68
+ async function R({ gatewayUrls: e, uri: t }) {
69
+ const { uri: n, isOnChain: a } = C({ uri: t, gatewayUrls: e });
70
+ if (a || await k(n))
71
+ return n;
72
+ throw new d({ uri: t });
73
+ }
74
+ function D(e) {
75
+ let t = e;
76
+ t.startsWith("did:nft:") && (t = t.replace("did:nft:", "").replace(/_/g, "/"));
77
+ const [n, a, r] = t.split("/"), [f, i] = n.split(":"), [c, s] = a.split(":");
78
+ if (!f || f.toLowerCase() !== "eip155")
79
+ throw new p({ reason: "Only EIP-155 supported" });
80
+ if (!i)
81
+ throw new p({ reason: "Chain ID not found" });
82
+ if (!s)
83
+ throw new p({
84
+ reason: "Contract address not found"
117
85
  });
118
- }
119
- }
120
- class M extends o {
121
- constructor({ offset: e, position: r, size: n }) {
122
- super(`Slice ${r === "start" ? "starting" : "ending"} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`), Object.defineProperty(this, "name", {
123
- enumerable: !0,
124
- configurable: !0,
125
- writable: !0,
126
- value: "Hex.SliceOffsetOutOfBoundsError"
86
+ if (!r)
87
+ throw new p({ reason: "Token ID not found" });
88
+ if (!c)
89
+ throw new p({ reason: "ERC namespace not found" });
90
+ return {
91
+ chainID: Number.parseInt(i),
92
+ namespace: c.toLowerCase(),
93
+ contractAddress: s,
94
+ tokenID: r
95
+ };
96
+ }
97
+ async function O(e, { nft: t }) {
98
+ if (t.namespace === "erc721")
99
+ return w(e, {
100
+ address: t.contractAddress,
101
+ abi: [
102
+ {
103
+ name: "tokenURI",
104
+ type: "function",
105
+ stateMutability: "view",
106
+ inputs: [{ name: "tokenId", type: "uint256" }],
107
+ outputs: [{ name: "", type: "string" }]
108
+ }
109
+ ],
110
+ functionName: "tokenURI",
111
+ args: [BigInt(t.tokenID)]
127
112
  });
128
- }
129
- }
130
- class R extends o {
131
- constructor({ size: e, targetSize: r, type: n }) {
132
- super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${r}\`).`), Object.defineProperty(this, "name", {
133
- enumerable: !0,
134
- configurable: !0,
135
- writable: !0,
136
- value: "Hex.SizeExceedsPaddingSizeError"
113
+ if (t.namespace === "erc1155")
114
+ return w(e, {
115
+ address: t.contractAddress,
116
+ abi: [
117
+ {
118
+ name: "uri",
119
+ type: "function",
120
+ stateMutability: "view",
121
+ inputs: [{ name: "_id", type: "uint256" }],
122
+ outputs: [{ name: "", type: "string" }]
123
+ }
124
+ ],
125
+ functionName: "uri",
126
+ args: [BigInt(t.tokenID)]
137
127
  });
138
- }
128
+ throw new I({ namespace: t.namespace });
139
129
  }
140
130
  export {
141
- O as IntegerOutOfRangeError,
142
- f as InvalidHexTypeError,
143
- l as InvalidHexValueError,
144
- R as SizeExceedsPaddingSizeError,
145
- _ as SizeOverflowError,
146
- M as SliceOffsetOutOfBoundsError,
147
- y as assert,
148
- B as concat,
149
- P as fromBoolean,
150
- w as fromBytes,
151
- V as fromNumber,
152
- j as fromString,
153
- x as padLeft,
154
- E as padRight,
155
- A as size,
156
- v as slice,
157
- N as validate
131
+ l as getGateway,
132
+ U as getJsonImage,
133
+ $ as getMetadataAvatarUri,
134
+ O as getNftTokenUri,
135
+ k as isImageUri,
136
+ R as parseAvatarUri,
137
+ D as parseNftUri,
138
+ C as resolveAvatarUri
158
139
  };
@@ -1,12 +1,158 @@
1
- import { fromNumber as e } from "./index250.js";
2
- function r(o) {
3
- return {
4
- address: o.address,
5
- amount: e(o.amount),
6
- index: e(o.index),
7
- validatorIndex: e(o.validatorIndex)
8
- };
1
+ import { BaseError as o } from "./index261.js";
2
+ import { stringify as b } from "./index262.js";
3
+ import { pad as d, assertEndOffset as m, assertSize as g, assertStartOffset as p } from "./index263.js";
4
+ const $ = /* @__PURE__ */ new TextEncoder(), h = /* @__PURE__ */ Array.from({ length: 256 }, (t, e) => e.toString(16).padStart(2, "0"));
5
+ function y(t, e = {}) {
6
+ const { strict: r = !1 } = e;
7
+ if (!t)
8
+ throw new f(t);
9
+ if (typeof t != "string")
10
+ throw new f(t);
11
+ if (r && !/^0x[0-9a-fA-F]*$/.test(t))
12
+ throw new l(t);
13
+ if (!t.startsWith("0x"))
14
+ throw new l(t);
15
+ }
16
+ function B(...t) {
17
+ return `0x${t.reduce((e, r) => e + r.replace("0x", ""), "")}`;
18
+ }
19
+ function P(t, e = {}) {
20
+ const r = `0x${Number(t)}`;
21
+ return typeof e.size == "number" ? (g(r, e.size), x(r, e.size)) : r;
22
+ }
23
+ function w(t, e = {}) {
24
+ let r = "";
25
+ for (let i = 0; i < t.length; i++)
26
+ r += h[t[i]];
27
+ const n = `0x${r}`;
28
+ return typeof e.size == "number" ? (g(n, e.size), E(n, e.size)) : n;
29
+ }
30
+ function V(t, e = {}) {
31
+ const { signed: r, size: n } = e, i = BigInt(t);
32
+ let s;
33
+ n ? r ? s = (1n << BigInt(n) * 8n - 1n) - 1n : s = 2n ** (BigInt(n) * 8n) - 1n : typeof t == "number" && (s = BigInt(Number.MAX_SAFE_INTEGER));
34
+ const u = typeof s == "bigint" && r ? -s - 1n : 0;
35
+ if (s && i > s || i < u) {
36
+ const a = typeof t == "bigint" ? "n" : "";
37
+ throw new O({
38
+ max: s ? `${s}${a}` : void 0,
39
+ min: `${u}${a}`,
40
+ signed: r,
41
+ size: n,
42
+ value: `${t}${a}`
43
+ });
44
+ }
45
+ const c = `0x${(r && i < 0 ? (1n << BigInt(n * 8)) + BigInt(i) : i).toString(16)}`;
46
+ return n ? x(c, n) : c;
47
+ }
48
+ function j(t, e = {}) {
49
+ return w($.encode(t), e);
50
+ }
51
+ function x(t, e) {
52
+ return d(t, { dir: "left", size: e });
53
+ }
54
+ function E(t, e) {
55
+ return d(t, { dir: "right", size: e });
56
+ }
57
+ function v(t, e, r, n = {}) {
58
+ const { strict: i } = n;
59
+ p(t, e);
60
+ const s = `0x${t.replace("0x", "").slice((e ?? 0) * 2, (r ?? t.length) * 2)}`;
61
+ return i && m(s, e, r), s;
62
+ }
63
+ function A(t) {
64
+ return Math.ceil((t.length - 2) / 2);
65
+ }
66
+ function N(t, e = {}) {
67
+ const { strict: r = !1 } = e;
68
+ try {
69
+ return y(t, { strict: r }), !0;
70
+ } catch {
71
+ return !1;
72
+ }
73
+ }
74
+ class O extends o {
75
+ constructor({ max: e, min: r, signed: n, size: i, value: s }) {
76
+ super(`Number \`${s}\` is not in safe${i ? ` ${i * 8}-bit` : ""}${n ? " signed" : " unsigned"} integer range ${e ? `(\`${r}\` to \`${e}\`)` : `(above \`${r}\`)`}`), Object.defineProperty(this, "name", {
77
+ enumerable: !0,
78
+ configurable: !0,
79
+ writable: !0,
80
+ value: "Hex.IntegerOutOfRangeError"
81
+ });
82
+ }
83
+ }
84
+ class f extends o {
85
+ constructor(e) {
86
+ super(`Value \`${typeof e == "object" ? b(e) : e}\` of type \`${typeof e}\` is an invalid hex type.`, {
87
+ metaMessages: ['Hex types must be represented as `"0x${string}"`.']
88
+ }), Object.defineProperty(this, "name", {
89
+ enumerable: !0,
90
+ configurable: !0,
91
+ writable: !0,
92
+ value: "Hex.InvalidHexTypeError"
93
+ });
94
+ }
95
+ }
96
+ class l extends o {
97
+ constructor(e) {
98
+ super(`Value \`${e}\` is an invalid hex value.`, {
99
+ metaMessages: [
100
+ 'Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).'
101
+ ]
102
+ }), Object.defineProperty(this, "name", {
103
+ enumerable: !0,
104
+ configurable: !0,
105
+ writable: !0,
106
+ value: "Hex.InvalidHexValueError"
107
+ });
108
+ }
109
+ }
110
+ class _ extends o {
111
+ constructor({ givenSize: e, maxSize: r }) {
112
+ super(`Size cannot exceed \`${r}\` bytes. Given size: \`${e}\` bytes.`), Object.defineProperty(this, "name", {
113
+ enumerable: !0,
114
+ configurable: !0,
115
+ writable: !0,
116
+ value: "Hex.SizeOverflowError"
117
+ });
118
+ }
119
+ }
120
+ class M extends o {
121
+ constructor({ offset: e, position: r, size: n }) {
122
+ super(`Slice ${r === "start" ? "starting" : "ending"} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`), Object.defineProperty(this, "name", {
123
+ enumerable: !0,
124
+ configurable: !0,
125
+ writable: !0,
126
+ value: "Hex.SliceOffsetOutOfBoundsError"
127
+ });
128
+ }
129
+ }
130
+ class R extends o {
131
+ constructor({ size: e, targetSize: r, type: n }) {
132
+ super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${r}\`).`), Object.defineProperty(this, "name", {
133
+ enumerable: !0,
134
+ configurable: !0,
135
+ writable: !0,
136
+ value: "Hex.SizeExceedsPaddingSizeError"
137
+ });
138
+ }
9
139
  }
10
140
  export {
11
- r as toRpc
141
+ O as IntegerOutOfRangeError,
142
+ f as InvalidHexTypeError,
143
+ l as InvalidHexValueError,
144
+ R as SizeExceedsPaddingSizeError,
145
+ _ as SizeOverflowError,
146
+ M as SliceOffsetOutOfBoundsError,
147
+ y as assert,
148
+ B as concat,
149
+ P as fromBoolean,
150
+ w as fromBytes,
151
+ V as fromNumber,
152
+ j as fromString,
153
+ x as padLeft,
154
+ E as padRight,
155
+ A as size,
156
+ v as slice,
157
+ N as validate
12
158
  };
@@ -1,19 +1,12 @@
1
- import { concatHex as i } from "./index117.js";
2
- import { hexToBytes as m } from "./index112.js";
3
- import { numberToHex as c } from "./index113.js";
4
- import { toRlp as d } from "./index158.js";
5
- import { keccak256 as f } from "./index114.js";
6
- function b(o) {
7
- const { chainId: t, nonce: r, to: s } = o, e = o.contractAddress ?? o.address, n = f(i([
8
- "0x05",
9
- d([
10
- t ? c(t) : "0x",
11
- e,
12
- r ? c(r) : "0x"
13
- ])
14
- ]));
15
- return s === "bytes" ? m(n) : n;
1
+ import { fromNumber as e } from "./index251.js";
2
+ function r(o) {
3
+ return {
4
+ address: o.address,
5
+ amount: e(o.amount),
6
+ index: e(o.index),
7
+ validatorIndex: e(o.validatorIndex)
8
+ };
16
9
  }
17
10
  export {
18
- b as hashAuthorization
11
+ r as toRpc
19
12
  };
@@ -1,6 +1,6 @@
1
1
  import { BaseError as y } from "./index261.js";
2
2
  import { keccak256 as v } from "./index264.js";
3
- import { validate as $, slice as A, fromString as S } from "./index250.js";
3
+ import { validate as $, slice as A, fromString as S } from "./index251.js";
4
4
  import { isArgOfType as E, normalizeSignature as p, getAmbiguousTypes as B } from "./index265.js";
5
5
  import { parseAbiItem as l } from "./index204.js";
6
6
  import { formatAbiItem as h } from "./index196.js";
@@ -1,6 +1,6 @@
1
1
  import { assert as p } from "./index266.js";
2
2
  import { BaseError as u } from "./index261.js";
3
- import { size as y, padLeft as f, fromString as x, fromBoolean as w, fromNumber as E, padRight as P, concat as g } from "./index250.js";
3
+ import { size as y, padLeft as f, fromString as x, fromBoolean as w, fromNumber as E, padRight as P, concat as g } from "./index251.js";
4
4
  import { integerRegex as A, bytesRegex as $, arrayRegex as L } from "./index267.js";
5
5
  import { prepareParameters as z, encode as I } from "./index268.js";
6
6
  function N(n, e, t) {
@@ -1,4 +1,4 @@
1
- import { SizeExceedsPaddingSizeError as s, size as i, SliceOffsetOutOfBoundsError as f, SizeOverflowError as p } from "./index250.js";
1
+ import { SizeExceedsPaddingSizeError as s, size as i, SliceOffsetOutOfBoundsError as f, SizeOverflowError as p } from "./index251.js";
2
2
  function c(t, e) {
3
3
  if (i(t) > e)
4
4
  throw new p({
@@ -1,6 +1,6 @@
1
1
  import { keccak_256 as f } from "./index188.js";
2
2
  import { from as m } from "./index269.js";
3
- import { fromBytes as s } from "./index250.js";
3
+ import { fromBytes as s } from "./index251.js";
4
4
  function p(t, o = {}) {
5
5
  const { as: e = typeof t == "string" ? "Hex" : "Bytes" } = o, r = f(m(t));
6
6
  return e === "Bytes" ? r : s(r);
@@ -1,7 +1,7 @@
1
1
  import { InvalidTypeError as g, InvalidArrayError as b, ArrayLengthMismatchError as w, BytesSizeMismatchError as z } from "./index254.js";
2
2
  import { assert as x } from "./index266.js";
3
3
  import { BaseError as S } from "./index261.js";
4
- import { size as d, fromNumber as f, concat as p, padLeft as h, fromBoolean as A, IntegerOutOfRangeError as E, padRight as y, fromString as I, slice as B } from "./index250.js";
4
+ import { size as d, fromNumber as f, concat as p, padLeft as h, fromBoolean as A, IntegerOutOfRangeError as E, padRight as y, fromString as I, slice as B } from "./index251.js";
5
5
  import { integerRegex as L } from "./index267.js";
6
6
  function q({ checksumAddress: e, parameters: n, values: r }) {
7
7
  const t = [];
@@ -1,5 +1,5 @@
1
1
  import { BaseError as c } from "./index261.js";
2
- import { padRight as h } from "./index250.js";
2
+ import { padRight as h } from "./index251.js";
3
3
  import { charCodeToBase16 as b, assertSize as g, pad as m } from "./index270.js";
4
4
  import { assertSize as p } from "./index263.js";
5
5
  const l = /* @__PURE__ */ new TextEncoder();
@@ -1,156 +1,164 @@
1
- import { getAccessToken as A, sendUserOperation as y, signInWithEmail as O, signInWithSms as U, verifyEmailOTP as I, verifySmsOTP as P, signOut as x, signEvmHash as M, signEvmTransaction as k, sendEvmTransaction as C, signEvmMessage as W, signSolanaMessage as H, signEvmTypedData as b, exportEvmAccount as D, exportSolanaAccount as V, signSolanaTransaction as F, sendSolanaTransaction as z, getUserOperation as G } from "@coinbase/cdp-core";
2
- import { useState as u, useEffect as f, useMemo as j, useCallback as h } from "react";
3
- import { useCDP as p } from "./index2.js";
4
- import { useAutoPolling as q } from "./index7.js";
5
- import { getPublicClient as B } from "./index8.js";
6
- const Y = () => {
7
- const { config: n } = p();
1
+ import { getAccessToken as A, sendUserOperation as O, signInWithEmail as y, signInWithSms as I, verifyEmailOTP as U, verifySmsOTP as W, signInWithOAuth as P, signOut as x, signEvmHash as M, signEvmTransaction as k, sendEvmTransaction as C, signEvmMessage as H, signSolanaMessage as b, signEvmTypedData as D, exportEvmAccount as V, exportSolanaAccount as F, signSolanaTransaction as z, sendSolanaTransaction as G, getUserOperation as j } from "@coinbase/cdp-core";
2
+ import { useState as p, useEffect as v, useMemo as q, useCallback as f } from "react";
3
+ import { useCDP as u } from "./index2.js";
4
+ import { useAutoPolling as B } from "./index7.js";
5
+ import { getPublicClient as J } from "./index8.js";
6
+ const _ = () => {
7
+ const { config: n } = u();
8
8
  return { config: n };
9
- }, Z = () => {
10
- const { isInitialized: n } = p();
9
+ }, $ = () => {
10
+ const { isInitialized: n } = u();
11
11
  return { isInitialized: n };
12
- }, _ = () => ({ signInWithEmail: g(O) }), $ = () => ({ signInWithSms: g(U) }), R = () => ({ verifyEmailOTP: g(I) }), nn = () => ({ verifySmsOTP: g(P) }), en = () => {
13
- const { isSignedIn: n } = p();
12
+ }, R = () => ({ signInWithEmail: m(y) }), nn = () => ({ signInWithSms: m(I) }), tn = () => ({ verifyEmailOTP: m(U) }), en = () => ({ verifySmsOTP: m(W) }), sn = () => {
13
+ const n = m(P), { oauthState: t } = K();
14
+ return { signInWithOAuth: n, oauthState: t };
15
+ }, K = () => {
16
+ const { oauthState: n } = u();
17
+ return { oauthState: n };
18
+ }, rn = () => {
19
+ const { isSignedIn: n } = u();
14
20
  return { isSignedIn: n };
15
21
  }, w = () => {
16
- const { currentUser: n } = p();
22
+ const { currentUser: n } = u();
17
23
  return { currentUser: n };
18
- }, tn = () => ({ signOut: i(x) }), rn = () => ({ getAccessToken: A }), sn = () => {
24
+ }, an = () => ({ signOut: i(x) }), on = () => ({ getAccessToken: A }), cn = () => {
19
25
  const { currentUser: n } = w();
20
26
  return {
21
27
  evmAddress: n?.evmSmartAccounts?.[0] ?? n?.evmAccounts?.[0] ?? null
22
28
  };
23
- }, an = () => {
29
+ }, un = () => {
24
30
  const { currentUser: n } = w();
25
31
  return {
26
32
  solanaAddress: n?.solanaAccounts?.[0] ?? null
27
33
  };
28
- }, on = () => ({ signEvmHash: i(M) }), cn = () => ({ signEvmTransaction: i(k) }), un = () => {
29
- const [n, e] = u(null), [s, r] = u(null), [c, S] = u(null), { config: a } = p(), d = i(
30
- async (m) => {
31
- const o = await C(m);
32
- return e({ hash: o.transactionHash, network: m.network }), S(null), r(null), o;
34
+ }, pn = () => ({ signEvmHash: i(M) }), dn = () => ({ signEvmTransaction: i(k) }), ln = () => {
35
+ const [n, t] = p(null), [r, s] = p(null), [c, S] = p(null), { config: a } = u(), d = i(
36
+ async (g) => {
37
+ const o = await C(g);
38
+ return t({ hash: o.transactionHash, network: g.network }), S(null), s(null), o;
33
39
  }
34
40
  );
35
- f(() => {
41
+ v(() => {
36
42
  if (!n) return;
37
43
  (async () => {
38
44
  try {
39
- const E = await B(n.network, a).waitForTransactionReceipt({
45
+ const E = await J(n.network, a).waitForTransactionReceipt({
40
46
  hash: n.hash
41
47
  });
42
- r(E);
48
+ s(E);
43
49
  } catch (o) {
44
50
  S(o instanceof Error ? o : new Error(String(o)));
45
51
  }
46
52
  })();
47
53
  }, [n]);
48
- const l = j(() => n ? s ? { status: "success", receipt: s } : c ? { status: "error", error: c } : { status: "pending", hash: n.hash } : { status: "idle" }, [n, s, c]);
54
+ const l = q(() => n ? r ? { status: "success", receipt: r } : c ? { status: "error", error: c } : { status: "pending", hash: n.hash } : { status: "idle" }, [n, r, c]);
49
55
  return {
50
56
  sendEvmTransaction: d,
51
57
  data: l
52
58
  };
53
- }, pn = () => ({ signEvmMessage: i(W) }), dn = () => ({ signSolanaMessage: i(H) }), ln = () => ({ signEvmTypedData: i(b) }), Sn = () => ({ exportEvmAccount: i(D) }), mn = () => ({ exportSolanaAccount: i(V) }), gn = () => ({ signSolanaTransaction: i(F) }), En = () => ({
54
- sendSolanaTransaction: i(z)
59
+ }, Sn = () => ({ signEvmMessage: i(H) }), gn = () => ({ signSolanaMessage: i(b) }), mn = () => ({ signEvmTypedData: i(D) }), En = () => ({ exportEvmAccount: i(V) }), wn = () => ({ exportSolanaAccount: i(F) }), hn = () => ({ signSolanaTransaction: i(z) }), vn = () => ({
60
+ sendSolanaTransaction: i(G)
55
61
  }), i = (n) => {
56
- const { isSignedIn: e } = p();
57
- return h(
58
- async (...r) => {
59
- if (!e)
62
+ const { isSignedIn: t } = u();
63
+ return f(
64
+ async (...s) => {
65
+ if (!t)
60
66
  throw new Error("User is not authenticated");
61
- return n(...r);
67
+ return n(...s);
62
68
  },
63
- [e, n]
69
+ [t, n]
64
70
  );
65
- }, g = (n) => {
66
- const { isSignedIn: e } = p();
67
- return h(
68
- async (...r) => {
69
- if (e)
71
+ }, m = (n) => {
72
+ const { isSignedIn: t } = u();
73
+ return f(
74
+ async (...s) => {
75
+ if (t)
70
76
  throw new Error("User is already authenticated. Please sign out first.");
71
- return n(...r);
77
+ return n(...s);
72
78
  },
73
- [e, n]
79
+ [t, n]
74
80
  );
75
- }, wn = () => {
76
- const [n, e] = u(void 0), { status: s, data: r, error: c } = J(n);
81
+ }, fn = () => {
82
+ const [n, t] = p(void 0), { status: r, data: s, error: c } = L(n);
77
83
  return {
78
84
  sendUserOperation: i(
79
85
  async (a) => {
80
- const d = await y(a);
81
- return e({
86
+ const d = await O(a);
87
+ return t({
82
88
  userOperationHash: d.userOperationHash,
83
89
  evmSmartAccount: a.evmSmartAccount,
84
90
  network: a.network
85
91
  }), d;
86
92
  }
87
93
  ),
88
- data: r,
94
+ data: s,
89
95
  error: c,
90
- status: s
96
+ status: r
91
97
  };
92
- }, J = (n = {}) => {
93
- const { userOperationHash: e, evmSmartAccount: s, network: r, enabled: c } = n, [S, a] = u("idle"), [d, l] = u(void 0), [m, o] = u(void 0), { currentUser: E } = w();
94
- f(() => {
95
- e && s && r && (a(c !== !1 ? "pending" : "idle"), l(void 0), o(void 0));
96
- }, [e, s, r, c]);
97
- const v = c !== !1 && !!(e && s && r && E);
98
- return q(
98
+ }, L = (n = {}) => {
99
+ const { userOperationHash: t, evmSmartAccount: r, network: s, enabled: c } = n, [S, a] = p("idle"), [d, l] = p(void 0), [g, o] = p(void 0), { currentUser: E } = w();
100
+ v(() => {
101
+ t && r && s && (a(c !== !1 ? "pending" : "idle"), l(void 0), o(void 0));
102
+ }, [t, r, s, c]);
103
+ const h = c !== !1 && !!(t && r && s && E);
104
+ return B(
99
105
  {
100
106
  pollFn: async () => {
101
- const t = await G({
102
- userOperationHash: e,
103
- evmSmartAccount: s,
104
- network: r
107
+ const e = await j({
108
+ userOperationHash: t,
109
+ evmSmartAccount: r,
110
+ network: s
105
111
  });
106
- return l(t), t;
112
+ return l(e), e;
107
113
  },
108
- shouldStop: (t) => t.status === "complete" || t.status === "dropped" || t.status === "failed",
109
- enabled: v,
110
- onSuccess: (t) => {
111
- if (t.status === "complete")
112
- l(t), a("success");
113
- else if (t.status === "failed") {
114
- const T = t.receipts?.[0]?.revert?.message || "User operation failed";
114
+ shouldStop: (e) => e.status === "complete" || e.status === "dropped" || e.status === "failed",
115
+ enabled: h,
116
+ onSuccess: (e) => {
117
+ if (e.status === "complete")
118
+ l(e), a("success");
119
+ else if (e.status === "failed") {
120
+ const T = e.receipts?.[0]?.revert?.message || "User operation failed";
115
121
  o(new Error(T)), a("error");
116
- } else t.status === "dropped" ? (o(new Error('User operation failed with status: "dropped"')), a("error")) : (l(t), a("error"));
122
+ } else e.status === "dropped" ? (o(new Error('User operation failed with status: "dropped"')), a("error")) : (l(e), a("error"));
117
123
  },
118
- onError: (t) => {
119
- o(t), a("error");
124
+ onError: (e) => {
125
+ o(e), a("error");
120
126
  }
121
127
  },
122
- [e, s, r, v]
128
+ [t, r, s, h]
123
129
  ), {
124
130
  status: S,
125
131
  data: d,
126
- error: m
132
+ error: g
127
133
  };
128
134
  };
129
135
  export {
130
- Y as useConfig,
136
+ _ as useConfig,
131
137
  w as useCurrentUser,
132
138
  i as useEnforceAuthenticated,
133
- g as useEnforceUnauthenticated,
134
- sn as useEvmAddress,
135
- Sn as useExportEvmAccount,
136
- mn as useExportSolanaAccount,
137
- rn as useGetAccessToken,
138
- Z as useIsInitialized,
139
- en as useIsSignedIn,
140
- un as useSendEvmTransaction,
141
- En as useSendSolanaTransaction,
142
- wn as useSendUserOperation,
143
- on as useSignEvmHash,
144
- pn as useSignEvmMessage,
145
- cn as useSignEvmTransaction,
146
- ln as useSignEvmTypedData,
147
- _ as useSignInWithEmail,
148
- $ as useSignInWithSms,
149
- tn as useSignOut,
150
- dn as useSignSolanaMessage,
151
- gn as useSignSolanaTransaction,
152
- an as useSolanaAddress,
153
- R as useVerifyEmailOTP,
154
- nn as useVerifySmsOTP,
155
- J as useWaitForUserOperation
139
+ m as useEnforceUnauthenticated,
140
+ cn as useEvmAddress,
141
+ En as useExportEvmAccount,
142
+ wn as useExportSolanaAccount,
143
+ on as useGetAccessToken,
144
+ $ as useIsInitialized,
145
+ rn as useIsSignedIn,
146
+ K as useOAuthState,
147
+ ln as useSendEvmTransaction,
148
+ vn as useSendSolanaTransaction,
149
+ fn as useSendUserOperation,
150
+ pn as useSignEvmHash,
151
+ Sn as useSignEvmMessage,
152
+ dn as useSignEvmTransaction,
153
+ mn as useSignEvmTypedData,
154
+ R as useSignInWithEmail,
155
+ sn as useSignInWithOAuth,
156
+ nn as useSignInWithSms,
157
+ an as useSignOut,
158
+ gn as useSignSolanaMessage,
159
+ hn as useSignSolanaTransaction,
160
+ un as useSolanaAddress,
161
+ tn as useVerifyEmailOTP,
162
+ en as useVerifySmsOTP,
163
+ L as useWaitForUserOperation
156
164
  };
@@ -18,6 +18,8 @@ import { Hex } from '@coinbase/cdp-core';
18
18
  import { JSX } from 'react/jsx-runtime';
19
19
  import { ListSpendPermissionsOptions } from '@coinbase/cdp-core';
20
20
  import { ListSpendPermissionsResult } from '@coinbase/cdp-core';
21
+ import { OAuth2ProviderType } from '@coinbase/cdp-core';
22
+ import { OAuthFlowState } from '@coinbase/cdp-core';
21
23
  import { ReactNode } from 'react';
22
24
  import { RevokeSpendPermissionOptions as RevokeSpendPermissionOptions_2 } from '@coinbase/cdp-core';
23
25
  import { RevokeSpendPermissionResult } from '@coinbase/cdp-core';
@@ -67,6 +69,7 @@ export declare interface CDPContextValue {
67
69
  currentUser: User | null;
68
70
  isSignedIn: boolean;
69
71
  config: Config;
72
+ oauthState: OAuthFlowState | null;
70
73
  }
71
74
 
72
75
  export declare function CDPHooksProvider({ children, config }: CDPHooksProviderProps): JSX.Element;
@@ -100,6 +103,10 @@ export { GetUserOperationResult }
100
103
 
101
104
  export { Hex }
102
105
 
106
+ export { OAuth2ProviderType }
107
+
108
+ export { OAuthFlowState }
109
+
103
110
  export declare type RevokeSpendPermissionOptions = Omit<RevokeSpendPermissionOptions_2, "evmSmartAccount"> & {
104
111
  evmSmartAccount?: EvmAddress;
105
112
  };
@@ -213,6 +220,10 @@ export declare type UseListSpendPermissionsReturnType = {
213
220
  refetch: () => void;
214
221
  };
215
222
 
223
+ export declare const useOAuthState: () => {
224
+ oauthState: OAuthFlowState | null;
225
+ };
226
+
216
227
  export { User }
217
228
 
218
229
  export declare const useRevokeSpendPermission: () => UseRevokeSpendPermissionReturnType;
@@ -262,6 +273,11 @@ export declare const useSignInWithEmail: () => {
262
273
  signInWithEmail: (options: SignInWithEmailOptions) => Promise<SignInWithEmailResult>;
263
274
  };
264
275
 
276
+ export declare const useSignInWithOAuth: () => {
277
+ signInWithOAuth: (providerType: OAuth2ProviderType) => Promise<void>;
278
+ oauthState: OAuthFlowState | null;
279
+ };
280
+
265
281
  export declare const useSignInWithSms: () => {
266
282
  signInWithSms: (options: SignInWithSmsOptions) => Promise<SignInWithSmsResult>;
267
283
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coinbase/cdp-hooks",
3
- "version": "0.0.45",
3
+ "version": "0.0.46",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**",
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "peerDependencies": {
17
17
  "react": ">=18.2.0",
18
- "@coinbase/cdp-core": "^0.0.45"
18
+ "@coinbase/cdp-core": "^0.0.46"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@testing-library/jest-dom": "^6.6.3",
@@ -30,7 +30,7 @@
30
30
  "@size-limit/webpack": "^11.2.0",
31
31
  "@size-limit/webpack-why": "^11.2.0",
32
32
  "size-limit": "^11.2.0",
33
- "@coinbase/cdp-core": "^0.0.45"
33
+ "@coinbase/cdp-core": "^0.0.46"
34
34
  },
35
35
  "size-limit": [
36
36
  {