@medialane/sdk 0.120.0 → 0.121.0

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.
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { keccak_256 } from '@noble/hashes/sha3.js';
3
3
  import { base32, base58 } from '@scure/base';
4
- import { hash, cairo, uint256, RpcProvider, CairoOption, CairoOptionVariant, num, ec, encode, Contract, TypedDataRevision, constants, shortString } from 'starknet';
4
+ import { hash, cairo, uint256, RpcProvider, CairoOption, CairoOptionVariant, num, ec, encode, validateAndParseAddress, Account, typedData, Contract, TypedDataRevision, constants, shortString } from 'starknet';
5
5
  import { extract, expand } from '@noble/hashes/hkdf.js';
6
6
  import { sha256 } from '@noble/hashes/sha2.js';
7
7
 
@@ -12327,6 +12327,431 @@ function signWithPrivateKey(privateKeyHex, msgHash) {
12327
12327
  return [num.toHex(sig.r), num.toHex(sig.s)];
12328
12328
  }
12329
12329
 
12330
- export { ADMIN_HEADERS, ADMIN_SCOPE, MAX_SUPPLY as COIN_MAX_SUPPLY, MIN_SUPPLY as COIN_MIN_SUPPLY, ClubService, CreatorCoinFactoryABI, CreatorCoinService, DropCollectionABI, DropFactoryABI, DropService, ERC1155CollectionService, IPClubCollectionABI, IPClubFactoryABI, IPCollection1155ABI, IPCollection1155FactoryABI, IPCollectionABI, IPGenesisABI, IPMarketplaceABI, IPNftABI, IPSponsorshipABI, IPTicketCollectionABI, IPTicketCollectionFactoryABI, InvalidStarkPrivateKeyError, MAX_HOLDERS_AT_LAUNCH, MAX_TEAM_ALLOCATION_PERCENT, Medialane1155ABI, MedialaneClient, MedialaneError, POPCollectionABI, POPFactoryABI, PopService, SUGGESTED_DEFAULT_PRICE, SponsoredCallRejectedError, SponsorshipService, StarknetVenue, TicketService, VALIDATED_EKUBO_PARAMS, adminRequestDigest, assertTransactionSucceeded, build1155CancellationTypedData, build1155OrderTypedData, buildAddOwnerCall, buildAdminSessionTypedData, buildCancelEscapeCall, buildCancellationTypedData, buildChangeOwnersCall, buildCompleteEscapeOwnerCall, buildCreateCreatorCoinCall, buildDeployAccountParams, buildFeeCall, buildLaunchOnEkuboCalls, buildOrderTypedData, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, buybackQuoteRaw, toRaw as coinToRaw, computeAccountAddress, computeOwnerGuid, confirmIntentBestEffort, createAdminSessionGrant, decodeEscapeAndStatus, decodeGuardiansInfo, deployedCollectionFromReceipt, deriveAesKey, deriveOwnerKeyPair, encodeAdminHeaders, encodeByteArray, executeIntent, executeIntents, executeSponsored, fdvHuman, generateStarkKeyPair, getCounter, getCounter1155, getCreatorCoinGuarantees, getEscape, getEscapeSecurityPeriod, getGuardians, getOrderDetails, getOrderDetails1155, getOwners, getSiwsStorageKey, getStoredSiwsToken, isSiwsTokenValid, mintedTokenIdFromReceipt, normalizeSiwsSignature, ownerAliveTypedData, ownerConstructorCalldata, parseAdminHeaders, parseCreatorCoinCreated, priceToEkuboParams, randomNonce, requestSiwsToken, sealPrivateKey, sessionKeyHashOf, signAdminRequest, signWithPrivateKey, starkKeyPairFromPrivateKey, storeSiwsToken, syncTransactionBestEffort, teamCoinsRaw, toContractConditions as toDropContractConditions, unsealPrivateKey, userMayPayInstead, validateName as validateCoinName, validateSupply as validateCoinSupply, validateSymbol as validateCoinSymbol, validatePrice, verifyAdminRequestSig };
12330
+ // src/wallet/store.ts
12331
+ function createOwnerStore(config) {
12332
+ const { storeKey, changeEvent } = config;
12333
+ const announce = () => {
12334
+ if (typeof window === "undefined") return;
12335
+ window.dispatchEvent(new Event(changeEvent));
12336
+ };
12337
+ return {
12338
+ load() {
12339
+ if (typeof window === "undefined") return null;
12340
+ try {
12341
+ const raw = localStorage.getItem(storeKey);
12342
+ return raw ? JSON.parse(raw) : null;
12343
+ } catch {
12344
+ return null;
12345
+ }
12346
+ },
12347
+ loadAddress() {
12348
+ return this.load()?.address ?? null;
12349
+ },
12350
+ save(sealed) {
12351
+ localStorage.setItem(storeKey, JSON.stringify(sealed));
12352
+ announce();
12353
+ },
12354
+ clear() {
12355
+ localStorage.removeItem(storeKey);
12356
+ announce();
12357
+ },
12358
+ notifyChange: announce,
12359
+ onChange(listener) {
12360
+ window.addEventListener(changeEvent, listener);
12361
+ return () => window.removeEventListener(changeEvent, listener);
12362
+ }
12363
+ };
12364
+ }
12365
+
12366
+ // src/wallet/pairing.ts
12367
+ var SCHEME = "medialane-device";
12368
+ var VERSION = 1;
12369
+ var LABEL_MAX = 32;
12370
+ var STARK_PRIME = (1n << 251n) + 17n * (1n << 192n) + 1n;
12371
+ var InvalidPairingPayloadError = class extends Error {
12372
+ constructor(message = "This code is not a Medialane device request.") {
12373
+ super(message);
12374
+ this.name = "InvalidPairingPayloadError";
12375
+ }
12376
+ };
12377
+ function normalisePublicKey(input) {
12378
+ if (typeof input !== "string" || !/^0x[0-9a-fA-F]+$/.test(input)) {
12379
+ throw new InvalidPairingPayloadError("That device key is not valid.");
12380
+ }
12381
+ const value = BigInt(input);
12382
+ if (value === 0n || value >= STARK_PRIME) {
12383
+ throw new InvalidPairingPayloadError("That device key is not valid.");
12384
+ }
12385
+ return `0x${value.toString(16)}`;
12386
+ }
12387
+ function sanitiseLabel(input) {
12388
+ const raw = typeof input === "string" ? input : "";
12389
+ return raw.replace(/\s+/g, " ").trim().slice(0, LABEL_MAX);
12390
+ }
12391
+ function encodePairingPayload(payload) {
12392
+ return JSON.stringify({
12393
+ scheme: SCHEME,
12394
+ version: VERSION,
12395
+ publicKey: normalisePublicKey(payload.publicKey),
12396
+ label: sanitiseLabel(payload.label)
12397
+ });
12398
+ }
12399
+ function parsePairingPayload(encoded) {
12400
+ let data;
12401
+ try {
12402
+ data = JSON.parse(encoded);
12403
+ } catch {
12404
+ throw new InvalidPairingPayloadError();
12405
+ }
12406
+ if (data === null || typeof data !== "object") throw new InvalidPairingPayloadError();
12407
+ if (data.scheme !== SCHEME || data.version !== VERSION) throw new InvalidPairingPayloadError();
12408
+ return {
12409
+ publicKey: normalisePublicKey(data.publicKey),
12410
+ label: sanitiseLabel(data.label)
12411
+ };
12412
+ }
12413
+ function parseAccountAddress(input) {
12414
+ const trimmed = typeof input === "string" ? input.trim() : "";
12415
+ if (!/^0x[0-9a-fA-F]{50,64}$/.test(trimmed)) {
12416
+ throw new InvalidPairingPayloadError("That does not look like an account address.");
12417
+ }
12418
+ if (BigInt(trimmed) === 0n) {
12419
+ throw new InvalidPairingPayloadError("That does not look like an account address.");
12420
+ }
12421
+ return trimmed;
12422
+ }
12423
+
12424
+ // src/wallet/recovery-key.ts
12425
+ function isRecoveryKeyForWallet(sealed) {
12426
+ try {
12427
+ return BigInt(computeAccountAddress(sealed.ownerPubKey, 0)) === BigInt(sealed.address);
12428
+ } catch {
12429
+ return false;
12430
+ }
12431
+ }
12432
+
12433
+ // src/wallet/guardian-status.ts
12434
+ function describeGuardianStatus(guardians) {
12435
+ if (guardians.length === 0) return { kind: "none" };
12436
+ return { kind: "active", guardian: guardians[0] };
12437
+ }
12438
+ function describeRecoveryAction(escape) {
12439
+ if (escape.escapeType !== "Owner") return "none";
12440
+ if (escape.status === "Ready") return "complete";
12441
+ if (escape.status === "Expired") return "start";
12442
+ return "none";
12443
+ }
12444
+ function normalizeWalletAddress(address) {
12445
+ return normalizeAddress("STARKNET", address);
12446
+ }
12447
+ function isValidStarknetAddress(address) {
12448
+ try {
12449
+ validateAndParseAddress(address.trim());
12450
+ return true;
12451
+ } catch {
12452
+ return false;
12453
+ }
12454
+ }
12455
+ async function isDeployed(provider, address) {
12456
+ try {
12457
+ await provider.getClassHashAt(normalizeWalletAddress(address));
12458
+ return true;
12459
+ } catch {
12460
+ return false;
12461
+ }
12462
+ }
12463
+
12464
+ // src/wallet/self-fund-consent.ts
12465
+ function createSelfFundConsent(estimateFee) {
12466
+ let handler = null;
12467
+ return {
12468
+ registerHandler(next) {
12469
+ handler = next;
12470
+ },
12471
+ async request({ address, calls }) {
12472
+ if (!handler) return false;
12473
+ const feeEstimate = address && calls ? estimateFee(address, calls).catch(() => null) : Promise.resolve(null);
12474
+ return handler(feeEstimate);
12475
+ }
12476
+ };
12477
+ }
12478
+
12479
+ // src/wallet/passkey.ts
12480
+ var PasskeyCancelledError = class extends Error {
12481
+ constructor(message = "Passkey prompt was cancelled.") {
12482
+ super(message);
12483
+ this.name = "PasskeyCancelledError";
12484
+ }
12485
+ };
12486
+ var encodeBase64 = (buf) => {
12487
+ const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);
12488
+ let binary = "";
12489
+ for (const byte of bytes) binary += String.fromCharCode(byte);
12490
+ return btoa(binary);
12491
+ };
12492
+ var decodeBase64 = (value) => {
12493
+ const binary = atob(value);
12494
+ const bytes = new Uint8Array(binary.length);
12495
+ for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);
12496
+ return bytes;
12497
+ };
12498
+ function isPasskeyCancellation(err) {
12499
+ const name = err?.name;
12500
+ return name === "NotAllowedError" || name === "AbortError";
12501
+ }
12502
+ function createPasskeyOwner(config) {
12503
+ const randomBytes = config.randomBytes ?? ((length) => crypto.getRandomValues(new Uint8Array(length)));
12504
+ const credentialsApi = () => {
12505
+ const api = config.credentials ?? (typeof navigator === "undefined" ? void 0 : navigator.credentials);
12506
+ if (!api) throw new Error("Passkeys are only available in a browser.");
12507
+ return api;
12508
+ };
12509
+ const prfUnsupportedMessage = () => {
12510
+ const isBrave = typeof navigator !== "undefined" && "brave" in navigator;
12511
+ const cause = isBrave ? "Brave doesn't currently support the WebAuthn PRF extension." : "This browser didn't return a passkey PRF secret.";
12512
+ return `${cause} ${config.appName} needs it to seal your key. Your device passkey (Touch ID) is fine, the limitation is the browser. Please open this in Safari or Chrome on an up-to-date OS.`;
12513
+ };
12514
+ async function registerPasskey() {
12515
+ let credential;
12516
+ try {
12517
+ credential = await credentialsApi().create({
12518
+ publicKey: {
12519
+ challenge: randomBytes(32),
12520
+ rp: { name: config.relyingPartyName, id: config.relyingPartyId() },
12521
+ user: await config.passkeyUser(),
12522
+ excludeCredentials: config.knownCredentials(),
12523
+ pubKeyCredParams: [
12524
+ { type: "public-key", alg: -7 },
12525
+ { type: "public-key", alg: -257 }
12526
+ ],
12527
+ authenticatorSelection: {
12528
+ residentKey: "required",
12529
+ userVerification: "required",
12530
+ authenticatorAttachment: "platform"
12531
+ },
12532
+ extensions: { prf: { eval: { first: config.prfSalt } } }
12533
+ }
12534
+ });
12535
+ } catch (err) {
12536
+ if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();
12537
+ throw err;
12538
+ }
12539
+ const prf = credential.getClientExtensionResults().prf;
12540
+ return { credentialId: encodeBase64(credential.rawId), prfFirst: prf?.results?.first ?? null };
12541
+ }
12542
+ async function prfSecret(credentialId) {
12543
+ let assertion;
12544
+ try {
12545
+ assertion = await credentialsApi().get({
12546
+ publicKey: {
12547
+ challenge: randomBytes(32),
12548
+ rpId: config.relyingPartyId(),
12549
+ allowCredentials: [{ type: "public-key", id: decodeBase64(credentialId) }],
12550
+ userVerification: "required",
12551
+ extensions: { prf: { eval: { first: config.prfSalt } } }
12552
+ }
12553
+ });
12554
+ } catch (err) {
12555
+ if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();
12556
+ throw err;
12557
+ }
12558
+ const result = assertion.getClientExtensionResults().prf?.results?.first;
12559
+ if (!result) throw new Error("Passkey PRF unavailable on this device/browser.");
12560
+ return new Uint8Array(result);
12561
+ }
12562
+ async function secretFromRegistration(registration) {
12563
+ if (registration.prfFirst) return new Uint8Array(registration.prfFirst);
12564
+ try {
12565
+ return await prfSecret(registration.credentialId);
12566
+ } catch {
12567
+ throw new Error(prfUnsupportedMessage());
12568
+ }
12569
+ }
12570
+ async function seal(secret, privateKeyHex) {
12571
+ const aes = await deriveAesKey(secret, config.hkdfInfo);
12572
+ const iv = randomBytes(12);
12573
+ const ciphertext = await sealPrivateKey(aes, iv, privateKeyHex);
12574
+ return { iv: encodeBase64(iv), ciphertext: encodeBase64(ciphertext) };
12575
+ }
12576
+ return {
12577
+ async createOwnerKey() {
12578
+ const registration = await registerPasskey();
12579
+ const secret = await secretFromRegistration(registration);
12580
+ const { privateKeyHex, publicKeyHex } = generateStarkKeyPair();
12581
+ const { iv, ciphertext } = await seal(secret, privateKeyHex);
12582
+ return {
12583
+ sealed: {
12584
+ credentialId: registration.credentialId,
12585
+ ownerPubKey: publicKeyHex,
12586
+ address: computeAccountAddress(publicKeyHex, 0),
12587
+ iv,
12588
+ ciphertext
12589
+ },
12590
+ privateKeyHex
12591
+ };
12592
+ },
12593
+ async unlockOwnerKey(sealed) {
12594
+ const secret = await prfSecret(sealed.credentialId);
12595
+ const aes = await deriveAesKey(secret, config.hkdfInfo);
12596
+ return unsealPrivateKey(aes, decodeBase64(sealed.iv), decodeBase64(sealed.ciphertext));
12597
+ },
12598
+ async sealImportedOwnerKey(privateKeyInput) {
12599
+ const { privateKeyHex, publicKeyHex } = starkKeyPairFromPrivateKey(privateKeyInput);
12600
+ const registration = await registerPasskey();
12601
+ const secret = await secretFromRegistration(registration);
12602
+ const { iv, ciphertext } = await seal(secret, privateKeyHex);
12603
+ return {
12604
+ credentialId: registration.credentialId,
12605
+ ownerPubKey: publicKeyHex,
12606
+ address: computeAccountAddress(publicKeyHex, 0),
12607
+ iv,
12608
+ ciphertext
12609
+ };
12610
+ },
12611
+ walletAddressForPrivateKey(privateKeyInput) {
12612
+ return computeAccountAddress(starkKeyPairFromPrivateKey(privateKeyInput).publicKeyHex, 0);
12613
+ }
12614
+ };
12615
+ }
12616
+ function accountFor(provider, address, privateKeyHex) {
12617
+ return new Account({ provider, address, signer: privateKeyHex, cairoVersion: "1" });
12618
+ }
12619
+ async function estimateSelfFundedFee(provider, address, calls) {
12620
+ const account = new Account({ provider, address, signer: "0x1", cairoVersion: "1" });
12621
+ const estimate = await account.estimateInvokeFee(calls);
12622
+ return { feeRaw: estimate.overall_fee, unit: estimate.unit };
12623
+ }
12624
+ function selfFundedExecutor(deps) {
12625
+ return {
12626
+ async execute({ userAddress, privateKeyHex, calls }) {
12627
+ const account = accountFor(deps.provider(), userAddress, privateKeyHex);
12628
+ const { transaction_hash } = await account.execute(calls);
12629
+ return { transactionHash: transaction_hash };
12630
+ }
12631
+ };
12632
+ }
12633
+ function sponsoredExecutor(deps) {
12634
+ const fallback = deps.fallback ?? selfFundedExecutor(deps);
12635
+ return {
12636
+ async execute(input) {
12637
+ const { userAddress, privateKeyHex, calls } = input;
12638
+ const result = await executeSponsored(
12639
+ { proxyUrl: deps.proxyUrl, fetchImpl: deps.fetchImpl },
12640
+ {
12641
+ address: userAddress,
12642
+ signTypedData: async (data) => signWithPrivateKey(privateKeyHex, typedData.getMessageHash(data, userAddress))
12643
+ },
12644
+ calls
12645
+ );
12646
+ if (result.status === "sponsored") return { transactionHash: result.transactionHash };
12647
+ const consented = await deps.consent.request({ address: userAddress, calls });
12648
+ if (!consented) throw new SponsoredCallRejectedError(result.reason);
12649
+ return fallback.execute(input);
12650
+ }
12651
+ };
12652
+ }
12653
+ function describeDevices(owners, thisDevicePubkey) {
12654
+ const mine = computeOwnerGuid(thisDevicePubkey);
12655
+ return owners.map((owner) => ({
12656
+ guid: owner.guid,
12657
+ type: owner.type,
12658
+ isThisDevice: BigInt(owner.guid) === BigInt(mine)
12659
+ }));
12660
+ }
12661
+ function canRemoveDevice(devices, guid) {
12662
+ if (devices.length <= 1) return false;
12663
+ return devices.some((device) => BigInt(device.guid) === BigInt(guid));
12664
+ }
12665
+ function createMediaWallet(config) {
12666
+ const ttl = config.unlockTtlMs ?? 2e4;
12667
+ const unlockCache = /* @__PURE__ */ new Map();
12668
+ const lock = (address) => {
12669
+ const entry = unlockCache.get(address);
12670
+ if (!entry) return;
12671
+ clearTimeout(entry.timer);
12672
+ unlockCache.delete(address);
12673
+ };
12674
+ const unlockOnce = (sealed) => {
12675
+ const existing = unlockCache.get(sealed.address);
12676
+ if (existing) return existing.promise;
12677
+ const promise = config.passkey.unlockOwnerKey(sealed).catch((err) => {
12678
+ lock(sealed.address);
12679
+ throw err;
12680
+ });
12681
+ const timer = setTimeout(() => lock(sealed.address), ttl);
12682
+ unlockCache.set(sealed.address, { promise, timer });
12683
+ return promise;
12684
+ };
12685
+ const run = async (sealed, calls, userAddress) => {
12686
+ const privateKeyHex = await unlockOnce(sealed);
12687
+ return config.executor.execute({
12688
+ userAddress: userAddress ?? sealed.address,
12689
+ privateKeyHex,
12690
+ calls
12691
+ });
12692
+ };
12693
+ return {
12694
+ store: config.store,
12695
+ passkey: config.passkey,
12696
+ lock,
12697
+ signerFor(sealed) {
12698
+ return {
12699
+ address: sealed.address,
12700
+ signTypedData: async (data) => {
12701
+ const privateKeyHex = await unlockOnce(sealed);
12702
+ return signWithPrivateKey(privateKeyHex, typedData.getMessageHash(data, sealed.address));
12703
+ },
12704
+ execute: async (calls) => {
12705
+ const { transactionHash } = await run(sealed, calls);
12706
+ return { txHash: transactionHash };
12707
+ }
12708
+ };
12709
+ },
12710
+ run,
12711
+ getGuardians: (address) => getGuardians(config.provider(), address),
12712
+ getEscape: (address) => getEscape(config.provider(), address),
12713
+ getEscapeSecurityPeriod: (address) => getEscapeSecurityPeriod(config.provider(), address),
12714
+ getOwners: (address) => getOwners(config.provider(), address),
12715
+ async isOwnerOf(accountAddress, devicePubkey) {
12716
+ const owners = await getOwners(config.provider(), accountAddress);
12717
+ const guid = BigInt(computeOwnerGuid(devicePubkey));
12718
+ return owners.some((owner) => BigInt(owner.guid) === guid);
12719
+ },
12720
+ async setFirstGuardian(sealed, guardianPubkey) {
12721
+ const { transactionHash } = await run(sealed, [buildSetFirstGuardianCall(sealed.address, guardianPubkey)]);
12722
+ return transactionHash;
12723
+ },
12724
+ async triggerEscapeOwner(guardianSealed, targetAddress, newOwnerPubkey) {
12725
+ const { transactionHash } = await run(
12726
+ guardianSealed,
12727
+ [buildTriggerEscapeOwnerCall(targetAddress, newOwnerPubkey)],
12728
+ normalizeWalletAddress(targetAddress)
12729
+ );
12730
+ return transactionHash;
12731
+ },
12732
+ async completeEscapeOwner(guardianSealed, targetAddress) {
12733
+ const { transactionHash } = await run(
12734
+ guardianSealed,
12735
+ [buildCompleteEscapeOwnerCall(targetAddress)],
12736
+ normalizeWalletAddress(targetAddress)
12737
+ );
12738
+ return transactionHash;
12739
+ },
12740
+ async cancelEscape(sealed) {
12741
+ const { transactionHash } = await run(sealed, [buildCancelEscapeCall(sealed.address)]);
12742
+ return transactionHash;
12743
+ },
12744
+ async addDevice(sealed, devicePubkey) {
12745
+ const { transactionHash } = await run(sealed, [buildAddOwnerCall(sealed.address, devicePubkey)]);
12746
+ return transactionHash;
12747
+ },
12748
+ async removeDevice(sealed, ownerGuid) {
12749
+ const { transactionHash } = await run(sealed, [buildRemoveOwnerByGuidCall(sealed.address, ownerGuid)]);
12750
+ return transactionHash;
12751
+ }
12752
+ };
12753
+ }
12754
+
12755
+ export { ADMIN_HEADERS, ADMIN_SCOPE, MAX_SUPPLY as COIN_MAX_SUPPLY, MIN_SUPPLY as COIN_MIN_SUPPLY, ClubService, CreatorCoinFactoryABI, CreatorCoinService, DropCollectionABI, DropFactoryABI, DropService, ERC1155CollectionService, IPClubCollectionABI, IPClubFactoryABI, IPCollection1155ABI, IPCollection1155FactoryABI, IPCollectionABI, IPGenesisABI, IPMarketplaceABI, IPNftABI, IPSponsorshipABI, IPTicketCollectionABI, IPTicketCollectionFactoryABI, InvalidPairingPayloadError, InvalidStarkPrivateKeyError, MAX_HOLDERS_AT_LAUNCH, MAX_TEAM_ALLOCATION_PERCENT, Medialane1155ABI, MedialaneClient, MedialaneError, POPCollectionABI, POPFactoryABI, PasskeyCancelledError, PopService, SUGGESTED_DEFAULT_PRICE, SponsoredCallRejectedError, SponsorshipService, StarknetVenue, TicketService, VALIDATED_EKUBO_PARAMS, accountFor, adminRequestDigest, assertTransactionSucceeded, build1155CancellationTypedData, build1155OrderTypedData, buildAddOwnerCall, buildAdminSessionTypedData, buildCancelEscapeCall, buildCancellationTypedData, buildChangeOwnersCall, buildCompleteEscapeOwnerCall, buildCreateCreatorCoinCall, buildDeployAccountParams, buildFeeCall, buildLaunchOnEkuboCalls, buildOrderTypedData, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, buybackQuoteRaw, canRemoveDevice, toRaw as coinToRaw, computeAccountAddress, computeOwnerGuid, confirmIntentBestEffort, createAdminSessionGrant, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deployedCollectionFromReceipt, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodeAdminHeaders, encodeByteArray, encodePairingPayload, estimateSelfFundedFee, executeIntent, executeIntents, executeSponsored, fdvHuman, generateStarkKeyPair, getCounter, getCounter1155, getCreatorCoinGuarantees, getEscape, getEscapeSecurityPeriod, getGuardians, getOrderDetails, getOrderDetails1155, getOwners, getSiwsStorageKey, getStoredSiwsToken, isDeployed, isRecoveryKeyForWallet, isSiwsTokenValid, isValidStarknetAddress, mintedTokenIdFromReceipt, normalizeSiwsSignature, normalizeWalletAddress, ownerAliveTypedData, ownerConstructorCalldata, parseAccountAddress, parseAdminHeaders, parseCreatorCoinCreated, parsePairingPayload, priceToEkuboParams, randomNonce, requestSiwsToken, sealPrivateKey, selfFundedExecutor, sessionKeyHashOf, signAdminRequest, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, storeSiwsToken, syncTransactionBestEffort, teamCoinsRaw, toContractConditions as toDropContractConditions, unsealPrivateKey, userMayPayInstead, validateName as validateCoinName, validateSupply as validateCoinSupply, validateSymbol as validateCoinSymbol, validatePrice, verifyAdminRequestSig };
12331
12756
  //# sourceMappingURL=index.js.map
12332
12757
  //# sourceMappingURL=index.js.map