@medialane/sdk 0.210.0 → 0.211.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/starknet/erc20.ts","../src/starknet/services/sponsoredExecutor.ts","../src/starknet/media-wallet/derive.ts","../src/starknet/media-wallet/account.ts","../src/starknet/media-wallet/owners.ts","../src/starknet/media-wallet/deploy.ts","../src/starknet/media-wallet/guardian.ts","../src/starknet/passkey-wallet/crypto.ts","../src/wallet/store.ts","../src/wallet/pairing.ts","../src/wallet/recovery-key.ts","../src/wallet/guardian-status.ts","../src/wallet/addresses.ts","../src/wallet/self-fund-consent.ts","../src/wallet/device-keys.ts","../src/wallet/passkey.ts","../src/wallet/executors.ts","../src/wallet/deployment.ts","../src/wallet/client.ts","../src/session/session-wallet.ts","../src/session/wallet-recovery.ts"],"names":["num","hash","ec","consented","starknetTypedData","Account","sponsored","selfFunded","run"],"mappings":"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","file":"chunk-PVU5AYOO.js","sourcesContent":["import type { ProviderInterface } from \"starknet\";\n\nexport async function erc20Balance(\n provider: Pick<ProviderInterface, \"callContract\">,\n token: string,\n holder: string,\n): Promise<bigint> {\n const read = (entrypoint: string) => provider.callContract({ contractAddress: token, entrypoint, calldata: [holder] }, \"latest\");\n const [low = \"0x0\", high = \"0x0\"] = await read(\"balanceOf\").catch(() => read(\"balance_of\"));\n return BigInt(low) + (BigInt(high) << 128n);\n}\n","import type { FetchLike } from \"../../utils/fetch.js\";\nimport type { TypedData } from \"starknet\";\nimport { UserFacingError } from \"../../errors.js\";\n\nexport interface TypedDataSigner {\n address: string;\n signTypedData(typedData: TypedData): Promise<string[]>;\n}\n\nexport interface SponsoredExecuteConfig {\n proxyUrl: string;\n fetchImpl?: FetchLike;\n headers?: Record<string, string>;\n}\n\nexport type SponsoredRequest = { intentIds: string[] } | { userAddress: string };\n\nexport type SponsoredExecuteResult =\n | { status: \"sponsored\"; transactionHash: string }\n | { status: \"unavailable\"; reason: string };\n\nexport interface SponsoredRejection {\n code?: string;\n detail?: string;\n status?: number;\n stage?: \"build\" | \"execute\";\n requestId?: string;\n}\n\nexport class SponsoredCallRejectedError extends UserFacingError {\n readonly code?: string;\n readonly detail?: string;\n readonly status?: number;\n readonly stage?: \"build\" | \"execute\";\n readonly requestId?: string;\n\n constructor(message: string, info: SponsoredRejection = {}) {\n super(message, { retryable: false });\n this.code = info.code;\n this.detail = info.detail;\n this.status = info.status;\n this.stage = info.stage;\n this.requestId = info.requestId;\n }\n}\n\nexport type SponsorshipFailureCode =\n | \"sponsor_unavailable\"\n | \"credits_exhausted\"\n | \"account_not_deployed\"\n | \"not_executable\"\n | \"invalid_request\"\n | \"not_authorized\"\n | \"rate_limited\"\n | \"may_have_broadcast\";\n\nconst FALLBACK_FUNDING_FAILURES: ReadonlySet<string> = new Set([\"sponsor_unavailable\", \"credits_exhausted\"]);\n\nexport function allowsFallbackFunding(code: string | undefined, status: number, stage: \"build\" | \"execute\"): boolean {\n if (code) return FALLBACK_FUNDING_FAILURES.has(code);\n return stage === \"build\" ? status >= 500 : status === 503;\n}\n\nasync function failureOf(res: Response, fallback: string): Promise<{ reason: string; code?: string; detail?: string; requestId?: string }> {\n const body = (await res.json().catch(() => null)) as { error?: string; code?: string; detail?: string } | null;\n return {\n reason: body?.error || fallback,\n code: typeof body?.code === \"string\" ? body.code : undefined,\n detail: typeof body?.detail === \"string\" ? body.detail : undefined,\n requestId: res.headers.get(\"x-request-id\") ?? undefined,\n };\n}\n\nexport async function executeSponsored(\n config: SponsoredExecuteConfig,\n signer: TypedDataSigner,\n request: SponsoredRequest,\n): Promise<SponsoredExecuteResult> {\n const doFetch = config.fetchImpl ?? fetch;\n const base = config.proxyUrl.replace(/\\/$/, \"\");\n const headers = { \"Content-Type\": \"application/json\", ...config.headers };\n\n const buildRes = await doFetch(`${base}/build`, {\n method: \"POST\",\n headers,\n body: JSON.stringify(request),\n });\n if (!buildRes.ok) {\n const { reason, code, detail, requestId } = await failureOf(buildRes, \"We couldn't prepare this transaction.\");\n if (allowsFallbackFunding(code, buildRes.status, \"build\")) return { status: \"unavailable\", reason };\n throw new SponsoredCallRejectedError(reason, { code, detail, status: buildRes.status, stage: \"build\", requestId });\n }\n const { typedData } = (await buildRes.json()) as { typedData: TypedData };\n\n const signature = await signer.signTypedData(typedData);\n\n const executeRes = await doFetch(`${base}/execute`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({ ...request, typedData, signature }),\n });\n if (!executeRes.ok) {\n const { reason, code, detail, requestId } = await failureOf(executeRes, \"We couldn't submit this transaction.\");\n if (allowsFallbackFunding(code, executeRes.status, \"execute\")) {\n return { status: \"unavailable\", reason };\n }\n throw new SponsoredCallRejectedError(reason, { code, detail, status: executeRes.status, stage: \"execute\", requestId });\n }\n const { transactionHash } = (await executeRes.json()) as { transactionHash: string };\n return { status: \"sponsored\", transactionHash };\n}\n","import { extract, expand } from \"@noble/hashes/hkdf.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { ec, num } from \"starknet\";\n\nconst STARK_ORDER = 3618502788666131213697322783095070105526743751716087489154079457884512865583n;\n\nexport function deriveOwnerKeyPair(\n secret: Uint8Array,\n recipientId: string,\n): { privateKey: string; publicKey: string } {\n const prk = extract(sha256, secret);\n const okm = expand(sha256, prk, new TextEncoder().encode(recipientId), 32);\n let scalar = BigInt(\"0x\" + Buffer.from(okm).toString(\"hex\")) % STARK_ORDER;\n if (scalar === 0n) scalar = 1n;\n const privateKey = num.toHex(scalar);\n const publicKey = ec.starkCurve.getStarkKey(privateKey);\n return { privateKey, publicKey };\n}\n","import { hash, num, type BigNumberish } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\n\nexport function ownerConstructorCalldata(ownerPubkey: BigNumberish): string[] {\n return [\"0x0\", num.toHex(ownerPubkey), \"0x1\"];\n}\n\nexport function computeAccountAddress(ownerPubkey: BigNumberish, salt: BigNumberish = 0): string {\n return hash.calculateContractAddressFromHash(\n num.toHex(salt),\n STARKNET_MEDIAWALLET_CLASS_HASH,\n ownerConstructorCalldata(ownerPubkey),\n 0,\n );\n}\n","import { hash, num, type BigNumberish, type Call } from \"starknet\";\n\nconst STARKNET_SIGNER_TYPE = \"0x537461726b6e6574205369676e6572\";\nconst OPTION_NONE = \"0x1\";\nconst SIGNER_STARKNET = \"0x0\";\n\nexport function computeOwnerGuid(ownerPubkey: BigNumberish): string {\n return hash.computePoseidonHash(STARKNET_SIGNER_TYPE, num.toHex(ownerPubkey));\n}\n\nfunction changeOwners(accountAddress: string, guidsToRemove: string[], pubkeysToAdd: BigNumberish[]): Call {\n return {\n contractAddress: accountAddress,\n entrypoint: \"change_owners\",\n calldata: [\n num.toHex(guidsToRemove.length),\n ...guidsToRemove,\n num.toHex(pubkeysToAdd.length),\n ...pubkeysToAdd.flatMap((p) => [SIGNER_STARKNET, num.toHex(p)]),\n OPTION_NONE,\n ],\n };\n}\n\nexport function buildAddOwnerCall(accountAddress: string, addOwnerPubkey: BigNumberish): Call {\n return changeOwners(accountAddress, [], [addOwnerPubkey]);\n}\n\nexport function buildRemoveOwnerCall(accountAddress: string, removeOwnerPubkey: BigNumberish): Call {\n return changeOwners(accountAddress, [computeOwnerGuid(removeOwnerPubkey)], []);\n}\n\nexport function buildRemoveOwnerByGuidCall(accountAddress: string, ownerGuid: BigNumberish): Call {\n return changeOwners(accountAddress, [num.toHex(ownerGuid)], []);\n}\n","import { num, type BigNumberish, type DeployAccountContractPayload } from \"starknet\";\nimport { STARKNET_MEDIAWALLET_CLASS_HASH } from \"../../constants.js\";\nimport { ownerConstructorCalldata, computeAccountAddress } from \"./account.js\";\n\nexport function buildDeployAccountParams(\n ownerPubkey: BigNumberish,\n salt: BigNumberish = 0,\n): DeployAccountContractPayload {\n return {\n classHash: STARKNET_MEDIAWALLET_CLASS_HASH,\n constructorCalldata: ownerConstructorCalldata(ownerPubkey),\n addressSalt: num.toHex(salt),\n contractAddress: computeAccountAddress(ownerPubkey, salt),\n };\n}\n","import { num, type Call, type ProviderInterface } from \"starknet\";\nimport { normalizeAddress } from \"../../utils/address.js\";\n\nconst norm = (address: string): string => normalizeAddress(\"STARKNET\", address);\n\nconst SIGNER_TYPE_NAMES = [\"Starknet\", \"Secp256k1\", \"Secp256r1\"] as const;\ntype SignerTypeName = (typeof SIGNER_TYPE_NAMES)[number];\n\nexport interface GuardianInfo {\n type: SignerTypeName;\n guid: string;\n storedValue: string;\n}\n\nfunction encodeFeltArray(items: string[]): string[] {\n return [num.toHex(items.length), ...items];\n}\n\nfunction encodeStarknetSigner(pubkey: string): string[] {\n return [\"0x0\", num.toHex(pubkey)];\n}\n\nfunction encodeStarknetSignerArray(pubkeys: string[]): string[] {\n return [num.toHex(pubkeys.length), ...pubkeys.flatMap(encodeStarknetSigner)];\n}\n\nexport function buildSetFirstGuardianCall(address: string, guardianPubkey: string): Call {\n return {\n contractAddress: norm(address),\n entrypoint: \"change_guardians\",\n calldata: [...encodeFeltArray([]), ...encodeStarknetSignerArray([guardianPubkey])],\n };\n}\n\nexport function buildTriggerEscapeOwnerCall(targetAddress: string, newOwnerPubkey: string): Call {\n return {\n contractAddress: norm(targetAddress),\n entrypoint: \"trigger_escape_owner\",\n calldata: encodeStarknetSigner(newOwnerPubkey),\n };\n}\n\nexport function buildCompleteEscapeOwnerCall(targetAddress: string): Call {\n return { contractAddress: norm(targetAddress), entrypoint: \"escape_owner\", calldata: [] };\n}\n\nexport function buildCancelEscapeCall(address: string): Call {\n return { contractAddress: norm(address), entrypoint: \"cancel_escape\", calldata: [] };\n}\n\nexport function decodeGuardiansInfo(res: string[]): GuardianInfo[] {\n const len = Number(res[0]);\n const out: GuardianInfo[] = [];\n for (let i = 0; i < len; i++) {\n const base = 1 + i * 3;\n out.push({\n type: SIGNER_TYPE_NAMES[Number(res[base])] ?? \"Starknet\",\n guid: res[base + 1],\n storedValue: res[base + 2],\n });\n }\n return out;\n}\n\nexport type EscapeTypeName = \"None\" | \"Guardian\" | \"Owner\";\nexport type EscapeStatusName = \"None\" | \"NotReady\" | \"Ready\" | \"Expired\";\nconst ESCAPE_TYPE_NAMES: EscapeTypeName[] = [\"None\", \"Guardian\", \"Owner\"];\nconst ESCAPE_STATUS_NAMES: EscapeStatusName[] = [\"None\", \"NotReady\", \"Ready\", \"Expired\"];\n\nexport interface EscapeInfo {\n readyAt: number;\n escapeType: EscapeTypeName;\n status: EscapeStatusName;\n}\n\nexport function decodeEscapeAndStatus(res: string[]): EscapeInfo {\n\n const readyAt = Number(res[0]);\n const escapeType = ESCAPE_TYPE_NAMES[Number(res[1])] ?? \"None\";\n const optionTag = Number(res[2]);\n const statusIndex = optionTag === 0 ? 5 : 3;\n const status = ESCAPE_STATUS_NAMES[Number(res[statusIndex])] ?? \"None\";\n return { readyAt, escapeType, status };\n}\n\nexport async function getGuardians(provider: ProviderInterface, address: string): Promise<GuardianInfo[]> {\n const res = await provider.callContract({\n contractAddress: norm(address),\n entrypoint: \"get_guardians_info\",\n calldata: [],\n });\n return decodeGuardiansInfo(res as unknown as string[]);\n}\n\nexport async function getOwners(provider: ProviderInterface, address: string): Promise<GuardianInfo[]> {\n const res = await provider.callContract({\n contractAddress: norm(address),\n entrypoint: \"get_owners_info\",\n calldata: [],\n });\n return decodeGuardiansInfo(res as unknown as string[]);\n}\n\nexport async function getEscape(provider: ProviderInterface, address: string): Promise<EscapeInfo> {\n const res = await provider.callContract({\n contractAddress: norm(address),\n entrypoint: \"get_escape_and_status\",\n calldata: [],\n });\n return decodeEscapeAndStatus(res as unknown as string[]);\n}\n\nexport async function getEscapeSecurityPeriod(provider: ProviderInterface, address: string): Promise<number> {\n const res = await provider.callContract({\n contractAddress: norm(address),\n entrypoint: \"get_escape_security_period\",\n calldata: [],\n });\n return Number((res as unknown as string[])[0]);\n}\n","import { ec, num } from \"starknet\";\n\nexport async function deriveAesKey(prfSecret: Uint8Array, hkdfInfo: Uint8Array): Promise<CryptoKey> {\n const hkdf = await crypto.subtle.importKey(\"raw\", prfSecret as BufferSource, \"HKDF\", false, [\"deriveKey\"]);\n return crypto.subtle.deriveKey(\n { name: \"HKDF\", hash: \"SHA-256\", salt: new Uint8Array(0), info: hkdfInfo as BufferSource },\n hkdf,\n { name: \"AES-GCM\", length: 256 },\n false,\n [\"encrypt\", \"decrypt\"],\n );\n}\n\nexport function generateDeviceKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey({ name: \"AES-GCM\", length: 256 }, false, [\"encrypt\", \"decrypt\"]);\n}\n\nexport function generateStarkKeyPair(): { privateKeyHex: string; publicKeyHex: string } {\n const privateKeyHex =\n \"0x\" +\n Array.from(ec.starkCurve.utils.randomPrivateKey())\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return { privateKeyHex, publicKeyHex: ec.starkCurve.getStarkKey(privateKeyHex) };\n}\n\nexport class InvalidStarkPrivateKeyError extends Error {\n constructor(reason: string) {\n super(`Not a valid Starknet private key: ${reason}`);\n this.name = \"InvalidStarkPrivateKeyError\";\n }\n}\n\nexport function starkKeyPairFromPrivateKey(input: string): { privateKeyHex: string; publicKeyHex: string } {\n const trimmed = input.trim().replace(/\\s+/g, \"\");\n const body = trimmed.startsWith(\"0x\") || trimmed.startsWith(\"0X\") ? trimmed.slice(2) : trimmed;\n\n if (body.length === 0) throw new InvalidStarkPrivateKeyError(\"it is empty\");\n if (!/^[0-9a-fA-F]+$/.test(body)) throw new InvalidStarkPrivateKeyError(\"it is not hexadecimal\");\n if (body.length > 64) throw new InvalidStarkPrivateKeyError(\"it is too long\");\n\n const value = BigInt(\"0x\" + body);\n if (value === 0n) throw new InvalidStarkPrivateKeyError(\"it is zero\");\n if (value >= ec.starkCurve.CURVE.n) throw new InvalidStarkPrivateKeyError(\"it is outside the curve order\");\n\n const privateKeyHex = \"0x\" + value.toString(16).padStart(64, \"0\");\n return { privateKeyHex, publicKeyHex: ec.starkCurve.getStarkKey(privateKeyHex) };\n}\n\nexport async function sealPrivateKey(\n aesKey: CryptoKey,\n iv: Uint8Array,\n privateKeyHex: string,\n): Promise<ArrayBuffer> {\n return crypto.subtle.encrypt(\n { name: \"AES-GCM\", iv: iv as BufferSource },\n aesKey,\n new TextEncoder().encode(privateKeyHex),\n );\n}\n\nexport async function unsealPrivateKey(\n aesKey: CryptoKey,\n iv: Uint8Array,\n ciphertext: BufferSource,\n): Promise<string> {\n const buf = await crypto.subtle.decrypt({ name: \"AES-GCM\", iv: iv as BufferSource }, aesKey, ciphertext);\n return new TextDecoder().decode(buf);\n}\n\nexport function signWithPrivateKey(privateKeyHex: string, msgHash: string): [string, string] {\n const sig = ec.starkCurve.sign(msgHash, privateKeyHex);\n return [num.toHex(sig.r), num.toHex(sig.s)];\n}\n","import type { SealedOwner } from \"./types.js\";\n\nexport interface OwnerStore {\n load(): SealedOwner | null;\n loadAddress(): string | null;\n save(sealed: SealedOwner): void;\n clear(): void;\n loadPending(): SealedOwner | null;\n savePending(sealed: SealedOwner): void;\n clearPending(): void;\n notifyChange(): void;\n onChange(listener: () => void): () => void;\n}\n\nexport function createOwnerStore(config: { storeKey: string; changeEvent: string }): OwnerStore {\n const { storeKey, changeEvent } = config;\n const announce = (): void => {\n if (typeof window === \"undefined\") return;\n window.dispatchEvent(new Event(changeEvent));\n };\n return {\n load() {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(storeKey);\n return raw ? (JSON.parse(raw) as SealedOwner) : null;\n } catch {\n return null;\n }\n },\n loadAddress() {\n return this.load()?.address ?? null;\n },\n save(sealed) {\n const previous = this.load();\n if (previous && previous.address !== sealed.address) {\n localStorage.setItem(`${storeKey}:${previous.address}`, JSON.stringify(previous));\n }\n localStorage.setItem(storeKey, JSON.stringify(sealed));\n announce();\n },\n clear() {\n localStorage.removeItem(storeKey);\n announce();\n },\n loadPending() {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(`${storeKey}:pending`);\n return raw ? (JSON.parse(raw) as SealedOwner) : null;\n } catch {\n return null;\n }\n },\n savePending(sealed) {\n localStorage.setItem(`${storeKey}:pending`, JSON.stringify(sealed));\n },\n clearPending() {\n localStorage.removeItem(`${storeKey}:pending`);\n },\n notifyChange: announce,\n onChange(listener) {\n window.addEventListener(changeEvent, listener);\n return () => window.removeEventListener(changeEvent, listener);\n },\n };\n}\n","const SCHEME = \"medialane-device\";\nconst VERSION = 1;\nconst LABEL_MAX = 32;\nconst STARK_PRIME = (1n << 251n) + 17n * (1n << 192n) + 1n;\n\nexport class InvalidPairingPayloadError extends Error {\n constructor(message = \"This code is not a Medialane device request.\") {\n super(message);\n this.name = \"InvalidPairingPayloadError\";\n }\n}\n\nexport interface PairingPayload {\n publicKey: string;\n label: string;\n}\n\nfunction normalisePublicKey(input: unknown): string {\n if (typeof input !== \"string\" || !/^0x[0-9a-fA-F]+$/.test(input)) {\n throw new InvalidPairingPayloadError(\"That device key is not valid.\");\n }\n const value = BigInt(input);\n if (value === 0n || value >= STARK_PRIME) {\n throw new InvalidPairingPayloadError(\"That device key is not valid.\");\n }\n return `0x${value.toString(16)}`;\n}\n\nfunction sanitiseLabel(input: unknown): string {\n const raw = typeof input === \"string\" ? input : \"\";\n return raw.replace(/\\s+/g, \" \").trim().slice(0, LABEL_MAX);\n}\n\nexport function encodePairingPayload(payload: PairingPayload): string {\n return JSON.stringify({\n scheme: SCHEME,\n version: VERSION,\n publicKey: normalisePublicKey(payload.publicKey),\n label: sanitiseLabel(payload.label),\n });\n}\n\nexport function parsePairingPayload(encoded: string): PairingPayload {\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(encoded) as Record<string, unknown>;\n } catch {\n throw new InvalidPairingPayloadError();\n }\n if (data === null || typeof data !== \"object\") throw new InvalidPairingPayloadError();\n if (data.scheme !== SCHEME || data.version !== VERSION) throw new InvalidPairingPayloadError();\n return {\n publicKey: normalisePublicKey(data.publicKey),\n label: sanitiseLabel(data.label),\n };\n}\n\nexport function parseAccountAddress(input: string): string {\n const trimmed = typeof input === \"string\" ? input.trim() : \"\";\n if (!/^0x[0-9a-fA-F]{50,64}$/.test(trimmed)) {\n throw new InvalidPairingPayloadError(\"That does not look like an account address.\");\n }\n if (BigInt(trimmed) === 0n) {\n throw new InvalidPairingPayloadError(\"That does not look like an account address.\");\n }\n return trimmed;\n}\n","import { computeAccountAddress } from \"../starknet/media-wallet/account.js\";\nimport { starkKeyPairFromPrivateKey } from \"../starknet/passkey-wallet/crypto.js\";\n\nconst PREFIX = \"medialane-recovery:v1:\";\nconst ADDRESS = /^0x[0-9a-fA-F]{1,64}$/;\n\nexport class InvalidRecoveryKeyError extends Error {\n constructor(message = \"This is not a valid recovery key.\") {\n super(message);\n this.name = \"InvalidRecoveryKeyError\";\n }\n}\n\nexport interface RecoveryKey {\n walletAddress: string;\n privateKey: string;\n}\n\nconst canonicalAddress = (address: string) => `0x${BigInt(address).toString(16).padStart(64, \"0\")}`;\n\nfunction keyPair(privateKey: string) {\n try {\n return starkKeyPairFromPrivateKey(privateKey);\n } catch {\n throw new InvalidRecoveryKeyError();\n }\n}\n\nexport function encodeRecoveryKey(key: RecoveryKey): string {\n if (!ADDRESS.test(key.walletAddress) || BigInt(key.walletAddress) === 0n) throw new InvalidRecoveryKeyError();\n return `${PREFIX}${canonicalAddress(key.walletAddress)}:${keyPair(key.privateKey).privateKeyHex}`;\n}\n\nexport function parseRecoveryKey(input: string): RecoveryKey {\n const trimmed = input.trim();\n if (!trimmed.startsWith(PREFIX)) {\n const { privateKeyHex, publicKeyHex } = keyPair(trimmed);\n return { walletAddress: computeAccountAddress(publicKeyHex, 0), privateKey: privateKeyHex };\n }\n const parts = trimmed.slice(PREFIX.length).split(\":\");\n const [walletAddress, privateKey] = parts;\n if (parts.length !== 2 || !walletAddress || !privateKey || !ADDRESS.test(walletAddress) || BigInt(walletAddress) === 0n) {\n throw new InvalidRecoveryKeyError();\n }\n return { walletAddress: canonicalAddress(walletAddress), privateKey: keyPair(privateKey).privateKeyHex };\n}\n","import type { GuardianInfo, EscapeInfo } from \"../starknet/media-wallet/guardian.js\";\n\nexport type GuardianStatus = { kind: \"none\" } | { kind: \"active\"; guardian: GuardianInfo };\n\nexport function describeGuardianStatus(guardians: GuardianInfo[]): GuardianStatus {\n if (guardians.length === 0) return { kind: \"none\" };\n return { kind: \"active\", guardian: guardians[0] };\n}\n\nexport type RecoveryAction = \"start\" | \"complete\" | \"none\";\n\nexport function describeRecoveryAction(escape: EscapeInfo): RecoveryAction {\n if (escape.escapeType !== \"Owner\") return \"none\";\n if (escape.status === \"Ready\") return \"complete\";\n if (escape.status === \"Expired\") return \"start\";\n return \"none\";\n}\n","import { validateAndParseAddress } from \"starknet\";\nimport { normalizeAddress } from \"../utils/address.js\";\nimport type { ReceiptProviderLike } from \"./types.js\";\n\nexport function normalizeWalletAddress(address: string): string {\n return normalizeAddress(\"STARKNET\", address);\n}\n\nexport function isValidStarknetAddress(address: string): boolean {\n try {\n validateAndParseAddress(address.trim());\n return true;\n } catch {\n return false;\n }\n}\n\nconst CONTRACT_NOT_FOUND = 20;\n\nexport async function isDeployed(provider: ReceiptProviderLike, address: string): Promise<boolean> {\n try {\n await provider.getClassHashAt(normalizeWalletAddress(address));\n return true;\n } catch (err) {\n if ((err as { code?: unknown } | null)?.code === CONTRACT_NOT_FOUND) return false;\n throw err;\n }\n}\n","import type { Call } from \"starknet\";\n\nexport interface SelfFundFeeEstimate {\n feeRaw: bigint;\n unit: string;\n balanceRaw: bigint | null;\n}\n\nexport type SelfFundConsentHandler = (\n feeEstimate: Promise<SelfFundFeeEstimate | null>,\n) => Promise<boolean>;\n\nexport interface SelfFundConsent {\n registerHandler(handler: SelfFundConsentHandler | null): void;\n request(input: { address?: string; calls?: Call[] }): Promise<boolean>;\n}\n\nexport function createSelfFundConsent(\n estimateFee: (address: string, calls: Call[]) => Promise<SelfFundFeeEstimate>,\n): SelfFundConsent {\n let handler: SelfFundConsentHandler | null = null;\n return {\n registerHandler(next) {\n handler = next;\n },\n async request({ address, calls }) {\n if (!handler) return false;\n const feeEstimate =\n address && calls ? estimateFee(address, calls).catch(() => null) : Promise.resolve(null);\n return handler(feeEstimate);\n },\n };\n}\n","export interface DeviceKeyStore {\n save(credentialId: string, key: CryptoKey): Promise<void>;\n load(credentialId: string): Promise<CryptoKey | null>;\n}\n\nconst DATABASE = \"medialane-wallet\";\nconst STORE = \"device-keys\";\n\nfunction open(): Promise<IDBDatabase> {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DATABASE, 1);\n request.onupgradeneeded = () => request.result.createObjectStore(STORE);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\n\nasync function run<T>(mode: IDBTransactionMode, act: (store: IDBObjectStore) => IDBRequest<T>): Promise<T> {\n const db = await open();\n try {\n return await new Promise<T>((resolve, reject) => {\n const request = act(db.transaction(STORE, mode).objectStore(STORE));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n } finally {\n db.close();\n }\n}\n\nexport const indexedDbDeviceKeys: DeviceKeyStore = {\n async save(credentialId, key) {\n await run(\"readwrite\", (store) => store.put(key, credentialId));\n },\n async load(credentialId) {\n return ((await run(\"readonly\", (store) => store.get(credentialId))) as CryptoKey | undefined) ?? null;\n },\n};\n","import {\n deriveAesKey,\n generateDeviceKey,\n generateStarkKeyPair,\n sealPrivateKey,\n starkKeyPairFromPrivateKey,\n unsealPrivateKey,\n} from \"../starknet/passkey-wallet/crypto.js\";\nimport { computeAccountAddress } from \"../starknet/media-wallet/account.js\";\nimport type { SealedOwner } from \"./types.js\";\nimport type { RecoveryKey } from \"./recovery-key.js\";\nimport { indexedDbDeviceKeys, type DeviceKeyStore } from \"./device-keys.js\";\nimport { PasskeyCancelledError, DeviceKeyMissingError, PasskeyUnsupportedError, type PasskeyUnsupportedReason } from \"./passkey-errors.js\";\n\nexport { PasskeyCancelledError, DeviceKeyMissingError, PasskeyUnsupportedError, type PasskeyUnsupportedReason };\n\nexport interface PasskeyConfig {\n appName: string;\n relyingPartyName: string;\n relyingPartyId: () => string;\n prfSalt: Uint8Array<ArrayBuffer>;\n hkdfInfo: Uint8Array<ArrayBuffer>;\n passkeyUser: () => Promise<PublicKeyCredentialUserEntity>;\n knownCredentials: () => PublicKeyCredentialDescriptor[];\n credentials?: CredentialsContainer;\n deviceKeys?: DeviceKeyStore;\n randomBytes?: (length: number) => Uint8Array<ArrayBuffer>;\n}\n\nexport interface CreatedOwner {\n sealed: SealedOwner;\n privateKeyHex: string;\n}\n\nexport interface PasskeyOwner {\n createOwnerKey(): Promise<CreatedOwner>;\n unlockOwnerKey(sealed: SealedOwner): Promise<string>;\n sealImportedOwnerKey(recovery: RecoveryKey): Promise<SealedOwner>;\n}\n\ninterface Registration {\n credentialId: string;\n prfFirst: ArrayBuffer | null;\n}\n\ninterface OwnerLock {\n aes: CryptoKey;\n lock?: \"device\";\n}\n\nconst encodeBase64 = (buf: ArrayBuffer | Uint8Array): string => {\n const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\n let binary = \"\";\n for (const byte of bytes) binary += String.fromCharCode(byte);\n return btoa(binary);\n};\n\nconst decodeBase64 = (value: string): Uint8Array<ArrayBuffer> => {\n const binary = atob(value);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n return bytes;\n};\n\nfunction isPasskeyCancellation(err: unknown): boolean {\n const name = (err as { name?: string } | null)?.name;\n return name === \"NotAllowedError\" || name === \"AbortError\";\n}\n\nexport function createPasskeyOwner(config: PasskeyConfig): PasskeyOwner {\n const randomBytes: (length: number) => Uint8Array<ArrayBuffer> =\n config.randomBytes ?? ((length: number) => crypto.getRandomValues(new Uint8Array(length)));\n const credentialsApi = (): CredentialsContainer => {\n const api = config.credentials ?? (typeof navigator === \"undefined\" ? undefined : navigator.credentials);\n if (!api) throw new PasskeyUnsupportedError(\"no-webauthn\");\n return api;\n };\n\n async function registerPasskey(): Promise<Registration> {\n let credential: PublicKeyCredential;\n try {\n credential = (await credentialsApi().create({\n publicKey: {\n challenge: randomBytes(32),\n rp: { name: config.relyingPartyName, id: config.relyingPartyId() },\n user: await config.passkeyUser(),\n excludeCredentials: config.knownCredentials(),\n pubKeyCredParams: [\n { type: \"public-key\", alg: -7 },\n { type: \"public-key\", alg: -257 },\n ],\n authenticatorSelection: {\n authenticatorAttachment: \"platform\",\n residentKey: \"required\",\n userVerification: \"required\",\n },\n extensions: { prf: { eval: { first: config.prfSalt } } } as AuthenticationExtensionsClientInputs,\n },\n })) as PublicKeyCredential;\n } catch (err) {\n if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();\n throw err;\n }\n const prf = (\n credential.getClientExtensionResults() as {\n prf?: { enabled?: boolean; results?: { first?: ArrayBuffer } };\n }\n ).prf;\n return {\n credentialId: encodeBase64(credential.rawId),\n prfFirst: prf?.results?.first ?? null,\n };\n }\n\n async function assertPasskey(\n credentialId: string,\n extensions?: AuthenticationExtensionsClientInputs,\n ): Promise<PublicKeyCredential> {\n try {\n return (await credentialsApi().get({\n publicKey: {\n challenge: randomBytes(32),\n rpId: config.relyingPartyId(),\n allowCredentials: [{ type: \"public-key\", id: decodeBase64(credentialId) }],\n userVerification: \"required\",\n ...(extensions ? { extensions } : {}),\n },\n })) as PublicKeyCredential;\n } catch (err) {\n if (isPasskeyCancellation(err)) throw new PasskeyCancelledError();\n throw err;\n }\n }\n\n async function prfSecret(credentialId: string): Promise<Uint8Array<ArrayBuffer>> {\n const assertion = await assertPasskey(credentialId, {\n prf: { eval: { first: config.prfSalt } },\n } as AuthenticationExtensionsClientInputs);\n const result = (assertion.getClientExtensionResults() as { prf?: { results?: { first?: ArrayBuffer } } }).prf\n ?.results?.first;\n if (!result) throw new PasskeyUnsupportedError(\"no-prf\");\n return new Uint8Array(result);\n }\n\n const deviceKeys = config.deviceKeys ?? indexedDbDeviceKeys;\n\n async function lockFor(registration: Registration): Promise<OwnerLock> {\n if (registration.prfFirst) {\n return { aes: await deriveAesKey(new Uint8Array(registration.prfFirst), config.hkdfInfo) };\n }\n try {\n return { aes: await deriveAesKey(await prfSecret(registration.credentialId), config.hkdfInfo) };\n } catch (err) {\n if (!(err instanceof PasskeyUnsupportedError) || err.reason !== \"no-prf\") throw err;\n }\n const aes = await generateDeviceKey();\n await deviceKeys.save(registration.credentialId, aes);\n return { aes, lock: \"device\" };\n }\n\n async function unlockFor(sealed: SealedOwner): Promise<CryptoKey> {\n if (sealed.lock !== \"device\") return deriveAesKey(await prfSecret(sealed.credentialId), config.hkdfInfo);\n await assertPasskey(sealed.credentialId);\n const aes = await deviceKeys.load(sealed.credentialId);\n if (!aes) throw new DeviceKeyMissingError();\n return aes;\n }\n\n async function seal(aes: CryptoKey, privateKeyHex: string): Promise<{ iv: string; ciphertext: string }> {\n const iv = randomBytes(12);\n const ciphertext = await sealPrivateKey(aes, iv, privateKeyHex);\n return { iv: encodeBase64(iv), ciphertext: encodeBase64(ciphertext) };\n }\n\n return {\n async createOwnerKey() {\n const registration = await registerPasskey();\n const { aes, lock } = await lockFor(registration);\n const { privateKeyHex, publicKeyHex } = generateStarkKeyPair();\n const { iv, ciphertext } = await seal(aes, privateKeyHex);\n return {\n sealed: {\n credentialId: registration.credentialId,\n ownerPubKey: publicKeyHex,\n address: computeAccountAddress(publicKeyHex, 0),\n iv,\n ciphertext,\n ...(lock ? { lock } : {}),\n },\n privateKeyHex,\n };\n },\n\n async unlockOwnerKey(sealed) {\n const aes = await unlockFor(sealed);\n return unsealPrivateKey(aes, decodeBase64(sealed.iv), decodeBase64(sealed.ciphertext));\n },\n\n async sealImportedOwnerKey(recovery) {\n const { privateKeyHex, publicKeyHex } = starkKeyPairFromPrivateKey(recovery.privateKey);\n const registration = await registerPasskey();\n const { aes, lock } = await lockFor(registration);\n const { iv, ciphertext } = await seal(aes, privateKeyHex);\n return {\n credentialId: registration.credentialId,\n ownerPubKey: publicKeyHex,\n address: recovery.walletAddress,\n iv,\n ciphertext,\n ...(lock ? { lock } : {}),\n };\n },\n };\n}\n","import type { FetchLike } from \"../utils/fetch.js\";\nimport { Account, typedData as starknetTypedData, type Call, type ProviderInterface } from \"starknet\";\nimport { signWithPrivateKey } from \"../starknet/passkey-wallet/crypto.js\";\nimport { UserFacingError } from \"../errors.js\";\nimport { executeSponsored } from \"../starknet/services/sponsoredExecutor.js\";\nimport type { SelfFundConsent, SelfFundFeeEstimate } from \"./self-fund-consent.js\";\nimport type { ExecutedTransaction, WalletExecutor } from \"./types.js\";\nimport { getTokenBySymbol } from \"../utils/token.js\";\nimport { erc20Balance } from \"../starknet/erc20.js\";\nimport { getGuardians } from \"../starknet/media-wallet/guardian.js\";\n\nexport const GUARDIAN_WALLET_BUSY = \"This can't go through right now. Please try again in a moment.\";\n\nexport interface SelfFundedDeps {\n provider: () => ProviderInterface;\n}\n\nexport function accountFor(\n provider: ProviderInterface,\n address: string,\n privateKeyHex: string,\n): Account {\n return new Account({ provider, address, signer: privateKeyHex, cairoVersion: \"1\" });\n}\n\nexport async function estimateSelfFundedFee(\n provider: ProviderInterface,\n address: string,\n calls: Call[],\n): Promise<SelfFundFeeEstimate> {\n const account = new Account({ provider, address, signer: \"0x1\", cairoVersion: \"1\" });\n const estimate = await account.estimateInvokeFee(calls);\n const balanceRaw = await feeTokenBalance(provider, address, estimate.unit).catch(() => null);\n return { feeRaw: estimate.overall_fee, unit: estimate.unit, balanceRaw };\n}\n\nasync function feeTokenBalance(provider: ProviderInterface, address: string, unit: string): Promise<bigint> {\n const token = getTokenBySymbol(unit === \"FRI\" ? \"STRK\" : \"ETH\");\n if (!token) throw new Error(`No fee token for unit ${unit}`);\n return erc20Balance(provider, token.address, address);\n}\n\nexport function selfFundedExecutor(deps: SelfFundedDeps): WalletExecutor {\n return {\n async execute({ userAddress, privateKeyHex, calls }): Promise<ExecutedTransaction> {\n const account = accountFor(deps.provider(), userAddress, privateKeyHex);\n const { transaction_hash } = await account.execute(calls);\n return { transactionHash: transaction_hash };\n },\n };\n}\n\nexport interface SponsoredDeps extends SelfFundedDeps {\n proxyUrl: string;\n consent: SelfFundConsent;\n fetchImpl?: FetchLike;\n fallback?: WalletExecutor;\n guardians?: (address: string) => Promise<unknown[]>;\n}\n\nexport function sponsoredExecutor(deps: SponsoredDeps): WalletExecutor {\n const fallback = deps.fallback ?? selfFundedExecutor(deps);\n const guardians = deps.guardians ?? ((address: string) => getGuardians(deps.provider(), address));\n const hasGuardian = async (address: string): Promise<boolean> => {\n try {\n return (await guardians(address)).length > 0;\n } catch {\n return false;\n }\n };\n const refuseSelfFundingWithGuardian = async (address: string): Promise<void> => {\n if (await hasGuardian(address)) throw new UserFacingError(GUARDIAN_WALLET_BUSY);\n };\n return {\n async execute(input): Promise<ExecutedTransaction> {\n const { userAddress, privateKeyHex, calls, intentIds } = input;\n if (!intentIds?.length) {\n await refuseSelfFundingWithGuardian(userAddress);\n const consented = await deps.consent.request({ address: userAddress, calls });\n if (!consented) throw new UserFacingError(\"This action can't be sponsored\");\n return fallback.execute(input);\n }\n const result = await executeSponsored(\n { proxyUrl: deps.proxyUrl, fetchImpl: deps.fetchImpl },\n {\n address: userAddress,\n signTypedData: async (data) =>\n signWithPrivateKey(privateKeyHex, starknetTypedData.getMessageHash(data, userAddress)),\n },\n { intentIds },\n );\n if (result.status === \"sponsored\") return { transactionHash: result.transactionHash };\n\n await refuseSelfFundingWithGuardian(userAddress);\n const consented = await deps.consent.request({ address: userAddress, calls });\n if (!consented) throw new UserFacingError(result.reason);\n return fallback.execute(input);\n },\n };\n}\n","import type { FetchLike } from \"../utils/fetch.js\";\nimport { Account, stark, type ProviderInterface } from \"starknet\";\nimport { getCoordinates } from \"../chains.js\";\nimport { ownerConstructorCalldata } from \"../starknet/media-wallet/account.js\";\nimport { isDeployed } from \"./addresses.js\";\nimport type { ExecutedTransaction, SealedOwner } from \"./types.js\";\n\nexport type DeploymentStep = \"creating-passkey\" | \"deploying\";\n\nexport interface DeploymentResult {\n sealed: SealedOwner;\n}\n\nexport class SponsoredDeployError extends Error {\n constructor(\n message: string,\n readonly status: number,\n readonly code?: string,\n ) {\n super(message);\n this.name = \"SponsoredDeployError\";\n }\n}\n\nexport const isAccountRefusal = (err: unknown): boolean =>\n err instanceof SponsoredDeployError && (err.status === 401 || err.status === 409);\n\nasync function describeFailure(res: Response, fallback: string): Promise<never> {\n const body = (await res.json().catch(() => null)) as { error?: string; code?: string } | null;\n throw new SponsoredDeployError(body?.error || fallback, res.status, body?.code);\n}\n\nexport async function deploySponsored(input: {\n proxyUrl: string;\n provider: ProviderInterface;\n ownerAddress: string;\n ownerPubKey: string;\n privateKeyHex: string;\n salt?: string;\n replace?: boolean;\n fetchImpl?: FetchLike;\n}): Promise<ExecutedTransaction> {\n const doFetch = input.fetchImpl ?? fetch;\n const base = input.proxyUrl.replace(/\\/$/, \"\");\n\n const buildRes = await doFetch(`${base}/build`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n ownerPubkey: input.ownerPubKey,\n ownerAddress: input.ownerAddress,\n salt: input.salt ?? \"0x0\",\n }),\n });\n if (!buildRes.ok) {\n await describeFailure(buildRes, \"We couldn't prepare your wallet deployment. Please try again.\");\n }\n const { typedData, deployment, calls } = (await buildRes.json()) as {\n typedData: object;\n deployment: object;\n calls: object[];\n };\n\n const account = new Account({\n provider: input.provider,\n address: input.ownerAddress,\n signer: input.privateKeyHex,\n cairoVersion: \"1\",\n });\n const signature = stark.signatureToHexArray(await account.signMessage(typedData as never));\n\n const executeRes = await doFetch(`${base}/execute`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ ownerAddress: input.ownerAddress, typedData, signature, deployment, calls, replace: input.replace === true }),\n });\n if (!executeRes.ok) {\n await describeFailure(executeRes, \"We couldn't complete your wallet deployment. Please try again.\");\n }\n const { transactionHash } = (await executeRes.json()) as { transactionHash: string };\n return { transactionHash };\n}\n\nexport async function deploySelfFunded(input: {\n provider: ProviderInterface;\n ownerAddress: string;\n ownerPubKey: string;\n privateKeyHex: string;\n}): Promise<ExecutedTransaction> {\n const classHash = getCoordinates(\"STARKNET\").mediaWalletClassHash;\n if (!classHash) throw new Error(\"Media Wallet class hash is not configured\");\n const account = new Account({\n provider: input.provider,\n address: input.ownerAddress,\n signer: input.privateKeyHex,\n cairoVersion: \"1\",\n });\n const { transaction_hash } = await account.deployAccount({\n classHash,\n constructorCalldata: ownerConstructorCalldata(input.ownerPubKey),\n addressSalt: 0,\n contractAddress: input.ownerAddress,\n });\n return { transactionHash: transaction_hash };\n}\n\nexport async function waitUntilDeployed(\n provider: ProviderInterface,\n address: string,\n timeoutMs = 90_000,\n sleep: (ms: number) => Promise<void> = (ms) => new Promise((resolve) => setTimeout(resolve, ms)),\n): Promise<void> {\n const deadline = Date.now() + timeoutMs;\n let wait = 1_000;\n for (;;) {\n if (await isDeployed(provider, address).catch(() => false)) return;\n if (Date.now() >= deadline) {\n throw new Error(\n \"Your wallet was submitted but has not appeared on Starknet yet. Please try again in a moment.\",\n );\n }\n await sleep(wait);\n wait = Math.min(Math.round(wait * 1.5), 5_000);\n }\n}\n\nexport interface DeploymentDeps {\n store: {\n load(): SealedOwner | null;\n save(sealed: SealedOwner): void;\n loadPending(): SealedOwner | null;\n savePending(sealed: SealedOwner): void;\n clearPending(): void;\n notifyChange(): void;\n };\n passkey: {\n createOwnerKey(): Promise<{ sealed: SealedOwner; privateKeyHex: string }>;\n unlockOwnerKey(sealed: SealedOwner): Promise<string>;\n };\n provider: () => ProviderInterface;\n deployProxyUrl?: string;\n fetchImpl?: FetchLike;\n deploySponsoredImpl?: typeof deploySponsored;\n deploySelfFundedImpl?: typeof deploySelfFunded;\n waitUntilDeployedImpl?: typeof waitUntilDeployed;\n isDeployedImpl?: typeof isDeployed;\n}\n\nasync function deployWallet(\n deps: DeploymentDeps,\n wallet: { ownerAddress: string; ownerPubKey: string; privateKeyHex: string },\n replace: boolean,\n): Promise<void> {\n const sponsored = deps.deploySponsoredImpl ?? deploySponsored;\n const selfFunded = deps.deploySelfFundedImpl ?? deploySelfFunded;\n\n if (deps.deployProxyUrl) {\n try {\n await sponsored({\n proxyUrl: deps.deployProxyUrl,\n provider: deps.provider(),\n fetchImpl: deps.fetchImpl,\n replace,\n ...wallet,\n });\n } catch (sponsoredErr) {\n if (replace || isAccountRefusal(sponsoredErr)) throw sponsoredErr;\n try {\n await selfFunded({ provider: deps.provider(), ...wallet });\n } catch (selfFundedErr) {\n const sponsored = sponsoredErr instanceof Error ? sponsoredErr.message : String(sponsoredErr);\n const selfFunded = selfFundedErr instanceof Error ? selfFundedErr.message : String(selfFundedErr);\n throw new Error(`Sponsored deploy failed: ${sponsored}. Self-funded fallback failed: ${selfFunded}`);\n }\n }\n } else {\n await selfFunded({ provider: deps.provider(), ...wallet });\n }\n\n await (deps.waitUntilDeployedImpl ?? waitUntilDeployed)(deps.provider(), wallet.ownerAddress);\n}\n\nasync function unfinishedReplacement(deps: DeploymentDeps): Promise<SealedOwner | null> {\n const pending = deps.store.loadPending();\n if (!pending) return null;\n const deployed = await (deps.isDeployedImpl ?? isDeployed)(deps.provider(), pending.address).catch(() => true);\n return deployed ? null : pending;\n}\n\nexport async function completeDeployment(\n deps: DeploymentDeps,\n onStep: (step: DeploymentStep) => void,\n options: { replace?: boolean } = {},\n): Promise<DeploymentResult> {\n const pending = await unfinishedReplacement(deps);\n const replacing = options.replace === true || pending !== null;\n let sealed: SealedOwner | null = replacing ? pending : deps.store.load();\n if (!replacing && sealed && (await (deps.isDeployedImpl ?? isDeployed)(deps.provider(), sealed.address).catch(() => false))) {\n sealed = null;\n }\n let privateKeyHex: string;\n\n if (!sealed) {\n onStep(\"creating-passkey\");\n const created = await deps.passkey.createOwnerKey();\n sealed = created.sealed;\n privateKeyHex = created.privateKeyHex;\n if (replacing) deps.store.savePending(sealed);\n else deps.store.save(sealed);\n } else {\n privateKeyHex = await deps.passkey.unlockOwnerKey(sealed);\n }\n\n onStep(\"deploying\");\n await deployWallet(deps, { ownerAddress: sealed.address, ownerPubKey: sealed.ownerPubKey, privateKeyHex }, replacing);\n\n if (replacing) {\n deps.store.save(sealed);\n deps.store.clearPending();\n }\n deps.store.notifyChange();\n return { sealed };\n}\n\nexport interface DeploymentCoordinator {\n run(onStep: (step: DeploymentStep) => void, options?: { replace?: boolean }): Promise<DeploymentResult>;\n isDeploying(): boolean;\n}\n\nexport function createDeploymentCoordinator(\n execute: (onStep: (step: DeploymentStep) => void, options: { replace?: boolean }) => Promise<DeploymentResult>,\n): DeploymentCoordinator {\n let inFlight: Promise<DeploymentResult> | null = null;\n let currentStep: DeploymentStep | null = null;\n const listeners = new Set<(step: DeploymentStep) => void>();\n\n return {\n run(onStep, options = {}) {\n if (inFlight) {\n if (options.replace) {\n return Promise.reject(new Error(\"A wallet setup is already in progress.\"));\n }\n if (currentStep) onStep(currentStep);\n listeners.add(onStep);\n return inFlight.finally(() => listeners.delete(onStep));\n }\n listeners.add(onStep);\n let started: Promise<DeploymentResult>;\n try {\n started = execute((step) => {\n currentStep = step;\n for (const listener of listeners) listener(step);\n }, options);\n } catch (err) {\n listeners.clear();\n return Promise.reject(err);\n }\n const run = started.finally(() => {\n inFlight = null;\n currentStep = null;\n listeners.clear();\n });\n inFlight = run;\n return run;\n },\n isDeploying: () => inFlight !== null,\n };\n}\n","import type { FetchLike } from \"../utils/fetch.js\";\nimport { typedData as starknetTypedData, type Call, type ProviderInterface, type TypedData } from \"starknet\";\nimport { signWithPrivateKey } from \"../starknet/passkey-wallet/crypto.js\";\nimport {\n getEscape,\n getEscapeSecurityPeriod,\n getGuardians,\n getOwners,\n type EscapeInfo,\n type GuardianInfo,\n} from \"../starknet/media-wallet/guardian.js\";\nimport { computeOwnerGuid } from \"../starknet/media-wallet/owners.js\";\nimport { normalizeWalletAddress } from \"./addresses.js\";\nimport { ApiClient } from \"../api/client.js\";\nimport type { CreateWalletManageIntentParams } from \"../types/api.js\";\nimport {\n completeDeployment,\n createDeploymentCoordinator,\n type DeploymentDeps,\n type DeploymentResult,\n type DeploymentStep,\n} from \"./deployment.js\";\nimport type { OwnerStore } from \"./store.js\";\nimport type { PasskeyOwner } from \"./passkey.js\";\nimport type { ExecutedTransaction, SealedOwner, WalletExecutor } from \"./types.js\";\n\nexport interface DeviceEntry {\n guid: string;\n type: GuardianInfo[\"type\"];\n isThisDevice: boolean;\n}\n\nexport function describeDevices(owners: GuardianInfo[], thisDevicePubkey: string): DeviceEntry[] {\n const mine = computeOwnerGuid(thisDevicePubkey);\n return owners.map((owner) => ({\n guid: owner.guid,\n type: owner.type,\n isThisDevice: BigInt(owner.guid) === BigInt(mine),\n }));\n}\n\nexport function canRemoveDevice(devices: DeviceEntry[], guid: string): boolean {\n if (devices.length <= 1) return false;\n return devices.some((device) => BigInt(device.guid) === BigInt(guid));\n}\n\nexport interface MediaWalletConfig {\n store: OwnerStore;\n passkey: PasskeyOwner;\n executor: WalletExecutor;\n provider: () => ProviderInterface;\n unlockTtlMs?: number;\n backendUrl?: string;\n deployProxyUrl?: string;\n fetchImpl?: FetchLike;\n walletIntents?: (params: CreateWalletManageIntentParams) => Promise<{ id: string; calls: Call[] }>;\n}\n\nexport interface MediaWallet {\n store: OwnerStore;\n passkey: PasskeyOwner;\n lock(address: string): void;\n signerFor(sealed: SealedOwner): {\n address: string;\n signTypedData(data: TypedData): Promise<string[]>;\n execute(calls: Call[], opts?: { intentIds?: string[] }): Promise<{ txHash: string }>;\n };\n run(sealed: SealedOwner, calls: Call[], userAddress?: string, intentIds?: string[]): Promise<ExecutedTransaction>;\n getGuardians(address: string): Promise<GuardianInfo[]>;\n getEscape(address: string): Promise<EscapeInfo>;\n getEscapeSecurityPeriod(address: string): Promise<number>;\n setFirstGuardian(sealed: SealedOwner, guardianPubkey: string): Promise<string>;\n triggerEscapeOwner(guardianSealed: SealedOwner, targetAddress: string, newOwnerPubkey: string): Promise<string>;\n completeEscapeOwner(guardianSealed: SealedOwner, targetAddress: string): Promise<string>;\n cancelEscape(sealed: SealedOwner): Promise<string>;\n getOwners(address: string): Promise<GuardianInfo[]>;\n isOwnerOf(accountAddress: string, devicePubkey: string): Promise<boolean>;\n addDevice(sealed: SealedOwner, devicePubkey: string): Promise<string>;\n removeDevice(sealed: SealedOwner, ownerGuid: string): Promise<string>;\n completeDeployment(\n onStep: (step: DeploymentStep) => void,\n options?: { replace?: boolean },\n ): Promise<DeploymentResult>;\n isDeploying(): boolean;\n}\n\nexport function createMediaWallet(config: MediaWalletConfig): MediaWallet {\n const ttl = config.unlockTtlMs ?? 20_000;\n const deployments = createDeploymentCoordinator((onStep, options) => {\n const deps: DeploymentDeps = {\n store: config.store,\n passkey: config.passkey,\n provider: config.provider,\n deployProxyUrl: config.deployProxyUrl,\n fetchImpl: config.fetchImpl,\n };\n return completeDeployment(deps, onStep, options);\n });\n const unlockCache = new Map<string, { promise: Promise<string>; timer: ReturnType<typeof setTimeout> }>();\n\n const lock = (address: string): void => {\n const entry = unlockCache.get(address);\n if (!entry) return;\n clearTimeout(entry.timer);\n unlockCache.delete(address);\n };\n\n const unlockOnce = (sealed: SealedOwner): Promise<string> => {\n const existing = unlockCache.get(sealed.address);\n if (existing) return existing.promise;\n const promise = config.passkey.unlockOwnerKey(sealed).catch((err) => {\n lock(sealed.address);\n throw err;\n });\n const timer = setTimeout(() => lock(sealed.address), ttl);\n unlockCache.set(sealed.address, { promise, timer });\n return promise;\n };\n\n const run = async (sealed: SealedOwner, calls: Call[], userAddress?: string, intentIds?: string[]): Promise<ExecutedTransaction> => {\n const privateKeyHex = await unlockOnce(sealed);\n return config.executor.execute({\n userAddress: userAddress ?? sealed.address,\n privateKeyHex,\n calls,\n intentIds,\n });\n };\n\n const walletIntents = config.walletIntents ?? (async (params: CreateWalletManageIntentParams) => {\n if (!config.backendUrl) throw new Error(\"This wallet has no backend url configured\");\n const created = await new ApiClient({ baseUrl: config.backendUrl }).intents.create(\"wallet-manage\", params);\n return created as { id: string; calls: Call[] };\n });\n\n const manage = async (sealed: SealedOwner, params: CreateWalletManageIntentParams): Promise<string> => {\n const intent = await walletIntents(params);\n const { transactionHash } = await run(sealed, intent.calls, params.owner, [intent.id]);\n return transactionHash;\n };\n\n return {\n store: config.store,\n passkey: config.passkey,\n lock,\n\n signerFor(sealed) {\n return {\n address: sealed.address,\n signTypedData: async (data) => {\n const privateKeyHex = await unlockOnce(sealed);\n return signWithPrivateKey(privateKeyHex, starknetTypedData.getMessageHash(data, sealed.address));\n },\n execute: async (calls, opts) => {\n const { transactionHash } = await run(sealed, calls, undefined, opts?.intentIds);\n return { txHash: transactionHash };\n },\n };\n },\n\n run,\n\n getGuardians: (address) => getGuardians(config.provider(), address),\n getEscape: (address) => getEscape(config.provider(), address),\n getEscapeSecurityPeriod: (address) => getEscapeSecurityPeriod(config.provider(), address),\n getOwners: (address) => getOwners(config.provider(), address),\n\n async isOwnerOf(accountAddress, devicePubkey) {\n const owners = await getOwners(config.provider(), accountAddress);\n const guid = BigInt(computeOwnerGuid(devicePubkey));\n return owners.some((owner) => BigInt(owner.guid) === guid);\n },\n\n setFirstGuardian: (sealed, guardianPubkey) => manage(sealed, { owner: sealed.address, action: \"set_first_guardian\", pubkey: guardianPubkey }),\n\n triggerEscapeOwner: (guardianSealed, targetAddress, newOwnerPubkey) =>\n manage(guardianSealed, { owner: normalizeWalletAddress(targetAddress), action: \"trigger_escape\", newOwnerPubkey }),\n\n completeEscapeOwner: (guardianSealed, targetAddress) =>\n manage(guardianSealed, { owner: normalizeWalletAddress(targetAddress), action: \"complete_escape\" }),\n\n cancelEscape: (sealed) => manage(sealed, { owner: sealed.address, action: \"cancel_escape\" }),\n\n addDevice: (sealed, devicePubkey) => manage(sealed, { owner: sealed.address, action: \"add_owner\", pubkey: devicePubkey }),\n\n removeDevice: (sealed, ownerGuid) => manage(sealed, { owner: sealed.address, action: \"remove_owner\", ownerGuid }),\n\n completeDeployment: (onStep, options) => deployments.run(onStep, options),\n isDeploying: () => deployments.isDeploying(),\n };\n}\n","import type { AccountApi } from \"../api/domains/account.js\";\nimport type { CreatedOwner } from \"../wallet/passkey.js\";\nimport type { SealedOwner } from \"../wallet/types.js\";\nimport { normalizeWalletAddress } from \"../wallet/addresses.js\";\n\nexport interface SessionWallet {\n walletAddress: string;\n needsKeySetup: boolean;\n}\n\nexport interface SessionWalletClaimDeps {\n createOwnerKey(): Promise<CreatedOwner>;\n loadOwner(): SealedOwner | null;\n saveOwner(sealed: SealedOwner): void;\n removeOwner(sealed: SealedOwner, ownerGuid: string): Promise<unknown>;\n}\n\nexport async function claimSessionWallet(\n api: { account: Pick<AccountApi, \"setupWalletKey\"> },\n walletAddress: string,\n deps: SessionWalletClaimDeps,\n): Promise<void> {\n const saved = deps.loadOwner();\n const resuming = saved !== null && normalizeWalletAddress(saved.address) === normalizeWalletAddress(walletAddress);\n const sealed = resuming ? saved : { ...(await deps.createOwnerKey()).sealed, address: walletAddress };\n if (!resuming) deps.saveOwner(sealed);\n\n const { removeOwnerGuid } = await api.account.setupWalletKey({ newOwnerPubkey: sealed.ownerPubKey });\n if (removeOwnerGuid) await deps.removeOwner(sealed, removeOwnerGuid);\n}\n","import type { AccountApi } from \"../api/domains/account.js\";\nimport type { CreatedOwner } from \"../wallet/passkey.js\";\nimport type { SealedOwner } from \"../wallet/types.js\";\nimport { normalizeWalletAddress } from \"../wallet/addresses.js\";\nimport { computeOwnerGuid } from \"../starknet/media-wallet/owners.js\";\nimport { UserFacingError } from \"../errors.js\";\n\ntype RecoveryApi = { account: Pick<AccountApi, \"walletRecovery\" | \"startWalletRecovery\" | \"completeWalletRecovery\"> };\n\nexport interface SessionRecoveryDeps {\n createOwnerKey(): Promise<CreatedOwner>;\n loadPending(): SealedOwner | null;\n savePending(sealed: SealedOwner): void;\n clearPending(): void;\n saveOwner(sealed: SealedOwner): void;\n}\n\nconst sameWallet = (a: string, b: string) => normalizeWalletAddress(a) === normalizeWalletAddress(b);\n\nexport async function startSessionRecovery(api: RecoveryApi, walletAddress: string, deps: SessionRecoveryDeps) {\n const saved = deps.loadPending();\n let pending = saved && sameWallet(saved.address, walletAddress) ? saved : null;\n if (!pending) {\n pending = { ...(await deps.createOwnerKey()).sealed, address: walletAddress };\n deps.savePending(pending);\n }\n const current = await api.account.walletRecovery();\n if (current.state !== \"none\" && current.newOwnerGuid !== null && BigInt(current.newOwnerGuid) === BigInt(computeOwnerGuid(pending.ownerPubKey))) {\n return current;\n }\n return api.account.startWalletRecovery({ newOwnerPubkey: pending.ownerPubKey });\n}\n\nexport async function finishSessionRecovery(api: RecoveryApi, walletAddress: string, deps: SessionRecoveryDeps): Promise<void> {\n const saved = deps.loadPending();\n if (!saved || !sameWallet(saved.address, walletAddress)) throw new UserFacingError(\"There is no recovery to finish on this browser\");\n await api.account.completeWalletRecovery({ newOwnerPubkey: saved.ownerPubKey });\n deps.saveOwner(saved);\n deps.clearPending();\n}\n\nexport async function turnOnRecovery(\n api: { account: Pick<AccountApi, \"walletRecovery\"> },\n wallet: { setFirstGuardian(sealed: SealedOwner, guardianPubkey: string): Promise<unknown> },\n sealed: SealedOwner,\n): Promise<void> {\n const status = await api.account.walletRecovery();\n if (status.enabled) return;\n if (!status.guardianPubkey) throw new UserFacingError(\"Recovery is not available right now\");\n await wallet.setFirstGuardian(sealed, status.guardianPubkey);\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMEJ47LC3_cjs = require('../chunk-MEJ47LC3.cjs');
4
- var chunkW3XFKULQ_cjs = require('../chunk-W3XFKULQ.cjs');
4
+ var chunkIE2YYAF5_cjs = require('../chunk-IE2YYAF5.cjs');
5
5
  var chunk3V3L2R5O_cjs = require('../chunk-3V3L2R5O.cjs');
6
6
  var chunkH2NJB3AK_cjs = require('../chunk-H2NJB3AK.cjs');
7
7
  require('../chunk-W76AZ5WC.cjs');
@@ -11729,251 +11729,259 @@ function encodeByteArray(str) {
11729
11729
 
11730
11730
  Object.defineProperty(exports, "GUARDIAN_WALLET_BUSY", {
11731
11731
  enumerable: true,
11732
- get: function () { return chunkW3XFKULQ_cjs.GUARDIAN_WALLET_BUSY; }
11732
+ get: function () { return chunkIE2YYAF5_cjs.GUARDIAN_WALLET_BUSY; }
11733
11733
  });
11734
11734
  Object.defineProperty(exports, "InvalidPairingPayloadError", {
11735
11735
  enumerable: true,
11736
- get: function () { return chunkW3XFKULQ_cjs.InvalidPairingPayloadError; }
11736
+ get: function () { return chunkIE2YYAF5_cjs.InvalidPairingPayloadError; }
11737
11737
  });
11738
11738
  Object.defineProperty(exports, "InvalidRecoveryKeyError", {
11739
11739
  enumerable: true,
11740
- get: function () { return chunkW3XFKULQ_cjs.InvalidRecoveryKeyError; }
11740
+ get: function () { return chunkIE2YYAF5_cjs.InvalidRecoveryKeyError; }
11741
11741
  });
11742
11742
  Object.defineProperty(exports, "InvalidStarkPrivateKeyError", {
11743
11743
  enumerable: true,
11744
- get: function () { return chunkW3XFKULQ_cjs.InvalidStarkPrivateKeyError; }
11744
+ get: function () { return chunkIE2YYAF5_cjs.InvalidStarkPrivateKeyError; }
11745
11745
  });
11746
11746
  Object.defineProperty(exports, "SponsoredCallRejectedError", {
11747
11747
  enumerable: true,
11748
- get: function () { return chunkW3XFKULQ_cjs.SponsoredCallRejectedError; }
11748
+ get: function () { return chunkIE2YYAF5_cjs.SponsoredCallRejectedError; }
11749
+ });
11750
+ Object.defineProperty(exports, "SponsoredDeployError", {
11751
+ enumerable: true,
11752
+ get: function () { return chunkIE2YYAF5_cjs.SponsoredDeployError; }
11749
11753
  });
11750
11754
  Object.defineProperty(exports, "accountFor", {
11751
11755
  enumerable: true,
11752
- get: function () { return chunkW3XFKULQ_cjs.accountFor; }
11756
+ get: function () { return chunkIE2YYAF5_cjs.accountFor; }
11753
11757
  });
11754
11758
  Object.defineProperty(exports, "allowsFallbackFunding", {
11755
11759
  enumerable: true,
11756
- get: function () { return chunkW3XFKULQ_cjs.allowsFallbackFunding; }
11760
+ get: function () { return chunkIE2YYAF5_cjs.allowsFallbackFunding; }
11757
11761
  });
11758
11762
  Object.defineProperty(exports, "buildAddOwnerCall", {
11759
11763
  enumerable: true,
11760
- get: function () { return chunkW3XFKULQ_cjs.buildAddOwnerCall; }
11764
+ get: function () { return chunkIE2YYAF5_cjs.buildAddOwnerCall; }
11761
11765
  });
11762
11766
  Object.defineProperty(exports, "buildCancelEscapeCall", {
11763
11767
  enumerable: true,
11764
- get: function () { return chunkW3XFKULQ_cjs.buildCancelEscapeCall; }
11768
+ get: function () { return chunkIE2YYAF5_cjs.buildCancelEscapeCall; }
11765
11769
  });
11766
11770
  Object.defineProperty(exports, "buildCompleteEscapeOwnerCall", {
11767
11771
  enumerable: true,
11768
- get: function () { return chunkW3XFKULQ_cjs.buildCompleteEscapeOwnerCall; }
11772
+ get: function () { return chunkIE2YYAF5_cjs.buildCompleteEscapeOwnerCall; }
11769
11773
  });
11770
11774
  Object.defineProperty(exports, "buildDeployAccountParams", {
11771
11775
  enumerable: true,
11772
- get: function () { return chunkW3XFKULQ_cjs.buildDeployAccountParams; }
11776
+ get: function () { return chunkIE2YYAF5_cjs.buildDeployAccountParams; }
11773
11777
  });
11774
11778
  Object.defineProperty(exports, "buildRemoveOwnerByGuidCall", {
11775
11779
  enumerable: true,
11776
- get: function () { return chunkW3XFKULQ_cjs.buildRemoveOwnerByGuidCall; }
11780
+ get: function () { return chunkIE2YYAF5_cjs.buildRemoveOwnerByGuidCall; }
11777
11781
  });
11778
11782
  Object.defineProperty(exports, "buildRemoveOwnerCall", {
11779
11783
  enumerable: true,
11780
- get: function () { return chunkW3XFKULQ_cjs.buildRemoveOwnerCall; }
11784
+ get: function () { return chunkIE2YYAF5_cjs.buildRemoveOwnerCall; }
11781
11785
  });
11782
11786
  Object.defineProperty(exports, "buildSetFirstGuardianCall", {
11783
11787
  enumerable: true,
11784
- get: function () { return chunkW3XFKULQ_cjs.buildSetFirstGuardianCall; }
11788
+ get: function () { return chunkIE2YYAF5_cjs.buildSetFirstGuardianCall; }
11785
11789
  });
11786
11790
  Object.defineProperty(exports, "buildTriggerEscapeOwnerCall", {
11787
11791
  enumerable: true,
11788
- get: function () { return chunkW3XFKULQ_cjs.buildTriggerEscapeOwnerCall; }
11792
+ get: function () { return chunkIE2YYAF5_cjs.buildTriggerEscapeOwnerCall; }
11789
11793
  });
11790
11794
  Object.defineProperty(exports, "canRemoveDevice", {
11791
11795
  enumerable: true,
11792
- get: function () { return chunkW3XFKULQ_cjs.canRemoveDevice; }
11796
+ get: function () { return chunkIE2YYAF5_cjs.canRemoveDevice; }
11793
11797
  });
11794
11798
  Object.defineProperty(exports, "claimSessionWallet", {
11795
11799
  enumerable: true,
11796
- get: function () { return chunkW3XFKULQ_cjs.claimSessionWallet; }
11800
+ get: function () { return chunkIE2YYAF5_cjs.claimSessionWallet; }
11797
11801
  });
11798
11802
  Object.defineProperty(exports, "completeDeployment", {
11799
11803
  enumerable: true,
11800
- get: function () { return chunkW3XFKULQ_cjs.completeDeployment; }
11804
+ get: function () { return chunkIE2YYAF5_cjs.completeDeployment; }
11801
11805
  });
11802
11806
  Object.defineProperty(exports, "computeAccountAddress", {
11803
11807
  enumerable: true,
11804
- get: function () { return chunkW3XFKULQ_cjs.computeAccountAddress; }
11808
+ get: function () { return chunkIE2YYAF5_cjs.computeAccountAddress; }
11805
11809
  });
11806
11810
  Object.defineProperty(exports, "computeOwnerGuid", {
11807
11811
  enumerable: true,
11808
- get: function () { return chunkW3XFKULQ_cjs.computeOwnerGuid; }
11812
+ get: function () { return chunkIE2YYAF5_cjs.computeOwnerGuid; }
11809
11813
  });
11810
11814
  Object.defineProperty(exports, "createDeploymentCoordinator", {
11811
11815
  enumerable: true,
11812
- get: function () { return chunkW3XFKULQ_cjs.createDeploymentCoordinator; }
11816
+ get: function () { return chunkIE2YYAF5_cjs.createDeploymentCoordinator; }
11813
11817
  });
11814
11818
  Object.defineProperty(exports, "createMediaWallet", {
11815
11819
  enumerable: true,
11816
- get: function () { return chunkW3XFKULQ_cjs.createMediaWallet; }
11820
+ get: function () { return chunkIE2YYAF5_cjs.createMediaWallet; }
11817
11821
  });
11818
11822
  Object.defineProperty(exports, "createOwnerStore", {
11819
11823
  enumerable: true,
11820
- get: function () { return chunkW3XFKULQ_cjs.createOwnerStore; }
11824
+ get: function () { return chunkIE2YYAF5_cjs.createOwnerStore; }
11821
11825
  });
11822
11826
  Object.defineProperty(exports, "createPasskeyOwner", {
11823
11827
  enumerable: true,
11824
- get: function () { return chunkW3XFKULQ_cjs.createPasskeyOwner; }
11828
+ get: function () { return chunkIE2YYAF5_cjs.createPasskeyOwner; }
11825
11829
  });
11826
11830
  Object.defineProperty(exports, "createSelfFundConsent", {
11827
11831
  enumerable: true,
11828
- get: function () { return chunkW3XFKULQ_cjs.createSelfFundConsent; }
11832
+ get: function () { return chunkIE2YYAF5_cjs.createSelfFundConsent; }
11829
11833
  });
11830
11834
  Object.defineProperty(exports, "decodeEscapeAndStatus", {
11831
11835
  enumerable: true,
11832
- get: function () { return chunkW3XFKULQ_cjs.decodeEscapeAndStatus; }
11836
+ get: function () { return chunkIE2YYAF5_cjs.decodeEscapeAndStatus; }
11833
11837
  });
11834
11838
  Object.defineProperty(exports, "decodeGuardiansInfo", {
11835
11839
  enumerable: true,
11836
- get: function () { return chunkW3XFKULQ_cjs.decodeGuardiansInfo; }
11840
+ get: function () { return chunkIE2YYAF5_cjs.decodeGuardiansInfo; }
11837
11841
  });
11838
11842
  Object.defineProperty(exports, "deploySelfFunded", {
11839
11843
  enumerable: true,
11840
- get: function () { return chunkW3XFKULQ_cjs.deploySelfFunded; }
11844
+ get: function () { return chunkIE2YYAF5_cjs.deploySelfFunded; }
11841
11845
  });
11842
11846
  Object.defineProperty(exports, "deploySponsored", {
11843
11847
  enumerable: true,
11844
- get: function () { return chunkW3XFKULQ_cjs.deploySponsored; }
11848
+ get: function () { return chunkIE2YYAF5_cjs.deploySponsored; }
11845
11849
  });
11846
11850
  Object.defineProperty(exports, "deriveAesKey", {
11847
11851
  enumerable: true,
11848
- get: function () { return chunkW3XFKULQ_cjs.deriveAesKey; }
11852
+ get: function () { return chunkIE2YYAF5_cjs.deriveAesKey; }
11849
11853
  });
11850
11854
  Object.defineProperty(exports, "deriveOwnerKeyPair", {
11851
11855
  enumerable: true,
11852
- get: function () { return chunkW3XFKULQ_cjs.deriveOwnerKeyPair; }
11856
+ get: function () { return chunkIE2YYAF5_cjs.deriveOwnerKeyPair; }
11853
11857
  });
11854
11858
  Object.defineProperty(exports, "describeDevices", {
11855
11859
  enumerable: true,
11856
- get: function () { return chunkW3XFKULQ_cjs.describeDevices; }
11860
+ get: function () { return chunkIE2YYAF5_cjs.describeDevices; }
11857
11861
  });
11858
11862
  Object.defineProperty(exports, "describeGuardianStatus", {
11859
11863
  enumerable: true,
11860
- get: function () { return chunkW3XFKULQ_cjs.describeGuardianStatus; }
11864
+ get: function () { return chunkIE2YYAF5_cjs.describeGuardianStatus; }
11861
11865
  });
11862
11866
  Object.defineProperty(exports, "describeRecoveryAction", {
11863
11867
  enumerable: true,
11864
- get: function () { return chunkW3XFKULQ_cjs.describeRecoveryAction; }
11868
+ get: function () { return chunkIE2YYAF5_cjs.describeRecoveryAction; }
11865
11869
  });
11866
11870
  Object.defineProperty(exports, "encodePairingPayload", {
11867
11871
  enumerable: true,
11868
- get: function () { return chunkW3XFKULQ_cjs.encodePairingPayload; }
11872
+ get: function () { return chunkIE2YYAF5_cjs.encodePairingPayload; }
11869
11873
  });
11870
11874
  Object.defineProperty(exports, "encodeRecoveryKey", {
11871
11875
  enumerable: true,
11872
- get: function () { return chunkW3XFKULQ_cjs.encodeRecoveryKey; }
11876
+ get: function () { return chunkIE2YYAF5_cjs.encodeRecoveryKey; }
11873
11877
  });
11874
11878
  Object.defineProperty(exports, "erc20Balance", {
11875
11879
  enumerable: true,
11876
- get: function () { return chunkW3XFKULQ_cjs.erc20Balance; }
11880
+ get: function () { return chunkIE2YYAF5_cjs.erc20Balance; }
11877
11881
  });
11878
11882
  Object.defineProperty(exports, "estimateSelfFundedFee", {
11879
11883
  enumerable: true,
11880
- get: function () { return chunkW3XFKULQ_cjs.estimateSelfFundedFee; }
11884
+ get: function () { return chunkIE2YYAF5_cjs.estimateSelfFundedFee; }
11881
11885
  });
11882
11886
  Object.defineProperty(exports, "executeSponsored", {
11883
11887
  enumerable: true,
11884
- get: function () { return chunkW3XFKULQ_cjs.executeSponsored; }
11888
+ get: function () { return chunkIE2YYAF5_cjs.executeSponsored; }
11885
11889
  });
11886
11890
  Object.defineProperty(exports, "finishSessionRecovery", {
11887
11891
  enumerable: true,
11888
- get: function () { return chunkW3XFKULQ_cjs.finishSessionRecovery; }
11892
+ get: function () { return chunkIE2YYAF5_cjs.finishSessionRecovery; }
11889
11893
  });
11890
11894
  Object.defineProperty(exports, "generateStarkKeyPair", {
11891
11895
  enumerable: true,
11892
- get: function () { return chunkW3XFKULQ_cjs.generateStarkKeyPair; }
11896
+ get: function () { return chunkIE2YYAF5_cjs.generateStarkKeyPair; }
11893
11897
  });
11894
11898
  Object.defineProperty(exports, "getEscape", {
11895
11899
  enumerable: true,
11896
- get: function () { return chunkW3XFKULQ_cjs.getEscape; }
11900
+ get: function () { return chunkIE2YYAF5_cjs.getEscape; }
11897
11901
  });
11898
11902
  Object.defineProperty(exports, "getEscapeSecurityPeriod", {
11899
11903
  enumerable: true,
11900
- get: function () { return chunkW3XFKULQ_cjs.getEscapeSecurityPeriod; }
11904
+ get: function () { return chunkIE2YYAF5_cjs.getEscapeSecurityPeriod; }
11901
11905
  });
11902
11906
  Object.defineProperty(exports, "getGuardians", {
11903
11907
  enumerable: true,
11904
- get: function () { return chunkW3XFKULQ_cjs.getGuardians; }
11908
+ get: function () { return chunkIE2YYAF5_cjs.getGuardians; }
11905
11909
  });
11906
11910
  Object.defineProperty(exports, "getOwners", {
11907
11911
  enumerable: true,
11908
- get: function () { return chunkW3XFKULQ_cjs.getOwners; }
11912
+ get: function () { return chunkIE2YYAF5_cjs.getOwners; }
11909
11913
  });
11910
11914
  Object.defineProperty(exports, "indexedDbDeviceKeys", {
11911
11915
  enumerable: true,
11912
- get: function () { return chunkW3XFKULQ_cjs.indexedDbDeviceKeys; }
11916
+ get: function () { return chunkIE2YYAF5_cjs.indexedDbDeviceKeys; }
11917
+ });
11918
+ Object.defineProperty(exports, "isAccountRefusal", {
11919
+ enumerable: true,
11920
+ get: function () { return chunkIE2YYAF5_cjs.isAccountRefusal; }
11913
11921
  });
11914
11922
  Object.defineProperty(exports, "isDeployed", {
11915
11923
  enumerable: true,
11916
- get: function () { return chunkW3XFKULQ_cjs.isDeployed; }
11924
+ get: function () { return chunkIE2YYAF5_cjs.isDeployed; }
11917
11925
  });
11918
11926
  Object.defineProperty(exports, "isValidStarknetAddress", {
11919
11927
  enumerable: true,
11920
- get: function () { return chunkW3XFKULQ_cjs.isValidStarknetAddress; }
11928
+ get: function () { return chunkIE2YYAF5_cjs.isValidStarknetAddress; }
11921
11929
  });
11922
11930
  Object.defineProperty(exports, "normalizeWalletAddress", {
11923
11931
  enumerable: true,
11924
- get: function () { return chunkW3XFKULQ_cjs.normalizeWalletAddress; }
11932
+ get: function () { return chunkIE2YYAF5_cjs.normalizeWalletAddress; }
11925
11933
  });
11926
11934
  Object.defineProperty(exports, "ownerConstructorCalldata", {
11927
11935
  enumerable: true,
11928
- get: function () { return chunkW3XFKULQ_cjs.ownerConstructorCalldata; }
11936
+ get: function () { return chunkIE2YYAF5_cjs.ownerConstructorCalldata; }
11929
11937
  });
11930
11938
  Object.defineProperty(exports, "parseAccountAddress", {
11931
11939
  enumerable: true,
11932
- get: function () { return chunkW3XFKULQ_cjs.parseAccountAddress; }
11940
+ get: function () { return chunkIE2YYAF5_cjs.parseAccountAddress; }
11933
11941
  });
11934
11942
  Object.defineProperty(exports, "parsePairingPayload", {
11935
11943
  enumerable: true,
11936
- get: function () { return chunkW3XFKULQ_cjs.parsePairingPayload; }
11944
+ get: function () { return chunkIE2YYAF5_cjs.parsePairingPayload; }
11937
11945
  });
11938
11946
  Object.defineProperty(exports, "parseRecoveryKey", {
11939
11947
  enumerable: true,
11940
- get: function () { return chunkW3XFKULQ_cjs.parseRecoveryKey; }
11948
+ get: function () { return chunkIE2YYAF5_cjs.parseRecoveryKey; }
11941
11949
  });
11942
11950
  Object.defineProperty(exports, "sealPrivateKey", {
11943
11951
  enumerable: true,
11944
- get: function () { return chunkW3XFKULQ_cjs.sealPrivateKey; }
11952
+ get: function () { return chunkIE2YYAF5_cjs.sealPrivateKey; }
11945
11953
  });
11946
11954
  Object.defineProperty(exports, "selfFundedExecutor", {
11947
11955
  enumerable: true,
11948
- get: function () { return chunkW3XFKULQ_cjs.selfFundedExecutor; }
11956
+ get: function () { return chunkIE2YYAF5_cjs.selfFundedExecutor; }
11949
11957
  });
11950
11958
  Object.defineProperty(exports, "signWithPrivateKey", {
11951
11959
  enumerable: true,
11952
- get: function () { return chunkW3XFKULQ_cjs.signWithPrivateKey; }
11960
+ get: function () { return chunkIE2YYAF5_cjs.signWithPrivateKey; }
11953
11961
  });
11954
11962
  Object.defineProperty(exports, "sponsoredExecutor", {
11955
11963
  enumerable: true,
11956
- get: function () { return chunkW3XFKULQ_cjs.sponsoredExecutor; }
11964
+ get: function () { return chunkIE2YYAF5_cjs.sponsoredExecutor; }
11957
11965
  });
11958
11966
  Object.defineProperty(exports, "starkKeyPairFromPrivateKey", {
11959
11967
  enumerable: true,
11960
- get: function () { return chunkW3XFKULQ_cjs.starkKeyPairFromPrivateKey; }
11968
+ get: function () { return chunkIE2YYAF5_cjs.starkKeyPairFromPrivateKey; }
11961
11969
  });
11962
11970
  Object.defineProperty(exports, "startSessionRecovery", {
11963
11971
  enumerable: true,
11964
- get: function () { return chunkW3XFKULQ_cjs.startSessionRecovery; }
11972
+ get: function () { return chunkIE2YYAF5_cjs.startSessionRecovery; }
11965
11973
  });
11966
11974
  Object.defineProperty(exports, "turnOnRecovery", {
11967
11975
  enumerable: true,
11968
- get: function () { return chunkW3XFKULQ_cjs.turnOnRecovery; }
11976
+ get: function () { return chunkIE2YYAF5_cjs.turnOnRecovery; }
11969
11977
  });
11970
11978
  Object.defineProperty(exports, "unsealPrivateKey", {
11971
11979
  enumerable: true,
11972
- get: function () { return chunkW3XFKULQ_cjs.unsealPrivateKey; }
11980
+ get: function () { return chunkIE2YYAF5_cjs.unsealPrivateKey; }
11973
11981
  });
11974
11982
  Object.defineProperty(exports, "waitUntilDeployed", {
11975
11983
  enumerable: true,
11976
- get: function () { return chunkW3XFKULQ_cjs.waitUntilDeployed; }
11984
+ get: function () { return chunkIE2YYAF5_cjs.waitUntilDeployed; }
11977
11985
  });
11978
11986
  Object.defineProperty(exports, "DeviceKeyMissingError", {
11979
11987
  enumerable: true,
@@ -6,7 +6,7 @@ import { b as VenueSigner, V as VenueAdapter, O as OrderRef, A as AdapterTxResul
6
6
  import { I as ApiFundingInstructions, O as ApiIntentCreated } from '../passkey-errors-BcJWGxSV.cjs';
7
7
  export { ba as DeviceKeyMissingError, bt as PasskeyCancelledError, bu as PasskeyUnsupportedError, bv as PasskeyUnsupportedReason } from '../passkey-errors-BcJWGxSV.cjs';
8
8
  import { F as FetchLike } from '../fetch-Cx9Pr7-B.cjs';
9
- export { CreatedOwner, DeploymentCoordinator, DeploymentDeps, DeploymentResult, DeploymentStep, DeviceEntry, DeviceKeyStore, EscapeInfo, EscapeStatusName, EscapeTypeName, ExecutedTransaction, GUARDIAN_WALLET_BUSY, GuardianInfo, GuardianStatus, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, MediaWallet, MediaWalletConfig, OwnerSigner, OwnerStore, PairingPayload, PasskeyConfig, PasskeyOwner, ReceiptProviderLike, RecoveryAction, RecoveryKey, SealedOwner, SelfFundConsent, SelfFundConsentHandler, SelfFundFeeEstimate, SelfFundedDeps, SessionRecoveryDeps, SessionWallet, SessionWalletClaimDeps, SponsoredDeps, WalletExecutor, accountFor, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, estimateSelfFundedFee, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../wallet/index.cjs';
9
+ export { CreatedOwner, DeploymentCoordinator, DeploymentDeps, DeploymentResult, DeploymentStep, DeviceEntry, DeviceKeyStore, EscapeInfo, EscapeStatusName, EscapeTypeName, ExecutedTransaction, GUARDIAN_WALLET_BUSY, GuardianInfo, GuardianStatus, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, MediaWallet, MediaWalletConfig, OwnerSigner, OwnerStore, PairingPayload, PasskeyConfig, PasskeyOwner, ReceiptProviderLike, RecoveryAction, RecoveryKey, SealedOwner, SelfFundConsent, SelfFundConsentHandler, SelfFundFeeEstimate, SelfFundedDeps, SessionRecoveryDeps, SessionWallet, SessionWalletClaimDeps, SponsoredDeployError, SponsoredDeps, WalletExecutor, accountFor, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, estimateSelfFundedFee, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isAccountRefusal, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../wallet/index.cjs';
10
10
  import 'zod';
11
11
  import '../chains-CmwjZVU7.cjs';
12
12
  import '../responses-BpnS-Io9.cjs';
@@ -6,7 +6,7 @@ import { b as VenueSigner, V as VenueAdapter, O as OrderRef, A as AdapterTxResul
6
6
  import { I as ApiFundingInstructions, O as ApiIntentCreated } from '../passkey-errors-BXclgAtu.js';
7
7
  export { ba as DeviceKeyMissingError, bt as PasskeyCancelledError, bu as PasskeyUnsupportedError, bv as PasskeyUnsupportedReason } from '../passkey-errors-BXclgAtu.js';
8
8
  import { F as FetchLike } from '../fetch-Cx9Pr7-B.js';
9
- export { CreatedOwner, DeploymentCoordinator, DeploymentDeps, DeploymentResult, DeploymentStep, DeviceEntry, DeviceKeyStore, EscapeInfo, EscapeStatusName, EscapeTypeName, ExecutedTransaction, GUARDIAN_WALLET_BUSY, GuardianInfo, GuardianStatus, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, MediaWallet, MediaWalletConfig, OwnerSigner, OwnerStore, PairingPayload, PasskeyConfig, PasskeyOwner, ReceiptProviderLike, RecoveryAction, RecoveryKey, SealedOwner, SelfFundConsent, SelfFundConsentHandler, SelfFundFeeEstimate, SelfFundedDeps, SessionRecoveryDeps, SessionWallet, SessionWalletClaimDeps, SponsoredDeps, WalletExecutor, accountFor, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, estimateSelfFundedFee, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../wallet/index.js';
9
+ export { CreatedOwner, DeploymentCoordinator, DeploymentDeps, DeploymentResult, DeploymentStep, DeviceEntry, DeviceKeyStore, EscapeInfo, EscapeStatusName, EscapeTypeName, ExecutedTransaction, GUARDIAN_WALLET_BUSY, GuardianInfo, GuardianStatus, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, MediaWallet, MediaWalletConfig, OwnerSigner, OwnerStore, PairingPayload, PasskeyConfig, PasskeyOwner, ReceiptProviderLike, RecoveryAction, RecoveryKey, SealedOwner, SelfFundConsent, SelfFundConsentHandler, SelfFundFeeEstimate, SelfFundedDeps, SessionRecoveryDeps, SessionWallet, SessionWalletClaimDeps, SponsoredDeployError, SponsoredDeps, WalletExecutor, accountFor, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, estimateSelfFundedFee, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isAccountRefusal, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../wallet/index.js';
10
10
  import 'zod';
11
11
  import '../chains-CmwjZVU7.js';
12
12
  import '../responses-BpnS-Io9.js';
@@ -1,5 +1,5 @@
1
1
  import { resolveConfig, getService, collectionHref, dropHref, stringifyBigInts } from '../chunk-GV4A2WNO.js';
2
- export { GUARDIAN_WALLET_BUSY, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, SponsoredCallRejectedError, accountFor, allowsFallbackFunding, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, erc20Balance, estimateSelfFundedFee, executeSponsored, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../chunk-BFG3VTJQ.js';
2
+ export { GUARDIAN_WALLET_BUSY, InvalidPairingPayloadError, InvalidRecoveryKeyError, InvalidStarkPrivateKeyError, SponsoredCallRejectedError, SponsoredDeployError, accountFor, allowsFallbackFunding, buildAddOwnerCall, buildCancelEscapeCall, buildCompleteEscapeOwnerCall, buildDeployAccountParams, buildRemoveOwnerByGuidCall, buildRemoveOwnerCall, buildSetFirstGuardianCall, buildTriggerEscapeOwnerCall, canRemoveDevice, claimSessionWallet, completeDeployment, computeAccountAddress, computeOwnerGuid, createDeploymentCoordinator, createMediaWallet, createOwnerStore, createPasskeyOwner, createSelfFundConsent, decodeEscapeAndStatus, decodeGuardiansInfo, deploySelfFunded, deploySponsored, deriveAesKey, deriveOwnerKeyPair, describeDevices, describeGuardianStatus, describeRecoveryAction, encodePairingPayload, encodeRecoveryKey, erc20Balance, estimateSelfFundedFee, executeSponsored, finishSessionRecovery, generateStarkKeyPair, getEscape, getEscapeSecurityPeriod, getGuardians, getOwners, indexedDbDeviceKeys, isAccountRefusal, isDeployed, isValidStarknetAddress, normalizeWalletAddress, ownerConstructorCalldata, parseAccountAddress, parsePairingPayload, parseRecoveryKey, sealPrivateKey, selfFundedExecutor, signWithPrivateKey, sponsoredExecutor, starkKeyPairFromPrivateKey, startSessionRecovery, turnOnRecovery, unsealPrivateKey, waitUntilDeployed } from '../chunk-PVU5AYOO.js';
3
3
  import { ApiClient, UserFacingError, normalizeAddress, SUPPORTED_TOKENS, MedialaneError, MedialaneApiError } from '../chunk-3SIT2PCD.js';
4
4
  export { DeviceKeyMissingError, MedialaneError, PasskeyCancelledError, PasskeyUnsupportedError, UserFacingError } from '../chunk-3SIT2PCD.js';
5
5
  import { getStarknetCoordinates } from '../chunk-5KY6P434.js';