@coinbase/cdp-core 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/esm/index100.js +1 -1
- package/dist/esm/index14.js +158 -39
- package/dist/esm/index15.js +47 -16
- package/dist/esm/index16.js +145 -4
- package/dist/esm/index17.js +56 -5
- package/dist/esm/index18.js +39 -158
- package/dist/esm/index19.js +16 -47
- package/dist/esm/index20.js +4 -146
- package/dist/esm/index21.js +5 -56
- package/dist/esm/index3.js +4 -4
- package/dist/esm/index5.js +4 -4
- package/dist/esm/index67.js +1 -1
- package/dist/esm/index69.js +4 -4
- package/dist/esm/index77.js +10 -55
- package/dist/esm/index78.js +54 -10
- package/dist/esm/index79.js +11 -2
- package/dist/esm/index80.js +2 -45
- package/dist/esm/index81.js +44 -13
- package/dist/esm/index82.js +13 -9
- package/dist/esm/index85.js +12 -20
- package/dist/esm/index86.js +35 -9
- package/dist/esm/index87.js +41 -19
- package/dist/esm/index88.js +20 -93
- package/dist/esm/index89.js +9 -20
- package/dist/esm/index90.js +16 -114
- package/dist/esm/index91.js +92 -11
- package/dist/esm/index92.js +20 -35
- package/dist/esm/index93.js +117 -41
- package/dist/types/index.d.ts +1 -1
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -26,6 +26,13 @@ npm install @coinbase/cdp-core
|
|
|
26
26
|
1. Sign in or create an account on the [CDP Portal](https://portal.cdp.coinbase.com)
|
|
27
27
|
2. On your dashboard, select a project from the dropdown at the at the top, and copy the Project ID
|
|
28
28
|
|
|
29
|
+
### Allowlist your local app
|
|
30
|
+
|
|
31
|
+
1. Navigate to the [Embedded Wallet Configuration](https://portal.cdp.coinbase.com/products/embedded-wallets/cors)
|
|
32
|
+
in CDP Portal, and click Add origin to include your local app
|
|
33
|
+
2. Enter the origin of your locally running app - e.g., `http://localhost:3000`
|
|
34
|
+
3. Click Add origin again to save your changes
|
|
35
|
+
|
|
29
36
|
### Initialize the SDK
|
|
30
37
|
|
|
31
38
|
Before calling any methods in the SDK, you must first initialize it:
|
package/dist/esm/index100.js
CHANGED
package/dist/esm/index14.js
CHANGED
|
@@ -1,43 +1,162 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
setExpirationTime(t) {
|
|
26
|
-
return this.#t.exp = t, this;
|
|
27
|
-
}
|
|
28
|
-
setIssuedAt(t) {
|
|
29
|
-
return this.#t.iat = t, this;
|
|
30
|
-
}
|
|
31
|
-
setProtectedHeader(t) {
|
|
32
|
-
return this.#s = t, this;
|
|
33
|
-
}
|
|
34
|
-
async sign(t, e) {
|
|
35
|
-
const s = new i(this.#t.data());
|
|
36
|
-
if (s.setProtectedHeader(this.#s), Array.isArray(this.#s?.crit) && this.#s.crit.includes("b64") && this.#s.b64 === !1)
|
|
37
|
-
throw new r("JWTs MUST NOT use unencoded payload");
|
|
38
|
-
return s.sign(t, e);
|
|
1
|
+
const H = (m) => (h, n, r) => {
|
|
2
|
+
const s = r.subscribe;
|
|
3
|
+
return r.subscribe = (c, i, a) => {
|
|
4
|
+
let l = c;
|
|
5
|
+
if (i) {
|
|
6
|
+
const g = a?.equalityFn || Object.is;
|
|
7
|
+
let v = c(r.getState());
|
|
8
|
+
l = (f) => {
|
|
9
|
+
const u = c(f);
|
|
10
|
+
if (!g(v, u)) {
|
|
11
|
+
const y = v;
|
|
12
|
+
i(v = u, y);
|
|
13
|
+
}
|
|
14
|
+
}, a?.fireImmediately && i(v, v);
|
|
15
|
+
}
|
|
16
|
+
return s(l);
|
|
17
|
+
}, m(h, n, r);
|
|
18
|
+
}, R = H;
|
|
19
|
+
function F(m, h) {
|
|
20
|
+
let n;
|
|
21
|
+
try {
|
|
22
|
+
n = m();
|
|
23
|
+
} catch {
|
|
24
|
+
return;
|
|
39
25
|
}
|
|
26
|
+
return {
|
|
27
|
+
getItem: (s) => {
|
|
28
|
+
var e;
|
|
29
|
+
const c = (a) => a === null ? null : JSON.parse(a, void 0), i = (e = n.getItem(s)) != null ? e : null;
|
|
30
|
+
return i instanceof Promise ? i.then(c) : c(i);
|
|
31
|
+
},
|
|
32
|
+
setItem: (s, e) => n.setItem(s, JSON.stringify(e, void 0)),
|
|
33
|
+
removeItem: (s) => n.removeItem(s)
|
|
34
|
+
};
|
|
40
35
|
}
|
|
36
|
+
const p = (m) => (h) => {
|
|
37
|
+
try {
|
|
38
|
+
const n = m(h);
|
|
39
|
+
return n instanceof Promise ? n : {
|
|
40
|
+
then(r) {
|
|
41
|
+
return p(r)(n);
|
|
42
|
+
},
|
|
43
|
+
catch(r) {
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
} catch (n) {
|
|
48
|
+
return {
|
|
49
|
+
then(r) {
|
|
50
|
+
return this;
|
|
51
|
+
},
|
|
52
|
+
catch(r) {
|
|
53
|
+
return p(r)(n);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}, O = (m, h) => (n, r, s) => {
|
|
58
|
+
let e = {
|
|
59
|
+
storage: F(() => localStorage),
|
|
60
|
+
partialize: (t) => t,
|
|
61
|
+
version: 0,
|
|
62
|
+
merge: (t, S) => ({
|
|
63
|
+
...S,
|
|
64
|
+
...t
|
|
65
|
+
}),
|
|
66
|
+
...h
|
|
67
|
+
}, c = !1;
|
|
68
|
+
const i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Set();
|
|
69
|
+
let l = e.storage;
|
|
70
|
+
if (!l)
|
|
71
|
+
return m(
|
|
72
|
+
(...t) => {
|
|
73
|
+
console.warn(
|
|
74
|
+
`[zustand persist middleware] Unable to update item '${e.name}', the given storage is currently unavailable.`
|
|
75
|
+
), n(...t);
|
|
76
|
+
},
|
|
77
|
+
r,
|
|
78
|
+
s
|
|
79
|
+
);
|
|
80
|
+
const g = () => {
|
|
81
|
+
const t = e.partialize({ ...r() });
|
|
82
|
+
return l.setItem(e.name, {
|
|
83
|
+
state: t,
|
|
84
|
+
version: e.version
|
|
85
|
+
});
|
|
86
|
+
}, v = s.setState;
|
|
87
|
+
s.setState = (t, S) => {
|
|
88
|
+
v(t, S), g();
|
|
89
|
+
};
|
|
90
|
+
const f = m(
|
|
91
|
+
(...t) => {
|
|
92
|
+
n(...t), g();
|
|
93
|
+
},
|
|
94
|
+
r,
|
|
95
|
+
s
|
|
96
|
+
);
|
|
97
|
+
s.getInitialState = () => f;
|
|
98
|
+
let u;
|
|
99
|
+
const y = () => {
|
|
100
|
+
var t, S;
|
|
101
|
+
if (!l) return;
|
|
102
|
+
c = !1, i.forEach((o) => {
|
|
103
|
+
var d;
|
|
104
|
+
return o((d = r()) != null ? d : f);
|
|
105
|
+
});
|
|
106
|
+
const b = ((S = e.onRehydrateStorage) == null ? void 0 : S.call(e, (t = r()) != null ? t : f)) || void 0;
|
|
107
|
+
return p(l.getItem.bind(l))(e.name).then((o) => {
|
|
108
|
+
if (o)
|
|
109
|
+
if (typeof o.version == "number" && o.version !== e.version) {
|
|
110
|
+
if (e.migrate) {
|
|
111
|
+
const d = e.migrate(
|
|
112
|
+
o.state,
|
|
113
|
+
o.version
|
|
114
|
+
);
|
|
115
|
+
return d instanceof Promise ? d.then((I) => [!0, I]) : [!0, d];
|
|
116
|
+
}
|
|
117
|
+
console.error(
|
|
118
|
+
"State loaded from storage couldn't be migrated since no migrate function was provided"
|
|
119
|
+
);
|
|
120
|
+
} else
|
|
121
|
+
return [!1, o.state];
|
|
122
|
+
return [!1, void 0];
|
|
123
|
+
}).then((o) => {
|
|
124
|
+
var d;
|
|
125
|
+
const [I, _] = o;
|
|
126
|
+
if (u = e.merge(
|
|
127
|
+
_,
|
|
128
|
+
(d = r()) != null ? d : f
|
|
129
|
+
), n(u, !0), I)
|
|
130
|
+
return g();
|
|
131
|
+
}).then(() => {
|
|
132
|
+
b?.(u, void 0), u = r(), c = !0, a.forEach((o) => o(u));
|
|
133
|
+
}).catch((o) => {
|
|
134
|
+
b?.(void 0, o);
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
return s.persist = {
|
|
138
|
+
setOptions: (t) => {
|
|
139
|
+
e = {
|
|
140
|
+
...e,
|
|
141
|
+
...t
|
|
142
|
+
}, t.storage && (l = t.storage);
|
|
143
|
+
},
|
|
144
|
+
clearStorage: () => {
|
|
145
|
+
l?.removeItem(e.name);
|
|
146
|
+
},
|
|
147
|
+
getOptions: () => e,
|
|
148
|
+
rehydrate: () => y(),
|
|
149
|
+
hasHydrated: () => c,
|
|
150
|
+
onHydrate: (t) => (i.add(t), () => {
|
|
151
|
+
i.delete(t);
|
|
152
|
+
}),
|
|
153
|
+
onFinishHydration: (t) => (a.add(t), () => {
|
|
154
|
+
a.delete(t);
|
|
155
|
+
})
|
|
156
|
+
}, e.skipHydration || y(), u || f;
|
|
157
|
+
}, w = O;
|
|
41
158
|
export {
|
|
42
|
-
|
|
159
|
+
F as createJSONStorage,
|
|
160
|
+
w as persist,
|
|
161
|
+
R as subscribeWithSelector
|
|
43
162
|
};
|
package/dist/esm/index15.js
CHANGED
|
@@ -1,19 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
class n {
|
|
2
|
+
events = {};
|
|
3
|
+
/**
|
|
4
|
+
* Add an event listener.
|
|
5
|
+
*
|
|
6
|
+
* @param event - The name of the event to listen for.
|
|
7
|
+
* @param listener - The function to call when the event is emitted.
|
|
8
|
+
*/
|
|
9
|
+
on(e, s) {
|
|
10
|
+
this.events[e] || (this.events[e] = []), this.events[e].push(s);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Remove an event listener.
|
|
14
|
+
*
|
|
15
|
+
* @param event - The name of the event to remove the listener from.
|
|
16
|
+
* @param listener - The function to remove from the event listeners.
|
|
17
|
+
*/
|
|
18
|
+
removeListener(e, s) {
|
|
19
|
+
if (!this.events[e])
|
|
20
|
+
return;
|
|
21
|
+
const t = this.events[e].indexOf(s);
|
|
22
|
+
t > -1 && this.events[e].splice(t, 1);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Emit an event.
|
|
26
|
+
*
|
|
27
|
+
* @param event - The name of the event to emit.
|
|
28
|
+
* @param args - The arguments to pass to the event listeners.
|
|
29
|
+
*/
|
|
30
|
+
emit(e, ...s) {
|
|
31
|
+
this.events[e] && this.events[e].forEach((t) => {
|
|
32
|
+
try {
|
|
33
|
+
t(...s);
|
|
34
|
+
} catch (i) {
|
|
35
|
+
console.error(`Error in event listener for ${e}:`, i);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Remove all listeners for an event.
|
|
41
|
+
*
|
|
42
|
+
* @param event - The name of the event to remove all listeners from. If not provided, removes all listeners for all events.
|
|
43
|
+
*/
|
|
44
|
+
removeAllListeners(e) {
|
|
45
|
+
e ? delete this.events[e] : this.events = {};
|
|
46
|
+
}
|
|
16
47
|
}
|
|
17
48
|
export {
|
|
18
|
-
n as
|
|
49
|
+
n as EventEmitter
|
|
19
50
|
};
|
package/dist/esm/index16.js
CHANGED
|
@@ -1,7 +1,148 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { Provider as y, Hex as I } from "ox";
|
|
2
|
+
import { createWalletClient as E } from "viem";
|
|
3
|
+
import { signEvmTypedData as S, signEvmHash as P, getCurrentUser as f, signOut as R, sendEvmTransaction as T, signEvmTransaction as A, signEvmMessage as x } from "./index2.js";
|
|
4
|
+
import "./index3.js";
|
|
5
|
+
import { validateUserOwnsAddress as m, EIP1193ProviderError as l, STANDARD_ERROR_CODES as s, RPCRequestError as c, validateUserHasEvmAccount as C, validateUserConnected as D } from "./index4.js";
|
|
6
|
+
import { isChainIdSupportedForCDPSends as b, chainIdToNameMapping as j } from "./index12.js";
|
|
7
|
+
function g(e) {
|
|
8
|
+
return {
|
|
9
|
+
to: e.to,
|
|
10
|
+
data: e.data,
|
|
11
|
+
value: e.value ? BigInt(e.value) : void 0,
|
|
12
|
+
nonce: e.nonce ? Number(e.nonce) : void 0,
|
|
13
|
+
gas: e.gas ? BigInt(e.gas) : void 0,
|
|
14
|
+
maxFeePerGas: e.maxFeePerGas ? BigInt(e.maxFeePerGas) : void 0,
|
|
15
|
+
maxPriorityFeePerGas: e.maxPriorityFeePerGas ? BigInt(e.maxPriorityFeePerGas) : void 0,
|
|
16
|
+
type: "eip1559"
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
async function U() {
|
|
20
|
+
return (await f())?.evmAccounts || [];
|
|
21
|
+
}
|
|
22
|
+
async function M(e, n) {
|
|
23
|
+
const a = await D();
|
|
24
|
+
return e.emit("connect", {
|
|
25
|
+
chainId: I.fromNumber(n.getState().chainId)
|
|
26
|
+
}), a.evmAccounts;
|
|
27
|
+
}
|
|
28
|
+
async function _(e) {
|
|
29
|
+
const [n, a] = e;
|
|
30
|
+
await m(a);
|
|
31
|
+
const t = Buffer.from(n.slice(2), "hex").toString();
|
|
32
|
+
try {
|
|
33
|
+
return (await x({
|
|
34
|
+
evmAccount: a,
|
|
35
|
+
message: t
|
|
36
|
+
})).signature;
|
|
37
|
+
} catch (o) {
|
|
38
|
+
throw new l(
|
|
39
|
+
s.provider.userRejectedRequest,
|
|
40
|
+
o instanceof Error ? o.message : "Signing failed"
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function k(e) {
|
|
45
|
+
const [n, a] = e;
|
|
46
|
+
await m(n);
|
|
47
|
+
try {
|
|
48
|
+
return (await S({
|
|
49
|
+
evmAccount: n,
|
|
50
|
+
typedData: JSON.parse(a)
|
|
51
|
+
})).signature;
|
|
52
|
+
} catch (t) {
|
|
53
|
+
throw new l(
|
|
54
|
+
s.provider.userRejectedRequest,
|
|
55
|
+
t instanceof Error ? t.message : "Signing failed"
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function z(e, n, a) {
|
|
60
|
+
const [t] = e;
|
|
61
|
+
if (!t || typeof t != "object")
|
|
62
|
+
throw new c(
|
|
63
|
+
s.rpc.invalidParams,
|
|
64
|
+
"Transaction parameter must be an object"
|
|
65
|
+
);
|
|
66
|
+
if (!t.to)
|
|
67
|
+
throw new c(
|
|
68
|
+
s.rpc.invalidParams,
|
|
69
|
+
"Transaction must include 'to' field"
|
|
70
|
+
);
|
|
71
|
+
const d = (await C()).evmAccounts[0], u = n.getState(), i = t.chainId ? Number(t.chainId) : u.chainId;
|
|
72
|
+
if (b(i))
|
|
73
|
+
try {
|
|
74
|
+
return (await T({
|
|
75
|
+
evmAccount: d,
|
|
76
|
+
transaction: { ...g(t), chainId: i },
|
|
77
|
+
network: j[i]
|
|
78
|
+
})).transactionHash;
|
|
79
|
+
} catch (r) {
|
|
80
|
+
throw console.log("Transaction failed", r), new c(
|
|
81
|
+
s.rpc.transactionRejected,
|
|
82
|
+
r instanceof Error ? r.message : "Transaction failed"
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
try {
|
|
87
|
+
const r = E({
|
|
88
|
+
// Safe as we check before calling this handler that chainId is configured
|
|
89
|
+
chain: u.chains.find((h) => h.id === i),
|
|
90
|
+
transport: a[i],
|
|
91
|
+
account: d
|
|
92
|
+
}), p = u.chains.find((h) => h.id === i), w = await r.prepareTransactionRequest({
|
|
93
|
+
...g(t),
|
|
94
|
+
chain: p
|
|
95
|
+
}), v = await A({
|
|
96
|
+
evmAccount: d,
|
|
97
|
+
transaction: {
|
|
98
|
+
...w,
|
|
99
|
+
type: "eip1559"
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return await r.sendRawTransaction({
|
|
103
|
+
serializedTransaction: v.signedTransaction
|
|
104
|
+
});
|
|
105
|
+
} catch (r) {
|
|
106
|
+
throw new c(
|
|
107
|
+
s.rpc.transactionRejected,
|
|
108
|
+
r instanceof Error ? r.message : "Transaction failed"
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async function J(e) {
|
|
113
|
+
const [n, a] = e;
|
|
114
|
+
await m(a);
|
|
115
|
+
try {
|
|
116
|
+
return (await P({
|
|
117
|
+
evmAccount: a,
|
|
118
|
+
hash: n
|
|
119
|
+
})).signature;
|
|
120
|
+
} catch (t) {
|
|
121
|
+
throw new l(
|
|
122
|
+
s.provider.userRejectedRequest,
|
|
123
|
+
t instanceof Error ? t.message : "Signing failed"
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function W(e) {
|
|
128
|
+
return `0x${e.getState().chainId.toString(16)}`;
|
|
129
|
+
}
|
|
130
|
+
async function $(e) {
|
|
131
|
+
await f() && await R(), e.emit("disconnect", new y.DisconnectedError());
|
|
132
|
+
}
|
|
133
|
+
function K(e, n) {
|
|
134
|
+
const a = Number.parseInt(e[0].chainId, 16);
|
|
135
|
+
n.getState().setChainId(a);
|
|
4
136
|
}
|
|
5
137
|
export {
|
|
6
|
-
|
|
138
|
+
U as handleAccounts,
|
|
139
|
+
W as handleChainId,
|
|
140
|
+
$ as handleDisconnect,
|
|
141
|
+
J as handleEthSign,
|
|
142
|
+
_ as handlePersonalSign,
|
|
143
|
+
M as handleRequestAccounts,
|
|
144
|
+
z as handleSendTransaction,
|
|
145
|
+
k as handleSignTypedData,
|
|
146
|
+
K as handleSwitchEthereumChain,
|
|
147
|
+
g as shimProviderTxRequest
|
|
7
148
|
};
|
package/dist/esm/index17.js
CHANGED
|
@@ -1,7 +1,58 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { chainConfig as a } from "./index77.js";
|
|
2
|
+
import { defineChain as t } from "./index22.js";
|
|
3
|
+
const e = 11155111, r = /* @__PURE__ */ t({
|
|
4
|
+
...a,
|
|
5
|
+
id: 84532,
|
|
6
|
+
network: "base-sepolia",
|
|
7
|
+
name: "Base Sepolia",
|
|
8
|
+
nativeCurrency: { name: "Sepolia Ether", symbol: "ETH", decimals: 18 },
|
|
9
|
+
rpcUrls: {
|
|
10
|
+
default: {
|
|
11
|
+
http: ["https://sepolia.base.org"]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
blockExplorers: {
|
|
15
|
+
default: {
|
|
16
|
+
name: "Basescan",
|
|
17
|
+
url: "https://sepolia.basescan.org",
|
|
18
|
+
apiUrl: "https://api-sepolia.basescan.org/api"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
contracts: {
|
|
22
|
+
...a.contracts,
|
|
23
|
+
disputeGameFactory: {
|
|
24
|
+
[e]: {
|
|
25
|
+
address: "0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
l2OutputOracle: {
|
|
29
|
+
[e]: {
|
|
30
|
+
address: "0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
portal: {
|
|
34
|
+
[e]: {
|
|
35
|
+
address: "0x49f53e41452c74589e85ca1677426ba426459e85",
|
|
36
|
+
blockCreated: 4446677
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
l1StandardBridge: {
|
|
40
|
+
[e]: {
|
|
41
|
+
address: "0xfd0Bf71F60660E2f608ed56e1659C450eB113120",
|
|
42
|
+
blockCreated: 4446677
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
multicall3: {
|
|
46
|
+
address: "0xca11bde05977b3631167028862be2a173976ca11",
|
|
47
|
+
blockCreated: 1059647
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
testnet: !0,
|
|
51
|
+
sourceId: e
|
|
52
|
+
});
|
|
53
|
+
({
|
|
54
|
+
...r
|
|
55
|
+
});
|
|
5
56
|
export {
|
|
6
|
-
|
|
57
|
+
r as baseSepolia
|
|
7
58
|
};
|