{"version":3,"sources":["../src/chains/starknet/CavosStarknet.ts"],"names":["res"],"mappings":"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","file":"chunk-RN3M44LX.mjs","sourcesContent":["import {\n  Account,\n  ETransactionVersion3,\n  PaymasterRpc,\n  hash,\n  RpcProvider,\n  Signer,\n  stark,\n  type Call,\n  type SignerInterface,\n  type TypedData,\n} from \"starknet\";\nimport type { ConnectStatus } from \"../../Cavos\";\nimport type { AuthProvider, Identity } from \"../../auth/AuthProvider\";\nimport { bigIntTo32Bytes, bytesToHex } from \"../../crypto/encoding\";\nimport type { SocialRecoveryClient } from \"../../recovery/SocialRecoveryClient\";\nimport type { SocialRecoveryCredential } from \"../../recovery/SocialRecoveryCredential\";\nimport { HttpWalletRegistry } from \"../../registry/HttpWalletRegistry\";\nimport { InMemoryWalletRegistry, type WalletRegistry } from \"../../registry/WalletRegistry\";\nimport type { Ed25519Seed } from \"../../secret/dek\";\nimport type { DeviceFactor, EnclaveDekPort, WrapStore } from \"../../secret/DeviceSecret\";\nimport { passkeyRestoreInput } from \"../../secret/nativeAccount\";\nimport type { PasskeyPrfProvider } from \"../../signer/PasskeyProvider\";\nimport type { MessageSignature, StarknetSignedTransaction } from \"../../signing\";\nimport { connectThroughVault, vaultConnectParams, type VaultClient } from \"../../vault/VaultClient\";\nimport { resolveFeeMode, type ChainCall, type ExecuteOptions } from \"../ChainAdapter\";\nimport {\n  CAVOS_PAYMASTER_URL,\n  OZ_ACCOUNT_CLASS_HASH,\n  STARKNET_NETWORKS,\n  type StarknetNetwork,\n} from \"./constants\";\nimport { resolveNativeStarknet, type StarknetSpend } from \"./nativeConnect\";\nimport { parseStarknetPrivacyConfig, type StarknetPrivacyConfig } from \"./privacy/config\";\nimport type { PrivacySdk } from \"./privacy/sdk\";\nimport { createPrivacySession, unavailablePrivacy, type PrivacyOperations } from \"./privacy/session\";\n\nexport interface ConnectStarknetOptions {\n  network: StarknetNetwork;\n  auth?: AuthProvider;\n  identity?: Identity;\n  appSalt: string;\n  appId?: string;\n  environment?: \"development\" | \"production\";\n  backendUrl?: string;\n  registry?: WalletRegistry;\n  /** Cavos paymaster API key. Sponsors the deploy and every sponsored execute. */\n  paymasterApiKey: string;\n  paymasterUrl?: string;\n  rpcUrl?: string;\n  credential?: SocialRecoveryCredential;\n  socialRecovery?: SocialRecoveryClient;\n  recovery?: EnclaveDekPort;\n  factor?: DeviceFactor;\n  wrapStore?: WrapStore;\n  importSpend?: (seed: Ed25519Seed, keyId: string) => Promise<StarknetSpend>;\n  passkey?: PasskeyPrfProvider;\n  /** Keep the key in the Cavos vault instead of this page's storage. */\n  vault?: VaultClient;\n  /**\n   * Private transfers (STRK20) for a key held in this page. With a vault the\n   * pool, prover, discovery and relay come from the app's Cavos settings, so\n   * passing this together with `vault` is refused.\n   */\n  privacy?: StarknetPrivacyConfig;\n  /** Required with `privacy`: `() => import(\"@starkware-libs/starknet-privacy-sdk\")`, so the app's own bundler resolves it. */\n  privacySdk?: () => Promise<PrivacySdk>;\n}\n\nconst MESSAGE_TYPES = {\n  StarknetDomain: [\n    { name: \"name\", type: \"shortstring\" },\n    { name: \"version\", type: \"shortstring\" },\n    { name: \"chainId\", type: \"shortstring\" },\n    { name: \"revision\", type: \"shortstring\" },\n  ],\n  Message: [{ name: \"content\", type: \"string\" }],\n};\n\nconst NO_KEY = \"kit/starknet: this device holds no key for the wallet\";\n\nconst KEY_ROTATIONS = new Set([\"set_public_key\", \"setPublicKey\"].map((name) => BigInt(hash.getSelectorFromName(name))));\n\n/**\n * Native Starknet account: the standard OpenZeppelin `AccountUpgradeable`, whose\n * stark key is HKDF of the MasterDEK. There is no on-chain device list; a new\n * device restores the DEK off-chain and derives the same key.\n *\n * Connect never deploys. The first `execute` deploys the account and runs the\n * calls in one sponsored transaction.\n */\nexport class CavosStarknet {\n  readonly chain = \"starknet\" as const;\n  readonly identity: Identity;\n  readonly address: string;\n  readonly network: StarknetNetwork;\n  /** Private balance, deposits, transfers and withdrawals in a STRK20 pool. Nothing here returns a key or a note. */\n  readonly privacy: PrivacyOperations;\n  isNewAccount = false;\n  onAuthorizationNeeded?: () => Promise<void>;\n  private statusValue: ConnectStatus;\n  private deployed: boolean;\n  private readonly provider: RpcProvider;\n  private readonly accountValue?: Account;\n  private readonly starkPublicKey?: string;\n  private readonly passkeyRestore: boolean;\n  private readonly statusListeners = new Set<() => void>();\n\n  /**\n   * An object, not positions: this list grows with every capability, and each\n   * time it grew positionally something downstream silently read the wrong\n   * argument.\n   */\n  private constructor(init: {\n    identity: Identity;\n    address: string;\n    network: StarknetNetwork;\n    status: ConnectStatus;\n    deployed: boolean;\n    provider: RpcProvider;\n    account?: Account;\n    publicKey?: string;\n    restoredWithPasskey?: boolean;\n    privacy: PrivacyOperations;\n  }) {\n    this.identity = init.identity;\n    this.address = init.address;\n    this.network = init.network;\n    this.statusValue = init.status;\n    this.deployed = init.deployed;\n    this.provider = init.provider;\n    this.accountValue = init.account;\n    this.starkPublicKey = init.publicKey;\n    this.passkeyRestore = init.restoredWithPasskey ?? false;\n    this.privacy = init.privacy;\n  }\n\n  get status(): ConnectStatus {\n    return this.statusValue;\n  }\n\n  get isDeployed(): boolean {\n    return this.deployed;\n  }\n\n  /** The starknet.js account. Throws on a device that holds no key. */\n  get account(): Account {\n    if (!this.accountValue) throw new Error(\"kit/starknet: this device holds no key for the wallet\");\n    return this.accountValue;\n  }\n\n  /** The stark public key (hex) the account was deployed with. */\n  get publicKey(): string {\n    if (!this.starkPublicKey) throw new Error(\"kit/starknet: this device holds no key for the wallet\");\n    return this.starkPublicKey;\n  }\n\n  onStatusChange(listener: () => void): () => void {\n    this.statusListeners.add(listener);\n    return () => {\n      this.statusListeners.delete(listener);\n    };\n  }\n\n  private setStatus(next: ConnectStatus): void {\n    if (this.statusValue === next) return;\n    this.statusValue = next;\n    for (const listener of this.statusListeners) {\n      try {\n        listener();\n      } catch {\n        continue;\n      }\n    }\n  }\n\n  static async connect(opts: ConnectStarknetOptions): Promise<CavosStarknet> {\n    const identity = opts.identity ?? (await opts.auth?.authenticate());\n    if (!identity) throw new Error(\"kit/starknet: connect requires `identity` or `auth`\");\n\n    const provider = new RpcProvider({ nodeUrl: opts.rpcUrl ?? STARKNET_NETWORKS[opts.network].rpcUrl });\n    const paymasterUrl = opts.paymasterUrl ?? CAVOS_PAYMASTER_URL[opts.network];\n    const paymaster = new PaymasterRpc({\n      nodeUrl: paymasterUrl,\n      headers: { \"x-paymaster-api-key\": opts.paymasterApiKey },\n    });\n    const backendUrl = opts.backendUrl ?? \"https://cavos.xyz\";\n    const registry =\n      opts.registry ??\n      (opts.appId\n        ? new HttpWalletRegistry({\n            baseUrl: backendUrl,\n            appId: opts.appId,\n            network: opts.network,\n            environment: opts.environment,\n            authToken: () => opts.auth?.getAuthToken?.() ?? null,\n          })\n        : defaultRegistry);\n\n    if (opts.vault && opts.privacy) {\n      throw new Error(\"kit/starknet: with a vault, private transfer settings come from the app in the Cavos dashboard, not from `privacy`\");\n    }\n    const pagePrivacy = opts.privacy ? pagePrivacySettings(opts.privacy, opts.privacySdk) : undefined;\n\n    let signer: SignerInterface | null;\n    let address: string;\n    let isNewAccount: boolean;\n    let passkey: boolean;\n    let privacy: PrivacyOperations;\n    if (opts.vault) {\n      const native = await connectThroughVault(\"starknet\", identity, opts.appSalt, () =>\n        opts.vault!.connectStarknet(vaultConnectParams({ ...opts, identity }), opts.paymasterApiKey),\n      );\n      ({ signer, address, isNewAccount } = native);\n      passkey = native.passkey;\n      privacy = native.privacy ?? unavailablePrivacy(NO_KEY);\n    } else {\n      const native = await resolveNativeStarknet({\n        identity,\n        appSalt: opts.appSalt,\n        registry,\n        credential: opts.credential,\n        socialRecovery: opts.socialRecovery,\n        recovery: opts.recovery,\n        factor: opts.factor,\n        store: opts.wrapStore,\n        importSpend: opts.importSpend,\n        ...passkeyRestoreInput({\n          passkey: opts.passkey,\n          appId: opts.appId,\n          backendUrl,\n          environment: opts.environment,\n          authToken: () => opts.auth?.getAuthToken?.() ?? null,\n        }),\n      });\n      signer = native.spend ? new Signer(native.spend.privateKey()) : null;\n      ({ address, isNewAccount } = native);\n      passkey = Boolean(opts.passkey);\n      privacy = !native.spend\n        ? unavailablePrivacy(NO_KEY)\n        : pagePrivacy\n          ? createPrivacySession({\n              ...pagePrivacy,\n              chainId: STARKNET_NETWORKS[opts.network].chainId,\n              rpcUrl: opts.rpcUrl ?? STARKNET_NETWORKS[opts.network].rpcUrl,\n              account: { address, spend: native.spend },\n              paymasterApiKey: () => opts.paymasterApiKey,\n            })\n          : unavailablePrivacy(\"kit/starknet: private transfers need `privacy` in the connect options when the key is held by this page\");\n    }\n\n    const deployed = await isDeployed(provider, address);\n    const wallet = new CavosStarknet({\n      identity,\n      address,\n      network: opts.network,\n      status: !signer ? \"needs-device-approval\" : deployed ? \"ready\" : \"undeployed\",\n      deployed,\n      provider,\n      ...(signer\n        ? {\n            account: new Account({ provider, address, signer, paymaster, cairoVersion: \"1\" }),\n            publicKey: await signer.getPubKey(),\n          }\n        : {}),\n      restoredWithPasskey: passkey,\n      privacy,\n    });\n    wallet.isNewAccount = isNewAccount;\n    return wallet;\n  }\n\n  async hasPasskey(): Promise<boolean> {\n    return this.passkeyRestore;\n  }\n\n  /** Ready means one thing here: this device holds the stark key. There is no on-chain signer set to wait for. */\n  async isReady(): Promise<boolean> {\n    return this.accountValue !== undefined;\n  }\n\n  /**\n   * Execute a multicall, signed silently by the account key. Sponsored by\n   * default; `fee: 'self'` pays from the account's own balance.\n   *\n   * **Lazy deploy**: on an undeployed account the first execute deploys it and\n   * runs the calls in one sponsored transaction, then the status becomes\n   * `ready`. A self-funded first execute is refused, because the account has no\n   * balance to deploy itself with.\n   */\n  async execute(calls: ChainCall[], opts?: ExecuteOptions): Promise<{ transactionHash: string }> {\n    this.refuseKeyRotation(calls);\n    const fee = resolveFeeMode(opts, \"sponsored\");\n    if (this.statusValue === \"undeployed\") {\n      if (fee === \"self\") {\n        throw new Error(\n          \"kit/starknet: self-funded deploy is not supported. The first execute on an undeployed account requires sponsored mode.\",\n        );\n      }\n      return this.deployAndExecute(calls);\n    }\n    if (fee === \"self\") {\n      const res = await this.account.execute(calls as Call[]);\n      return { transactionHash: res.transaction_hash };\n    }\n    const res = await this.account.executePaymasterTransaction(calls as Call[], {\n      feeMode: { mode: \"sponsored\" },\n    });\n    return { transactionHash: res.transaction_hash };\n  }\n\n  private async deployAndExecute(calls: ChainCall[]): Promise<{ transactionHash: string }> {\n    const res = await this.account.executePaymasterTransaction(calls as Call[], {\n      feeMode: { mode: \"sponsored\" },\n      deploymentData: {\n        address: this.address,\n        class_hash: OZ_ACCOUNT_CLASS_HASH,\n        salt: this.publicKey,\n        calldata: [this.publicKey],\n        version: 1,\n      },\n    });\n    try {\n      await this.provider.waitForTransaction(res.transaction_hash);\n    } catch (e) {\n      console.warn(\"[Cavos] deploy+execute receipt wait failed:\", e);\n    }\n    this.deployed = true;\n    this.setStatus(\"ready\");\n    this.isNewAccount = true;\n    return { transactionHash: res.transaction_hash };\n  }\n\n  /**\n   * Sign an arbitrary message off-chain as SNIP-12 revision 1 typed data. Nothing\n   * is submitted and no gas is paid, so it works before the account is deployed.\n   * A verifier recomputes the message hash from `typedData` and the account\n   * address, then checks the stark signature, or calls the deployed account's\n   * `is_valid_signature`.\n   */\n  async signMessage(message: string | Uint8Array): Promise<MessageSignature> {\n    const typedData: TypedData = {\n      types: MESSAGE_TYPES,\n      primaryType: \"Message\",\n      domain: {\n        name: \"Cavos\",\n        version: \"1\",\n        chainId: STARKNET_NETWORKS[this.network].chainId,\n        revision: \"1\",\n      },\n      message: { content: typeof message === \"string\" ? message : bytesToHex(message) },\n    };\n    const [r, s] = stark.formatSignature(await this.account.signMessage(typedData));\n    const out = new Uint8Array(64);\n    out.set(bigIntTo32Bytes(BigInt(r)), 0);\n    out.set(bigIntTo32Bytes(BigInt(s)), 32);\n    return { signature: out, publicKey: this.publicKey, curve: \"stark\", typedData };\n  }\n\n  /**\n   * Build + sign a multicall WITHOUT submitting it. Returns the signed invoke\n   * (calldata + 2-felt stark signature + nonce + resource bounds). A relayer\n   * can broadcast it later via the account's `invokeFunction`.\n   *\n   * The signature binds to the nonce and resource bounds at sign time — if any\n   * other transaction from this account is submitted first, this signature is\n   * invalid. Broadcast promptly.\n   */\n  async signTransaction(calls: ChainCall[]): Promise<StarknetSignedTransaction> {\n    this.refuseKeyRotation(calls);\n    const fee = await this.account.estimateInvokeFee(calls as Call[], {\n      skipValidate: false,\n    });\n    const nonce = await this.account.getNonce();\n    const built = await this.account.accountInvocationsFactory(\n      [{ type: \"INVOKE\" as const, payload: calls as Call[] }],\n      {\n        versions: [ETransactionVersion3.V3],\n        nonce,\n        resourceBounds: fee.resourceBounds,\n        skipValidate: false,\n      },\n    );\n    const inv = built[0] as unknown as {\n      calldata: string[];\n      signature: string | string[];\n      nonce: string;\n      resourceBounds: typeof fee.resourceBounds;\n      version: string;\n    };\n    const signature = Array.isArray(inv.signature) ? inv.signature.map(String) : [String(inv.signature)];\n    const rb = inv.resourceBounds ?? fee.resourceBounds;\n    return {\n      chain: \"starknet\",\n      calldata: inv.calldata ?? [],\n      signature,\n      nonce: String(inv.nonce ?? nonce),\n      resourceBounds: {\n        l1Gas: {\n          maxAmount: String((rb as { l1_gas: { max_amount: bigint } }).l1_gas.max_amount),\n          maxPricePerUnit: String((rb as { l1_gas: { max_price_per_unit: bigint } }).l1_gas.max_price_per_unit),\n        },\n        l2Gas: {\n          maxAmount: String((rb as { l2_gas: { max_amount: bigint } }).l2_gas.max_amount),\n          maxPricePerUnit: String((rb as { l2_gas: { max_price_per_unit: bigint } }).l2_gas.max_price_per_unit),\n        },\n      },\n      version: String(inv.version ?? ETransactionVersion3.V3),\n    };\n  }\n\n  /** Upgrade this account to a reviewed class. The address and storage are kept; the account authorizes it as a self-call. */\n  async upgrade(newClassHash: string, opts?: ExecuteOptions): Promise<{ transactionHash: string }> {\n    return this.execute(\n      [{ contractAddress: this.address, entrypoint: \"upgrade\", calldata: [newClassHash] }],\n      opts,\n    );\n  }\n\n  private refuseKeyRotation(calls: ChainCall[]): void {\n    const self = BigInt(this.address);\n    for (const call of calls) {\n      if (BigInt(call.contractAddress) === self && KEY_ROTATIONS.has(selectorOf(call.entrypoint))) {\n        throw new Error(\n          \"kit/starknet: rotating the account key is refused. The wallet key is derived from the DEK, so a rotated key would no longer be controlled by it.\",\n        );\n      }\n    }\n  }\n}\n\nconst defaultRegistry = new InMemoryWalletRegistry();\n\nfunction pagePrivacySettings(\n  privacy: StarknetPrivacyConfig,\n  privacySdk: (() => Promise<PrivacySdk>) | undefined,\n): { config: StarknetPrivacyConfig; loadSdk: () => Promise<PrivacySdk> } {\n  const config = parseStarknetPrivacyConfig(privacy);\n  if (!privacySdk) {\n    throw new Error('kit/starknet: `privacy` needs `privacySdk: () => import(\"@starkware-libs/starknet-privacy-sdk\")`');\n  }\n  return { config, loadSdk: privacySdk };\n}\n\nfunction selectorOf(entrypoint: string): bigint {\n  return BigInt(/^0x[0-9a-f]+$/i.test(entrypoint) ? entrypoint : hash.getSelectorFromName(entrypoint));\n}\n\nasync function isDeployed(provider: RpcProvider, address: string): Promise<boolean> {\n  try {\n    const classHash = await provider.getClassHashAt(address);\n    return !!classHash && classHash !== \"0x0\";\n  } catch {\n    return false;\n  }\n}\n"]}