{"version":3,"sources":["../src/core.ts","../../core/src/amount.ts","../../core/src/errors.ts","../../core/src/chain.ts","../../core/src/prepared.ts","../../core/src/requestAbort.ts","../../core/src/transaction.ts"],"sourcesContent":["/**\n * Primitives shared by every MasterPeach SDK, published as the `./core` subpath.\n *\n * These live outside the root entry point on purpose. Each product SDK bundles its own copy of the\n * shared source, so exporting the same names from two root entry points would collide in any\n * application that installs more than one MasterPeach SDK. Importing them from one `./core`\n * subpath keeps a single set of bindings at the call site.\n *\n * The copies stay interoperable at runtime: shared errors are branded through the global symbol\n * registry, so `isPeachSdkError` recognizes an error no matter which SDK raised it.\n */\nexport * from \"../../core/src/index\";\n","import { formatUnits, parseUnits } from \"viem\";\n\nimport { PeachSdkError } from \"./errors\";\n\nconst DECIMAL_AMOUNT_PATTERN = /^(0|[1-9]\\d*)(\\.\\d+)?$/;\n\nfunction assertDecimals(decimals: number): void {\n  if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n    throw new PeachSdkError(\"INVALID_AMOUNT\", `Invalid decimals: ${decimals}`);\n  }\n}\n\n/** Parses a canonical unsigned decimal token amount into integer base units. */\nexport function parseAmount(value: string, decimals: number): bigint {\n  assertDecimals(decimals);\n\n  if (!DECIMAL_AMOUNT_PATTERN.test(value)) {\n    throw new PeachSdkError(\"INVALID_AMOUNT\", `Invalid decimal amount: ${value}`);\n  }\n\n  const fraction = value.split(\".\")[1] ?? \"\";\n  if (fraction.length > decimals) {\n    throw new PeachSdkError(\n      \"INVALID_AMOUNT\",\n      `Amount has ${fraction.length} decimal places but token supports ${decimals}.`,\n    );\n  }\n\n  return parseUnits(value, decimals);\n}\n\n/** Formats an unsigned base-unit token amount without introducing floating-point rounding. */\nexport function formatAmount(value: bigint, decimals: number): string {\n  assertDecimals(decimals);\n\n  if (value < 0n) {\n    throw new PeachSdkError(\"INVALID_AMOUNT\", \"Token amounts cannot be negative.\");\n  }\n\n  return formatUnits(value, decimals);\n}\n","import { UserRejectedRequestError } from \"viem\";\n\nexport type PeachSdkErrorCode =\n  | \"INVALID_AMOUNT\"\n  | \"MISSING_ACCOUNT\"\n  | \"MISSING_CHAIN\"\n  | \"UNSUPPORTED_CHAIN\"\n  | \"USER_REJECTED\"\n  | \"TRANSPORT_ERROR\"\n  | \"CONTRACT_ERROR\"\n  | \"UNKNOWN_ERROR\";\n\n/**\n * Cross-copy brand for shared SDK errors.\n *\n * Every product SDK bundles its own copy of these primitives, so an error thrown by\n * `@masterpeach/launchpad-sdk` is not an `instanceof` the class of the same name exported by\n * `@masterpeach/lending-sdk`. `Symbol.for` resolves through the runtime-wide symbol registry, so\n * each copy brands its errors with the identical key and can recognize the others'.\n */\nconst PEACH_SDK_ERROR_BRAND = Symbol.for(\"masterpeach.sdk-core.PeachSdkError\");\n\n/** Base error carrying a stable machine-readable code and structured diagnostic metadata. */\nexport class PeachSdkError extends Error {\n  readonly code: PeachSdkErrorCode;\n  readonly metadata: Readonly<Record<string, unknown>>;\n\n  constructor(\n    code: PeachSdkErrorCode,\n    message: string,\n    options: { cause?: unknown; metadata?: Readonly<Record<string, unknown>> } = {},\n  ) {\n    super(message, { cause: options.cause });\n    this.name = \"PeachSdkError\";\n    this.code = code;\n    this.metadata = options.metadata ?? {};\n    // Non-enumerable so the brand stays out of structured clones and JSON diagnostics.\n    Object.defineProperty(this, PEACH_SDK_ERROR_BRAND, { value: true });\n  }\n}\n\nexport class UnsupportedChainError extends PeachSdkError {\n  constructor(chainId: number) {\n    super(\"UNSUPPORTED_CHAIN\", `Unsupported chain: ${chainId}`, {\n      metadata: { chainId },\n    });\n    this.name = \"UnsupportedChainError\";\n  }\n}\n\nexport class MissingChainError extends PeachSdkError {\n  constructor() {\n    super(\"MISSING_CHAIN\", \"A chain ID is required for this operation.\");\n    this.name = \"MissingChainError\";\n  }\n}\n\nexport class MissingAccountError extends PeachSdkError {\n  constructor() {\n    super(\"MISSING_ACCOUNT\", \"A wallet account is required for this operation.\");\n    this.name = \"MissingAccountError\";\n  }\n}\n\n/**\n * Recognizes a shared SDK error regardless of which product SDK created it.\n *\n * Prefer this over `instanceof PeachSdkError` whenever an application depends on more than one\n * MasterPeach SDK: each package carries its own copy of the class, so `instanceof` only matches\n * errors that happened to originate from the same package. Pass a `code` to narrow in one step.\n */\nexport function isPeachSdkError(value: unknown): value is PeachSdkError;\nexport function isPeachSdkError<TCode extends PeachSdkErrorCode>(\n  value: unknown,\n  code: TCode,\n): value is PeachSdkError & { readonly code: TCode };\nexport function isPeachSdkError(value: unknown, code?: PeachSdkErrorCode): boolean {\n  if (typeof value !== \"object\" || value === null) {\n    return false;\n  }\n  if ((value as Record<symbol, unknown>)[PEACH_SDK_ERROR_BRAND] !== true) {\n    return false;\n  }\n  return code === undefined || (value as PeachSdkError).code === code;\n}\n\n/** Normalizes wallet rejection and unknown failures at a shared SDK boundary. */\nexport function toPeachSdkError(error: unknown): PeachSdkError {\n  // Brand check rather than `instanceof`, so an error raised by a sibling SDK keeps its code\n  // instead of being flattened into UNKNOWN_ERROR.\n  if (isPeachSdkError(error)) {\n    return error;\n  }\n\n  if (error instanceof UserRejectedRequestError) {\n    return new PeachSdkError(\"USER_REJECTED\", \"The wallet request was rejected.\", {\n      cause: error,\n    });\n  }\n\n  return new PeachSdkError(\"UNKNOWN_ERROR\", \"An unknown SDK error occurred.\", {\n    cause: error,\n  });\n}\n","import type { WalletClient } from \"viem\";\n\nimport { MissingAccountError, UnsupportedChainError } from \"./errors\";\n\nexport type ChainRegistry<T> = Readonly<Record<number, T>>;\n\n/** Resolves a chain-scoped configuration value or throws a stable unsupported-chain error. */\nexport function resolveChainValue<T>(registry: ChainRegistry<T>, chainId: number): T {\n  const value = registry[chainId];\n  if (value === undefined) {\n    throw new UnsupportedChainError(chainId);\n  }\n  return value;\n}\n\n/** Requires a Wallet Client with an attached account before a signing or write operation. */\nexport function requireWalletClient(walletClient: WalletClient | undefined): WalletClient {\n  if (!walletClient?.account) {\n    throw new MissingAccountError();\n  }\n  return walletClient;\n}\n","import type { Account, WalletClient } from \"viem\";\nimport { isAddressEqual } from \"viem\";\nimport { parseAccount } from \"viem/accounts\";\nimport { requireWalletClient } from \"./chain\";\nimport { MissingAccountError } from \"./errors\";\n\n/** Public inspection shape shared by product-specific prepared transaction types. */\nexport interface PreparedTransactionSnapshot<Request extends object, Preview, Context> {\n  readonly request: Readonly<Request>;\n  readonly preview: Preview;\n  readonly context: Context;\n}\n\n/** A module-local provenance store. Its canonical requests are never exposed to consumers. */\nexport interface PreparedTransactionStore {\n  create<Request extends object, Preview, Context>(\n    request: Request,\n    preview: Preview,\n    context: Context,\n  ): PreparedTransactionSnapshot<Request, Preview, Context>;\n  has(value: object): boolean;\n  getCanonical<Request extends object>(value: object): Request | undefined;\n}\n\n/**\n * Copies and freezes plain Viem request data, retaining cycles, symbols, prototypes and functions.\n * Accessor descriptors are preserved without invoking them.\n */\nexport function immutableClone<Value>(value: Value, seen = new WeakMap<object, unknown>()): Value {\n  if (value === null || typeof value !== \"object\") return value;\n\n  const source = value as object;\n  const existing = seen.get(source);\n  if (existing !== undefined) return existing as Value;\n\n  const clone: object = Array.isArray(value)\n    ? []\n    : Object.create(Object.getPrototypeOf(source) as object | null);\n  seen.set(source, clone);\n\n  for (const key of Reflect.ownKeys(source)) {\n    const descriptor = Object.getOwnPropertyDescriptor(source, key);\n    if (!descriptor) continue;\n    if (\"value\" in descriptor) {\n      descriptor.value = immutableClone(descriptor.value, seen);\n      descriptor.writable = false;\n    }\n    descriptor.configurable = false;\n    Object.defineProperty(clone, key, descriptor);\n  }\n\n  return Object.freeze(clone) as Value;\n}\n\n/**\n * Creates an isolated prepared-request registry for one product module.\n *\n * Sharing the factory removes duplicated security logic without sharing registry state: a value\n * prepared by one SDK can never become valid in another SDK's store.\n */\nexport function createPreparedTransactionStore(): PreparedTransactionStore {\n  const canonicalRequests = new WeakMap<object, object>();\n\n  return Object.freeze({\n    create<Request extends object, Preview, Context>(\n      request: Request,\n      preview: Preview,\n      context: Context,\n    ): PreparedTransactionSnapshot<Request, Preview, Context> {\n      const canonicalRequest = immutableClone(request);\n      const prepared = Object.freeze({\n        request: immutableClone(request),\n        preview,\n        context,\n      });\n      canonicalRequests.set(prepared, canonicalRequest);\n      return prepared;\n    },\n    has: (value: object) => canonicalRequests.has(value),\n    getCanonical: <Request extends object>(value: object) =>\n      canonicalRequests.get(value) as Request | undefined,\n  });\n}\n\n/**\n * Resolves the wallet's live account after proving its current chain.\n *\n * Product SDKs provide their own chain-mismatch error factory so this shared state-transition\n * check does not erase protocol-specific error contracts.\n */\nexport async function resolveLiveWalletAccount(\n  walletClient: WalletClient | undefined,\n  expectedChainId: number,\n  chainMismatch: (expectedChainId: number, actualChainId: number) => Error,\n): Promise<Account> {\n  const client = requireWalletClient(walletClient);\n  const actualChainId = await client.getChainId();\n  if (actualChainId !== expectedChainId) {\n    throw chainMismatch(expectedChainId, actualChainId);\n  }\n\n  const [liveAddress] = await client.getAddresses();\n  if (!liveAddress) throw new MissingAccountError();\n\n  const configuredAccount = client.account;\n  if (!configuredAccount) throw new MissingAccountError();\n  return isAddressEqual(configuredAccount.address, liveAddress)\n    ? configuredAccount\n    : parseAccount(liveAddress);\n}\n","export interface RequestAbortScope {\n  readonly signal: AbortSignal;\n  readonly timedOut: () => boolean;\n  /** Races work that cannot consume an AbortSignal, such as async credential resolution. */\n  readonly waitFor: <Value>(operation: PromiseLike<Value>) => Promise<Value>;\n  readonly release: () => void;\n}\n\n/** Links caller cancellation and an SDK deadline while keeping their causes distinguishable. */\nexport function createRequestAbortScope(\n  timeoutMs: number,\n  callerSignal?: AbortSignal,\n): RequestAbortScope {\n  if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n    throw new RangeError(\"timeoutMs must be a positive, finite number of milliseconds.\");\n  }\n\n  const controller = new AbortController();\n  let didTimeout = false;\n  const abortFromCaller = () => controller.abort(callerSignal?.reason);\n  if (callerSignal?.aborted) {\n    abortFromCaller();\n  } else {\n    callerSignal?.addEventListener(\"abort\", abortFromCaller, { once: true });\n  }\n\n  const timeout = setTimeout(() => {\n    // Caller cancellation wins permanently. Without this guard the timer can fire later and make\n    // a cancelled request look timed out to consumers that inspect the scope after async cleanup.\n    if (controller.signal.aborted) return;\n    didTimeout = true;\n    controller.abort(new Error(`Request timed out after ${timeoutMs}ms.`));\n  }, timeoutMs);\n\n  const waitFor = <Value>(operation: PromiseLike<Value>): Promise<Value> => {\n    if (controller.signal.aborted) {\n      return Promise.reject(controller.signal.reason);\n    }\n    return new Promise<Value>((resolve, reject) => {\n      const rejectFromAbort = () => reject(controller.signal.reason);\n      controller.signal.addEventListener(\"abort\", rejectFromAbort, { once: true });\n      void Promise.resolve(operation).then(\n        (value) => {\n          controller.signal.removeEventListener(\"abort\", rejectFromAbort);\n          resolve(value);\n        },\n        (error: unknown) => {\n          controller.signal.removeEventListener(\"abort\", rejectFromAbort);\n          reject(error);\n        },\n      );\n    });\n  };\n\n  return Object.freeze({\n    signal: controller.signal,\n    timedOut: () => didTimeout,\n    waitFor,\n    release: () => {\n      clearTimeout(timeout);\n      callerSignal?.removeEventListener(\"abort\", abortFromCaller);\n    },\n  });\n}\n","import type { Hash, TransactionReceipt } from \"viem\";\n\nexport type SdkTransactionStatus = \"pending\" | \"confirmed\" | \"reverted\";\n\n/** Framework-neutral transaction result shared by product SDK packages. */\nexport interface SdkTransactionResult {\n  readonly hash: Hash;\n  readonly status: SdkTransactionStatus;\n  readonly receipt?: TransactionReceipt;\n}\n\n/** Converts a Viem receipt into the stable shared transaction result shape. */\nexport function transactionResultFromReceipt(receipt: TransactionReceipt): SdkTransactionResult {\n  return {\n    hash: receipt.transactionHash,\n    status: receipt.status === \"success\" ? \"confirmed\" : \"reverted\",\n    receipt,\n  };\n}\n"],"mappings":"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","names":["import_viem","import_viem"]}