@effectstream/frontend-sdk 0.100.17 → 0.100.19
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/build.ts +4 -0
- package/dist/mod.js +632 -57
- package/package.json +2 -2
package/build.ts
CHANGED
|
@@ -22,6 +22,10 @@ function collectExternals(pkgPath: string) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
// Peer deps are never bundled — treat all of them as external.
|
|
26
|
+
for (const name of Object.keys(pkg.peerDependencies ?? {})) {
|
|
27
|
+
externalDeps.add(name);
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
collectExternals(resolve(import.meta.dir, "package.json"));
|
package/dist/mod.js
CHANGED
|
@@ -18943,14 +18943,41 @@ class MidnightCrypto {
|
|
|
18943
18943
|
verifyAddress = (address) => {
|
|
18944
18944
|
return Value7.Check(TypeboxHelpers.Midnight.Address, address);
|
|
18945
18945
|
};
|
|
18946
|
-
verifySignature = async (signerAddress, message,
|
|
18946
|
+
verifySignature = async (signerAddress, message, sigStruct) => {
|
|
18947
18947
|
try {
|
|
18948
|
-
if (this.verifyAddress(signerAddress)
|
|
18949
|
-
|
|
18948
|
+
if (!this.verifyAddress(signerAddress))
|
|
18949
|
+
return false;
|
|
18950
|
+
if (typeof sigStruct !== "string")
|
|
18951
|
+
return false;
|
|
18952
|
+
if (!this.isMidnightSignature(sigStruct))
|
|
18953
|
+
return false;
|
|
18954
|
+
const parts = sigStruct.split("|");
|
|
18955
|
+
if (parts.length !== 2)
|
|
18956
|
+
return false;
|
|
18957
|
+
const [signature, verifyingKey] = parts;
|
|
18958
|
+
if (!signature || !verifyingKey)
|
|
18959
|
+
return false;
|
|
18960
|
+
const [ledgerMod, addrMod] = await Promise.all([
|
|
18961
|
+
import("@midnight-ntwrk/ledger-v8"),
|
|
18962
|
+
import("@midnight-ntwrk/wallet-sdk-address-format")
|
|
18963
|
+
]);
|
|
18964
|
+
const expectedHexAddress = ledgerMod.addressFromKey(verifyingKey).toLowerCase();
|
|
18965
|
+
let decodedHex;
|
|
18966
|
+
try {
|
|
18967
|
+
const bech323 = addrMod.MidnightBech32m.parse(signerAddress);
|
|
18968
|
+
const decoded = addrMod.UnshieldedAddress.codec.decode(bech323.network, bech323);
|
|
18969
|
+
decodedHex = decoded.hexString.toLowerCase();
|
|
18970
|
+
} catch {
|
|
18950
18971
|
return false;
|
|
18951
18972
|
}
|
|
18952
|
-
|
|
18953
|
-
|
|
18973
|
+
if (decodedHex !== expectedHexAddress)
|
|
18974
|
+
return false;
|
|
18975
|
+
const messageBytes = new TextEncoder().encode(message);
|
|
18976
|
+
return ledgerMod.verifySignature(verifyingKey, messageBytes, signature);
|
|
18977
|
+
} catch (err) {
|
|
18978
|
+
console.error("[MidnightCrypto] error verifying signature:", err);
|
|
18979
|
+
return false;
|
|
18980
|
+
}
|
|
18954
18981
|
};
|
|
18955
18982
|
decodeAddress(address) {
|
|
18956
18983
|
return Value7.Decode(TypeboxHelpers.Midnight.Address, address);
|
|
@@ -19399,6 +19426,125 @@ class EthersEvmProvider {
|
|
|
19399
19426
|
};
|
|
19400
19427
|
}
|
|
19401
19428
|
|
|
19429
|
+
// ../effectstream-sdk/wallets/src/evm/viem.ts
|
|
19430
|
+
import {
|
|
19431
|
+
createPublicClient as createPublicClient2,
|
|
19432
|
+
createWalletClient as createWalletClient2,
|
|
19433
|
+
http as http3
|
|
19434
|
+
} from "viem";
|
|
19435
|
+
import { privateKeyToAccount as privateKeyToAccount2 } from "viem/accounts";
|
|
19436
|
+
class ViemConnector {
|
|
19437
|
+
provider;
|
|
19438
|
+
static INSTANCE = undefined;
|
|
19439
|
+
static instance() {
|
|
19440
|
+
if (ViemConnector.INSTANCE == null) {
|
|
19441
|
+
ViemConnector.INSTANCE = new ViemConnector;
|
|
19442
|
+
}
|
|
19443
|
+
return ViemConnector.INSTANCE;
|
|
19444
|
+
}
|
|
19445
|
+
connectFromPrivateKey = async (args) => {
|
|
19446
|
+
const account = privateKeyToAccount2(args.privateKey);
|
|
19447
|
+
const client = createWalletClient2({
|
|
19448
|
+
account,
|
|
19449
|
+
chain: args.chain,
|
|
19450
|
+
transport: http3(args.rpcUrl)
|
|
19451
|
+
});
|
|
19452
|
+
this.provider = await ViemEvmProvider.init(client, account);
|
|
19453
|
+
return this.provider;
|
|
19454
|
+
};
|
|
19455
|
+
connectExternal = async (conn) => {
|
|
19456
|
+
const account = conn.api.account;
|
|
19457
|
+
if (account == null) {
|
|
19458
|
+
throw new Error("ViemConnector.connectExternal: WalletClient.account is null. Build the client with createWalletClient({ account, ... }).");
|
|
19459
|
+
}
|
|
19460
|
+
this.provider = await ViemEvmProvider.init(conn.api, account, conn.metadata);
|
|
19461
|
+
return this.provider;
|
|
19462
|
+
};
|
|
19463
|
+
getProvider = () => {
|
|
19464
|
+
return this.provider;
|
|
19465
|
+
};
|
|
19466
|
+
getOrThrowProvider = () => {
|
|
19467
|
+
if (this.provider == null) {
|
|
19468
|
+
throw new Error("ViemConnector not initialized yet");
|
|
19469
|
+
}
|
|
19470
|
+
return this.provider;
|
|
19471
|
+
};
|
|
19472
|
+
isConnected = () => {
|
|
19473
|
+
return this.provider != null;
|
|
19474
|
+
};
|
|
19475
|
+
}
|
|
19476
|
+
|
|
19477
|
+
class ViemEvmProvider {
|
|
19478
|
+
conn;
|
|
19479
|
+
account;
|
|
19480
|
+
address;
|
|
19481
|
+
constructor(conn, account, address) {
|
|
19482
|
+
this.conn = conn;
|
|
19483
|
+
this.account = account;
|
|
19484
|
+
this.address = address;
|
|
19485
|
+
}
|
|
19486
|
+
static init = async (client, account, metadata) => {
|
|
19487
|
+
const conn = {
|
|
19488
|
+
api: client,
|
|
19489
|
+
metadata: metadata ?? {
|
|
19490
|
+
name: "viem-local",
|
|
19491
|
+
displayName: "Viem (local)"
|
|
19492
|
+
}
|
|
19493
|
+
};
|
|
19494
|
+
return new ViemEvmProvider(conn, account, account.address);
|
|
19495
|
+
};
|
|
19496
|
+
getConnection = () => {
|
|
19497
|
+
return this.conn;
|
|
19498
|
+
};
|
|
19499
|
+
getAddress = () => {
|
|
19500
|
+
return {
|
|
19501
|
+
type: 0 /* EVM */,
|
|
19502
|
+
address: this.address.toLowerCase()
|
|
19503
|
+
};
|
|
19504
|
+
};
|
|
19505
|
+
signMessage = async (message) => {
|
|
19506
|
+
if (this.account == null) {
|
|
19507
|
+
throw new Error("ViemEvmProvider.signMessage: account is missing");
|
|
19508
|
+
}
|
|
19509
|
+
return await this.conn.api.signMessage({
|
|
19510
|
+
account: this.account,
|
|
19511
|
+
message
|
|
19512
|
+
});
|
|
19513
|
+
};
|
|
19514
|
+
sendTransaction = async (tx) => {
|
|
19515
|
+
if (this.account == null) {
|
|
19516
|
+
throw new Error("ViemEvmProvider.sendTransaction: account is missing");
|
|
19517
|
+
}
|
|
19518
|
+
const toBigInt = (h) => h == null ? undefined : BigInt(h);
|
|
19519
|
+
const hash = await this.conn.api.sendTransaction({
|
|
19520
|
+
account: this.account,
|
|
19521
|
+
to: tx.to,
|
|
19522
|
+
data: tx.data,
|
|
19523
|
+
value: toBigInt(tx.value),
|
|
19524
|
+
gas: toBigInt(tx.gas),
|
|
19525
|
+
gasPrice: toBigInt(tx.gasPrice),
|
|
19526
|
+
maxFeePerGas: toBigInt(tx.maxFeePerGas),
|
|
19527
|
+
maxPriorityFeePerGas: toBigInt(tx.maxPriorityFeePerGas)
|
|
19528
|
+
});
|
|
19529
|
+
if (typeof hash !== "string") {
|
|
19530
|
+
throw new Error(`[ViemEvmProvider.sendTransaction] expected string tx hash, got ${typeof hash}`);
|
|
19531
|
+
}
|
|
19532
|
+
const chain = this.conn.api.chain;
|
|
19533
|
+
const transport = this.conn.api.transport;
|
|
19534
|
+
const publicClient = createPublicClient2({
|
|
19535
|
+
chain: chain ?? undefined,
|
|
19536
|
+
transport: http3(transport?.url)
|
|
19537
|
+
});
|
|
19538
|
+
const receipt = await publicClient.waitForTransactionReceipt({
|
|
19539
|
+
hash
|
|
19540
|
+
});
|
|
19541
|
+
if (receipt.status !== "success") {
|
|
19542
|
+
throw new Error(`[ViemEvmProvider.sendTransaction] tx ${hash} reverted on chain (status=${receipt.status})`);
|
|
19543
|
+
}
|
|
19544
|
+
return { txHash: hash };
|
|
19545
|
+
};
|
|
19546
|
+
}
|
|
19547
|
+
|
|
19402
19548
|
// ../effectstream-sdk/wallets/src/evm/injected.ts
|
|
19403
19549
|
import { utf8ToHex as utf8ToHex3 } from "web3-utils";
|
|
19404
19550
|
import * as CHAINS from "viem/chains";
|
|
@@ -19824,8 +19970,102 @@ class CardanoProvider {
|
|
|
19824
19970
|
};
|
|
19825
19971
|
}
|
|
19826
19972
|
|
|
19827
|
-
// ../effectstream-sdk/wallets/src/
|
|
19973
|
+
// ../effectstream-sdk/wallets/src/cardano/local.ts
|
|
19828
19974
|
import { utf8ToHex as utf8ToHex5 } from "web3-utils";
|
|
19975
|
+
|
|
19976
|
+
class CardanoLocalConnector {
|
|
19977
|
+
provider;
|
|
19978
|
+
static INSTANCE = undefined;
|
|
19979
|
+
static instance() {
|
|
19980
|
+
if (CardanoLocalConnector.INSTANCE == null) {
|
|
19981
|
+
CardanoLocalConnector.INSTANCE = new CardanoLocalConnector;
|
|
19982
|
+
}
|
|
19983
|
+
return CardanoLocalConnector.INSTANCE;
|
|
19984
|
+
}
|
|
19985
|
+
connectFromSeed = async (args) => {
|
|
19986
|
+
const lucidMod = await import("@lucid-evolution/lucid").catch(() => {
|
|
19987
|
+
throw new Error("@lucid-evolution/lucid is required for WalletMode.CardanoLocal. Install it as a peer dependency.");
|
|
19988
|
+
});
|
|
19989
|
+
const utilsMod = await import("@lucid-evolution/utils").catch(() => {
|
|
19990
|
+
throw new Error("@lucid-evolution/utils is required for WalletMode.CardanoLocal. Install it as a peer dependency.");
|
|
19991
|
+
});
|
|
19992
|
+
const seedPhrase = args.seedPhrase ?? utilsMod.generateSeedPhrase();
|
|
19993
|
+
let provider = args.provider;
|
|
19994
|
+
if (provider == null) {
|
|
19995
|
+
const providerMod = await import("@lucid-evolution/provider").catch(() => {
|
|
19996
|
+
throw new Error("@lucid-evolution/provider is required when no provider is supplied to CardanoLocal.");
|
|
19997
|
+
});
|
|
19998
|
+
provider = new providerMod.Emulator([]);
|
|
19999
|
+
}
|
|
20000
|
+
const lucid = await lucidMod.Lucid(provider, args.network);
|
|
20001
|
+
lucid.selectWallet.fromSeed(seedPhrase);
|
|
20002
|
+
const bech32Address = await lucid.wallet().address();
|
|
20003
|
+
const hexAddress = await addressToHex(lucid, bech32Address);
|
|
20004
|
+
const api = {
|
|
20005
|
+
signData: async (address, payloadHex) => {
|
|
20006
|
+
return await lucid.wallet().signMessage(address, payloadHex);
|
|
20007
|
+
},
|
|
20008
|
+
getUsedAddresses: async () => [hexAddress],
|
|
20009
|
+
lucid,
|
|
20010
|
+
seedPhrase
|
|
20011
|
+
};
|
|
20012
|
+
const conn = {
|
|
20013
|
+
api,
|
|
20014
|
+
metadata: {
|
|
20015
|
+
name: "cardano-local",
|
|
20016
|
+
displayName: "Cardano (local seed)"
|
|
20017
|
+
}
|
|
20018
|
+
};
|
|
20019
|
+
this.provider = new CardanoLocalProvider(conn, {
|
|
20020
|
+
bech32: bech32Address,
|
|
20021
|
+
hex: hexAddress
|
|
20022
|
+
});
|
|
20023
|
+
return this.provider;
|
|
20024
|
+
};
|
|
20025
|
+
getProvider = () => {
|
|
20026
|
+
return this.provider;
|
|
20027
|
+
};
|
|
20028
|
+
getOrThrowProvider = () => {
|
|
20029
|
+
if (this.provider == null) {
|
|
20030
|
+
throw new Error("CardanoLocalConnector not initialized yet");
|
|
20031
|
+
}
|
|
20032
|
+
return this.provider;
|
|
20033
|
+
};
|
|
20034
|
+
isConnected = () => {
|
|
20035
|
+
return this.provider != null;
|
|
20036
|
+
};
|
|
20037
|
+
}
|
|
20038
|
+
|
|
20039
|
+
class CardanoLocalProvider {
|
|
20040
|
+
conn;
|
|
20041
|
+
address;
|
|
20042
|
+
constructor(conn, address) {
|
|
20043
|
+
this.conn = conn;
|
|
20044
|
+
this.address = address;
|
|
20045
|
+
}
|
|
20046
|
+
getConnection = () => {
|
|
20047
|
+
return this.conn;
|
|
20048
|
+
};
|
|
20049
|
+
getAddress = () => {
|
|
20050
|
+
return {
|
|
20051
|
+
type: 1 /* CARDANO */,
|
|
20052
|
+
address: this.address.bech32
|
|
20053
|
+
};
|
|
20054
|
+
};
|
|
20055
|
+
signMessage = async (message) => {
|
|
20056
|
+
const hexMessage = utf8ToHex5(message).slice(2);
|
|
20057
|
+
const { signature, key } = await this.conn.api.signData(this.address.bech32, hexMessage);
|
|
20058
|
+
return `${signature}+${key}`;
|
|
20059
|
+
};
|
|
20060
|
+
}
|
|
20061
|
+
async function addressToHex(lucid, bech32Address) {
|
|
20062
|
+
const utilsMod = await import("@lucid-evolution/utils");
|
|
20063
|
+
const details = utilsMod.getAddressDetails(bech32Address);
|
|
20064
|
+
return details.address.hex;
|
|
20065
|
+
}
|
|
20066
|
+
|
|
20067
|
+
// ../effectstream-sdk/wallets/src/polkadot/polkadot.ts
|
|
20068
|
+
import { utf8ToHex as utf8ToHex6 } from "web3-utils";
|
|
19829
20069
|
class PolkadotConnector {
|
|
19830
20070
|
provider;
|
|
19831
20071
|
static INSTANCE = undefined;
|
|
@@ -19936,7 +20176,7 @@ class PolkadotProvider {
|
|
|
19936
20176
|
if (this.conn.api.signer.signRaw == null) {
|
|
19937
20177
|
throw new Error(`[polkadot] extension ${this.conn.metadata.name} does not support signRaw`);
|
|
19938
20178
|
}
|
|
19939
|
-
const hexMessage =
|
|
20179
|
+
const hexMessage = utf8ToHex6(message);
|
|
19940
20180
|
const { signature } = await this.conn.api.signer.signRaw({
|
|
19941
20181
|
address: this.getAddress().address,
|
|
19942
20182
|
data: hexMessage,
|
|
@@ -20067,7 +20307,7 @@ class MinaProvider {
|
|
|
20067
20307
|
|
|
20068
20308
|
// ../effectstream-sdk/wallets/src/avail/avail.ts
|
|
20069
20309
|
init_buffer();
|
|
20070
|
-
import { utf8ToHex as
|
|
20310
|
+
import { utf8ToHex as utf8ToHex7 } from "web3-utils";
|
|
20071
20311
|
import { u8aToHex as u8aToHex2 } from "@polkadot/util";
|
|
20072
20312
|
|
|
20073
20313
|
class AvailConnector {
|
|
@@ -20126,7 +20366,7 @@ class AvailJsProvider {
|
|
|
20126
20366
|
};
|
|
20127
20367
|
};
|
|
20128
20368
|
signMessage = async (message) => {
|
|
20129
|
-
const hexMessage =
|
|
20369
|
+
const hexMessage = utf8ToHex7(message);
|
|
20130
20370
|
const buffer = Buffer2.from(hexMessage.slice(2), "hex");
|
|
20131
20371
|
const signature = this.conn.api.keyring.getPairs()[0].sign(buffer);
|
|
20132
20372
|
return u8aToHex2(signature);
|
|
@@ -20230,7 +20470,7 @@ class MidnightProvider {
|
|
|
20230
20470
|
this.address = address;
|
|
20231
20471
|
}
|
|
20232
20472
|
static init = async (conn) => {
|
|
20233
|
-
const hexAddress = await MidnightProvider.fetchAddress(conn);
|
|
20473
|
+
const hexAddress = await MidnightProvider.fetchAddress(conn, { type: "unshielded" });
|
|
20234
20474
|
return new MidnightProvider(conn, hexAddress);
|
|
20235
20475
|
};
|
|
20236
20476
|
getConnection() {
|
|
@@ -20241,7 +20481,7 @@ class MidnightProvider {
|
|
|
20241
20481
|
encoding: "text",
|
|
20242
20482
|
keyType
|
|
20243
20483
|
});
|
|
20244
|
-
return signature.signature
|
|
20484
|
+
return `${signature.signature}|${signature.verifyingKey}`;
|
|
20245
20485
|
};
|
|
20246
20486
|
getAddress() {
|
|
20247
20487
|
return {
|
|
@@ -20249,12 +20489,31 @@ class MidnightProvider {
|
|
|
20249
20489
|
address: this.address
|
|
20250
20490
|
};
|
|
20251
20491
|
}
|
|
20252
|
-
static fetchAddress = async (conn) => {
|
|
20253
|
-
const
|
|
20254
|
-
|
|
20255
|
-
|
|
20492
|
+
static fetchAddress = async (conn, options = {}) => {
|
|
20493
|
+
const type = options.type ?? "shielded";
|
|
20494
|
+
switch (type) {
|
|
20495
|
+
case "shielded": {
|
|
20496
|
+
const res = await conn.api.getShieldedAddresses();
|
|
20497
|
+
if (!res?.shieldedAddress) {
|
|
20498
|
+
throw new Error("Midnight wallet did not return a shielded address");
|
|
20499
|
+
}
|
|
20500
|
+
return res.shieldedAddress;
|
|
20501
|
+
}
|
|
20502
|
+
case "unshielded": {
|
|
20503
|
+
const res = await conn.api.getUnshieldedAddress();
|
|
20504
|
+
if (!res?.unshieldedAddress) {
|
|
20505
|
+
throw new Error("Midnight wallet did not return an unshielded address");
|
|
20506
|
+
}
|
|
20507
|
+
return res.unshieldedAddress;
|
|
20508
|
+
}
|
|
20509
|
+
case "dust": {
|
|
20510
|
+
const res = await conn.api.getDustAddress();
|
|
20511
|
+
if (!res?.dustAddress) {
|
|
20512
|
+
throw new Error("Midnight wallet did not return a dust address");
|
|
20513
|
+
}
|
|
20514
|
+
return res.dustAddress;
|
|
20515
|
+
}
|
|
20256
20516
|
}
|
|
20257
|
-
return addresses.shieldedAddress;
|
|
20258
20517
|
};
|
|
20259
20518
|
}
|
|
20260
20519
|
var isInitialApi = (api) => {
|
|
@@ -20268,37 +20527,210 @@ var connectWithNetwork = async (api, networkId) => {
|
|
|
20268
20527
|
return await connect(networkId);
|
|
20269
20528
|
};
|
|
20270
20529
|
|
|
20530
|
+
// ../effectstream-sdk/wallets/src/midnight/local.ts
|
|
20531
|
+
init_buffer();
|
|
20532
|
+
class MidnightLocalConnector {
|
|
20533
|
+
provider;
|
|
20534
|
+
static INSTANCE = undefined;
|
|
20535
|
+
static instance() {
|
|
20536
|
+
if (MidnightLocalConnector.INSTANCE == null) {
|
|
20537
|
+
MidnightLocalConnector.INSTANCE = new MidnightLocalConnector;
|
|
20538
|
+
}
|
|
20539
|
+
return MidnightLocalConnector.INSTANCE;
|
|
20540
|
+
}
|
|
20541
|
+
connectFromSeed = async (args) => {
|
|
20542
|
+
if (args.networkUrls != null) {
|
|
20543
|
+
return await this.connectWithFacade(args, args.networkUrls);
|
|
20544
|
+
}
|
|
20545
|
+
return await this.connectSigningOnly(args);
|
|
20546
|
+
};
|
|
20547
|
+
connectSigningOnly = async (args) => {
|
|
20548
|
+
const { hdMod, keystoreMod } = await loadKeystoreDeps();
|
|
20549
|
+
const seed = args.seed ?? generateRandomHexSeed(32);
|
|
20550
|
+
const unshieldedSeed = deriveUnshieldedSeed(hdMod, seed, hdMod.Roles.NightExternal);
|
|
20551
|
+
const unshieldedKeystore = keystoreMod.createKeystore(unshieldedSeed, args.networkId);
|
|
20552
|
+
const unshieldedAddress = unshieldedKeystore.getBech32Address().asString();
|
|
20553
|
+
const verifyingKey = String(unshieldedKeystore.getPublicKey());
|
|
20554
|
+
const api = {
|
|
20555
|
+
signData: async (data, options) => {
|
|
20556
|
+
const bytes = options.encoding === "hex" ? Buffer2.from(data, "hex") : Buffer2.from(data, "utf-8");
|
|
20557
|
+
const signature = unshieldedKeystore.signData(bytes);
|
|
20558
|
+
return {
|
|
20559
|
+
data,
|
|
20560
|
+
signature: String(signature),
|
|
20561
|
+
verifyingKey
|
|
20562
|
+
};
|
|
20563
|
+
},
|
|
20564
|
+
getShieldedAddresses: async () => {
|
|
20565
|
+
throw new Error("MidnightLocal signing-only mode does not expose a shielded address. Pass `networkUrls` to connectFromSeed to build the full WalletFacade.");
|
|
20566
|
+
},
|
|
20567
|
+
seed,
|
|
20568
|
+
verifyingKey,
|
|
20569
|
+
unshieldedAddress
|
|
20570
|
+
};
|
|
20571
|
+
const conn = {
|
|
20572
|
+
api,
|
|
20573
|
+
metadata: {
|
|
20574
|
+
name: "midnight-local",
|
|
20575
|
+
displayName: "Midnight (local seed)"
|
|
20576
|
+
}
|
|
20577
|
+
};
|
|
20578
|
+
this.provider = new MidnightLocalProvider(conn, unshieldedAddress, unshieldedKeystore);
|
|
20579
|
+
return this.provider;
|
|
20580
|
+
};
|
|
20581
|
+
connectWithFacade = async (args, networkUrls) => {
|
|
20582
|
+
const contractsMod = await import("@effectstream/midnight-contracts/wallet-info").catch(() => {
|
|
20583
|
+
throw new Error("@effectstream/midnight-contracts is required when `networkUrls` is passed to MidnightLocal.connectFromSeed. Install it as a peer dependency.");
|
|
20584
|
+
});
|
|
20585
|
+
const { hdMod, keystoreMod } = await loadKeystoreDeps();
|
|
20586
|
+
const seed = args.seed ?? generateRandomHexSeed(32);
|
|
20587
|
+
const unshieldedSeed = deriveUnshieldedSeed(hdMod, seed, hdMod.Roles.NightExternal);
|
|
20588
|
+
const unshieldedKeystore = keystoreMod.createKeystore(unshieldedSeed, args.networkId);
|
|
20589
|
+
const verifyingKey = String(unshieldedKeystore.getPublicKey());
|
|
20590
|
+
const fullNetworkUrls = {
|
|
20591
|
+
indexer: networkUrls.indexer,
|
|
20592
|
+
indexerWS: networkUrls.indexerWS,
|
|
20593
|
+
node: networkUrls.node,
|
|
20594
|
+
proofServer: networkUrls.proofServer,
|
|
20595
|
+
id: networkUrls.id ?? args.networkId
|
|
20596
|
+
};
|
|
20597
|
+
const walletResult = await contractsMod.buildWalletFacade(fullNetworkUrls, seed, args.networkId, args.syncMode ?? "all");
|
|
20598
|
+
const initialShielded = await contractsMod.getInitialShieldedState(walletResult.wallet.shielded);
|
|
20599
|
+
const shieldedAddress = initialShielded.address.coinPublicKeyString();
|
|
20600
|
+
const api = {
|
|
20601
|
+
signData: async (data, options) => {
|
|
20602
|
+
const bytes = options.encoding === "hex" ? Buffer2.from(data, "hex") : Buffer2.from(data, "utf-8");
|
|
20603
|
+
const signature = unshieldedKeystore.signData(bytes);
|
|
20604
|
+
return {
|
|
20605
|
+
data,
|
|
20606
|
+
signature: String(signature),
|
|
20607
|
+
verifyingKey
|
|
20608
|
+
};
|
|
20609
|
+
},
|
|
20610
|
+
getShieldedAddresses: async () => ({ shieldedAddress }),
|
|
20611
|
+
seed,
|
|
20612
|
+
verifyingKey,
|
|
20613
|
+
unshieldedAddress: walletResult.unshieldedAddress,
|
|
20614
|
+
walletFacade: walletResult.wallet,
|
|
20615
|
+
dustAddress: walletResult.dustAddress,
|
|
20616
|
+
shieldedAddress,
|
|
20617
|
+
walletResult
|
|
20618
|
+
};
|
|
20619
|
+
const conn = {
|
|
20620
|
+
api,
|
|
20621
|
+
metadata: {
|
|
20622
|
+
name: "midnight-local",
|
|
20623
|
+
displayName: "Midnight (local seed, facade)"
|
|
20624
|
+
}
|
|
20625
|
+
};
|
|
20626
|
+
this.provider = new MidnightLocalProvider(conn, walletResult.unshieldedAddress, unshieldedKeystore);
|
|
20627
|
+
return this.provider;
|
|
20628
|
+
};
|
|
20629
|
+
getProvider = () => {
|
|
20630
|
+
return this.provider;
|
|
20631
|
+
};
|
|
20632
|
+
getOrThrowProvider = () => {
|
|
20633
|
+
if (this.provider == null) {
|
|
20634
|
+
throw new Error("MidnightLocalConnector not initialized yet");
|
|
20635
|
+
}
|
|
20636
|
+
return this.provider;
|
|
20637
|
+
};
|
|
20638
|
+
isConnected = () => {
|
|
20639
|
+
return this.provider != null;
|
|
20640
|
+
};
|
|
20641
|
+
}
|
|
20642
|
+
|
|
20643
|
+
class MidnightLocalProvider {
|
|
20644
|
+
conn;
|
|
20645
|
+
address;
|
|
20646
|
+
unshieldedKeystore;
|
|
20647
|
+
constructor(conn, address, unshieldedKeystore) {
|
|
20648
|
+
this.conn = conn;
|
|
20649
|
+
this.address = address;
|
|
20650
|
+
this.unshieldedKeystore = unshieldedKeystore;
|
|
20651
|
+
}
|
|
20652
|
+
getConnection = () => {
|
|
20653
|
+
return this.conn;
|
|
20654
|
+
};
|
|
20655
|
+
getAddress = () => {
|
|
20656
|
+
return {
|
|
20657
|
+
type: 5 /* MIDNIGHT */,
|
|
20658
|
+
address: this.address
|
|
20659
|
+
};
|
|
20660
|
+
};
|
|
20661
|
+
signMessage = async (message) => {
|
|
20662
|
+
const signed = await this.conn.api.signData(message, { encoding: "text", keyType: "unshielded" });
|
|
20663
|
+
return `${signed.signature}|${signed.verifyingKey}`;
|
|
20664
|
+
};
|
|
20665
|
+
getUnshieldedKeystore = () => this.unshieldedKeystore;
|
|
20666
|
+
}
|
|
20667
|
+
async function loadKeystoreDeps() {
|
|
20668
|
+
const hdMod = await import("@midnight-ntwrk/wallet-sdk-hd").catch(() => {
|
|
20669
|
+
throw new Error("@midnight-ntwrk/wallet-sdk-hd is required for WalletMode.MidnightLocal.");
|
|
20670
|
+
});
|
|
20671
|
+
const keystoreMod = await import("@midnight-ntwrk/wallet-sdk-unshielded-wallet").catch(() => {
|
|
20672
|
+
throw new Error("@midnight-ntwrk/wallet-sdk-unshielded-wallet is required for WalletMode.MidnightLocal.");
|
|
20673
|
+
});
|
|
20674
|
+
return { hdMod, keystoreMod };
|
|
20675
|
+
}
|
|
20676
|
+
function deriveUnshieldedSeed(hdMod, seedHex, role) {
|
|
20677
|
+
const seedBuffer = Buffer2.from(seedHex, "hex");
|
|
20678
|
+
const hdResult = hdMod.HDWallet.fromSeed(seedBuffer);
|
|
20679
|
+
if (hdResult.type !== "seedOk") {
|
|
20680
|
+
throw new Error(`HDWallet.fromSeed failed: ${hdResult.type}`);
|
|
20681
|
+
}
|
|
20682
|
+
const derivation = hdResult.hdWallet.selectAccount(0).selectRole(role).deriveKeyAt(0);
|
|
20683
|
+
if (derivation.type !== "keyDerived") {
|
|
20684
|
+
throw new Error(`HDWallet.deriveKeyAt failed: ${derivation.type}`);
|
|
20685
|
+
}
|
|
20686
|
+
return Buffer2.from(derivation.key);
|
|
20687
|
+
}
|
|
20688
|
+
function generateRandomHexSeed(byteLength2) {
|
|
20689
|
+
const bytes = new Uint8Array(byteLength2);
|
|
20690
|
+
crypto.getRandomValues(bytes);
|
|
20691
|
+
return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
20692
|
+
}
|
|
20693
|
+
|
|
20271
20694
|
// ../effectstream-sdk/wallets/src/utils.ts
|
|
20272
20695
|
var WalletMode;
|
|
20273
20696
|
((WalletMode2) => {
|
|
20274
20697
|
WalletMode2[WalletMode2["EvmInjected"] = 0] = "EvmInjected";
|
|
20275
20698
|
WalletMode2[WalletMode2["EvmEthers"] = 1] = "EvmEthers";
|
|
20276
|
-
WalletMode2[WalletMode2["
|
|
20277
|
-
WalletMode2[WalletMode2["
|
|
20278
|
-
WalletMode2[WalletMode2["
|
|
20279
|
-
WalletMode2[WalletMode2["
|
|
20280
|
-
WalletMode2[WalletMode2["
|
|
20281
|
-
WalletMode2[WalletMode2["
|
|
20699
|
+
WalletMode2[WalletMode2["EvmViem"] = 2] = "EvmViem";
|
|
20700
|
+
WalletMode2[WalletMode2["Midnight"] = 3] = "Midnight";
|
|
20701
|
+
WalletMode2[WalletMode2["MidnightLocal"] = 4] = "MidnightLocal";
|
|
20702
|
+
WalletMode2[WalletMode2["Cardano"] = 5] = "Cardano";
|
|
20703
|
+
WalletMode2[WalletMode2["CardanoLocal"] = 6] = "CardanoLocal";
|
|
20704
|
+
WalletMode2[WalletMode2["Polkadot"] = 7] = "Polkadot";
|
|
20705
|
+
WalletMode2[WalletMode2["Algorand"] = 8] = "Algorand";
|
|
20706
|
+
WalletMode2[WalletMode2["Mina"] = 9] = "Mina";
|
|
20707
|
+
WalletMode2[WalletMode2["AvailJs"] = 10] = "AvailJs";
|
|
20282
20708
|
})(WalletMode ||= {});
|
|
20283
20709
|
var WalletNameMap = {
|
|
20284
20710
|
[0 /* EvmInjected */]: "EVM",
|
|
20285
20711
|
[1 /* EvmEthers */]: "EVM",
|
|
20286
|
-
[2 /*
|
|
20287
|
-
[3 /*
|
|
20288
|
-
[4 /*
|
|
20289
|
-
[5 /*
|
|
20290
|
-
[6 /*
|
|
20291
|
-
[7 /*
|
|
20712
|
+
[2 /* EvmViem */]: "EVM",
|
|
20713
|
+
[3 /* Midnight */]: "Midnight",
|
|
20714
|
+
[4 /* MidnightLocal */]: "Midnight",
|
|
20715
|
+
[5 /* Cardano */]: "Cardano",
|
|
20716
|
+
[6 /* CardanoLocal */]: "Cardano",
|
|
20717
|
+
[7 /* Polkadot */]: "Polkadot",
|
|
20718
|
+
[8 /* Algorand */]: "Algorand",
|
|
20719
|
+
[9 /* Mina */]: "Mina",
|
|
20720
|
+
[10 /* AvailJs */]: "Avail"
|
|
20292
20721
|
};
|
|
20293
20722
|
var WalletModeMap = {
|
|
20294
20723
|
[0 /* EvmInjected */]: EvmInjectedConnector.instance(),
|
|
20295
20724
|
[1 /* EvmEthers */]: EthersConnector.instance(),
|
|
20296
|
-
[2 /*
|
|
20297
|
-
[3 /*
|
|
20298
|
-
[4 /*
|
|
20299
|
-
[5 /*
|
|
20300
|
-
[6 /*
|
|
20301
|
-
[7 /*
|
|
20725
|
+
[2 /* EvmViem */]: ViemConnector.instance(),
|
|
20726
|
+
[3 /* Midnight */]: MidnightConnector.instance(),
|
|
20727
|
+
[4 /* MidnightLocal */]: MidnightLocalConnector.instance(),
|
|
20728
|
+
[5 /* Cardano */]: CardanoConnector.instance(),
|
|
20729
|
+
[6 /* CardanoLocal */]: CardanoLocalConnector.instance(),
|
|
20730
|
+
[7 /* Polkadot */]: PolkadotConnector.instance(),
|
|
20731
|
+
[8 /* Algorand */]: AlgorandConnector.instance(),
|
|
20732
|
+
[9 /* Mina */]: MinaConnector.instance(),
|
|
20733
|
+
[10 /* AvailJs */]: AvailConnector.instance()
|
|
20302
20734
|
};
|
|
20303
20735
|
async function allInjectedWallets(config = {
|
|
20304
20736
|
signatureSupport: true,
|
|
@@ -20308,11 +20740,11 @@ async function allInjectedWallets(config = {
|
|
|
20308
20740
|
const transactionSupport = config.transactionSupport;
|
|
20309
20741
|
const wallets = {
|
|
20310
20742
|
[0 /* EvmInjected */]: EvmInjectedConnector.getWalletOptions(),
|
|
20311
|
-
[
|
|
20312
|
-
[
|
|
20313
|
-
[
|
|
20314
|
-
[
|
|
20315
|
-
[
|
|
20743
|
+
[5 /* Cardano */]: CardanoConnector.getWalletOptions(),
|
|
20744
|
+
[7 /* Polkadot */]: await PolkadotConnector.getWalletOptions(),
|
|
20745
|
+
[9 /* Mina */]: MinaConnector.getWalletOptions(),
|
|
20746
|
+
[8 /* Algorand */]: signatureSupport ? [] : AlgorandConnector.getWalletOptions(),
|
|
20747
|
+
[3 /* Midnight */]: MidnightConnector.getWalletOptions()
|
|
20316
20748
|
};
|
|
20317
20749
|
return wallets;
|
|
20318
20750
|
}
|
|
@@ -20334,6 +20766,28 @@ async function connectInjectedWallet(typeName, preference, connector) {
|
|
|
20334
20766
|
}
|
|
20335
20767
|
throw new Error("Invalid preference");
|
|
20336
20768
|
}
|
|
20769
|
+
// ../effectstream-sdk/wallets/src/helpers/format-error.ts
|
|
20770
|
+
function formatError2(err) {
|
|
20771
|
+
if (err == null)
|
|
20772
|
+
return "";
|
|
20773
|
+
if (err instanceof Error)
|
|
20774
|
+
return err.message;
|
|
20775
|
+
if (typeof err === "string")
|
|
20776
|
+
return err;
|
|
20777
|
+
if (typeof err === "object") {
|
|
20778
|
+
const o = err;
|
|
20779
|
+
if (typeof o.info === "string") {
|
|
20780
|
+
return o.code != null ? `${o.info} (code ${o.code})` : o.info;
|
|
20781
|
+
}
|
|
20782
|
+
if (typeof o.message === "string")
|
|
20783
|
+
return o.message;
|
|
20784
|
+
try {
|
|
20785
|
+
return JSON.stringify(err);
|
|
20786
|
+
} catch {}
|
|
20787
|
+
}
|
|
20788
|
+
return String(err);
|
|
20789
|
+
}
|
|
20790
|
+
|
|
20337
20791
|
// ../effectstream-sdk/wallets/src/wallet-modes.ts
|
|
20338
20792
|
function getWalletName(info) {
|
|
20339
20793
|
if (info.preference == null)
|
|
@@ -20354,7 +20808,7 @@ async function connectInjected(typeName, loginInfo, connector) {
|
|
|
20354
20808
|
console.log(`${typeName} Error while logging into wallet ${getWalletName(loginInfo) ?? "simple"}`);
|
|
20355
20809
|
return {
|
|
20356
20810
|
success: false,
|
|
20357
|
-
errorMessage:
|
|
20811
|
+
errorMessage: formatError2(err)
|
|
20358
20812
|
};
|
|
20359
20813
|
}
|
|
20360
20814
|
}
|
|
@@ -20362,20 +20816,23 @@ function getAddressType(mode) {
|
|
|
20362
20816
|
switch (mode) {
|
|
20363
20817
|
case 0 /* EvmInjected */:
|
|
20364
20818
|
case 1 /* EvmEthers */:
|
|
20819
|
+
case 2 /* EvmViem */:
|
|
20365
20820
|
return 0 /* EVM */;
|
|
20366
|
-
case
|
|
20821
|
+
case 5 /* Cardano */:
|
|
20822
|
+
case 6 /* CardanoLocal */:
|
|
20367
20823
|
return 1 /* CARDANO */;
|
|
20368
|
-
case
|
|
20824
|
+
case 7 /* Polkadot */:
|
|
20369
20825
|
return 7 /* POLKADOT */;
|
|
20370
|
-
case
|
|
20826
|
+
case 8 /* Algorand */:
|
|
20371
20827
|
return 3 /* ALGORAND */;
|
|
20372
|
-
case
|
|
20828
|
+
case 9 /* Mina */:
|
|
20373
20829
|
return 4 /* MINA */;
|
|
20374
|
-
case
|
|
20830
|
+
case 3 /* Midnight */:
|
|
20831
|
+
case 4 /* MidnightLocal */:
|
|
20375
20832
|
return 5 /* MIDNIGHT */;
|
|
20376
|
-
case
|
|
20833
|
+
case 10 /* AvailJs */:
|
|
20377
20834
|
return 6 /* AVAIL */;
|
|
20378
|
-
case
|
|
20835
|
+
case 7 /* Polkadot */:
|
|
20379
20836
|
return 7 /* POLKADOT */;
|
|
20380
20837
|
default:
|
|
20381
20838
|
throw new Error(`Unsupported wallet mode: ${mode}`);
|
|
@@ -20406,6 +20863,28 @@ async function cardanoLoginWrapper(loginInfo) {
|
|
|
20406
20863
|
};
|
|
20407
20864
|
}
|
|
20408
20865
|
|
|
20866
|
+
// ../effectstream-sdk/wallets/src/cardano/wrapper-local.ts
|
|
20867
|
+
async function cardanoLocalLoginWrapper(loginInfo) {
|
|
20868
|
+
try {
|
|
20869
|
+
console.log("cardanoLocalLoginWrapper: building Lucid wallet from seed");
|
|
20870
|
+
const provider = await CardanoLocalConnector.instance().connectFromSeed({
|
|
20871
|
+
seedPhrase: loginInfo.seedPhrase,
|
|
20872
|
+
network: loginInfo.network,
|
|
20873
|
+
provider: loginInfo.provider
|
|
20874
|
+
});
|
|
20875
|
+
return {
|
|
20876
|
+
success: true,
|
|
20877
|
+
result: provider
|
|
20878
|
+
};
|
|
20879
|
+
} catch (err) {
|
|
20880
|
+
console.log("cardanoLocalLoginWrapper: error while building local Cardano wallet");
|
|
20881
|
+
return {
|
|
20882
|
+
success: false,
|
|
20883
|
+
errorMessage: formatError2(err)
|
|
20884
|
+
};
|
|
20885
|
+
}
|
|
20886
|
+
}
|
|
20887
|
+
|
|
20409
20888
|
// ../effectstream-sdk/wallets/src/evm/wrapper-injected.ts
|
|
20410
20889
|
async function switchChain(chain) {
|
|
20411
20890
|
if (!chain) {
|
|
@@ -20471,7 +20950,7 @@ async function connectWallet(loginInfo) {
|
|
|
20471
20950
|
console.log(`ethersLoginWrapper: Error while logging into wallet name}`);
|
|
20472
20951
|
return {
|
|
20473
20952
|
success: false,
|
|
20474
|
-
errorMessage:
|
|
20953
|
+
errorMessage: formatError2(err)
|
|
20475
20954
|
};
|
|
20476
20955
|
}
|
|
20477
20956
|
}
|
|
@@ -20487,6 +20966,28 @@ async function ethersLoginWrapper(loginInfo) {
|
|
|
20487
20966
|
};
|
|
20488
20967
|
}
|
|
20489
20968
|
|
|
20969
|
+
// ../effectstream-sdk/wallets/src/evm/wrapper-viem.ts
|
|
20970
|
+
async function viemLoginWrapper(loginInfo) {
|
|
20971
|
+
try {
|
|
20972
|
+
console.log("viemLoginWrapper: building viem WalletClient from private key");
|
|
20973
|
+
const provider = await ViemConnector.instance().connectFromPrivateKey({
|
|
20974
|
+
privateKey: loginInfo.privateKey,
|
|
20975
|
+
rpcUrl: loginInfo.rpcUrl,
|
|
20976
|
+
chain: loginInfo.chain
|
|
20977
|
+
});
|
|
20978
|
+
return {
|
|
20979
|
+
success: true,
|
|
20980
|
+
result: provider
|
|
20981
|
+
};
|
|
20982
|
+
} catch (err) {
|
|
20983
|
+
console.log("viemLoginWrapper: error while building local viem wallet");
|
|
20984
|
+
return {
|
|
20985
|
+
success: false,
|
|
20986
|
+
errorMessage: formatError2(err)
|
|
20987
|
+
};
|
|
20988
|
+
}
|
|
20989
|
+
}
|
|
20990
|
+
|
|
20490
20991
|
// ../effectstream-sdk/wallets/src/mina/wrapper.ts
|
|
20491
20992
|
async function minaLoginWrapper(loginInfo) {
|
|
20492
20993
|
const loginResult = await connectInjected("minaLoginWrapper", loginInfo, MinaConnector.instance());
|
|
@@ -20518,7 +21019,7 @@ async function connectWallet2(loginInfo) {
|
|
|
20518
21019
|
console.log(`availJsLoginWrapper: Error while logging into wallet name}`);
|
|
20519
21020
|
return {
|
|
20520
21021
|
success: false,
|
|
20521
|
-
errorMessage:
|
|
21022
|
+
errorMessage: formatError2(err)
|
|
20522
21023
|
};
|
|
20523
21024
|
}
|
|
20524
21025
|
}
|
|
@@ -20541,6 +21042,27 @@ async function midnightLoginWrapper(loginInfo) {
|
|
|
20541
21042
|
};
|
|
20542
21043
|
}
|
|
20543
21044
|
|
|
21045
|
+
// ../effectstream-sdk/wallets/src/midnight/wrapper-local.ts
|
|
21046
|
+
async function midnightLocalLoginWrapper(loginInfo) {
|
|
21047
|
+
try {
|
|
21048
|
+
console.log("midnightLocalLoginWrapper: deriving unshielded keystore from seed");
|
|
21049
|
+
const provider = await MidnightLocalConnector.instance().connectFromSeed({
|
|
21050
|
+
seed: loginInfo.seed,
|
|
21051
|
+
networkId: loginInfo.networkId
|
|
21052
|
+
});
|
|
21053
|
+
return {
|
|
21054
|
+
success: true,
|
|
21055
|
+
result: provider
|
|
21056
|
+
};
|
|
21057
|
+
} catch (err) {
|
|
21058
|
+
console.log("midnightLocalLoginWrapper: error building local Midnight wallet");
|
|
21059
|
+
return {
|
|
21060
|
+
success: false,
|
|
21061
|
+
errorMessage: formatError2(err)
|
|
21062
|
+
};
|
|
21063
|
+
}
|
|
21064
|
+
}
|
|
21065
|
+
|
|
20544
21066
|
// ../effectstream-sdk/wallets/src/wallets.ts
|
|
20545
21067
|
async function walletLogin(loginInfo) {
|
|
20546
21068
|
const provider = await login(loginInfo);
|
|
@@ -20563,31 +21085,79 @@ async function login(loginInfo) {
|
|
|
20563
21085
|
case 1 /* EvmEthers */: {
|
|
20564
21086
|
return await ethersLoginWrapper(loginInfo);
|
|
20565
21087
|
}
|
|
20566
|
-
case
|
|
21088
|
+
case 2 /* EvmViem */: {
|
|
21089
|
+
return await viemLoginWrapper(loginInfo);
|
|
21090
|
+
}
|
|
21091
|
+
case 5 /* Cardano */: {
|
|
20567
21092
|
return await cardanoLoginWrapper(loginInfo);
|
|
20568
21093
|
}
|
|
20569
|
-
case
|
|
21094
|
+
case 6 /* CardanoLocal */: {
|
|
21095
|
+
return await cardanoLocalLoginWrapper(loginInfo);
|
|
21096
|
+
}
|
|
21097
|
+
case 7 /* Polkadot */: {
|
|
20570
21098
|
return await polkadotLoginWrapper(loginInfo);
|
|
20571
21099
|
}
|
|
20572
|
-
case
|
|
21100
|
+
case 8 /* Algorand */: {
|
|
20573
21101
|
return await algorandLoginWrapper(loginInfo);
|
|
20574
21102
|
}
|
|
20575
|
-
case
|
|
21103
|
+
case 9 /* Mina */: {
|
|
20576
21104
|
return await minaLoginWrapper(loginInfo);
|
|
20577
21105
|
}
|
|
20578
|
-
case
|
|
21106
|
+
case 10 /* AvailJs */: {
|
|
20579
21107
|
return await availJsLoginWrapper(loginInfo);
|
|
20580
21108
|
}
|
|
20581
|
-
case
|
|
21109
|
+
case 3 /* Midnight */: {
|
|
20582
21110
|
return await midnightLoginWrapper(loginInfo);
|
|
20583
21111
|
}
|
|
21112
|
+
case 4 /* MidnightLocal */: {
|
|
21113
|
+
return await midnightLocalLoginWrapper(loginInfo);
|
|
21114
|
+
}
|
|
20584
21115
|
default:
|
|
20585
21116
|
throw new Error(`Unsupported wallet mode: ${loginInfo.mode}`);
|
|
20586
21117
|
}
|
|
20587
21118
|
}
|
|
21119
|
+
// ../effectstream-sdk/wallets/src/helpers/pick-mode.ts
|
|
21120
|
+
function pickWalletMode(args) {
|
|
21121
|
+
if (args.preferLocal) {
|
|
21122
|
+
const mode2 = localModeFor(args.chain);
|
|
21123
|
+
return { mode: mode2, ...args.localOptions };
|
|
21124
|
+
}
|
|
21125
|
+
const mode = injectedModeFor(args.chain);
|
|
21126
|
+
return { mode, ...args.injectedOptions };
|
|
21127
|
+
}
|
|
21128
|
+
function localModeFor(chain) {
|
|
21129
|
+
switch (chain) {
|
|
21130
|
+
case "evm":
|
|
21131
|
+
return 2 /* EvmViem */;
|
|
21132
|
+
case "cardano":
|
|
21133
|
+
return 6 /* CardanoLocal */;
|
|
21134
|
+
case "midnight":
|
|
21135
|
+
return 4 /* MidnightLocal */;
|
|
21136
|
+
}
|
|
21137
|
+
}
|
|
21138
|
+
function injectedModeFor(chain) {
|
|
21139
|
+
switch (chain) {
|
|
21140
|
+
case "evm":
|
|
21141
|
+
return 0 /* EvmInjected */;
|
|
21142
|
+
case "cardano":
|
|
21143
|
+
return 5 /* Cardano */;
|
|
21144
|
+
case "midnight":
|
|
21145
|
+
return 3 /* Midnight */;
|
|
21146
|
+
}
|
|
21147
|
+
}
|
|
21148
|
+
// ../effectstream-sdk/wallets/src/helpers/local-icons.ts
|
|
21149
|
+
function encodeSvg(svg) {
|
|
21150
|
+
return `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;
|
|
21151
|
+
}
|
|
21152
|
+
function jsCircle(fill, textFill = "#ffffff") {
|
|
21153
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">` + `<circle cx="16" cy="16" r="16" fill="${fill}"/>` + `<text x="16" y="21" text-anchor="middle" ` + `font-family="Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif" ` + `font-weight="700" font-size="13" fill="${textFill}">JS</text>` + `</svg>`;
|
|
21154
|
+
}
|
|
21155
|
+
var evmViemIcon = encodeSvg(jsCircle("#F97316"));
|
|
21156
|
+
var cardanoLocalIcon = encodeSvg(jsCircle("#0033AD"));
|
|
21157
|
+
var midnightLocalIcon = encodeSvg(jsCircle("#0A0A0A"));
|
|
20588
21158
|
// ../effectstream-sdk/wallets/src/effectstream.ts
|
|
20589
21159
|
import { numberToHex } from "viem";
|
|
20590
|
-
import { utf8ToHex as
|
|
21160
|
+
import { utf8ToHex as utf8ToHex8 } from "web3-utils";
|
|
20591
21161
|
import { Web3 } from "web3";
|
|
20592
21162
|
|
|
20593
21163
|
// ../effectstream-sdk/events/src/types.ts
|
|
@@ -21076,7 +21646,7 @@ async function sendSelfSequencedTransaction(wallet, conciseData, effectstreamCon
|
|
|
21076
21646
|
throw new Error("Effectstream L2 is EVM contract.");
|
|
21077
21647
|
}
|
|
21078
21648
|
const evmProvider = wallet.provider;
|
|
21079
|
-
const hexData =
|
|
21649
|
+
const hexData = utf8ToHex8(JSON.stringify(conciseData));
|
|
21080
21650
|
const effectstreamL2Contract = await effectstreamConfig.getEffectstreamL2Contract();
|
|
21081
21651
|
const txData = effectstreamL2Contract.methods["effectstreamSubmitGameInput"](hexData).encodeABI();
|
|
21082
21652
|
const tx = {
|
|
@@ -21186,7 +21756,12 @@ export {
|
|
|
21186
21756
|
sendTransaction,
|
|
21187
21757
|
sendSelfSequencedTransaction,
|
|
21188
21758
|
sendBatcherTransaction,
|
|
21759
|
+
pickWalletMode,
|
|
21760
|
+
midnightLocalIcon,
|
|
21189
21761
|
getAddressType,
|
|
21762
|
+
formatError2 as formatError,
|
|
21763
|
+
evmViemIcon,
|
|
21764
|
+
cardanoLocalIcon,
|
|
21190
21765
|
allInjectedWallets,
|
|
21191
21766
|
accountPayload_,
|
|
21192
21767
|
accountMessages,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effectstream/frontend-sdk",
|
|
3
|
-
"version": "0.100.
|
|
3
|
+
"version": "0.100.19",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://effectstream.github.io/docs/",
|
|
6
6
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"build": "bun run build.ts"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@effectstream/wallets": "0.100.
|
|
30
|
+
"@effectstream/wallets": "0.100.19"
|
|
31
31
|
},
|
|
32
32
|
"description": "React frontend SDK for EffectStream"
|
|
33
33
|
}
|