@scaffold-stark/stark-burner
Version:
Burner wallet connector for Starknet devnet
193 lines (187 loc) • 10.7 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
BurnerConnector: () => BurnerConnector,
BurnerConnectorError: () => BurnerConnectorError,
BurnerConnectorErrorList: () => BurnerConnectorErrorList,
burnerAccounts: () => burnerAccounts,
burnerWalletId: () => burnerWalletId,
burnerWalletName: () => burnerWalletName
});
module.exports = __toCommonJS(index_exports);
// src/connector.ts
var import_core = require("@starknet-react/core");
var import_starknet = require("starknet");
var import_chains = require("@starknet-react/chains");
// src/devnetAccounts.ts
var burnerAccounts = [
{
accountAddress: "0x64b48806902a367c8598f4f95c305e8c1a1acba5f082d294a43793113115691",
privateKey: "0x71d7bb07b9a64f6f78ac4c816aff4da9",
publicKey: "0x39d9e6ce352ad4530a0ef5d5a18fd3303c3606a7fa6ac5b620020ad681cc33b"
},
{
accountAddress: "0x78662e7352d062084b0010068b99288486c2d8b914f6e2a55ce945f8792c8b1",
privateKey: "0xe1406455b7d66b1690803be066cbe5e",
publicKey: "0x7a1bb2744a7dd29bffd44341dbd78008adb4bc11733601e7eddff322ada9cb"
},
{
accountAddress: "0x49dfb8ce986e21d354ac93ea65e6a11f639c1934ea253e5ff14ca62eca0f38e",
privateKey: "0xa20a02f0ac53692d144b20cb371a60d7",
publicKey: "0xb8fd4ddd415902d96f61b7ad201022d495997c2dff8eb9e0eb86253e30fabc"
},
{
accountAddress: "0x4f348398f859a55a0c80b1446c5fdc37edb3a8478a32f10764659fc241027d3",
privateKey: "0xa641611c17d4d92bd0790074e34beeb7",
publicKey: "0x5e05d2510c6110bde03df9c1c126a1f592207d78cd9e481ac98540d5336d23c"
},
{
accountAddress: "0xd513de92c16aa42418cf7e5b60f8022dbee1b4dfd81bcf03ebee079cfb5cb5",
privateKey: "0x5b4ac23628a5749277bcabbf4726b025",
publicKey: "0x4708e28e2424381659ea6b7dded2b3aff4b99debfcf6080160a9d098ac2214d"
},
{
accountAddress: "0x1e8c6c17efa3a047506c0b1610bd188aa3e3dd6c5d9227549b65428de24de78",
privateKey: "0x836203aceb0e9b0066138c321dda5ae6",
publicKey: "0x776d33371a98abee91ce60ac04321361565c8623cb612ee9357092da2162f51"
},
{
accountAddress: "0x557ba9ef60b52dad611d79b60563901458f2476a5c1002a8b4869fcb6654c7e",
privateKey: "0x15b5e3013d752c909988204714f1ff35",
publicKey: "0x4236bd1a08ee4bc3288081dfaf2b71d9a6e6e573d1b31a62719db73a88bb55"
},
{
accountAddress: "0x3736286f1050d4ba816b4d56d15d80ca74c1752c4e847243f1da726c36e06f",
privateKey: "0xa56597ba3378fa9e6440ea9ae0cf2865",
publicKey: "0x20b6aad24b5741eb49ed1b00ea78e3657e4d74af47e329f6f9fe489517474db"
},
{
accountAddress: "0x4d8bb41636b42d3c69039f3537333581cc19356a0c93904fa3e569498c23ad0",
privateKey: "0xb467066159b295a7667b633d6bdaabac",
publicKey: "0xc6c2f7833f681c8fe001533e99571f6ff8dec59268792a429a14b5b252f1ad"
},
{
accountAddress: "0x4b3f4ba8c00a02b66142a4b1dd41a4dfab4f92650922a3280977b0f03c75ee1",
privateKey: "0x57b2f8431c772e647712ae93cc616638",
publicKey: "0x374f7fcb50bc2d6b8b7a267f919232e3ac68354ce3eafe88d3df323fc1deb23"
}
];
// src/connector.ts
var burnerWalletId = "burner-wallet";
var burnerWalletName = "Burner Wallet";
var burnerWalletIcon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUzIiBoZWlnaHQ9IjM1MiIgdmlld0JveD0iMCAwIDM1MyAzNTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjAuNzE2MzA5IiB5PSIwLjMxNzEzOSIgd2lkdGg9IjM1MS4zOTQiIGhlaWdodD0iMzUxLjM5NCIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzNfMTUxKSIvPgo8Y2lyY2xlIGN4PSIzNC40OTUzIiBjeT0iMzQuNDk1MyIgcj0iMzQuNDk1MyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjA3LjAxOCAyNTQuMTIpIiBmaWxsPSIjRkY2NjBBIi8+CjxwYXRoIGQ9Ik0xNTQuMzE4IDMxNy45NTVDMTcxLjI3MyAzMTAuODkgMTc2LjU4MiAyOTAuNzE1IDE3Ni4xNTcgMjgzLjQ4N0wyMDcuMDE4IDI4OC44NjRDMjA3LjAxOCAzMDMuMzE0IDIwMC4yMTIgMzA5LjQwMiAxOTcuODI0IDMxMi40MzNDMTkzLjQ3NCAzMTcuOTU1IDE3My4zNTEgMzMwLjAzIDE1NC4zMTggMzE3Ljk1NVoiIGZpbGw9InVybCgjcGFpbnQxX3JhZGlhbF8zXzE1MSkiLz4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZF8zXzE1MSkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIyNy4zNzcgMzAyLjI3NkMyMjYuNDI2IDMwNS44OTcgMjMwLjMxNSAzMDkuNDA1IDIzMy4zOTYgMzA3LjI3OUMyNTQuNTM4IDI5Mi42ODQgMjcwLjQ3OSAyNjkuOTQ1IDI3NC44OSAyNDcuNDg5QzI4Mi4yNCAyMTAuMDcxIDI3Mi4yMzUgMTc1LjcyNyAyMzguMDI4IDE0NS45MjVDMjAwLjg3NCAxMTMuNTU2IDE5MS44NDQgODguNDU2MSAxOTAuMTYyIDUwLjg3MThDMTg5Ljc5NyA0Mi43MjE4IDE4MS42MDQgMzcuMjk0NyAxNzQuODI0IDQxLjgzMTdDMTUyLjY2OCA1Ni42NTc0IDEzMi41MTIgODQuNDk5IDEzOC45MTEgMTIwLjc1OEMxNDEuMDA0IDEzMi42MjEgMTQ2Ljc5NCAxNDEuMDE2IDE1MS45NyAxNDguNTIzQzE1OC40OTEgMTU3Ljk3OCAxNjQuMDM5IDE2Ni4wMjMgMTU5Ljk5NyAxNzcuODFDMTU1LjIwMyAxOTEuNzk0IDEzOS4xMzQgMTk5LjE2MiAxMjguNzQ3IDE5Mi40MjlDMTE0LjE3IDE4Mi45ODEgMTEzLjI1MyAxNjYuNjUxIDExNy45NjkgMTQ5LjQ1NkMxMTguOTAyIDE0Ni4wNTUgMTE1LjQ3MSAxNDMuMjA0IDExMi42OCAxNDUuMzU5QzkxLjM2MDQgMTYxLjgyMSA2OS4xNTMyIDE5OS4yNjcgNzcuNjY0NyAyNDcuNDg5Qzg1Ljk3OTIgMjc2LjIxMiA5Ny45Mjc3IDI5Mi41MzcgMTEwLjk3MSAzMDEuNTQxQzExMy43NjMgMzAzLjQ2OCAxMTcuMTU5IDMwMC42MzEgMTE2LjU5NyAyOTcuMjg2QzExNi4wODEgMjk0LjIxMiAxMTUuODEzIDI5MS4wNTQgMTE1LjgxMyAyODcuODMzQzExNS44MTMgMjU2LjUxMyAxNDEuMjAzIDIzMS4xMjMgMTcyLjUyMyAyMzEuMTIzQzIwMy44NDIgMjMxLjEyMyAyMjkuMjMyIDI1Ni41MTMgMjI5LjIzMiAyODcuODMzQzIyOS4yMzIgMjkyLjgyNCAyMjguNTg3IDI5Ny42NjUgMjI3LjM3NyAzMDIuMjc2WiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzNfMTUxKSIvPgo8L2c+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2RfM18xNTEiIHg9IjcyLjExMTIiIHk9IjM2LjQ5NCIgd2lkdGg9IjIwOC43NDIiIGhlaWdodD0iMjc1LjEyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIxLjg0NTA2Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMC40MiAwIDAgMCAwIDAgMCAwIDAgMC43IDAiLz4KPGZlQmxlbmQgbW9kZT0ibXVsdGlwbHkiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9ImVmZmVjdDFfZHJvcFNoYWRvd18zXzE1MSIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd18zXzE1MSIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzNfMTUxIiB4MT0iMTc2LjQxMyIgeTE9IjAuMzE3MTM5IiB4Mj0iMTc2LjQxMyIgeTI9IjM1MS43MTEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRjI3OSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRkQzMzYiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzNfMTUxIiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDIxOC4wNDggMjQ5LjM0Nykgcm90YXRlKDEyNC4wMTgpIHNjYWxlKDg5LjI5NTUgMjY0LjgwOSkiPgo8c3RvcCBvZmZzZXQ9IjAuNjQwODUiIHN0b3AtY29sb3I9IiNGRjY2MEEiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkZCRTE1Ii8+CjwvcmFkaWFsR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8zXzE1MSIgeDE9IjE3Ni40ODIiIHkxPSI0MC4xODQxIiB4Mj0iMTc2LjQ4MiIgeTI9IjMxNy4yNzgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agb2Zmc2V0PSIwLjMzODU0MiIgc3RvcC1jb2xvcj0iI0ZGOEYzRiIvPgo8c3RvcCBvZmZzZXQ9IjAuNjU2MjUiIHN0b3AtY29sb3I9IiNGRjcwMjAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkYzRDAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==";
var BurnerConnector = class extends import_core.InjectedConnector {
constructor() {
super({
options: {
id: burnerWalletId,
name: burnerWalletName,
icon: { dark: burnerWalletIcon, light: burnerWalletIcon }
}
});
this.chain = import_chains.devnet;
this.burnerAccount = burnerAccounts[0];
}
get id() {
return super.id;
}
get name() {
return super.name;
}
async account() {
return Promise.resolve(
new import_starknet.Account(
new import_starknet.RpcProvider({
nodeUrl: this.chain.rpcUrls.public.http[0]
// chainId: starknetChainId(this.chain.id), // TODO : check how this affects wrong network. can we get this from the chain directly ?
}),
this.burnerAccount.accountAddress,
this.burnerAccount.privateKey,
"1",
import_starknet.constants.TRANSACTION_VERSION.V3
)
);
}
available() {
return true;
}
chainId() {
return Promise.resolve(this.chain.id);
}
get icon() {
return {
dark: burnerWalletIcon,
light: burnerWalletIcon
};
}
async ready() {
return Promise.resolve((await this.account()).address !== "");
}
async request(call) {
if (call.params && "calls" in call.params) {
let compiledCalls = call.params.calls;
try {
compiledCalls.forEach((element) => {
element.calldata = import_starknet.CallData.compile(element.calldata);
element.contractAddress = element.contract_address;
element.entrypoint = element.entry_point;
});
return await (await this.account()).execute(compiledCalls);
} catch (e) {
throw e;
}
}
return await super.request(call);
}
async connect() {
return Promise.resolve({
account: (await this.account()).address,
chainId: this.chain.id
});
}
disconnect() {
return Promise.resolve();
}
};
// src/errors.ts
var BurnerConnectorErrorList = {
accountNotFound: "Account not found",
couldNotConnect: "Could not connect to network",
unsupportedBurnerChain: "This network is not supported for burner connector",
chainIdNotResolved: "Could not resolve chainId",
chainNotSupported: "Chain is not supported, check burner wallet config"
};
var BurnerConnectorError = class extends Error {
constructor(errorType, message) {
const msg = `BurnerConnectorError ${errorType}: ${message ?? ""} `;
super(msg);
console.warn(msg);
}
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
BurnerConnector,
BurnerConnectorError,
BurnerConnectorErrorList,
burnerAccounts,
burnerWalletId,
burnerWalletName
});