@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.
- package/dist/{chunk-W3XFKULQ.cjs → chunk-IE2YYAF5.cjs} +36 -10
- package/dist/chunk-IE2YYAF5.cjs.map +1 -0
- package/dist/{chunk-BFG3VTJQ.js → chunk-PVU5AYOO.js} +35 -11
- package/dist/chunk-PVU5AYOO.js.map +1 -0
- package/dist/starknet/index.cjs +71 -63
- package/dist/starknet/index.d.cts +1 -1
- package/dist/starknet/index.d.ts +1 -1
- package/dist/starknet/index.js +1 -1
- package/dist/wallet/index.cjs +67 -59
- package/dist/wallet/index.d.cts +15 -5
- package/dist/wallet/index.d.ts +15 -5
- package/dist/wallet/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-BFG3VTJQ.js.map +0 -1
- package/dist/chunk-W3XFKULQ.cjs.map +0 -1
|
@@ -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"]}
|
package/dist/starknet/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkMEJ47LC3_cjs = require('../chunk-MEJ47LC3.cjs');
|
|
4
|
-
var
|
|
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
|
|
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
|
|
11736
|
+
get: function () { return chunkIE2YYAF5_cjs.InvalidPairingPayloadError; }
|
|
11737
11737
|
});
|
|
11738
11738
|
Object.defineProperty(exports, "InvalidRecoveryKeyError", {
|
|
11739
11739
|
enumerable: true,
|
|
11740
|
-
get: function () { return
|
|
11740
|
+
get: function () { return chunkIE2YYAF5_cjs.InvalidRecoveryKeyError; }
|
|
11741
11741
|
});
|
|
11742
11742
|
Object.defineProperty(exports, "InvalidStarkPrivateKeyError", {
|
|
11743
11743
|
enumerable: true,
|
|
11744
|
-
get: function () { return
|
|
11744
|
+
get: function () { return chunkIE2YYAF5_cjs.InvalidStarkPrivateKeyError; }
|
|
11745
11745
|
});
|
|
11746
11746
|
Object.defineProperty(exports, "SponsoredCallRejectedError", {
|
|
11747
11747
|
enumerable: true,
|
|
11748
|
-
get: function () { return
|
|
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
|
|
11756
|
+
get: function () { return chunkIE2YYAF5_cjs.accountFor; }
|
|
11753
11757
|
});
|
|
11754
11758
|
Object.defineProperty(exports, "allowsFallbackFunding", {
|
|
11755
11759
|
enumerable: true,
|
|
11756
|
-
get: function () { return
|
|
11760
|
+
get: function () { return chunkIE2YYAF5_cjs.allowsFallbackFunding; }
|
|
11757
11761
|
});
|
|
11758
11762
|
Object.defineProperty(exports, "buildAddOwnerCall", {
|
|
11759
11763
|
enumerable: true,
|
|
11760
|
-
get: function () { return
|
|
11764
|
+
get: function () { return chunkIE2YYAF5_cjs.buildAddOwnerCall; }
|
|
11761
11765
|
});
|
|
11762
11766
|
Object.defineProperty(exports, "buildCancelEscapeCall", {
|
|
11763
11767
|
enumerable: true,
|
|
11764
|
-
get: function () { return
|
|
11768
|
+
get: function () { return chunkIE2YYAF5_cjs.buildCancelEscapeCall; }
|
|
11765
11769
|
});
|
|
11766
11770
|
Object.defineProperty(exports, "buildCompleteEscapeOwnerCall", {
|
|
11767
11771
|
enumerable: true,
|
|
11768
|
-
get: function () { return
|
|
11772
|
+
get: function () { return chunkIE2YYAF5_cjs.buildCompleteEscapeOwnerCall; }
|
|
11769
11773
|
});
|
|
11770
11774
|
Object.defineProperty(exports, "buildDeployAccountParams", {
|
|
11771
11775
|
enumerable: true,
|
|
11772
|
-
get: function () { return
|
|
11776
|
+
get: function () { return chunkIE2YYAF5_cjs.buildDeployAccountParams; }
|
|
11773
11777
|
});
|
|
11774
11778
|
Object.defineProperty(exports, "buildRemoveOwnerByGuidCall", {
|
|
11775
11779
|
enumerable: true,
|
|
11776
|
-
get: function () { return
|
|
11780
|
+
get: function () { return chunkIE2YYAF5_cjs.buildRemoveOwnerByGuidCall; }
|
|
11777
11781
|
});
|
|
11778
11782
|
Object.defineProperty(exports, "buildRemoveOwnerCall", {
|
|
11779
11783
|
enumerable: true,
|
|
11780
|
-
get: function () { return
|
|
11784
|
+
get: function () { return chunkIE2YYAF5_cjs.buildRemoveOwnerCall; }
|
|
11781
11785
|
});
|
|
11782
11786
|
Object.defineProperty(exports, "buildSetFirstGuardianCall", {
|
|
11783
11787
|
enumerable: true,
|
|
11784
|
-
get: function () { return
|
|
11788
|
+
get: function () { return chunkIE2YYAF5_cjs.buildSetFirstGuardianCall; }
|
|
11785
11789
|
});
|
|
11786
11790
|
Object.defineProperty(exports, "buildTriggerEscapeOwnerCall", {
|
|
11787
11791
|
enumerable: true,
|
|
11788
|
-
get: function () { return
|
|
11792
|
+
get: function () { return chunkIE2YYAF5_cjs.buildTriggerEscapeOwnerCall; }
|
|
11789
11793
|
});
|
|
11790
11794
|
Object.defineProperty(exports, "canRemoveDevice", {
|
|
11791
11795
|
enumerable: true,
|
|
11792
|
-
get: function () { return
|
|
11796
|
+
get: function () { return chunkIE2YYAF5_cjs.canRemoveDevice; }
|
|
11793
11797
|
});
|
|
11794
11798
|
Object.defineProperty(exports, "claimSessionWallet", {
|
|
11795
11799
|
enumerable: true,
|
|
11796
|
-
get: function () { return
|
|
11800
|
+
get: function () { return chunkIE2YYAF5_cjs.claimSessionWallet; }
|
|
11797
11801
|
});
|
|
11798
11802
|
Object.defineProperty(exports, "completeDeployment", {
|
|
11799
11803
|
enumerable: true,
|
|
11800
|
-
get: function () { return
|
|
11804
|
+
get: function () { return chunkIE2YYAF5_cjs.completeDeployment; }
|
|
11801
11805
|
});
|
|
11802
11806
|
Object.defineProperty(exports, "computeAccountAddress", {
|
|
11803
11807
|
enumerable: true,
|
|
11804
|
-
get: function () { return
|
|
11808
|
+
get: function () { return chunkIE2YYAF5_cjs.computeAccountAddress; }
|
|
11805
11809
|
});
|
|
11806
11810
|
Object.defineProperty(exports, "computeOwnerGuid", {
|
|
11807
11811
|
enumerable: true,
|
|
11808
|
-
get: function () { return
|
|
11812
|
+
get: function () { return chunkIE2YYAF5_cjs.computeOwnerGuid; }
|
|
11809
11813
|
});
|
|
11810
11814
|
Object.defineProperty(exports, "createDeploymentCoordinator", {
|
|
11811
11815
|
enumerable: true,
|
|
11812
|
-
get: function () { return
|
|
11816
|
+
get: function () { return chunkIE2YYAF5_cjs.createDeploymentCoordinator; }
|
|
11813
11817
|
});
|
|
11814
11818
|
Object.defineProperty(exports, "createMediaWallet", {
|
|
11815
11819
|
enumerable: true,
|
|
11816
|
-
get: function () { return
|
|
11820
|
+
get: function () { return chunkIE2YYAF5_cjs.createMediaWallet; }
|
|
11817
11821
|
});
|
|
11818
11822
|
Object.defineProperty(exports, "createOwnerStore", {
|
|
11819
11823
|
enumerable: true,
|
|
11820
|
-
get: function () { return
|
|
11824
|
+
get: function () { return chunkIE2YYAF5_cjs.createOwnerStore; }
|
|
11821
11825
|
});
|
|
11822
11826
|
Object.defineProperty(exports, "createPasskeyOwner", {
|
|
11823
11827
|
enumerable: true,
|
|
11824
|
-
get: function () { return
|
|
11828
|
+
get: function () { return chunkIE2YYAF5_cjs.createPasskeyOwner; }
|
|
11825
11829
|
});
|
|
11826
11830
|
Object.defineProperty(exports, "createSelfFundConsent", {
|
|
11827
11831
|
enumerable: true,
|
|
11828
|
-
get: function () { return
|
|
11832
|
+
get: function () { return chunkIE2YYAF5_cjs.createSelfFundConsent; }
|
|
11829
11833
|
});
|
|
11830
11834
|
Object.defineProperty(exports, "decodeEscapeAndStatus", {
|
|
11831
11835
|
enumerable: true,
|
|
11832
|
-
get: function () { return
|
|
11836
|
+
get: function () { return chunkIE2YYAF5_cjs.decodeEscapeAndStatus; }
|
|
11833
11837
|
});
|
|
11834
11838
|
Object.defineProperty(exports, "decodeGuardiansInfo", {
|
|
11835
11839
|
enumerable: true,
|
|
11836
|
-
get: function () { return
|
|
11840
|
+
get: function () { return chunkIE2YYAF5_cjs.decodeGuardiansInfo; }
|
|
11837
11841
|
});
|
|
11838
11842
|
Object.defineProperty(exports, "deploySelfFunded", {
|
|
11839
11843
|
enumerable: true,
|
|
11840
|
-
get: function () { return
|
|
11844
|
+
get: function () { return chunkIE2YYAF5_cjs.deploySelfFunded; }
|
|
11841
11845
|
});
|
|
11842
11846
|
Object.defineProperty(exports, "deploySponsored", {
|
|
11843
11847
|
enumerable: true,
|
|
11844
|
-
get: function () { return
|
|
11848
|
+
get: function () { return chunkIE2YYAF5_cjs.deploySponsored; }
|
|
11845
11849
|
});
|
|
11846
11850
|
Object.defineProperty(exports, "deriveAesKey", {
|
|
11847
11851
|
enumerable: true,
|
|
11848
|
-
get: function () { return
|
|
11852
|
+
get: function () { return chunkIE2YYAF5_cjs.deriveAesKey; }
|
|
11849
11853
|
});
|
|
11850
11854
|
Object.defineProperty(exports, "deriveOwnerKeyPair", {
|
|
11851
11855
|
enumerable: true,
|
|
11852
|
-
get: function () { return
|
|
11856
|
+
get: function () { return chunkIE2YYAF5_cjs.deriveOwnerKeyPair; }
|
|
11853
11857
|
});
|
|
11854
11858
|
Object.defineProperty(exports, "describeDevices", {
|
|
11855
11859
|
enumerable: true,
|
|
11856
|
-
get: function () { return
|
|
11860
|
+
get: function () { return chunkIE2YYAF5_cjs.describeDevices; }
|
|
11857
11861
|
});
|
|
11858
11862
|
Object.defineProperty(exports, "describeGuardianStatus", {
|
|
11859
11863
|
enumerable: true,
|
|
11860
|
-
get: function () { return
|
|
11864
|
+
get: function () { return chunkIE2YYAF5_cjs.describeGuardianStatus; }
|
|
11861
11865
|
});
|
|
11862
11866
|
Object.defineProperty(exports, "describeRecoveryAction", {
|
|
11863
11867
|
enumerable: true,
|
|
11864
|
-
get: function () { return
|
|
11868
|
+
get: function () { return chunkIE2YYAF5_cjs.describeRecoveryAction; }
|
|
11865
11869
|
});
|
|
11866
11870
|
Object.defineProperty(exports, "encodePairingPayload", {
|
|
11867
11871
|
enumerable: true,
|
|
11868
|
-
get: function () { return
|
|
11872
|
+
get: function () { return chunkIE2YYAF5_cjs.encodePairingPayload; }
|
|
11869
11873
|
});
|
|
11870
11874
|
Object.defineProperty(exports, "encodeRecoveryKey", {
|
|
11871
11875
|
enumerable: true,
|
|
11872
|
-
get: function () { return
|
|
11876
|
+
get: function () { return chunkIE2YYAF5_cjs.encodeRecoveryKey; }
|
|
11873
11877
|
});
|
|
11874
11878
|
Object.defineProperty(exports, "erc20Balance", {
|
|
11875
11879
|
enumerable: true,
|
|
11876
|
-
get: function () { return
|
|
11880
|
+
get: function () { return chunkIE2YYAF5_cjs.erc20Balance; }
|
|
11877
11881
|
});
|
|
11878
11882
|
Object.defineProperty(exports, "estimateSelfFundedFee", {
|
|
11879
11883
|
enumerable: true,
|
|
11880
|
-
get: function () { return
|
|
11884
|
+
get: function () { return chunkIE2YYAF5_cjs.estimateSelfFundedFee; }
|
|
11881
11885
|
});
|
|
11882
11886
|
Object.defineProperty(exports, "executeSponsored", {
|
|
11883
11887
|
enumerable: true,
|
|
11884
|
-
get: function () { return
|
|
11888
|
+
get: function () { return chunkIE2YYAF5_cjs.executeSponsored; }
|
|
11885
11889
|
});
|
|
11886
11890
|
Object.defineProperty(exports, "finishSessionRecovery", {
|
|
11887
11891
|
enumerable: true,
|
|
11888
|
-
get: function () { return
|
|
11892
|
+
get: function () { return chunkIE2YYAF5_cjs.finishSessionRecovery; }
|
|
11889
11893
|
});
|
|
11890
11894
|
Object.defineProperty(exports, "generateStarkKeyPair", {
|
|
11891
11895
|
enumerable: true,
|
|
11892
|
-
get: function () { return
|
|
11896
|
+
get: function () { return chunkIE2YYAF5_cjs.generateStarkKeyPair; }
|
|
11893
11897
|
});
|
|
11894
11898
|
Object.defineProperty(exports, "getEscape", {
|
|
11895
11899
|
enumerable: true,
|
|
11896
|
-
get: function () { return
|
|
11900
|
+
get: function () { return chunkIE2YYAF5_cjs.getEscape; }
|
|
11897
11901
|
});
|
|
11898
11902
|
Object.defineProperty(exports, "getEscapeSecurityPeriod", {
|
|
11899
11903
|
enumerable: true,
|
|
11900
|
-
get: function () { return
|
|
11904
|
+
get: function () { return chunkIE2YYAF5_cjs.getEscapeSecurityPeriod; }
|
|
11901
11905
|
});
|
|
11902
11906
|
Object.defineProperty(exports, "getGuardians", {
|
|
11903
11907
|
enumerable: true,
|
|
11904
|
-
get: function () { return
|
|
11908
|
+
get: function () { return chunkIE2YYAF5_cjs.getGuardians; }
|
|
11905
11909
|
});
|
|
11906
11910
|
Object.defineProperty(exports, "getOwners", {
|
|
11907
11911
|
enumerable: true,
|
|
11908
|
-
get: function () { return
|
|
11912
|
+
get: function () { return chunkIE2YYAF5_cjs.getOwners; }
|
|
11909
11913
|
});
|
|
11910
11914
|
Object.defineProperty(exports, "indexedDbDeviceKeys", {
|
|
11911
11915
|
enumerable: true,
|
|
11912
|
-
get: function () { return
|
|
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
|
|
11924
|
+
get: function () { return chunkIE2YYAF5_cjs.isDeployed; }
|
|
11917
11925
|
});
|
|
11918
11926
|
Object.defineProperty(exports, "isValidStarknetAddress", {
|
|
11919
11927
|
enumerable: true,
|
|
11920
|
-
get: function () { return
|
|
11928
|
+
get: function () { return chunkIE2YYAF5_cjs.isValidStarknetAddress; }
|
|
11921
11929
|
});
|
|
11922
11930
|
Object.defineProperty(exports, "normalizeWalletAddress", {
|
|
11923
11931
|
enumerable: true,
|
|
11924
|
-
get: function () { return
|
|
11932
|
+
get: function () { return chunkIE2YYAF5_cjs.normalizeWalletAddress; }
|
|
11925
11933
|
});
|
|
11926
11934
|
Object.defineProperty(exports, "ownerConstructorCalldata", {
|
|
11927
11935
|
enumerable: true,
|
|
11928
|
-
get: function () { return
|
|
11936
|
+
get: function () { return chunkIE2YYAF5_cjs.ownerConstructorCalldata; }
|
|
11929
11937
|
});
|
|
11930
11938
|
Object.defineProperty(exports, "parseAccountAddress", {
|
|
11931
11939
|
enumerable: true,
|
|
11932
|
-
get: function () { return
|
|
11940
|
+
get: function () { return chunkIE2YYAF5_cjs.parseAccountAddress; }
|
|
11933
11941
|
});
|
|
11934
11942
|
Object.defineProperty(exports, "parsePairingPayload", {
|
|
11935
11943
|
enumerable: true,
|
|
11936
|
-
get: function () { return
|
|
11944
|
+
get: function () { return chunkIE2YYAF5_cjs.parsePairingPayload; }
|
|
11937
11945
|
});
|
|
11938
11946
|
Object.defineProperty(exports, "parseRecoveryKey", {
|
|
11939
11947
|
enumerable: true,
|
|
11940
|
-
get: function () { return
|
|
11948
|
+
get: function () { return chunkIE2YYAF5_cjs.parseRecoveryKey; }
|
|
11941
11949
|
});
|
|
11942
11950
|
Object.defineProperty(exports, "sealPrivateKey", {
|
|
11943
11951
|
enumerable: true,
|
|
11944
|
-
get: function () { return
|
|
11952
|
+
get: function () { return chunkIE2YYAF5_cjs.sealPrivateKey; }
|
|
11945
11953
|
});
|
|
11946
11954
|
Object.defineProperty(exports, "selfFundedExecutor", {
|
|
11947
11955
|
enumerable: true,
|
|
11948
|
-
get: function () { return
|
|
11956
|
+
get: function () { return chunkIE2YYAF5_cjs.selfFundedExecutor; }
|
|
11949
11957
|
});
|
|
11950
11958
|
Object.defineProperty(exports, "signWithPrivateKey", {
|
|
11951
11959
|
enumerable: true,
|
|
11952
|
-
get: function () { return
|
|
11960
|
+
get: function () { return chunkIE2YYAF5_cjs.signWithPrivateKey; }
|
|
11953
11961
|
});
|
|
11954
11962
|
Object.defineProperty(exports, "sponsoredExecutor", {
|
|
11955
11963
|
enumerable: true,
|
|
11956
|
-
get: function () { return
|
|
11964
|
+
get: function () { return chunkIE2YYAF5_cjs.sponsoredExecutor; }
|
|
11957
11965
|
});
|
|
11958
11966
|
Object.defineProperty(exports, "starkKeyPairFromPrivateKey", {
|
|
11959
11967
|
enumerable: true,
|
|
11960
|
-
get: function () { return
|
|
11968
|
+
get: function () { return chunkIE2YYAF5_cjs.starkKeyPairFromPrivateKey; }
|
|
11961
11969
|
});
|
|
11962
11970
|
Object.defineProperty(exports, "startSessionRecovery", {
|
|
11963
11971
|
enumerable: true,
|
|
11964
|
-
get: function () { return
|
|
11972
|
+
get: function () { return chunkIE2YYAF5_cjs.startSessionRecovery; }
|
|
11965
11973
|
});
|
|
11966
11974
|
Object.defineProperty(exports, "turnOnRecovery", {
|
|
11967
11975
|
enumerable: true,
|
|
11968
|
-
get: function () { return
|
|
11976
|
+
get: function () { return chunkIE2YYAF5_cjs.turnOnRecovery; }
|
|
11969
11977
|
});
|
|
11970
11978
|
Object.defineProperty(exports, "unsealPrivateKey", {
|
|
11971
11979
|
enumerable: true,
|
|
11972
|
-
get: function () { return
|
|
11980
|
+
get: function () { return chunkIE2YYAF5_cjs.unsealPrivateKey; }
|
|
11973
11981
|
});
|
|
11974
11982
|
Object.defineProperty(exports, "waitUntilDeployed", {
|
|
11975
11983
|
enumerable: true,
|
|
11976
|
-
get: function () { return
|
|
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';
|
package/dist/starknet/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/starknet/index.js
CHANGED
|
@@ -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-
|
|
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';
|