@bounded-sh/client 0.0.64 → 0.0.65
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/auth/providers/injected-wallet-provider.d.ts +1 -1
- package/dist/auth/providers/privy-expo-provider.d.ts +1 -1
- package/dist/auth/turnkey-signing-capability.d.ts +20 -0
- package/dist/{email-auth-provider-v9xvY0Ky.mjs → email-auth-provider-BLHNLu5l.mjs} +2 -2
- package/dist/{email-auth-provider-v9xvY0Ky.mjs.map → email-auth-provider-BLHNLu5l.mjs.map} +1 -1
- package/dist/{email-auth-provider-97CluDlZ.js → email-auth-provider-CJVJsWXv.js} +2 -2
- package/dist/{email-auth-provider-97CluDlZ.js.map → email-auth-provider-CJVJsWXv.js.map} +1 -1
- package/dist/{email-auth-provider-CKM4O5Z1.js → email-auth-provider-DYtoSrdm.js} +2 -2
- package/dist/{email-auth-provider-CKM4O5Z1.js.map → email-auth-provider-DYtoSrdm.js.map} +1 -1
- package/dist/{email-auth-provider-h0fPnU76.mjs → email-auth-provider-wqNimboO.mjs} +2 -2
- package/dist/{email-auth-provider-h0fPnU76.mjs.map → email-auth-provider-wqNimboO.mjs.map} +1 -1
- package/dist/{guest-auth-provider-Dmup2WIL.mjs → guest-auth-provider-C3EGlSSp.mjs} +2 -2
- package/dist/{guest-auth-provider-BLRbjAv2.mjs.map → guest-auth-provider-C3EGlSSp.mjs.map} +1 -1
- package/dist/{guest-auth-provider-BLRbjAv2.mjs → guest-auth-provider-CKkNZ-1p.mjs} +2 -2
- package/dist/{guest-auth-provider-Dmup2WIL.mjs.map → guest-auth-provider-CKkNZ-1p.mjs.map} +1 -1
- package/dist/{guest-auth-provider-CLnFuodt.js → guest-auth-provider-CoI0r92a.js} +2 -2
- package/dist/{guest-auth-provider-CLnFuodt.js.map → guest-auth-provider-CoI0r92a.js.map} +1 -1
- package/dist/{guest-auth-provider-BvIf5W5c.js → guest-auth-provider-UMP8Z_bK.js} +2 -2
- package/dist/{guest-auth-provider-BvIf5W5c.js.map → guest-auth-provider-UMP8Z_bK.js.map} +1 -1
- package/dist/{index-7yz-Olrm.mjs → index-Cgbr0abz.mjs} +111 -108
- package/dist/index-Cgbr0abz.mjs.map +1 -0
- package/dist/{index-Bk0nEjB6.js → index-FkEGh6dx.js} +109 -107
- package/dist/index-FkEGh6dx.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{index.native-Do-VhPUG.js → index.native-CAHw3k3_.js} +108 -106
- package/dist/index.native-CAHw3k3_.js.map +1 -0
- package/dist/{index.native-CWcQMPZd.mjs → index.native-wyaknPBR.mjs} +110 -107
- package/dist/index.native-wyaknPBR.mjs.map +1 -0
- package/dist/index.native.d.ts +0 -1
- package/dist/index.native.js +1 -2
- package/dist/index.native.js.map +1 -1
- package/dist/index.native.mjs +1 -1
- package/dist/{injected-evm-wallet-provider-xvZq9Zli.mjs → injected-evm-wallet-provider-B8x7dNuL.mjs} +2 -2
- package/dist/{injected-evm-wallet-provider-xvZq9Zli.mjs.map → injected-evm-wallet-provider-B8x7dNuL.mjs.map} +1 -1
- package/dist/{injected-evm-wallet-provider-BMiT8I-4.js → injected-evm-wallet-provider-BAToKWZo.js} +2 -2
- package/dist/{injected-evm-wallet-provider-BMiT8I-4.js.map → injected-evm-wallet-provider-BAToKWZo.js.map} +1 -1
- package/dist/{injected-evm-wallet-provider-B5MA0w8I.js → injected-evm-wallet-provider-D-7Eg6TS.js} +2 -2
- package/dist/{injected-evm-wallet-provider-B5MA0w8I.js.map → injected-evm-wallet-provider-D-7Eg6TS.js.map} +1 -1
- package/dist/{injected-evm-wallet-provider-DlPsOmik.mjs → injected-evm-wallet-provider-pVKJtDHL.mjs} +2 -2
- package/dist/{injected-evm-wallet-provider-DlPsOmik.mjs.map → injected-evm-wallet-provider-pVKJtDHL.mjs.map} +1 -1
- package/dist/{injected-wallet-provider-CSj0lY9H.js → injected-wallet-provider-28GE3rH9.js} +8 -75
- package/dist/injected-wallet-provider-28GE3rH9.js.map +1 -0
- package/dist/{injected-wallet-provider-Dd7ij6bc.mjs → injected-wallet-provider-5NeXEzui.mjs} +9 -76
- package/dist/injected-wallet-provider-5NeXEzui.mjs.map +1 -0
- package/dist/{injected-wallet-provider-YHhhFzsj.mjs → injected-wallet-provider-BojBmTAQ.mjs} +9 -76
- package/dist/injected-wallet-provider-BojBmTAQ.mjs.map +1 -0
- package/dist/{injected-wallet-provider-CoE5XQQn.js → injected-wallet-provider-DvwlPJea.js} +8 -75
- package/dist/injected-wallet-provider-DvwlPJea.js.map +1 -0
- package/dist/onramp.d.ts +4 -1
- package/package.json +2 -2
- package/dist/auth/providers/phantom-wallet-provider.d.ts +0 -111
- package/dist/auth/providers/privy-wallet-provider.d.ts +0 -83
- package/dist/auth/providers/sol/sol-utils.d.ts +0 -2
- package/dist/auth/providers/solana-mobile-wallet-provider.d.ts +0 -151
- package/dist/index-7yz-Olrm.mjs.map +0 -1
- package/dist/index-Bk0nEjB6.js.map +0 -1
- package/dist/index.native-CWcQMPZd.mjs.map +0 -1
- package/dist/index.native-Do-VhPUG.js.map +0 -1
- package/dist/injected-wallet-provider-CSj0lY9H.js.map +0 -1
- package/dist/injected-wallet-provider-CoE5XQQn.js.map +0 -1
- package/dist/injected-wallet-provider-Dd7ij6bc.mjs.map +0 -1
- package/dist/injected-wallet-provider-YHhhFzsj.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getConfig, getActiveSessionManager, WebSessionManager, ReactNativeSessionManager, revokeSession, init as init$1, onSessionCleared, reconnectWithNewAuth, deriveUserIdentityFromIdToken, subscribe, getIdToken as getIdToken$1,
|
|
1
|
+
import { getConfig, getActiveSessionManager, WebSessionManager, ReactNativeSessionManager, revokeSession, init as init$1, onSessionCleared, reconnectWithNewAuth, deriveUserIdentityFromIdToken, subscribe, getIdToken as getIdToken$1, genAuthNonce, genSolanaMessage, createSessionWithSignature } from '@bounded-sh/core';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -3719,6 +3719,63 @@ async function runWidget(url, signerOrigin, ex, popupFallback) {
|
|
|
3719
3719
|
return run;
|
|
3720
3720
|
}
|
|
3721
3721
|
|
|
3722
|
+
// turnkey-signing-capability.ts - the pure AS-02 (DS2-0112) signing-capability logic,
|
|
3723
|
+
// kept import-free (no DOM, no session, no @bounded-sh/core) so it is unit-testable.
|
|
3724
|
+
//
|
|
3725
|
+
// The hosted Turnkey signer refuses to sign unless the request carries an issuer-signed
|
|
3726
|
+
// SIGNING CAPABILITY bound to the app id, the requesting origin, and the EXACT payload
|
|
3727
|
+
// hash. `requestTurnkeySigningCapability` mints one for the given bytes and
|
|
3728
|
+
// `buildTurnkeySignRequest` assembles the signer request that carries it. The bridge
|
|
3729
|
+
// (turnkey-signer-bridge.ts) supplies the base url + id token and routes through both,
|
|
3730
|
+
// so a regression here (a dropped capability, a wrong route, a swallowed error) is
|
|
3731
|
+
// caught without a browser.
|
|
3732
|
+
// POST the Bounded id token + payload hash to the issuer's capability mint route and
|
|
3733
|
+
// return the issuer-signed capability for exactly these bytes. Credential-free: identity
|
|
3734
|
+
// is proven with the id token in the body (not an ambient cookie the cross-origin fetch
|
|
3735
|
+
// would not carry). Throws with the same stable messages the bridge relied on inline.
|
|
3736
|
+
async function requestTurnkeySigningCapability(opts) {
|
|
3737
|
+
const base = opts.baseUrl.replace(/\/$/, '');
|
|
3738
|
+
let res;
|
|
3739
|
+
try {
|
|
3740
|
+
res = await opts.fetchImpl(`${base}/wallet/turnkey/capability`, {
|
|
3741
|
+
method: 'POST',
|
|
3742
|
+
headers: { 'content-type': 'application/json' },
|
|
3743
|
+
body: JSON.stringify({ idToken: opts.idToken, messageHex: opts.messageHex }),
|
|
3744
|
+
});
|
|
3745
|
+
}
|
|
3746
|
+
catch (_a) {
|
|
3747
|
+
throw new Error('Could not reach the Bounded signer to authorize this signature.');
|
|
3748
|
+
}
|
|
3749
|
+
if (!res.ok) {
|
|
3750
|
+
let error = 'signing_capability_denied';
|
|
3751
|
+
try {
|
|
3752
|
+
const d = (await res.json());
|
|
3753
|
+
if (d && typeof d.error === 'string')
|
|
3754
|
+
error = d.error;
|
|
3755
|
+
}
|
|
3756
|
+
catch (_b) {
|
|
3757
|
+
/* keep the default marker */
|
|
3758
|
+
}
|
|
3759
|
+
throw new Error(`Turnkey signing was not authorized (${error}).`);
|
|
3760
|
+
}
|
|
3761
|
+
const d = (await res.json());
|
|
3762
|
+
if (!d || typeof d.capability !== 'string' || !d.capability) {
|
|
3763
|
+
throw new Error('Turnkey signing capability was malformed.');
|
|
3764
|
+
}
|
|
3765
|
+
return d.capability;
|
|
3766
|
+
}
|
|
3767
|
+
// Assemble the `bounded:turnkey:sign` postMessage request, carrying the issuer-signed
|
|
3768
|
+
// capability for the same bytes. Without the capability the hosted signer refuses
|
|
3769
|
+
// (capability_required), so it is a required field of every sign request.
|
|
3770
|
+
function buildTurnkeySignRequest(opts) {
|
|
3771
|
+
return {
|
|
3772
|
+
type: 'bounded:turnkey:sign',
|
|
3773
|
+
requestId: opts.requestId,
|
|
3774
|
+
messageHex: opts.messageHex,
|
|
3775
|
+
capability: opts.capability,
|
|
3776
|
+
};
|
|
3777
|
+
}
|
|
3778
|
+
|
|
3722
3779
|
// turnkey-signer-bridge.ts - routes NON-CUSTODIAL Turnkey embedded-wallet signing
|
|
3723
3780
|
// through the Bounded-owned signer page (auth.bounded.sh/wallet/turnkey/signer).
|
|
3724
3781
|
//
|
|
@@ -3883,6 +3940,33 @@ async function runPopup(url, signerOrigin, ex) {
|
|
|
3883
3940
|
} }, 5 * 60 * 1000);
|
|
3884
3941
|
});
|
|
3885
3942
|
}
|
|
3943
|
+
// AS-02: the hosted signer refuses to sign unless the request carries an issuer-signed
|
|
3944
|
+
// SIGNING CAPABILITY bound to the app id, this origin, and the EXACT bytes (a bare postMessage
|
|
3945
|
+
// from any peer can no longer consent-phish a signature). Fetch one from the human-auth issuer
|
|
3946
|
+
// for exactly these bytes before posting the sign request. Credential-free: the caller proves
|
|
3947
|
+
// identity with the Bounded id token WE minted (a body secret, RS256-verified server-side), not
|
|
3948
|
+
// an ambient cookie - the issuer's session cookie is SameSite-scoped to its own origin and is
|
|
3949
|
+
// not sent on this cross-origin fetch, so the token is what carries the session's wallet.
|
|
3950
|
+
async function fetchSigningCapability(messageHex) {
|
|
3951
|
+
const cfg = await getConfig();
|
|
3952
|
+
const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\/$/, '');
|
|
3953
|
+
let idToken = null;
|
|
3954
|
+
try {
|
|
3955
|
+
idToken = getActiveSessionManager().getIdToken();
|
|
3956
|
+
}
|
|
3957
|
+
catch (_a) {
|
|
3958
|
+
idToken = null;
|
|
3959
|
+
}
|
|
3960
|
+
if (!idToken) {
|
|
3961
|
+
throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');
|
|
3962
|
+
}
|
|
3963
|
+
return requestTurnkeySigningCapability({
|
|
3964
|
+
baseUrl: base,
|
|
3965
|
+
idToken,
|
|
3966
|
+
messageHex,
|
|
3967
|
+
fetchImpl: (url, init) => fetch(url, init),
|
|
3968
|
+
});
|
|
3969
|
+
}
|
|
3886
3970
|
function hasTurnkeyWallet() {
|
|
3887
3971
|
return activeTurnkeyAddress() !== null;
|
|
3888
3972
|
}
|
|
@@ -3903,8 +3987,11 @@ async function signSolanaMessageViaTurnkey(message) {
|
|
|
3903
3987
|
const { url, origin } = await turnkeySignerPage();
|
|
3904
3988
|
const requestId = `tksign_${Date.now()}_${++requestSeq}`;
|
|
3905
3989
|
const messageHex = toHex(message);
|
|
3990
|
+
// AS-02: obtain the issuer-signed capability for THESE exact bytes first; the signer will
|
|
3991
|
+
// refuse (capability_required) without it. Fetched per signature (each is single-payload).
|
|
3992
|
+
const capability = await fetchSigningCapability(messageHex);
|
|
3906
3993
|
return await deliver(url, origin, {
|
|
3907
|
-
request: {
|
|
3994
|
+
request: buildTurnkeySignRequest({ requestId, messageHex, capability }),
|
|
3908
3995
|
onResult: (d) => {
|
|
3909
3996
|
if (d.ok && typeof d.signatureHex === 'string' && typeof d.address === 'string') {
|
|
3910
3997
|
return { done: true, value: { signature: fromHex(d.signatureHex), address: d.address, subOrgId: String(d.subOrgId || '') } };
|
|
@@ -4773,7 +4860,7 @@ async function getAuthProvider(config) {
|
|
|
4773
4860
|
// manager as legacy email sessions. Human login should be started
|
|
4774
4861
|
// with loginWithRedirect(); this provider is kept as the restore and
|
|
4775
4862
|
// logout surface for those sessions.
|
|
4776
|
-
currentAuthProvider = new (await import('./email-auth-provider-
|
|
4863
|
+
currentAuthProvider = new (await import('./email-auth-provider-wqNimboO.mjs')).EmailAuthProvider();
|
|
4777
4864
|
break;
|
|
4778
4865
|
case "wallet":
|
|
4779
4866
|
case "phantom": {
|
|
@@ -4792,7 +4879,7 @@ async function getAuthProvider(config) {
|
|
|
4792
4879
|
if (!isWalletLoginEnabled(config)) {
|
|
4793
4880
|
throw walletLoginNotEnabledError(authMethod);
|
|
4794
4881
|
}
|
|
4795
|
-
const { InjectedWalletProvider } = await import('./injected-wallet-provider-
|
|
4882
|
+
const { InjectedWalletProvider } = await import('./injected-wallet-provider-5NeXEzui.mjs');
|
|
4796
4883
|
currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);
|
|
4797
4884
|
break;
|
|
4798
4885
|
}
|
|
@@ -4805,7 +4892,7 @@ async function getAuthProvider(config) {
|
|
|
4805
4892
|
// Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig
|
|
4806
4893
|
// to point at a specific wallet or set chainId/domain.
|
|
4807
4894
|
const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});
|
|
4808
|
-
const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-
|
|
4895
|
+
const { InjectedEvmWalletProvider } = await import('./injected-evm-wallet-provider-B8x7dNuL.mjs');
|
|
4809
4896
|
currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);
|
|
4810
4897
|
break;
|
|
4811
4898
|
}
|
|
@@ -4833,7 +4920,7 @@ async function getAuthProvider(config) {
|
|
|
4833
4920
|
break;
|
|
4834
4921
|
case "guest":
|
|
4835
4922
|
// Anonymous auth: a device-local ed25519 keypair signs the challenge.
|
|
4836
|
-
currentAuthProvider = new (await import('./guest-auth-provider-
|
|
4923
|
+
currentAuthProvider = new (await import('./guest-auth-provider-C3EGlSSp.mjs')).GuestAuthProvider();
|
|
4837
4924
|
break;
|
|
4838
4925
|
}
|
|
4839
4926
|
if (!currentAuthProvider) {
|
|
@@ -4889,7 +4976,7 @@ async function signInAnonymously() {
|
|
|
4889
4976
|
// Lazy-load the guest provider so its ed25519/web3 dependencies stay out of
|
|
4890
4977
|
// the main bundle for data-only apps. Specifier is a static string literal
|
|
4891
4978
|
// so bundle-splitting can see it.
|
|
4892
|
-
const provider = new (await import('./guest-auth-provider-
|
|
4979
|
+
const provider = new (await import('./guest-auth-provider-C3EGlSSp.mjs')).GuestAuthProvider();
|
|
4893
4980
|
setAuthLoading(true); // reflect "signing in…" while the guest keypair session is minted
|
|
4894
4981
|
const commit = (user) => {
|
|
4895
4982
|
// No await/interleaving inside this block: provider/method/config/marker
|
|
@@ -6127,18 +6214,6 @@ async function list() {
|
|
|
6127
6214
|
*/
|
|
6128
6215
|
const apps = { create, list, buildCreateRedirectUrl };
|
|
6129
6216
|
|
|
6130
|
-
async function deserializeTransaction(tx) {
|
|
6131
|
-
// Literal specifier so bundlers can code-split the lazy chunk.
|
|
6132
|
-
const { Transaction, VersionedTransaction } = await import('@solana/web3.js');
|
|
6133
|
-
const buf = Buffer.isBuffer(tx) ? tx : Buffer.from(tx, 'base64');
|
|
6134
|
-
if ((buf[0] & 0x80) !== 0) {
|
|
6135
|
-
return VersionedTransaction.deserialize(buf);
|
|
6136
|
-
}
|
|
6137
|
-
else {
|
|
6138
|
-
return Transaction.from(buf);
|
|
6139
|
-
}
|
|
6140
|
-
}
|
|
6141
|
-
|
|
6142
6217
|
// bounded.onramp() - fund the signed-in user's wallet with Coinbase Onramp.
|
|
6143
6218
|
//
|
|
6144
6219
|
// Web-only. Opens Coinbase's hosted checkout (pay.coinbase.com) in a popup
|
|
@@ -6180,16 +6255,16 @@ async function readError(res) {
|
|
|
6180
6255
|
}
|
|
6181
6256
|
}
|
|
6182
6257
|
function sessionBody(options, extra) {
|
|
6183
|
-
return JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(
|
|
6258
|
+
return JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.asset ? { asset: options.asset } : {})), (options.amountUsd !== undefined ? { amountUsd: options.amountUsd } : {})), (options.minAmountOut !== undefined ? { minAmountOut: options.minAmountOut } : {})), (options.slippagePad !== undefined ? { slippagePad: options.slippagePad } : {})), extra));
|
|
6184
6259
|
}
|
|
6185
|
-
function resolveAddress(
|
|
6186
|
-
var _a
|
|
6260
|
+
function resolveAddress() {
|
|
6261
|
+
var _a;
|
|
6187
6262
|
const user = getCurrentUser();
|
|
6188
|
-
const address = (
|
|
6263
|
+
const address = (_a = user === null || user === void 0 ? void 0 : user.address) !== null && _a !== void 0 ? _a : undefined;
|
|
6189
6264
|
if (!address) {
|
|
6190
6265
|
throw new Error(user
|
|
6191
|
-
? 'onramp: the signed-in account has no wallet address
|
|
6192
|
-
: 'onramp: no signed-in user - call login() first
|
|
6266
|
+
? 'onramp: the signed-in account has no wallet address (create one via the embedded wallet flow)'
|
|
6267
|
+
: 'onramp: no signed-in user - call login() first');
|
|
6193
6268
|
}
|
|
6194
6269
|
return address;
|
|
6195
6270
|
}
|
|
@@ -6200,7 +6275,7 @@ function resolveAddress(options) {
|
|
|
6200
6275
|
async function onrampQuote(options = {}) {
|
|
6201
6276
|
if (!hasDOM())
|
|
6202
6277
|
throw new Error('onrampQuote is web-only');
|
|
6203
|
-
resolveAddress(
|
|
6278
|
+
resolveAddress();
|
|
6204
6279
|
const res = await authedFetch('/__bounded/onramp/session', {
|
|
6205
6280
|
method: 'POST',
|
|
6206
6281
|
headers: { 'content-type': 'application/json' },
|
|
@@ -6258,7 +6333,7 @@ async function onramp(options = {}) {
|
|
|
6258
6333
|
var _a;
|
|
6259
6334
|
if (!hasDOM())
|
|
6260
6335
|
throw new Error('onramp() is web-only');
|
|
6261
|
-
resolveAddress(
|
|
6336
|
+
resolveAddress();
|
|
6262
6337
|
// Open the window synchronously so the click's user-activation window is not
|
|
6263
6338
|
// consumed by the fetch below (same hard-won pattern as loginWithPopup).
|
|
6264
6339
|
let popup = null;
|
|
@@ -6481,84 +6556,12 @@ class PrivyExpoProvider {
|
|
|
6481
6556
|
setCurrentUser(user);
|
|
6482
6557
|
return user;
|
|
6483
6558
|
}
|
|
6484
|
-
async runTransaction(_evmTransactionData,
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
|
|
6489
|
-
|
|
6490
|
-
]);
|
|
6491
|
-
if (!solTransactionData) {
|
|
6492
|
-
throw new Error('Solana transaction data is required');
|
|
6493
|
-
}
|
|
6494
|
-
const wallet = await this.getWalletOrThrow();
|
|
6495
|
-
const rpcUrl = this.getRpcUrl(solTransactionData.network);
|
|
6496
|
-
const connection = new Connection(rpcUrl, 'confirmed');
|
|
6497
|
-
const remainingAccounts = convertRemainingAccounts(solTransactionData.txArgs[0].remainingAccounts);
|
|
6498
|
-
const app_id = solTransactionData.appId;
|
|
6499
|
-
if (!app_id) {
|
|
6500
|
-
throw new Error('App ID is required');
|
|
6501
|
-
}
|
|
6502
|
-
// Create a mock wallet adapter for Anchor (only publicKey needed for building TX)
|
|
6503
|
-
const walletPublicKey = new PublicKey(wallet.address);
|
|
6504
|
-
const walletAdapter = {
|
|
6505
|
-
publicKey: walletPublicKey,
|
|
6506
|
-
signTransaction: async (tx) => tx,
|
|
6507
|
-
signAllTransactions: async (txs) => txs,
|
|
6508
|
-
};
|
|
6509
|
-
const ProviderClass = programSdk[['Anch', 'orProvider'].join('')];
|
|
6510
|
-
const programProvider = new ProviderClass(connection, walletAdapter, ProviderClass.defaultOptions());
|
|
6511
|
-
const finalDeduped = [];
|
|
6512
|
-
for (const acc of remainingAccounts) {
|
|
6513
|
-
const existing = finalDeduped.find((d) => d.pubkey.equals(acc.pubkey));
|
|
6514
|
-
if (existing) {
|
|
6515
|
-
existing.isSigner = existing.isSigner || acc.isSigner;
|
|
6516
|
-
existing.isWritable = existing.isWritable || acc.isWritable;
|
|
6517
|
-
}
|
|
6518
|
-
else {
|
|
6519
|
-
finalDeduped.push(acc);
|
|
6520
|
-
}
|
|
6521
|
-
}
|
|
6522
|
-
const { tx, blockhash, lastValidBlockHeight } = await buildSetDocumentsTransaction(connection, solTransactionData.txArgs[0].idl, programProvider, walletPublicKey, {
|
|
6523
|
-
app_id,
|
|
6524
|
-
documents: solTransactionData.txArgs[0].setDocumentData,
|
|
6525
|
-
delete_paths: solTransactionData.txArgs[0].deletePaths,
|
|
6526
|
-
txData: solTransactionData.txArgs[0].txData,
|
|
6527
|
-
}, finalDeduped, solTransactionData.lutKey, solTransactionData.preInstructions, false, solTransactionData.additionalLutAddresses);
|
|
6528
|
-
// Set blockhash
|
|
6529
|
-
const isLegacyTx = 'recentBlockhash' in tx &&
|
|
6530
|
-
!('message' in tx && 'staticAccountKeys' in tx.message);
|
|
6531
|
-
if (isLegacyTx) {
|
|
6532
|
-
tx.recentBlockhash = blockhash;
|
|
6533
|
-
tx.lastValidBlockHeight = lastValidBlockHeight;
|
|
6534
|
-
}
|
|
6535
|
-
else {
|
|
6536
|
-
tx.message.recentBlockhash = blockhash;
|
|
6537
|
-
}
|
|
6538
|
-
try {
|
|
6539
|
-
if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {
|
|
6540
|
-
// Sign only — don't submit
|
|
6541
|
-
const signed = await wallet.signTransaction(tx);
|
|
6542
|
-
return {
|
|
6543
|
-
signedTransaction: signed.signedTransaction,
|
|
6544
|
-
blockNumber: 0,
|
|
6545
|
-
gasUsed: '0',
|
|
6546
|
-
data: '',
|
|
6547
|
-
};
|
|
6548
|
-
}
|
|
6549
|
-
// Sign and submit
|
|
6550
|
-
const { signature, txInfo } = await this.signAndSubmitInternal(tx, wallet, connection);
|
|
6551
|
-
return {
|
|
6552
|
-
transactionSignature: signature,
|
|
6553
|
-
blockNumber: (txInfo === null || txInfo === void 0 ? void 0 : txInfo.slot) || 0,
|
|
6554
|
-
gasUsed: ((_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.fee.toString()) || '0',
|
|
6555
|
-
data: txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta,
|
|
6556
|
-
};
|
|
6557
|
-
}
|
|
6558
|
-
catch (err) {
|
|
6559
|
-
console.error(err);
|
|
6560
|
-
throw err;
|
|
6561
|
-
}
|
|
6559
|
+
async runTransaction(_evmTransactionData, _solTransactionData, _options) {
|
|
6560
|
+
// Client-side Solana transaction building is retired: the realtime
|
|
6561
|
+
// worker returns a fully-built (and, when sponsored, partially-signed)
|
|
6562
|
+
// transaction on its 202, which the SDK validates and signs via
|
|
6563
|
+
// signTransaction. This provider serves no EVM payload either.
|
|
6564
|
+
throw new Error('runTransaction is not supported by this provider; Bounded returns pre-built Solana transactions that are signed with signTransaction.');
|
|
6562
6565
|
}
|
|
6563
6566
|
async signMessage(message) {
|
|
6564
6567
|
await this.ensureReady();
|
|
@@ -6715,5 +6718,5 @@ class PrivyExpoProvider {
|
|
|
6715
6718
|
}
|
|
6716
6719
|
}
|
|
6717
6720
|
|
|
6718
|
-
export { useAuth as A, useQuery as B, useBuildRun as C, apps as D,
|
|
6719
|
-
//# sourceMappingURL=index.native-
|
|
6721
|
+
export { useAuth as A, useQuery as B, useBuildRun as C, apps as D, getIdToken as E, onramp as F, onrampQuote as G, onrampStatus as H, setPlatform as I, builds as J, BuildsApiError as K, PARK_REASONS as L, FAILURE_REASONS as M, NON_TERMINAL_STATES as N, OffchainAuthProvider as O, PrivyExpoProvider as P, BUILD_REVIEW_CAPABILITY_SCHEMA as Q, RUN_STATES as R, BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA as S, TERMINAL_STATES as T, BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA as U, signMessageWithTurnkey as a, signTransactionWithTurnkey as b, signAndSubmitTransactionWithTurnkey as c, setAuthLoading as d, bufferExports as e, bs58 as f, getPlatform as g, hasTurnkeyWallet as h, confirmAndCheckTransaction as i, init as j, getCurrentUser as k, onAuthLoadingChanged as l, getAuthLoading as m, normalizeSolanaRpcUrl as n, onAuthStateChanged as o, login as p, logout as q, resolveSolanaRpcUrl as r, setCurrentUser as s, getAuthProvider as t, signInAnonymously as u, loginWithPrivy as v, loginWithRedirect as w, completeLoginFromRedirect as x, loginWithPopup as y, completeLoginInPopup as z };
|
|
6722
|
+
//# sourceMappingURL=index.native-wyaknPBR.mjs.map
|