{"version":3,"sources":["../src/signer/Ed25519SpendSigner.ts","../src/chains/solana/nativeConnect.ts"],"names":[],"mappings":";;;;AAiBO,SAAS,eAAA,CACd,WACA,IAAA,EACoB;AACpB,EAAA,OAAO;AAAA,IACL,SAAS,MAAM,IAAI,SAAA,CAAU,SAAS,EAAE,QAAA,EAAS;AAAA,IACjD,cAAc,MAAM,SAAA;AAAA,IACpB,eAAA,EAAiB,CAAC,OAAA,KAAY,IAAA,CAAK,OAAO,CAAA;AAAA,IAC1C,aAAa,CAAC,OAAA,KAAY,IAAA,CAAK,oBAAA,CAAqB,OAAO,CAAC;AAAA,GAC9D;AACF;AAEO,SAAS,oBAAoB,IAAA,EAAuC;AACzE,EAAA,MAAM,MAAA,GAAS,iBAAiB,IAAI,CAAA;AACpC,EAAA,OAAO,eAAA,CAAgB,OAAA,CAAQ,YAAA,CAAa,MAAM,CAAA,EAAG,OAAO,IAAA,KAAS,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,MAAM,CAAC,CAAA;AACjG;;;ACtBA,eAAsB,oBACpB,KAAA,EACuF;AACvF,EAAA,OAAO,aAAA,CAAc;AAAA,IACnB,GAAG,KAAA;AAAA,IACH,KAAA,EAAO,QAAA;AAAA,IACP,aAAA,EAAe,MAAM,aAAA,IAAiB,mBAAA;AAAA,IACtC,WAAA,EAAa,MAAM,WAAA,IAAe;AAAA,GACnC,CAAA;AACH;AAEA,eAAe,oBAAoB,KAAA,EAAmD;AACpF,EAAA,MAAM,MAAM,MAAM,mBAAA,CAAoB,IAAA,CAAK,EAAE,OAAO,CAAA;AACpD,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,OAAO,iBAAiB,GAAG,CAAA;AAC7B;AAEA,eAAe,iBAAA,CAAkB,MAAmB,KAAA,EAA4C;AAC9F,EAAA,IAAI;AACF,IAAA,OAAO,gBAAA,CAAiB,MAAM,mBAAA,CAAoB,cAAA,CAAe,MAAM,EAAE,KAAA,EAAO,CAAC,CAAA;AAAA,EACnF,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,oBAAoB,IAAI,CAAA;AAAA,EACjC;AACF;AAEA,SAAS,iBAAiB,GAAA,EAA8C;AACtE,EAAA,OAAO,eAAA,CAAgB,IAAI,YAAA,EAAa,EAAG,CAAC,IAAA,KAAS,GAAA,CAAI,IAAA,CAAK,IAAI,CAAC,CAAA;AACrE","file":"chunk-YF4LKYPM.mjs","sourcesContent":["import { ed25519 } from \"@noble/curves/ed25519\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { parseEd25519Seed, type Ed25519Seed } from \"../secret/dek\";\nimport { prefixedMessageBytes } from \"../signing\";\n\n/**\n * Signs whole Solana messages and prefixed off-chain messages, never raw\n * bytes, so a signer behind a policy can see what it is signing.\n */\nexport interface Ed25519SpendSigner {\n  address(): string;\n  publicKeyRaw(): Uint8Array;\n  signTransaction(message: Uint8Array): Promise<Uint8Array>;\n  /** Signs `prefixedMessageBytes(message)`. */\n  signMessage(message: Uint8Array): Promise<Uint8Array>;\n}\n\nexport function spendSignerFrom(\n  publicRaw: Uint8Array,\n  sign: (data: Uint8Array) => Promise<Uint8Array>,\n): Ed25519SpendSigner {\n  return {\n    address: () => new PublicKey(publicRaw).toBase58(),\n    publicKeyRaw: () => publicRaw,\n    signTransaction: (message) => sign(message),\n    signMessage: (message) => sign(prefixedMessageBytes(message)),\n  };\n}\n\nexport function solanaSpendFromSeed(seed: Ed25519Seed): Ed25519SpendSigner {\n  const secret = parseEd25519Seed(seed);\n  return spendSignerFrom(ed25519.getPublicKey(secret), async (data) => ed25519.sign(data, secret));\n}\n","import { WebCryptoControlKey } from \"../stellar/WebCryptoControlKey\";\nimport {\n  resolveNative,\n  type ResolveNativeInput,\n} from \"../../secret/nativeAccount\";\nimport { solanaSpendFromSeed, spendSignerFrom, type Ed25519SpendSigner } from \"../../signer/Ed25519SpendSigner\";\nimport type { Ed25519Seed } from \"../../secret/dek\";\n\nexport type ResolveNativeSolanaInput = Omit<ResolveNativeInput, \"chain\">;\n\nexport async function resolveNativeSolana(\n  input: ResolveNativeSolanaInput,\n): Promise<{ address: string; spend: Ed25519SpendSigner | null; isNewAccount: boolean }> {\n  return resolveNative({\n    ...input,\n    chain: \"solana\",\n    loadPersisted: input.loadPersisted ?? loadPersistedSolana,\n    importSpend: input.importSpend ?? importSolanaSpend,\n  });\n}\n\nasync function loadPersistedSolana(keyId: string): Promise<Ed25519SpendSigner | null> {\n  const key = await WebCryptoControlKey.load({ keyId });\n  if (!key) return null;\n  return spendFromControl(key);\n}\n\nasync function importSolanaSpend(seed: Ed25519Seed, keyId: string): Promise<Ed25519SpendSigner> {\n  try {\n    return spendFromControl(await WebCryptoControlKey.importFromSeed(seed, { keyId }));\n  } catch {\n    return solanaSpendFromSeed(seed);\n  }\n}\n\nfunction spendFromControl(key: WebCryptoControlKey): Ed25519SpendSigner {\n  return spendSignerFrom(key.publicKeyRaw(), (data) => key.sign(data));\n}\n"]}