@berachain/berajs 0.2.6 → 0.2.8-beta.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.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/dist/abi/exports.cjs.map +1 -1
  4. package/dist/actions/exports.cjs +1 -1
  5. package/dist/actions/exports.cjs.map +1 -1
  6. package/dist/actions/exports.d.cts +10 -5
  7. package/dist/actions/exports.d.ts +10 -5
  8. package/dist/actions/exports.mjs +1 -1
  9. package/dist/actions/exports.mjs.map +1 -1
  10. package/dist/chunk-2YBHAMDV.cjs.map +1 -1
  11. package/dist/chunk-57RINXU6.cjs.map +1 -1
  12. package/dist/chunk-74WA35RI.cjs.map +1 -1
  13. package/dist/chunk-CF3LFNXG.cjs.map +1 -1
  14. package/dist/chunk-DDEQFR3M.cjs.map +1 -1
  15. package/dist/chunk-DK42F2ZM.cjs.map +1 -1
  16. package/dist/chunk-FCZ72ML6.mjs +4 -0
  17. package/dist/chunk-FCZ72ML6.mjs.map +1 -0
  18. package/dist/chunk-I7M43BB4.cjs.map +1 -1
  19. package/dist/chunk-LHR24OO7.cjs +4 -0
  20. package/dist/chunk-LHR24OO7.cjs.map +1 -0
  21. package/dist/chunk-LNVR4BW6.cjs.map +1 -1
  22. package/dist/chunk-NMH7LHPW.cjs.map +1 -1
  23. package/dist/chunk-NVHV2LDK.cjs.map +1 -1
  24. package/dist/chunk-OIYXOKTT.cjs.map +1 -1
  25. package/dist/chunk-OUD27MU7.cjs.map +1 -1
  26. package/dist/chunk-RWOICHRW.cjs.map +1 -1
  27. package/dist/chunk-WRFDB3QJ.cjs.map +1 -1
  28. package/dist/chunk-XNJLSA6P.cjs.map +1 -1
  29. package/dist/contexts/exports.cjs.map +1 -1
  30. package/dist/enum/exports.cjs.map +1 -1
  31. package/dist/errors/exports.cjs.map +1 -1
  32. package/dist/{getValidatorQueuedOperatorAddress-CmiPJmsr.d.ts → getValidatorQueuedOperatorAddress-Bef1e1c_.d.ts} +4 -3
  33. package/dist/{getValidatorQueuedOperatorAddress-BdDYHycN.d.cts → getValidatorQueuedOperatorAddress-BfKrMaui.d.cts} +4 -3
  34. package/dist/{global.d-3GQMgC9k.d.ts → global.d-CrPSEwwf.d.ts} +2 -2
  35. package/dist/{global.d-CwT1Phzf.d.cts → global.d-DW7dpBsz.d.cts} +2 -2
  36. package/dist/hooks/exports.cjs +2 -2
  37. package/dist/hooks/exports.cjs.map +1 -1
  38. package/dist/hooks/exports.d.cts +4 -4
  39. package/dist/hooks/exports.d.ts +4 -4
  40. package/dist/hooks/exports.mjs +1 -1
  41. package/dist/types/exports.cjs.map +1 -1
  42. package/dist/types/exports.d.cts +1 -1
  43. package/dist/types/exports.d.ts +1 -1
  44. package/dist/utils/exports.cjs.map +1 -1
  45. package/package.json +38 -39
  46. package/src/abi/exports.ts +0 -0
  47. package/src/abi/pyth/pyth.ts +0 -0
  48. package/src/actions/dex/getPoolHistoricalData.ts +0 -0
  49. package/src/actions/exports.ts +1 -0
  50. package/src/actions/governance/getAllProposals.ts +0 -0
  51. package/src/actions/governance/getProposalDetails.ts +0 -0
  52. package/src/actions/honey/getHoneyFees.ts +0 -0
  53. package/src/actions/honey/getHoneyPreview.ts +0 -0
  54. package/src/actions/pol/getBGTGlobalInfo.ts +0 -0
  55. package/src/actions/pol/getBgtTokenTotalBoosts.ts +0 -0
  56. package/src/actions/pol/getBgtTokenTotalSupply.ts +0 -0
  57. package/src/actions/pol/getGlobalCuttingBoard.ts +0 -0
  58. package/src/actions/pol/getMarkets.ts +0 -0
  59. package/src/actions/pol/getRewardVaultIncentives.ts +79 -34
  60. package/src/actions/pol/getRewardVaults.ts +0 -0
  61. package/src/actions/pol/getUserVaultsBalance.ts +0 -0
  62. package/src/actions/pol/getUserVaultsReward.ts +0 -0
  63. package/src/actions/pol/getVaultsSupply.ts +0 -0
  64. package/src/actions/tokens/getAllowances.ts +0 -0
  65. package/src/actions/tokens/getTokenInformation.ts +0 -0
  66. package/src/actions/tokens/getTokens.ts +0 -0
  67. package/src/actions/tokens/getWalletBalances.ts +0 -0
  68. package/src/actions/validators/getUserActiveValidators.ts +2 -2
  69. package/src/actions/validators/utils/__tests__/validatorUtils.integration.test.ts +20 -4
  70. package/src/actions/validators/utils/aggregateValidatorIncentives.ts +64 -0
  71. package/src/actions/validators/utils/aggregateValidatorIncentives.unit.test.ts +270 -0
  72. package/src/contexts/exports.ts +0 -0
  73. package/src/enum/exports.ts +0 -0
  74. package/src/enum/polling.ts +0 -0
  75. package/src/enum/txnEnum.ts +0 -0
  76. package/src/errors/getErrorMessage.ts +0 -0
  77. package/src/hooks/dex/useCreatePool.ts +0 -0
  78. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +0 -0
  79. package/src/hooks/dex/usePoolHistoricalData.ts +0 -0
  80. package/src/hooks/exports.ts +0 -0
  81. package/src/hooks/perps/usePythUpdateFee.ts +0 -0
  82. package/src/hooks/pol/useBgtUnstakedBalance.ts +0 -0
  83. package/src/hooks/pol/usePollGlobalData.ts +0 -0
  84. package/src/hooks/pol/usePollMarkets.ts +0 -0
  85. package/src/hooks/pol/useRewardTokenToBeraRate.ts +0 -0
  86. package/src/hooks/pol/useRewardVault.ts +0 -0
  87. package/src/hooks/pol/useRewardVaults.ts +0 -0
  88. package/src/hooks/pol/useUserVaultInfo.ts +0 -0
  89. package/src/hooks/pol/useUserVaults.ts +0 -0
  90. package/src/hooks/pol/useVaultValidators.ts +0 -0
  91. package/src/hooks/tokens/usePollAllowances.ts +0 -0
  92. package/src/hooks/tokens/usePollBalance.ts +0 -0
  93. package/src/hooks/tokens/usePollWalletBalances.ts +0 -0
  94. package/src/hooks/tokens/useTokenInformation.ts +0 -0
  95. package/src/hooks/tokens/useTokens.ts +0 -0
  96. package/src/hooks/useContractWrite/index.ts +0 -0
  97. package/src/hooks/useContractWrite/stateReducer.ts +0 -0
  98. package/src/hooks/useContractWrite/types.ts +0 -0
  99. package/src/hooks/useContractWrite/useBeraContractWrite.ts +0 -0
  100. package/src/hooks/usePrevious.ts +0 -0
  101. package/src/hooks/validators/useApiValidator.ts +0 -0
  102. package/src/hooks/validators/useUserActiveValidators.ts +0 -0
  103. package/src/hooks/validators/useValidatorEstimatedBgtPerYear.ts +0 -0
  104. package/src/types/dex.d.ts +0 -0
  105. package/src/types/exports.ts +0 -0
  106. package/src/types/global.d.ts +0 -0
  107. package/src/types/pol.d.ts +1 -1
  108. package/src/types/staking.d.ts +0 -0
  109. package/src/utils/exports.ts +0 -0
  110. package/src/utils/filter.ts +0 -0
  111. package/src/utils/formatInputTokenValue.ts +0 -0
  112. package/src/utils/formatNumber.ts +0 -0
  113. package/src/utils/truncateHash.ts +0 -0
  114. package/dist/chunk-HWOGQSNL.cjs +0 -4
  115. package/dist/chunk-HWOGQSNL.cjs.map +0 -1
  116. package/dist/chunk-IBJOI5SN.mjs +0 -4
  117. package/dist/chunk-IBJOI5SN.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-2YBHAMDV.cjs","../src/errors/initBeraError.ts","../src/errors/assert.ts","../src/utils/createEmitter.ts","../src/errors/BeraMonitoring.ts"],"names":["initBeraError","error","level","BaseError","parsed","parseViemError","RequestError","BeraError","_isDefined","value","_assert","property","fn","result","InvalidArgumentError","_assertDefined","isDefined","isValid","expectedType","assertDefined","assertPublicClient","assertAddress","isAddress","assertPositive","assertAmount","createEmitter","events","event","args","callback","cb","i","_emitter","BeraMonitoring","exception"],"mappings":"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","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-2YBHAMDV.cjs","sourcesContent":[null,"import { BaseError } from \"viem\";\n\nimport { BeraError } from \"./BeraError\";\nimport { parseViemError } from \"./parseViemError\";\nimport { RequestError } from \"./RequestError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * The preferred way to normalize any unknown error into a BeraError.\n *\n * This function acts as a smart factory that picks the correct BeraError subclass:\n *\n * 1. If `cause` is already a `BeraError`, returns it as-is (no double-wrapping).\n * 2. If `cause` is a viem `BaseError`, runs `parseViemError` to classify it:\n * - If the root cause is an `HttpRequestError` (RPC transport failure), wraps it\n * in a `RequestError` with the endpoint URL extracted from the error.\n * 3. Otherwise, wraps in a new `BeraError` — which triggers the automatic reason\n * detection pipeline in the BeraError constructor (parseViemError → errorMap → displayMessage).\n *\n * **Use this instead of `new BeraError({ cause })` when you don't know the error type.**\n * It ensures RequestErrors are correctly classified (important for Sentry filtering\n * and fingerprinting — RequestErrors are skipped from transaction error grouping).\n *\n * @example\n * ```ts\n * try {\n * await someOperation();\n * } catch (error) {\n * // Normalizes to the right subclass, reason auto-detected\n * throw initBeraError({ cause: error });\n * }\n * ```\n *\n * @example\n * ```ts\n * // Reporting to Sentry without rethrowing\n * catch (error) {\n * captureException(initBeraError({ cause: error }));\n * }\n * ```\n */\nexport function initBeraError({\n cause: error,\n level,\n}: {\n cause: unknown;\n /**\n * The severity level of the error, only used if the error is not a BeraError.\n */\n level?: SeverityLevel;\n}): BeraError {\n // ── Step 1: Check if it's a viem BaseError that wraps an RPC transport failure ──\n // parseViemError with revertIfUnknown=false won't throw — it returns { reason: undefined }\n // if the error chain doesn't match any known type.\n if (error instanceof BaseError) {\n const parsed = parseViemError({\n error,\n revertIfUnknown: false,\n });\n if (\n parsed.isRequestError &&\n parsed.rootCause instanceof BaseError &&\n \"url\" in parsed.rootCause &&\n typeof parsed.rootCause.url === \"string\"\n ) {\n // RPC transport failure (e.g. HTTP 502 from the RPC endpoint).\n // Wrapping in RequestError gives it proper endpoint tagging and level=\"warning\".\n return new RequestError({\n cause: parsed.rootCause,\n response: undefined,\n endpoint: {\n url: parsed.rootCause.url as string,\n type: \"rpc\",\n },\n level,\n });\n }\n }\n\n // ── Step 2: Return as-is if already a BeraError, otherwise wrap ──────────\n // The BeraError constructor will run automatic reason detection on the cause.\n const err =\n error instanceof BeraError\n ? error\n : new BeraError({\n cause: error,\n level,\n });\n\n return err;\n}\n","import type { GetPublicClientReturnType } from \"@wagmi/core\";\nimport { type Address, isAddress, type PublicClient } from \"viem\";\n\nimport { InvalidArgumentError } from \"./InvalidArgumentError\";\n\nfunction _isDefined<T>(value: T): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\ntype _AssertFn<T> = (value: T) => { expectedType: string; isValid: boolean };\n\n/**\n * Internal assertion function.\n * @throws An InvalidArgumentError if the value is not valid.\n */\nfunction _assert<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: _AssertFn<T>;\n}) {\n const result = fn(value);\n if (!result.isValid) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: result.expectedType,\n });\n }\n}\n\nfunction _assertDefined<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: (value: T) => { expectedType: string; isValid: boolean };\n}) {\n _assert({\n value,\n property,\n fn: (value) => {\n const isDefined = _isDefined(value);\n const { isValid, expectedType } = fn(value);\n return {\n expectedType,\n isValid: isDefined && isValid,\n };\n },\n });\n}\n\n/**\n * Asserts that a value is defined.\n * @throws An InvalidArgumentError if the value is undefined or null.\n */\nexport function assertDefined<T>(\n /**\n * The value to assert.\n */\n value: T,\n /**\n * The property name.\n */\n property: string,\n): asserts value is NonNullable<T> {\n _assertDefined({\n value,\n property,\n fn: (value) => ({ expectedType: \"defined\", isValid: _isDefined(value) }),\n });\n}\n\n/**\n * Asserts that a value is a PublicClient.\n * @throws An InvalidArgumentError if the value is undefined or not a PublicClient.\n */\nexport function assertPublicClient(\n /**\n * The value to assert.\n */\n value: // it's important to have both types here because it helps with typescript build performance\n PublicClient | GetPublicClientReturnType | undefined,\n /**\n * The property name.\n */\n property: string = \"publicClient\",\n): asserts value is PublicClient {\n // there's no current way to check if a value is a PublicClient, so we just assert it's defined and `value: PublicClient` will do the rest\n assertDefined(value, property);\n}\n\n/**\n * Asserts that a value is an address (20 bytes).\n * @throws An InvalidArgumentError if the value is undefined, null, not a string, or not an address.\n */\nexport function assertAddress(\n /**\n * The value to assert.\n */\n value: string | undefined | null,\n /**\n * The property name.\n */\n property: string,\n): asserts value is Address {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"Address\",\n isValid: typeof value === \"string\" && isAddress(value),\n }),\n });\n}\n\n/**\n * Asserts that a value is positive (> 0).\n * @throws An InvalidArgumentError if the value is not positive.\n */\nexport function assertPositive(\n value: string | bigint | number,\n property: string,\n): void {\n const isPositive = typeof value === \"bigint\" ? value > 0n : Number(value) > 0;\n if (!isPositive) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: \"positive amount\",\n });\n }\n}\n\n/**\n * Asserts that a value is a number greater than 0.\n * @throws An InvalidArgumentError if the value is undefined, null, not a string or number, or not a number greater than 0.\n */\nexport function assertAmount(\n /**\n * The value to assert.\n */\n value: unknown,\n /**\n * The property name.\n */\n property: string,\n): asserts value is string | number {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"number\",\n isValid:\n (typeof value === \"string\" || typeof value === \"number\") &&\n Number(value) > 0,\n }),\n });\n}\n","interface EventsMap {\n [event: string]: any;\n}\n\ninterface DefaultEvents extends EventsMap {\n [event: string]: (...args: any) => void;\n}\n\nexport type Unsubscribe = () => void;\n\nexport interface Emitter<Events extends EventsMap = DefaultEvents> {\n /**\n * Calls each of the listeners registered for a given event.\n *\n * ```js\n * ee.emit('tick', tickType, tickDuration)\n * ```\n *\n * @param event The event name.\n * @param args The arguments for listeners.\n */\n emit<K extends keyof Events>(event: K, ...args: Parameters<Events[K]>): void;\n\n /**\n * Add a listener for a given event.\n *\n * ```js\n * const unbind = ee.on('tick', (tickType, tickDuration) => {\n * count += 1\n * })\n *\n * disable () {\n * unbind()\n * }\n * ```\n *\n * @param event The event name.\n * @param cb The listener function.\n * @returns Unbind listener from event.\n */\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n events: Partial<{ [E in keyof Events]: Events[E][] }>;\n}\n\n/**\n * An interface for mixins that expose the `on` function (without the emitter\n * bound to `this`)\n *\n * ```js\n * import { createEmitter } from '~utils/createEmitter'\n *\n * class Ticker implements EmitterMixin<Events> {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n */\nexport interface EmitterMixin<Events extends EventsMap = DefaultEvents> {\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n}\n\n/**\n * Create event emitter.\n *\n * ```js\n * import { createEmitter } from './createEmitter'\n *\n * class Ticker {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n *\n * Inspired by {@link https://github.com/ai/nanoevents}\n */\nexport function createEmitter<\n Events extends EventsMap = DefaultEvents,\n>(): Emitter<Events> {\n /**\n * Event names in keys and arrays with listeners in values.\n *\n * ```js\n * emitter1.events = emitter2.events\n * emitter2.events = { }\n * ```\n */\n const events: Partial<{ [E in keyof Events]: Events[E][] }> = {};\n\n return {\n emit(event, ...args) {\n for (const callback of events[event] || []) {\n callback(...args);\n }\n },\n events,\n on(event, cb) {\n if (!events[event]) {\n events[event] = [];\n }\n\n events[event].push(cb);\n\n return () => {\n events[event] = events[event]?.filter((i) => cb !== i);\n };\n },\n };\n}\n","import { createEmitter, type EmitterMixin } from \"../utils/createEmitter\";\nimport type { BeraError } from \"./BeraError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * Context passed alongside captured exceptions.\n * Mirrors the subset of Sentry's CaptureContext that berajs actually uses.\n */\nexport interface CaptureContext {\n level: SeverityLevel;\n extra?: Record<string, unknown>;\n tags?: Record<string, string | number | boolean | null | undefined>;\n fingerprint?: string[];\n data?: Record<string, unknown>;\n}\n\nexport interface ErrorEvent {\n exception: BeraError;\n timestamp: number;\n}\n\nconst _emitter = createEmitter<{ exception: (event: ErrorEvent) => void }>();\n\n/**\n * A generic error reporter for berajs.\n *\n * Instead of calling Sentry.captureException directly, berajs calls\n * `BeraMonitoring.captureException()`. Consumer apps subscribe via `.on()` and\n * forward events to their monitoring provider (Sentry, Datadog, etc.).\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraMonitoring } from \"./BeraMonitoring\";\n * BeraMonitoring.captureExceptionException(error);\n *\n * // In app instrumentation:\n * import { BeraMonitoring } from \"@berachain/berajs/errors\";\n * BeraMonitoring.on((event) => {\n * if (event.type === \"exception\") {\n * Sentry.captureException(event.exception);\n * }\n * });\n * ```\n */\nexport const BeraMonitoring: {\n captureException: (exception: BeraError) => void;\n} & EmitterMixin<{ exception: (event: ErrorEvent) => void }> = {\n /**\n * Capture an exception. Notifies all subscribers.\n */\n captureException(exception: BeraError): void {\n const event: ErrorEvent = {\n exception,\n timestamp: Date.now(),\n };\n _emitter.emit(\"exception\", event);\n },\n /**\n * Subscribe to error events.\n * @returns An unsubscribe function.\n */\n on(...args) {\n return _emitter.on(...args);\n },\n};\n"]}
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-2YBHAMDV.cjs","../src/errors/initBeraError.ts","../src/errors/assert.ts","../src/utils/createEmitter.ts","../src/errors/BeraMonitoring.ts"],"names":["initBeraError","error","level","BaseError","parsed","parseViemError","RequestError","BeraError","_isDefined","value","_assert","property","fn","result","InvalidArgumentError","_assertDefined","isDefined","isValid","expectedType","assertDefined","assertPublicClient","assertAddress","isAddress","assertPositive","assertAmount","createEmitter","events","event","args","callback","cb","i","_emitter","BeraMonitoring","exception"],"mappings":"AAAA,qoBAA6D,4BCAnC,SAyCVA,CAAAA,CAAc,CAC5B,KAAA,CAAOC,CAAAA,CACP,KAAA,CAAAC,CACF,CAAA,CAMc,CAIZ,EAAA,CAAID,EAAAA,WAAiBE,eAAAA,CAAW,CAC9B,IAAMC,CAAAA,CAASC,iCAAAA,CACb,KAAA,CAAAJ,CAAAA,CACA,eAAA,CAAiB,CAAA,CACnB,CAAC,CAAA,CACD,EAAA,CACEG,CAAAA,CAAO,cAAA,EACPA,CAAAA,CAAO,UAAA,WAAqBD,eAAAA,EAC5B,KAAA,GAASC,CAAAA,CAAO,SAAA,EAChB,OAAOA,CAAAA,CAAO,SAAA,CAAU,GAAA,EAAQ,QAAA,CAIhC,OAAO,IAAIE,wBAAAA,CAAa,CACtB,KAAA,CAAOF,CAAAA,CAAO,SAAA,CACd,QAAA,CAAU,KAAA,CAAA,CACV,QAAA,CAAU,CACR,GAAA,CAAKA,CAAAA,CAAO,SAAA,CAAU,GAAA,CACtB,IAAA,CAAM,KACR,CAAA,CACA,KAAA,CAAAF,CACF,CAAC,CAEL,CAYA,OAPED,EAAAA,WAAiBM,mBAAAA,CACbN,CAAAA,CACA,IAAIM,wBAAAA,CAAU,CACZ,KAAA,CAAON,CAAAA,CACP,KAAA,CAAAC,CACF,CAAC,CAGT,CCzFA,SAISM,CAAAA,CAAcC,CAAAA,CAAmC,CACxD,OAA8BA,CAAAA,EAAU,IAC1C,CAQA,SAASC,CAAAA,CAAW,CAClB,KAAA,CAAAD,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAAC,CACF,CAAA,CAIG,CACD,IAAMC,CAAAA,CAASD,CAAAA,CAAGH,CAAK,CAAA,CACvB,EAAA,CAAI,CAACI,CAAAA,CAAO,OAAA,CACV,MAAM,IAAIC,wBAAAA,CAAqB,CAC7B,QAAA,CAAAH,CAAAA,CACA,KAAA,CAAAF,CAAAA,CACA,QAAA,CAAUI,CAAAA,CAAO,YACnB,CAAC,CAEL,CAEA,SAASE,CAAAA,CAAkB,CACzB,KAAA,CAAAN,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAAC,CACF,CAAA,CAIG,CACDF,CAAAA,CAAQ,CACN,KAAA,CAAAD,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAKF,CAAAA,EAAU,CACb,IAAMO,CAAAA,CAAYR,CAAAA,CAAWC,CAAK,CAAA,CAC5B,CAAE,OAAA,CAAAQ,CAAAA,CAAS,YAAA,CAAAC,CAAa,CAAA,CAAIN,CAAAA,CAAGH,CAAK,CAAA,CAC1C,MAAO,CACL,YAAA,CAAAS,CAAAA,CACA,OAAA,CAASF,CAAAA,EAAaC,CACxB,CACF,CACF,CAAC,CACH,CAMO,SAASE,CAAAA,CAIdV,CAAAA,CAIAE,CAAAA,CACiC,CACjCI,CAAAA,CAAe,CACb,KAAA,CAAAN,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAKF,CAAAA,EAAAA,CAAW,CAAE,YAAA,CAAc,SAAA,CAAW,OAAA,CAASD,CAAAA,CAAWC,CAAK,CAAE,CAAA,CACxE,CAAC,CACH,CAMO,SAASW,CAAAA,CAIdX,CAAAA,CAKAE,CAAAA,CAAmB,cAAA,CACY,CAE/BQ,CAAAA,CAAcV,CAAAA,CAAOE,CAAQ,CAC/B,CAMO,SAASU,CAAAA,CAIdZ,CAAAA,CAIAE,CAAAA,CAC0B,CAC1BI,CAAAA,CAAe,CACb,KAAA,CAAAN,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAKF,CAAAA,EAAAA,CAAW,CACd,YAAA,CAAc,SAAA,CACd,OAAA,CAAS,OAAOA,CAAAA,EAAU,QAAA,EAAYa,6BAAAA,CAAe,CACvD,CAAA,CACF,CAAC,CACH,CAMO,SAASC,CAAAA,CACdd,CAAAA,CACAE,CAAAA,CACM,CAEN,EAAA,CAAI,CAAA,CADe,OAAOF,CAAAA,EAAU,QAAA,CAAWA,CAAAA,CAAQ,EAAA,CAAK,MAAA,CAAOA,CAAK,CAAA,CAAI,CAAA,CAAA,CAE1E,MAAM,IAAIK,wBAAAA,CAAqB,CAC7B,QAAA,CAAAH,CAAAA,CACA,KAAA,CAAAF,CAAAA,CACA,QAAA,CAAU,iBACZ,CAAC,CAEL,CAMO,SAASe,CAAAA,CAIdf,CAAAA,CAIAE,CAAAA,CACkC,CAClCI,CAAAA,CAAe,CACb,KAAA,CAAAN,CAAAA,CACA,QAAA,CAAAE,CAAAA,CACA,EAAA,CAAKF,CAAAA,EAAAA,CAAW,CACd,YAAA,CAAc,QAAA,CACd,OAAA,CAAA,CACG,OAAOA,CAAAA,EAAU,QAAA,EAAY,OAAOA,CAAAA,EAAU,QAAA,CAAA,EAC/C,MAAA,CAAOA,CAAK,CAAA,CAAI,CACpB,CAAA,CACF,CAAC,CACH,CC1EO,SAASgB,CAAAA,CAAAA,CAEK,CASnB,IAAMC,CAAAA,CAAwD,CAAC,CAAA,CAE/D,MAAO,CACL,IAAA,CAAKC,CAAAA,CAAAA,GAAUC,CAAAA,CAAM,CACnB,GAAA,CAAA,IAAWC,EAAAA,GAAYH,CAAAA,CAAOC,CAAK,CAAA,EAAK,CAAC,CAAA,CACvCE,CAAAA,CAAS,GAAGD,CAAI,CAEpB,CAAA,CACA,MAAA,CAAAF,CAAAA,CACA,EAAA,CAAGC,CAAAA,CAAOG,CAAAA,CAAI,CACZ,OAAKJ,CAAAA,CAAOC,CAAK,CAAA,EAAA,CACfD,CAAAA,CAAOC,CAAK,CAAA,CAAI,CAAC,CAAA,CAAA,CAGnBD,CAAAA,CAAOC,CAAK,CAAA,CAAE,IAAA,CAAKG,CAAE,CAAA,CAEd,CAAA,CAAA,EAAM,CACXJ,CAAAA,CAAOC,CAAK,CAAA,iBAAID,CAAAA,qBAAOC,CAAK,CAAA,6BAAG,MAAA,mBAAQI,CAAAA,EAAMD,CAAAA,GAAOC,CAAC,GACvD,CACF,CACF,CACF,CCpGA,IAAMC,CAAAA,CAAWP,CAAAA,CAA0D,CAAA,CAwB9DQ,CAAAA,aAEkD,CAI7D,gBAAA,CAAiBC,CAAAA,CAA4B,CAC3C,IAAMP,CAAAA,CAAoB,CACxB,SAAA,CAAAO,CAAAA,CACA,SAAA,CAAW,IAAA,CAAK,GAAA,CAAI,CACtB,CAAA,CACAF,CAAAA,CAAS,IAAA,CAAK,WAAA,CAAaL,CAAK,CAClC,CAAA,CAKA,EAAA,CAAA,GAAMC,CAAAA,CAAM,CACV,OAAOI,CAAAA,CAAS,EAAA,CAAG,GAAGJ,CAAI,CAC5B,CACF,CAAA,CAAA,wGAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-2YBHAMDV.cjs","sourcesContent":[null,"import { BaseError } from \"viem\";\n\nimport { BeraError } from \"./BeraError\";\nimport { parseViemError } from \"./parseViemError\";\nimport { RequestError } from \"./RequestError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * The preferred way to normalize any unknown error into a BeraError.\n *\n * This function acts as a smart factory that picks the correct BeraError subclass:\n *\n * 1. If `cause` is already a `BeraError`, returns it as-is (no double-wrapping).\n * 2. If `cause` is a viem `BaseError`, runs `parseViemError` to classify it:\n * - If the root cause is an `HttpRequestError` (RPC transport failure), wraps it\n * in a `RequestError` with the endpoint URL extracted from the error.\n * 3. Otherwise, wraps in a new `BeraError` — which triggers the automatic reason\n * detection pipeline in the BeraError constructor (parseViemError → errorMap → displayMessage).\n *\n * **Use this instead of `new BeraError({ cause })` when you don't know the error type.**\n * It ensures RequestErrors are correctly classified (important for Sentry filtering\n * and fingerprinting — RequestErrors are skipped from transaction error grouping).\n *\n * @example\n * ```ts\n * try {\n * await someOperation();\n * } catch (error) {\n * // Normalizes to the right subclass, reason auto-detected\n * throw initBeraError({ cause: error });\n * }\n * ```\n *\n * @example\n * ```ts\n * // Reporting to Sentry without rethrowing\n * catch (error) {\n * captureException(initBeraError({ cause: error }));\n * }\n * ```\n */\nexport function initBeraError({\n cause: error,\n level,\n}: {\n cause: unknown;\n /**\n * The severity level of the error, only used if the error is not a BeraError.\n */\n level?: SeverityLevel;\n}): BeraError {\n // ── Step 1: Check if it's a viem BaseError that wraps an RPC transport failure ──\n // parseViemError with revertIfUnknown=false won't throw — it returns { reason: undefined }\n // if the error chain doesn't match any known type.\n if (error instanceof BaseError) {\n const parsed = parseViemError({\n error,\n revertIfUnknown: false,\n });\n if (\n parsed.isRequestError &&\n parsed.rootCause instanceof BaseError &&\n \"url\" in parsed.rootCause &&\n typeof parsed.rootCause.url === \"string\"\n ) {\n // RPC transport failure (e.g. HTTP 502 from the RPC endpoint).\n // Wrapping in RequestError gives it proper endpoint tagging and level=\"warning\".\n return new RequestError({\n cause: parsed.rootCause,\n response: undefined,\n endpoint: {\n url: parsed.rootCause.url as string,\n type: \"rpc\",\n },\n level,\n });\n }\n }\n\n // ── Step 2: Return as-is if already a BeraError, otherwise wrap ──────────\n // The BeraError constructor will run automatic reason detection on the cause.\n const err =\n error instanceof BeraError\n ? error\n : new BeraError({\n cause: error,\n level,\n });\n\n return err;\n}\n","import type { GetPublicClientReturnType } from \"@wagmi/core\";\nimport { type Address, isAddress, type PublicClient } from \"viem\";\n\nimport { InvalidArgumentError } from \"./InvalidArgumentError\";\n\nfunction _isDefined<T>(value: T): value is NonNullable<T> {\n return value !== undefined && value !== null;\n}\n\ntype _AssertFn<T> = (value: T) => { expectedType: string; isValid: boolean };\n\n/**\n * Internal assertion function.\n * @throws An InvalidArgumentError if the value is not valid.\n */\nfunction _assert<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: _AssertFn<T>;\n}) {\n const result = fn(value);\n if (!result.isValid) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: result.expectedType,\n });\n }\n}\n\nfunction _assertDefined<T>({\n value,\n property,\n fn,\n}: {\n value: T;\n property: string;\n fn: (value: T) => { expectedType: string; isValid: boolean };\n}) {\n _assert({\n value,\n property,\n fn: (value) => {\n const isDefined = _isDefined(value);\n const { isValid, expectedType } = fn(value);\n return {\n expectedType,\n isValid: isDefined && isValid,\n };\n },\n });\n}\n\n/**\n * Asserts that a value is defined.\n * @throws An InvalidArgumentError if the value is undefined or null.\n */\nexport function assertDefined<T>(\n /**\n * The value to assert.\n */\n value: T,\n /**\n * The property name.\n */\n property: string,\n): asserts value is NonNullable<T> {\n _assertDefined({\n value,\n property,\n fn: (value) => ({ expectedType: \"defined\", isValid: _isDefined(value) }),\n });\n}\n\n/**\n * Asserts that a value is a PublicClient.\n * @throws An InvalidArgumentError if the value is undefined or not a PublicClient.\n */\nexport function assertPublicClient(\n /**\n * The value to assert.\n */\n value: // it's important to have both types here because it helps with typescript build performance\n PublicClient | GetPublicClientReturnType | undefined,\n /**\n * The property name.\n */\n property: string = \"publicClient\",\n): asserts value is PublicClient {\n // there's no current way to check if a value is a PublicClient, so we just assert it's defined and `value: PublicClient` will do the rest\n assertDefined(value, property);\n}\n\n/**\n * Asserts that a value is an address (20 bytes).\n * @throws An InvalidArgumentError if the value is undefined, null, not a string, or not an address.\n */\nexport function assertAddress(\n /**\n * The value to assert.\n */\n value: string | undefined | null,\n /**\n * The property name.\n */\n property: string,\n): asserts value is Address {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"Address\",\n isValid: typeof value === \"string\" && isAddress(value),\n }),\n });\n}\n\n/**\n * Asserts that a value is positive (> 0).\n * @throws An InvalidArgumentError if the value is not positive.\n */\nexport function assertPositive(\n value: string | bigint | number,\n property: string,\n): void {\n const isPositive = typeof value === \"bigint\" ? value > 0n : Number(value) > 0;\n if (!isPositive) {\n throw new InvalidArgumentError({\n property,\n value,\n expected: \"positive amount\",\n });\n }\n}\n\n/**\n * Asserts that a value is a number greater than 0.\n * @throws An InvalidArgumentError if the value is undefined, null, not a string or number, or not a number greater than 0.\n */\nexport function assertAmount(\n /**\n * The value to assert.\n */\n value: unknown,\n /**\n * The property name.\n */\n property: string,\n): asserts value is string | number {\n _assertDefined({\n value,\n property,\n fn: (value) => ({\n expectedType: \"number\",\n isValid:\n (typeof value === \"string\" || typeof value === \"number\") &&\n Number(value) > 0,\n }),\n });\n}\n","interface EventsMap {\n [event: string]: any;\n}\n\ninterface DefaultEvents extends EventsMap {\n [event: string]: (...args: any) => void;\n}\n\nexport type Unsubscribe = () => void;\n\nexport interface Emitter<Events extends EventsMap = DefaultEvents> {\n /**\n * Calls each of the listeners registered for a given event.\n *\n * ```js\n * ee.emit('tick', tickType, tickDuration)\n * ```\n *\n * @param event The event name.\n * @param args The arguments for listeners.\n */\n emit<K extends keyof Events>(event: K, ...args: Parameters<Events[K]>): void;\n\n /**\n * Add a listener for a given event.\n *\n * ```js\n * const unbind = ee.on('tick', (tickType, tickDuration) => {\n * count += 1\n * })\n *\n * disable () {\n * unbind()\n * }\n * ```\n *\n * @param event The event name.\n * @param cb The listener function.\n * @returns Unbind listener from event.\n */\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n events: Partial<{ [E in keyof Events]: Events[E][] }>;\n}\n\n/**\n * An interface for mixins that expose the `on` function (without the emitter\n * bound to `this`)\n *\n * ```js\n * import { createEmitter } from '~utils/createEmitter'\n *\n * class Ticker implements EmitterMixin<Events> {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n */\nexport interface EmitterMixin<Events extends EventsMap = DefaultEvents> {\n on<K extends keyof Events>(event: K, cb: Events[K]): Unsubscribe;\n}\n\n/**\n * Create event emitter.\n *\n * ```js\n * import { createEmitter } from './createEmitter'\n *\n * class Ticker {\n * constructor() {\n * this.emitter = createEmitter()\n * }\n * on(...args) {\n * return this.emitter.on(...args)\n * }\n * tick() {\n * this.emitter.emit('tick')\n * }\n * }\n * ```\n *\n * Inspired by {@link https://github.com/ai/nanoevents}\n */\nexport function createEmitter<\n Events extends EventsMap = DefaultEvents,\n>(): Emitter<Events> {\n /**\n * Event names in keys and arrays with listeners in values.\n *\n * ```js\n * emitter1.events = emitter2.events\n * emitter2.events = { }\n * ```\n */\n const events: Partial<{ [E in keyof Events]: Events[E][] }> = {};\n\n return {\n emit(event, ...args) {\n for (const callback of events[event] || []) {\n callback(...args);\n }\n },\n events,\n on(event, cb) {\n if (!events[event]) {\n events[event] = [];\n }\n\n events[event].push(cb);\n\n return () => {\n events[event] = events[event]?.filter((i) => cb !== i);\n };\n },\n };\n}\n","import { createEmitter, type EmitterMixin } from \"../utils/createEmitter\";\nimport type { BeraError } from \"./BeraError\";\nimport type { SeverityLevel } from \"./severity\";\n\n/**\n * Context passed alongside captured exceptions.\n * Mirrors the subset of Sentry's CaptureContext that berajs actually uses.\n */\nexport interface CaptureContext {\n level: SeverityLevel;\n extra?: Record<string, unknown>;\n tags?: Record<string, string | number | boolean | null | undefined>;\n fingerprint?: string[];\n data?: Record<string, unknown>;\n}\n\nexport interface ErrorEvent {\n exception: BeraError;\n timestamp: number;\n}\n\nconst _emitter = createEmitter<{ exception: (event: ErrorEvent) => void }>();\n\n/**\n * A generic error reporter for berajs.\n *\n * Instead of calling Sentry.captureException directly, berajs calls\n * `BeraMonitoring.captureException()`. Consumer apps subscribe via `.on()` and\n * forward events to their monitoring provider (Sentry, Datadog, etc.).\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraMonitoring } from \"./BeraMonitoring\";\n * BeraMonitoring.captureExceptionException(error);\n *\n * // In app instrumentation:\n * import { BeraMonitoring } from \"@berachain/berajs/errors\";\n * BeraMonitoring.on((event) => {\n * if (event.type === \"exception\") {\n * Sentry.captureException(event.exception);\n * }\n * });\n * ```\n */\nexport const BeraMonitoring: {\n captureException: (exception: BeraError) => void;\n} & EmitterMixin<{ exception: (event: ErrorEvent) => void }> = {\n /**\n * Capture an exception. Notifies all subscribers.\n */\n captureException(exception: BeraError): void {\n const event: ErrorEvent = {\n exception,\n timestamp: Date.now(),\n };\n _emitter.emit(\"exception\", event);\n },\n /**\n * Subscribe to error events.\n * @returns An unsubscribe function.\n */\n on(...args) {\n return _emitter.on(...args);\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-57RINXU6.cjs","../src/utils/tokenWrapping.ts","../src/utils/math.ts"],"names":["wrapNativeToken","token","isToken","wBeraToken","wrapNativeTokens","tokens","computePriceImpact","tokenInPrice","tokenOutPrice","inAmount","outAmount","usdIn","bignumber_js_default","usdOut","ratio"],"mappings":"AAAA,iIAAwC,wDAAgD,SCMxEA,CAAAA,CAAqCC,CAAAA,CAAa,CAChE,MAAO,CACL,GAAGA,CAAAA,CACH,GAAIC,iCAAAA,CAAQD,CAAO,MAAM,CAAA,EAAKE,mBAChC,CACF,CAEO,SAASC,CAAAA,CAAsCC,CAAAA,CAAkB,CACtE,OAAOA,CAAAA,CAAO,GAAA,CAAKJ,CAAAA,EAAUD,CAAAA,CAAgBC,CAAK,CAAC,CACrD,CCLO,IAAMK,CAAAA,CAAqB,CAChCC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAAA,EACW,CACX,EAAA,CAAI,CAACH,CAAAA,EAAgB,CAACC,CAAAA,EAAiB,CAACC,CAAAA,EAAY,CAACC,CAAAA,CAAW,OAAO,CAAA,CAEvE,IAAMC,CAAAA,CAAQ,IAAIC,wBAAAA,CAAUL,CAAY,CAAA,CAAE,KAAA,CAAME,CAAQ,CAAA,CAClDI,CAAAA,CAAS,IAAID,wBAAAA,CAAUJ,CAAa,CAAA,CAAE,KAAA,CAAME,CAAS,CAAA,CAI3D,EAAA,CADIC,CAAAA,CAAM,EAAA,CAAG,GAAI,CAAA,EAAKE,CAAAA,CAAO,EAAA,CAAG,GAAI,CAAA,EAChCF,CAAAA,CAAM,MAAA,CAAO,CAAA,EAAKE,CAAAA,CAAO,MAAA,CAAO,CAAA,CAAG,OAAO,CAAA,CAE9C,IAAMC,CAAAA,CAAQD,CAAAA,CAAO,GAAA,CAAIF,CAAK,CAAA,CAC9B,OAAO,MAAA,CAAO,IAAIC,wBAAAA,CAAU,CAAC,CAAA,CAAE,KAAA,CAAME,CAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CACvD,CAAA,CAAA,4CAAA","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-57RINXU6.cjs","sourcesContent":[null,"import { isToken, wBeraToken } from \"./tokens\";\n\ntype BaseToken = {\n address: string;\n};\n\nexport function wrapNativeToken<T extends BaseToken>(token: T): T {\n return {\n ...token,\n ...(isToken(token, \"BERA\") && wBeraToken),\n };\n}\n\nexport function wrapNativeTokens<T extends BaseToken>(tokens: T[]): T[] {\n return tokens.map((token) => wrapNativeToken(token));\n}\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\n/**\n * Compute the price impact of a swap\n * @param {string} tokenInPrice - The price of the input token\n * @param {string} tokenOutPrice - The price of the output token\n * @param {string} inAmount - The amount of the input token\n * @param {string} outAmount - The amount of the output token\n * @returns {number} The price impact of the swap\n */\nexport const computePriceImpact = (\n tokenInPrice: string,\n tokenOutPrice: string,\n inAmount: string,\n outAmount: string,\n): number => {\n if (!tokenInPrice || !tokenOutPrice || !inAmount || !outAmount) return 0;\n\n const usdIn = new BigNumber(tokenInPrice).times(inAmount);\n const usdOut = new BigNumber(tokenOutPrice).times(outAmount);\n\n // is the amount is close to 0, return 0\n if (usdIn.lt(0.01) || usdOut.lt(0.01)) return 0;\n if (usdIn.isZero() || usdOut.isZero()) return 0;\n\n const ratio = usdOut.div(usdIn);\n return Number(new BigNumber(1).minus(ratio).toFixed());\n};\n"]}
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-57RINXU6.cjs","../src/utils/tokenWrapping.ts","../src/utils/math.ts"],"names":["wrapNativeToken","token","isToken","wBeraToken","wrapNativeTokens","tokens","computePriceImpact","tokenInPrice","tokenOutPrice","inAmount","outAmount","usdIn","bignumber_js_default","usdOut","ratio"],"mappings":"AAAA,iIAAwC,wDAAgD,SCMxEA,CAAAA,CAAqCC,CAAAA,CAAa,CAChE,MAAO,CACL,GAAGA,CAAAA,CACH,GAAIC,iCAAAA,CAAQD,CAAO,MAAM,CAAA,EAAKE,mBAChC,CACF,CAEO,SAASC,CAAAA,CAAsCC,CAAAA,CAAkB,CACtE,OAAOA,CAAAA,CAAO,GAAA,CAAKJ,CAAAA,EAAUD,CAAAA,CAAgBC,CAAK,CAAC,CACrD,CCLO,IAAMK,CAAAA,CAAqB,CAChCC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CAAAA,EACW,CACX,EAAA,CAAI,CAACH,CAAAA,EAAgB,CAACC,CAAAA,EAAiB,CAACC,CAAAA,EAAY,CAACC,CAAAA,CAAW,OAAO,CAAA,CAEvE,IAAMC,CAAAA,CAAQ,IAAIC,wBAAAA,CAAUL,CAAY,CAAA,CAAE,KAAA,CAAME,CAAQ,CAAA,CAClDI,CAAAA,CAAS,IAAID,wBAAAA,CAAUJ,CAAa,CAAA,CAAE,KAAA,CAAME,CAAS,CAAA,CAI3D,EAAA,CADIC,CAAAA,CAAM,EAAA,CAAG,GAAI,CAAA,EAAKE,CAAAA,CAAO,EAAA,CAAG,GAAI,CAAA,EAChCF,CAAAA,CAAM,MAAA,CAAO,CAAA,EAAKE,CAAAA,CAAO,MAAA,CAAO,CAAA,CAAG,OAAO,CAAA,CAE9C,IAAMC,CAAAA,CAAQD,CAAAA,CAAO,GAAA,CAAIF,CAAK,CAAA,CAC9B,OAAO,MAAA,CAAO,IAAIC,wBAAAA,CAAU,CAAC,CAAA,CAAE,KAAA,CAAME,CAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CACvD,CAAA,CAAA,4CAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-57RINXU6.cjs","sourcesContent":[null,"import { isToken, wBeraToken } from \"./tokens\";\n\ntype BaseToken = {\n address: string;\n};\n\nexport function wrapNativeToken<T extends BaseToken>(token: T): T {\n return {\n ...token,\n ...(isToken(token, \"BERA\") && wBeraToken),\n };\n}\n\nexport function wrapNativeTokens<T extends BaseToken>(tokens: T[]): T[] {\n return tokens.map((token) => wrapNativeToken(token));\n}\n","import BigNumber from \"@berachain/utils/pkg/bignumber.js\";\n\n/**\n * Compute the price impact of a swap\n * @param {string} tokenInPrice - The price of the input token\n * @param {string} tokenOutPrice - The price of the output token\n * @param {string} inAmount - The amount of the input token\n * @param {string} outAmount - The amount of the output token\n * @returns {number} The price impact of the swap\n */\nexport const computePriceImpact = (\n tokenInPrice: string,\n tokenOutPrice: string,\n inAmount: string,\n outAmount: string,\n): number => {\n if (!tokenInPrice || !tokenOutPrice || !inAmount || !outAmount) return 0;\n\n const usdIn = new BigNumber(tokenInPrice).times(inAmount);\n const usdOut = new BigNumber(tokenOutPrice).times(outAmount);\n\n // is the amount is close to 0, return 0\n if (usdIn.lt(0.01) || usdOut.lt(0.01)) return 0;\n if (usdIn.isZero() || usdOut.isZero()) return 0;\n\n const ratio = usdOut.div(usdIn);\n return Number(new BigNumber(1).minus(ratio).toFixed());\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-74WA35RI.cjs","../src/utils/parseBaseArgs.ts"],"names":["parseBaseArgs","args","chainId","defaultChainId","config","chainConfigs","InvalidArgumentError"],"mappings":"AAAA,qOAAwC,sDCIjC,SAISA,CAAAA,CAAcC,CAAAA,CAA+B,CAC3D,IAAMC,CAAAA,kBAAUD,CAAAA,CAAK,OAAA,SAAWE,0BAAAA,CAC1BC,CAAAA,kBAAqBH,CAAAA,CAAK,MAAA,SAAUI,sBAAAA,CAAaH,CAAO,GAAA,CAE9D,EAAA,CAAID,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,OAAA,GAAYG,CAAAA,CAAO,OAAA,CAE1C,MAAM,IAAIE,wBAAAA,CAAqB,CAC7B,QAAA,CAAU,SAAA,CACV,KAAA,CAAOJ,CAAAA,CACP,QAAA,CAAU,CAAA,gBAAA,EAAmBE,CAAAA,CAAO,OAAO,CAAA,CAAA","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-74WA35RI.cjs","sourcesContent":[null,"import {\n type BeraConfig,\n chainConfigs,\n defaultChainId,\n} from \"@berachain/config/internal\";\n\nimport { InvalidArgumentError } from \"../errors/InvalidArgumentError\";\n\nexport function parseBaseArgs(args: BeraJS.BaseFunctionArgs) {\n const chainId = args.chainId ?? defaultChainId;\n const config: BeraConfig = args.config ?? chainConfigs[chainId];\n\n if (args.chainId && args.chainId !== config.chainId) {\n // this matches unless the config is explicitly provided\n throw new InvalidArgumentError({\n property: \"chainId\",\n value: chainId,\n expected: `config.chainId: ${config.chainId}`,\n });\n }\n\n return { config, chainId: config.chainId };\n}\n"]}
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-74WA35RI.cjs","../src/utils/parseBaseArgs.ts"],"names":["parseBaseArgs","args","chainId","defaultChainId","config","chainConfigs","InvalidArgumentError"],"mappings":"AAAA,qOAAwC,sDCIjC,SAISA,CAAAA,CAAcC,CAAAA,CAA+B,CAC3D,IAAMC,CAAAA,kBAAUD,CAAAA,CAAK,OAAA,SAAWE,0BAAAA,CAC1BC,CAAAA,kBAAqBH,CAAAA,CAAK,MAAA,SAAUI,sBAAAA,CAAaH,CAAO,GAAA,CAE9D,EAAA,CAAID,CAAAA,CAAK,OAAA,EAAWA,CAAAA,CAAK,OAAA,GAAYG,CAAAA,CAAO,OAAA,CAE1C,MAAM,IAAIE,wBAAAA,CAAqB,CAC7B,QAAA,CAAU,SAAA,CACV,KAAA,CAAOJ,CAAAA,CACP,QAAA,CAAU,CAAA,gBAAA,EAAmBE,CAAAA,CAAO,OAAO,CAAA,CAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-74WA35RI.cjs","sourcesContent":[null,"import {\n type BeraConfig,\n chainConfigs,\n defaultChainId,\n} from \"@berachain/config/internal\";\n\nimport { InvalidArgumentError } from \"../errors/InvalidArgumentError\";\n\nexport function parseBaseArgs(args: BeraJS.BaseFunctionArgs) {\n const chainId = args.chainId ?? defaultChainId;\n const config: BeraConfig = args.config ?? chainConfigs[chainId];\n\n if (args.chainId && args.chainId !== config.chainId) {\n // this matches unless the config is explicitly provided\n throw new InvalidArgumentError({\n property: \"chainId\",\n value: chainId,\n expected: `config.chainId: ${config.chainId}`,\n });\n }\n\n return { config, chainId: config.chainId };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-CF3LFNXG.cjs","../src/actions/clients/getEnsoClient.ts"],"names":["isProduction","getEnsoClient","useProxy","args","config","parseBaseArgs","EnsoClient"],"mappings":"AAAA,yuBAAwC,wDAAuD,wDAAgD,uCCApH,sDAED,IAIpBA,CAAAA,CACJ,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,aAAA,EAAiB,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,MAAA,CAE9D,SAASC,CAAAA,CAAc,CAC5B,QAAA,CAAAC,CAAAA,CAAWF,CAAAA,CACX,GAAGG,CACL,CAAA,CAAsD,CAAC,CAAA,CAAG,CACxD,GAAM,CAAE,MAAA,CAAAC,CAAO,CAAA,CAAIC,iCAAAA,CAAkB,CAAA,CACrC,OAAO,IAAIC,oBAAAA,CAAW,CACpB,OAAA,CAASJ,CAAAA,CACL,CAAA,EAAA","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-CF3LFNXG.cjs","sourcesContent":[null,"import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n"]}
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-CF3LFNXG.cjs","../src/actions/clients/getEnsoClient.ts"],"names":["isProduction","getEnsoClient","useProxy","args","config","parseBaseArgs","EnsoClient"],"mappings":"AAAA,yuBAAwC,wDAAuD,wDAAgD,uCCApH,sDAED,IAIpBA,CAAAA,CACJ,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,aAAA,EAAiB,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,MAAA,CAE9D,SAASC,CAAAA,CAAc,CAC5B,QAAA,CAAAC,CAAAA,CAAWF,CAAAA,CACX,GAAGG,CACL,CAAA,CAAsD,CAAC,CAAA,CAAG,CACxD,GAAM,CAAE,MAAA,CAAAC,CAAO,CAAA,CAAIC,iCAAAA,CAAkB,CAAA,CACrC,OAAO,IAAIC,oBAAAA,CAAW,CACpB,OAAA,CAASJ,CAAAA,CACL,CAAA,EAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-CF3LFNXG.cjs","sourcesContent":[null,"import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/contexts/BeraFlags/defaultFlags.ts"],"names":["defaultFlags"],"mappings":"AAgCO,6EAAMA,CAAAA,CAA0B,CACrC,mBAAA,CAAqB,CAAA,CAAA,CACrB,aAAA,CAAe,CAAA,CAAA,CACf,6BAAA,CAA+B,CAAA,CAAA,CAC/B,wBAAA,CAA0B,CAAA,CAAA,CAC1B,UAAA,CAAY,CAAA,CAAA,CACZ,mBAAA,CAAqB,CAAA,CAAA,CACrB,qBAAA,CAAuB,CAAA,CAAA,CACvB,oBAAA,CAAsB,CAAA,CAAA,CACtB,0BAAA,CAA4B,CAAA,CAAA,CAC5B,qBAAA,CAAuB,CAAA,CAAA,CACvB,qBAAA,CAAuB,CAAA,CAAA,CACvB,4BAAA,CAA8B,CAAA,CAAA,CAC9B,mBAAA,CAAqB,CAAA,CAAA,CACrB,yBAAA,CAA2B,CAAA,CAAA,CAC3B,oBAAA,CAAsB,CAAA,CAAA,CACtB,yBAAA,CAA2B,CAAA,CAC7B,CAAA,CAAA,cAAA","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-DDEQFR3M.cjs","sourcesContent":["import type { flags } from \"@berachain/config/internal/flags\";\n\ntype ClientSideFlags = keyof typeof flags;\n\nexport type BeraFlags = Record<\n Extract<\n ClientSideFlags,\n // We don't want to have all flags on the context. Just the ones that cannot be used server side only\n // this is because we generally should prefer server side flags, also according to flag-sdk docs\n | \"isGovernanceEnabled\"\n | \"enableEip5792\"\n | \"proxyAggregatorsThroughVercel\"\n | \"isEmbeddedWalletsEnabled\"\n | \"sponsorGas\"\n | \"enableSimulateCalls\"\n | \"isBendVaultDataHourly\"\n | \"isBendLoopingEnabled\"\n | \"isMultiChainZapBendEnabled\"\n | \"isZapStakeBeraEnabled\"\n | \"mockValidatorOperator\"\n | \"mockValidatorRewardAllocator\"\n | \"isBgtPolRewardToken\"\n | \"mockRewardDurationManager\"\n | \"mockIncentiveManager\"\n | \"isHoneyPythWrapperEnabled\"\n >,\n boolean | undefined\n>;\n\n/**\n * @private\n */\nexport const defaultFlags: BeraFlags = {\n isGovernanceEnabled: true,\n enableEip5792: false,\n proxyAggregatorsThroughVercel: false,\n isEmbeddedWalletsEnabled: true,\n sponsorGas: false,\n enableSimulateCalls: false,\n isBendVaultDataHourly: true,\n isBendLoopingEnabled: false,\n isMultiChainZapBendEnabled: false,\n isZapStakeBeraEnabled: false,\n mockValidatorOperator: false,\n mockValidatorRewardAllocator: false,\n isBgtPolRewardToken: true,\n mockRewardDurationManager: false,\n mockIncentiveManager: false,\n isHoneyPythWrapperEnabled: true,\n};\n"]}
1
+ {"version":3,"sources":["../src/contexts/BeraFlags/defaultFlags.ts"],"names":["defaultFlags"],"mappings":"AAgCO,6EAAMA,CAAAA,CAA0B,CACrC,mBAAA,CAAqB,CAAA,CAAA,CACrB,aAAA,CAAe,CAAA,CAAA,CACf,6BAAA,CAA+B,CAAA,CAAA,CAC/B,wBAAA,CAA0B,CAAA,CAAA,CAC1B,UAAA,CAAY,CAAA,CAAA,CACZ,mBAAA,CAAqB,CAAA,CAAA,CACrB,qBAAA,CAAuB,CAAA,CAAA,CACvB,oBAAA,CAAsB,CAAA,CAAA,CACtB,0BAAA,CAA4B,CAAA,CAAA,CAC5B,qBAAA,CAAuB,CAAA,CAAA,CACvB,qBAAA,CAAuB,CAAA,CAAA,CACvB,4BAAA,CAA8B,CAAA,CAAA,CAC9B,mBAAA,CAAqB,CAAA,CAAA,CACrB,yBAAA,CAA2B,CAAA,CAAA,CAC3B,oBAAA,CAAsB,CAAA,CAAA,CACtB,yBAAA,CAA2B,CAAA,CAC7B,CAAA,CAAA,cAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-DDEQFR3M.cjs","sourcesContent":["import type { flags } from \"@berachain/config/internal/flags\";\n\ntype ClientSideFlags = keyof typeof flags;\n\nexport type BeraFlags = Record<\n Extract<\n ClientSideFlags,\n // We don't want to have all flags on the context. Just the ones that cannot be used server side only\n // this is because we generally should prefer server side flags, also according to flag-sdk docs\n | \"isGovernanceEnabled\"\n | \"enableEip5792\"\n | \"proxyAggregatorsThroughVercel\"\n | \"isEmbeddedWalletsEnabled\"\n | \"sponsorGas\"\n | \"enableSimulateCalls\"\n | \"isBendVaultDataHourly\"\n | \"isBendLoopingEnabled\"\n | \"isMultiChainZapBendEnabled\"\n | \"isZapStakeBeraEnabled\"\n | \"mockValidatorOperator\"\n | \"mockValidatorRewardAllocator\"\n | \"isBgtPolRewardToken\"\n | \"mockRewardDurationManager\"\n | \"mockIncentiveManager\"\n | \"isHoneyPythWrapperEnabled\"\n >,\n boolean | undefined\n>;\n\n/**\n * @private\n */\nexport const defaultFlags: BeraFlags = {\n isGovernanceEnabled: true,\n enableEip5792: false,\n proxyAggregatorsThroughVercel: false,\n isEmbeddedWalletsEnabled: true,\n sponsorGas: false,\n enableSimulateCalls: false,\n isBendVaultDataHourly: true,\n isBendLoopingEnabled: false,\n isMultiChainZapBendEnabled: false,\n isZapStakeBeraEnabled: false,\n mockValidatorOperator: false,\n mockValidatorRewardAllocator: false,\n isBgtPolRewardToken: true,\n mockRewardDurationManager: false,\n mockIncentiveManager: false,\n isHoneyPythWrapperEnabled: true,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-DK42F2ZM.cjs","../src/errors/BeraTracing.ts","../src/errors/NotFoundError.ts","../src/errors/TransactionFailedError.ts"],"names":["_handlers","BeraTracing","context","callback","next","handler","idx","NotFoundError","BeraError","args","TransactionFailedError"],"mappings":"AAAA,iPAAwC,ICqBlCA,CAAAA,CAA2B,CAAC,CAAA,CA0BrBC,CAAAA,aAAc,CAOzB,SAAA,CAAaC,CAAAA,CAAsBC,CAAAA,CAAwC,CACzE,OAAIH,CAAAA,CAAU,MAAA,GAAW,CAAA,CAAUG,CAAAA,CAAS,CAAA,CAGrCH,CAAAA,CAAU,WAAA,CACf,CAACI,CAAAA,CAAMC,CAAAA,CAAAA,EAAY,CAAA,CAAA,EAAMA,CAAAA,CAAQH,CAAAA,CAASE,CAAI,CAAA,CAC9CD,CACF,CAAA,CAAE,CACJ,CAAA,CASA,cAAA,CAAeE,CAAAA,CAAmC,CAChD,OAAAL,CAAAA,CAAU,IAAA,CAAKK,CAAO,CAAA,CACf,CAAA,CAAA,EAAM,CACX,IAAMC,CAAAA,CAAMN,CAAAA,CAAU,OAAA,CAAQK,CAAO,CAAA,CACjCC,CAAAA,GAAQ,CAAA,CAAA,EAAIN,CAAAA,CAAU,MAAA,CAAOM,CAAAA,CAAK,CAAC,CACzC,CACF,CACF,CAAA,CCnEO,IAAMC,CAAAA,CAAN,MAAA,QAA4BC,mBAAU,CAM3C,WAQA,CAAYC,CAAAA,CAA0B,CACpC,KAAA,CAAMA,CAAI,CAAA,CACV,IAAA,CAAK,IAAA,CAAO,eAAA,CACZ,IAAA,CAAK,KAAA,kBAAQA,CAAAA,CAAK,KAAA,SAAS,QAAA,CAC3B,IAAA,CAAK,OAAA,CAAU,CAAA,SAAA,EAAYA,CAAAA,CAAK,QAAQ,CAAA,SAAA,EAAYA,CAAAA,CAAK,EAAE,CAAA,UAAA,CAAA,CAC3D,IAAA,CAAK,QAAA,CAAWA,CAAAA,CAAK,QAAA,CACrB,IAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,EACjB,CACF,CAAA,CCzBO,IAAMC,CAAAA,WAAN,MAAA,QAAqCF,mBAAU,CAMpD,eAsBA,WAAA,CAA6B,KAAA,WAY7B,CACEC,CAAAA,CAQA,CACA,KAAA,CAAMA,CAAI,qCAAA,CACV,IAAA,CAAK,IAAA,CAAO,wBAAA,CACZ,IAAA,CAAK,MAAA,CAASA,CAAAA,CAAK,MAAA,EAAU,IAAA,CAC7B,IAAA,CAAK,OAAA,CAAUA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAC/B,IAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,EAAA,CACf,IAAA,CAAK,YAAA,CAAeA,CAAAA,CAAK,YAAA,CACzB,IAAA,CAAK,WAAA,kBAAcA,CAAAA,CAAK,WAAA,SAAe,MAAA,CACvC,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,KAAA,CAEd,IAAA,CAAK,OAAA,CAEP,IAAA,CAAK,OAAA,CAAU,CAAA,0CAAA,EAA6C,IAAA,CAAK,MAAM,CAAA,CAAA","file":"/Users/snowbera/Documents/workspace/monobera/packages/berajs/dist/chunk-DK42F2ZM.cjs","sourcesContent":[null,"import type { Unsubscribe } from \"../utils/createEmitter\";\n\n/**\n * Span context passed to tracing handlers.\n * Compatible with Sentry's StartSpanOptions (name, op, attributes).\n */\nexport type SpanContext = {\n name: string;\n op: string;\n attributes: Record<string, string | number | boolean | undefined>;\n};\n\n/**\n * A function that wraps a callback in a tracing span.\n * Compatible with Sentry.startSpan's signature.\n */\ntype StartSpanFn = <T>(\n context: SpanContext,\n callback: () => Promise<T>,\n) => Promise<T>;\n\nconst _handlers: StartSpanFn[] = [];\n\n/**\n * A generic span-tracing module for berajs.\n *\n * Instead of calling Sentry.startSpan directly, berajs calls\n * `BeraTracing.startSpan()`. Consumer apps subscribe via `.on(\"span\", handler)`\n * and forward spans to their tracing provider (Sentry, Datadog, etc.).\n *\n * Multiple handlers are supported and chain in registration order:\n * the first registered handler is the outermost wrapper.\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraTracing } from \"./BeraTracing\";\n * const result = await BeraTracing.startSpan(\n * { name: \"GraphQL query\", op: \"graphql.query\", attributes: {} },\n * () => executeQuery(),\n * );\n *\n * // In app instrumentation:\n * import { BeraTracing } from \"@berachain/berajs/errors\";\n * BeraTracing.addSpanHandler(Sentry.startSpan);\n * ```\n */\nexport const BeraTracing = {\n /**\n * Execute a callback, wrapping it in all registered span handlers.\n *\n * Handlers chain so each wraps the next. First registered = outermost wrapper.\n * If no handlers are registered, the callback is executed directly.\n */\n startSpan<T>(context: SpanContext, callback: () => Promise<T>): Promise<T> {\n if (_handlers.length === 0) return callback();\n\n // Chain: h1(ctx, () => h2(ctx, () => h3(ctx, () => callback())))\n return _handlers.reduceRight<() => Promise<T>>(\n (next, handler) => () => handler(context, next),\n callback,\n )();\n },\n\n /**\n * Register a span tracing handler.\n *\n * @param _event - Must be \"span\". Exists for API consistency with BeraMonitoring.\n * @param handler - A StartSpanFn, e.g. Sentry.startSpan.\n * @returns An unsubscribe function to remove the handler.\n */\n addSpanHandler(handler: StartSpanFn): Unsubscribe {\n _handlers.push(handler);\n return () => {\n const idx = _handlers.indexOf(handler);\n if (idx !== -1) _handlers.splice(idx, 1);\n };\n },\n};\n","import { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\nexport interface INotFoundErrorArgs extends IBeraErrorArgs {\n resource: string;\n id: string;\n chainId: number;\n}\n\n/**\n * Error thrown when a resource is not found.\n */\nexport class NotFoundError extends BeraError {\n /**\n * The name of the resource that was not found.\n *\n * @example \"Reward vault\"\n */\n resource: string;\n /**\n * The id of the resource that was not found.\n *\n * @example \"0x1234567890123456789012345678901234567890\"\n */\n id: string;\n\n constructor(args: INotFoundErrorArgs) {\n super(args);\n this.name = \"NotFoundError\";\n this.level = args.level ?? \"info\";\n this.message = `Resource ${args.resource} with id ${args.id} not found`;\n this.resource = args.resource;\n this.id = args.id;\n }\n}\n","import type { Hex } from \"@berachain-foundation/berancer-sdk\";\nimport type { Address, TransactionReceipt } from \"viem\";\n\nimport { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\n/**\n * This error is generally thrown by beraWriteContract when a transaction or simulation fails.\n */\nexport class TransactionFailedError extends BeraError {\n /**\n * The hash of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n txHash: string | null;\n\n /**\n * The receipt of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n receipt: TransactionReceipt | null;\n\n /**\n * The address of the contract that was called.\n */\n to: Address | undefined;\n\n /**\n * The data of the transaction that failed.\n */\n callData: Hex | undefined;\n\n /**\n * The block number of the transaction that failed.\n */\n blockNumber: bigint | null = null;\n\n /**\n * The input of the transaction that failed.\n */\n input: object;\n\n /**\n * The function name of the transaction that failed.\n */\n functionName: string | undefined;\n\n constructor(\n args: IBeraErrorArgs & {\n txHash?: string;\n receipt?: TransactionReceipt;\n to?: Address;\n blockNumber?: bigint;\n functionName?: string;\n input: object;\n },\n ) {\n super(args);\n this.name = \"TransactionFailedError\";\n this.txHash = args.txHash || null;\n this.receipt = args.receipt || null;\n this.to = args.to;\n this.functionName = args.functionName;\n this.blockNumber = args.blockNumber ?? null;\n this.input = args.input;\n\n if (this.receipt) {\n // If we have a receipt, transaction reverted on chain\n this.message = `Transaction reverted on chain for reason: ${this.reason}`;\n } else if (this.txHash) {\n // If we have a tx hash, transaction reverted after being broadcasted but we never got a receipt\n // Might happen for network reasons\n this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;\n } else {\n this.message = `${this.reason}: ${this.message}`;\n }\n\n this.tags = {\n ...this.tags,\n \"operation.txn.status\": args.txHash ? \"execution\" : \"simulation\",\n ...args.tags,\n };\n\n if (this.to) {\n this.tags[\"operation.txn.to\"] = this.to;\n }\n\n if (this.functionName) {\n this.tags[\"operation.txn.functionName\"] = this.functionName;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-DK42F2ZM.cjs","../src/errors/BeraTracing.ts","../src/errors/NotFoundError.ts","../src/errors/TransactionFailedError.ts"],"names":["_handlers","BeraTracing","context","callback","next","handler","idx","NotFoundError","BeraError","args","TransactionFailedError"],"mappings":"AAAA,iPAAwC,ICqBlCA,CAAAA,CAA2B,CAAC,CAAA,CA0BrBC,CAAAA,aAAc,CAOzB,SAAA,CAAaC,CAAAA,CAAsBC,CAAAA,CAAwC,CACzE,OAAIH,CAAAA,CAAU,MAAA,GAAW,CAAA,CAAUG,CAAAA,CAAS,CAAA,CAGrCH,CAAAA,CAAU,WAAA,CACf,CAACI,CAAAA,CAAMC,CAAAA,CAAAA,EAAY,CAAA,CAAA,EAAMA,CAAAA,CAAQH,CAAAA,CAASE,CAAI,CAAA,CAC9CD,CACF,CAAA,CAAE,CACJ,CAAA,CASA,cAAA,CAAeE,CAAAA,CAAmC,CAChD,OAAAL,CAAAA,CAAU,IAAA,CAAKK,CAAO,CAAA,CACf,CAAA,CAAA,EAAM,CACX,IAAMC,CAAAA,CAAMN,CAAAA,CAAU,OAAA,CAAQK,CAAO,CAAA,CACjCC,CAAAA,GAAQ,CAAA,CAAA,EAAIN,CAAAA,CAAU,MAAA,CAAOM,CAAAA,CAAK,CAAC,CACzC,CACF,CACF,CAAA,CCnEO,IAAMC,CAAAA,CAAN,MAAA,QAA4BC,mBAAU,CAM3C,WAQA,CAAYC,CAAAA,CAA0B,CACpC,KAAA,CAAMA,CAAI,CAAA,CACV,IAAA,CAAK,IAAA,CAAO,eAAA,CACZ,IAAA,CAAK,KAAA,kBAAQA,CAAAA,CAAK,KAAA,SAAS,QAAA,CAC3B,IAAA,CAAK,OAAA,CAAU,CAAA,SAAA,EAAYA,CAAAA,CAAK,QAAQ,CAAA,SAAA,EAAYA,CAAAA,CAAK,EAAE,CAAA,UAAA,CAAA,CAC3D,IAAA,CAAK,QAAA,CAAWA,CAAAA,CAAK,QAAA,CACrB,IAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,EACjB,CACF,CAAA,CCzBO,IAAMC,CAAAA,WAAN,MAAA,QAAqCF,mBAAU,CAMpD,eAsBA,WAAA,CAA6B,KAAA,WAY7B,CACEC,CAAAA,CAQA,CACA,KAAA,CAAMA,CAAI,qCAAA,CACV,IAAA,CAAK,IAAA,CAAO,wBAAA,CACZ,IAAA,CAAK,MAAA,CAASA,CAAAA,CAAK,MAAA,EAAU,IAAA,CAC7B,IAAA,CAAK,OAAA,CAAUA,CAAAA,CAAK,OAAA,EAAW,IAAA,CAC/B,IAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,EAAA,CACf,IAAA,CAAK,YAAA,CAAeA,CAAAA,CAAK,YAAA,CACzB,IAAA,CAAK,WAAA,kBAAcA,CAAAA,CAAK,WAAA,SAAe,MAAA,CACvC,IAAA,CAAK,KAAA,CAAQA,CAAAA,CAAK,KAAA,CAEd,IAAA,CAAK,OAAA,CAEP,IAAA,CAAK,OAAA,CAAU,CAAA,0CAAA,EAA6C,IAAA,CAAK,MAAM,CAAA,CAAA","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-DK42F2ZM.cjs","sourcesContent":[null,"import type { Unsubscribe } from \"../utils/createEmitter\";\n\n/**\n * Span context passed to tracing handlers.\n * Compatible with Sentry's StartSpanOptions (name, op, attributes).\n */\nexport type SpanContext = {\n name: string;\n op: string;\n attributes: Record<string, string | number | boolean | undefined>;\n};\n\n/**\n * A function that wraps a callback in a tracing span.\n * Compatible with Sentry.startSpan's signature.\n */\ntype StartSpanFn = <T>(\n context: SpanContext,\n callback: () => Promise<T>,\n) => Promise<T>;\n\nconst _handlers: StartSpanFn[] = [];\n\n/**\n * A generic span-tracing module for berajs.\n *\n * Instead of calling Sentry.startSpan directly, berajs calls\n * `BeraTracing.startSpan()`. Consumer apps subscribe via `.on(\"span\", handler)`\n * and forward spans to their tracing provider (Sentry, Datadog, etc.).\n *\n * Multiple handlers are supported and chain in registration order:\n * the first registered handler is the outermost wrapper.\n *\n * @example\n * ```ts\n * // In berajs code:\n * import { BeraTracing } from \"./BeraTracing\";\n * const result = await BeraTracing.startSpan(\n * { name: \"GraphQL query\", op: \"graphql.query\", attributes: {} },\n * () => executeQuery(),\n * );\n *\n * // In app instrumentation:\n * import { BeraTracing } from \"@berachain/berajs/errors\";\n * BeraTracing.addSpanHandler(Sentry.startSpan);\n * ```\n */\nexport const BeraTracing = {\n /**\n * Execute a callback, wrapping it in all registered span handlers.\n *\n * Handlers chain so each wraps the next. First registered = outermost wrapper.\n * If no handlers are registered, the callback is executed directly.\n */\n startSpan<T>(context: SpanContext, callback: () => Promise<T>): Promise<T> {\n if (_handlers.length === 0) return callback();\n\n // Chain: h1(ctx, () => h2(ctx, () => h3(ctx, () => callback())))\n return _handlers.reduceRight<() => Promise<T>>(\n (next, handler) => () => handler(context, next),\n callback,\n )();\n },\n\n /**\n * Register a span tracing handler.\n *\n * @param _event - Must be \"span\". Exists for API consistency with BeraMonitoring.\n * @param handler - A StartSpanFn, e.g. Sentry.startSpan.\n * @returns An unsubscribe function to remove the handler.\n */\n addSpanHandler(handler: StartSpanFn): Unsubscribe {\n _handlers.push(handler);\n return () => {\n const idx = _handlers.indexOf(handler);\n if (idx !== -1) _handlers.splice(idx, 1);\n };\n },\n};\n","import { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\nexport interface INotFoundErrorArgs extends IBeraErrorArgs {\n resource: string;\n id: string;\n chainId: number;\n}\n\n/**\n * Error thrown when a resource is not found.\n */\nexport class NotFoundError extends BeraError {\n /**\n * The name of the resource that was not found.\n *\n * @example \"Reward vault\"\n */\n resource: string;\n /**\n * The id of the resource that was not found.\n *\n * @example \"0x1234567890123456789012345678901234567890\"\n */\n id: string;\n\n constructor(args: INotFoundErrorArgs) {\n super(args);\n this.name = \"NotFoundError\";\n this.level = args.level ?? \"info\";\n this.message = `Resource ${args.resource} with id ${args.id} not found`;\n this.resource = args.resource;\n this.id = args.id;\n }\n}\n","import type { Hex } from \"@berachain-foundation/berancer-sdk\";\nimport type { Address, TransactionReceipt } from \"viem\";\n\nimport { BeraError, type IBeraErrorArgs } from \"./BeraError\";\n\n/**\n * This error is generally thrown by beraWriteContract when a transaction or simulation fails.\n */\nexport class TransactionFailedError extends BeraError {\n /**\n * The hash of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n txHash: string | null;\n\n /**\n * The receipt of the transaction that failed.\n *\n * Null if the error is due to a simulation failure.\n */\n receipt: TransactionReceipt | null;\n\n /**\n * The address of the contract that was called.\n */\n to: Address | undefined;\n\n /**\n * The data of the transaction that failed.\n */\n callData: Hex | undefined;\n\n /**\n * The block number of the transaction that failed.\n */\n blockNumber: bigint | null = null;\n\n /**\n * The input of the transaction that failed.\n */\n input: object;\n\n /**\n * The function name of the transaction that failed.\n */\n functionName: string | undefined;\n\n constructor(\n args: IBeraErrorArgs & {\n txHash?: string;\n receipt?: TransactionReceipt;\n to?: Address;\n blockNumber?: bigint;\n functionName?: string;\n input: object;\n },\n ) {\n super(args);\n this.name = \"TransactionFailedError\";\n this.txHash = args.txHash || null;\n this.receipt = args.receipt || null;\n this.to = args.to;\n this.functionName = args.functionName;\n this.blockNumber = args.blockNumber ?? null;\n this.input = args.input;\n\n if (this.receipt) {\n // If we have a receipt, transaction reverted on chain\n this.message = `Transaction reverted on chain for reason: ${this.reason}`;\n } else if (this.txHash) {\n // If we have a tx hash, transaction reverted after being broadcasted but we never got a receipt\n // Might happen for network reasons\n this.message = `Transaction reverted after being broadcasted for reason: ${this.reason}`;\n } else {\n this.message = `${this.reason}: ${this.message}`;\n }\n\n this.tags = {\n ...this.tags,\n \"operation.txn.status\": args.txHash ? \"execution\" : \"simulation\",\n ...args.tags,\n };\n\n if (this.to) {\n this.tags[\"operation.txn.to\"] = this.to;\n }\n\n if (this.functionName) {\n this.tags[\"operation.txn.functionName\"] = this.functionName;\n }\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import{a as qe}from"./chunk-NLVWRMGD.mjs";import{a as Qe,b as _e,c as H}from"./chunk-BEKH5EYT.mjs";import{a as D,b as j,c as v,d as Ce,g as M}from"./chunk-QRAIGQF2.mjs";import{B as $e,D as K,F as Be,a as N,b as le,c as Ue,d as We,e as ce,j as Pe,k as Oe,l as S,m as Me,r as He,y as te,z as Je}from"./chunk-PLIH6KQM.mjs";import{a as c,b as ue,d as Le,e as V}from"./chunk-IDFMLLDY.mjs";import{c as se,d as De,e as ee,f as B,g as $,h as G}from"./chunk-74QD4JAH.mjs";import{formatEther as Wt}from"viem";import{metaMorphoV11Abi as Lt}from"@berachain/abis/bend-metamorpho/metaMorphoV11";async function go({sharesAmount:e,vaultAddress:t,publicClient:r}){let a=await r.readContract({address:t,abi:Lt,functionName:"convertToAssets",args:[e]});return{raw:a,formatted:Wt(a)}}import{ApolloClient as Ot,ServerError as Mt}from"@apollo/client";import{appConfig as Ht}from"@berachain/config/internal";var de=class extends Ot{url;constructor(t){super(t),this.url=t.url}async query(t){let r=_t(t.query),a={url:this.url,type:"graphql"},o={"operation.type":"query","operation.source.url":a.url,"operation.source.type":a.type,"operation.source.queryName":r};try{let i=()=>super.query(t),l=await Qe.startSpan({name:`GraphQL ${r}`,op:"BeraApolloClient.query",attributes:o},i);if(l.error||l.data===void 0)throw new B({level:"fatal",tags:o,message:"Bera Apollo Client: No data returned from query, but error should be thrown since errorPolicy is none"});return{data:l.data}}catch(i){throw!Ht.env.isProduction&&console.error("BeraApolloClient error",i),Mt.is(i)?new $({response:i.response,cause:i,statusCode:i.statusCode,endpoint:a,tags:o}):i instanceof TypeError?new $({level:"fatal",reason:"TypeError",response:i,cause:i,endpoint:a,tags:o}):new $({response:i,tags:o,cause:i,endpoint:a})}}};function _t(e){return e.definitions.find(r=>r.kind==="OperationDefinition")?.name?.value}import{InMemoryCache as Jt}from"@apollo/client";import{HttpLink as $t}from"@apollo/client/link/http";import{getUriFromLink as Ke}from"@berachain/config";import{currentDapp as je}from"@berachain/config/internal";import jt from"@berachain/graphql/dex/api";import{gql as Eo}from"@apollo/client";function Kt(e){if(!je)return e;let t=typeof e=="string"?void 0:e.headers;return{uri:Ke(e),headers:{...t,"x-graphql-client-name":`berachain.${je}.${process.env.NEXT_RUNTIME||"browser"}`,"x-graphql-client-version":`${process.env.VERCEL_TARGET_ENV}.${process.env.VERCEL_GIT_COMMIT_SHA}`}}}function _(e,{ssrMode:t,inMemoryCacheOptions:r}={}){let a=Ke(e),o=typeof e=="string"?void 0:e.headers;return new de({url:a,link:new $t({uri:a,headers:o}),defaultOptions:{query:{errorPolicy:"none",fetchPolicy:"no-cache"}},cache:new Jt(r),ssrMode:t})}function b(e,{...t}){let{config:r}=c(t);switch(e){case"api":return _(Kt(r.api),{inMemoryCacheOptions:{possibleTypes:jt.possibleTypes}});case"bend.whisk":if(!r.bend.whiskApi)throw new B({message:"Bend whisk API is not configured on this chain",level:"error"});return _(r.bend.whiskApi);case"honey.subgraph":return _(r.honey.subgraph);case"pol.subgraph":return _(r.pol.subgraph);case"pol.fees":return _(r.pol.feesSubgraph);case"governance.subgraph":return _(r.governance.subgraph);case"bex.subgraph":return _(r.bex.subgraph)}}import{formatUnits as Yt,isAddress as Ye,zeroAddress as zt}from"viem";var ze=class e{static PATH_NOT_FOUND_REASON="NO_SWAP_PATHS";needsAccountForQuote=!1;notFoundMessages=[];config;chainId;constructor(t={}){let{config:r,chainId:a}=c(t);this.config=r,this.chainId=a}url="";parseAddresses(t,r){if(!Ye(t)||!Ye(r))throw new B({message:`Invalid address: ${t} or ${r}`,level:"error"});return{tokenInAddress:V(t,"BERA")?this.config.tokens.wbera:t,tokenOutAddress:V(r,"BERA")?this.config.tokens.wbera:r,isTokenInNative:V(t,"BERA"),isTokenOutNative:V(r,"BERA")}}getAmountAfterFees(t,r){if(r===void 0)throw new B({message:"aggregatorsFeeBps is required",level:"error"});let a=new N(t).times(r).dividedBy(1e4).toFixed(0,N.ROUND_DOWN);return new N(t).minus(a).toFixed(0,N.ROUND_DOWN)}getInputData({tokenIn:t,amountIn:r,isNative:a,isPermit2Approval:o=!1,permit2SpenderAddress:i}){return{tokenIn:t,amountIn:BigInt(r),isNative:a,isPermit2Approval:o,permit2SpenderAddress:i??zt}}getMinAmountOut(t,r){if(r===void 0)throw new B({message:"slippage is required",level:"error"});let a=new N(t).times(1-r/100);return a.isNaN()||a.isZero()?0n:BigInt(a.toFixed(0))}parseAllowanceRequirements({tokenIn:t,rawAmount:r,spender:a}){return V(t,"BERA")?[]:[{token:t,amount:{raw:r,formatted:Yt(BigInt(r),t.decimals)},spender:a}]}checkChainSupport({tokenIn:t,tokenOut:r}){return this.supportedChains===null?!0:this.supportedChains.includes(t.chainId)&&this.supportedChains.includes(r.chainId)}assertChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}){if(!this.checkChainSupport({tokenIn:t,tokenOut:r,underlyingToken:a}))throw new B({message:`${this.name} does not support tokens chain ID: ${t.chainId} and ${r.chainId}`,level:"error"})}async fetch(t,r){try{return await Ue({url:t,name:this.name,type:this.type},{method:"GET",headers:{"Content-Type":"application/json"},...r})}catch(a){let o=D({cause:a});throw this.notFoundMessages.some(i=>o.message.includes(i))&&(o.reason=e.PATH_NOT_FOUND_REASON),o}}};import{API_CHAIN_NAMES as Xt,BALANCER_QUERIES as Zt,BALANCER_RELAYER as er,BalancerApi as Mo,CHAINS as tr,COMPOSABLE_STABLE_POOL_FACTORY as rr,NATIVE_ASSETS as ar,Token as or,VAULT as nr,WEIGHTED_POOL_FACTORY_BALANCER_V2 as ir}from"@berachain-foundation/berancer-sdk";import{zeroAddress as ve}from"viem";import{berachain as Xe,berachainBepolia as sr}from"viem/chains";import{chainConfigs as lr}from"@berachain/config/internal";for(let e of Object.keys(lr)){let{config:t,chainId:r}=c({chainId:Number(e)});Xt[r]=t.bex.chainName,tr[r]=r===Xe.id?Xe:sr,er[r]=t.bex.relayer,nr[r]=t.bex.vault,Zt[r]=t.bex.queries,ir[r]=ve,rr[r]=ve;let a=new or(r,ve,ue.decimals,ue.name,ue.symbol,t.tokens.wbera);ar[r]=a}import{GetPools as ur}from"@berachain/graphql/dex/api";import{GqlPoolOrderBy as cr,GqlPoolOrderDirection as dr}from"@berachain/graphql/pol/api";async function en({textSearch:e,chain:t,first:r,orderBy:a,orderDirection:o,skip:i,fetchPolicy:l,userAddress:n,blacklistedPoolIds:s,...m}={}){let{config:u}=c(m),f=await b("api",m).query({query:ur,variables:{textSearch:e,chain:t??u.bex.chainName,first:r,orderBy:a??cr.TotalLiquidity,orderDirection:o??dr.Desc,skip:i,userAddress:n,blacklistedPoolIds:s},fetchPolicy:l});return{pools:f.data.poolGetPools??[],count:f.data.count??0}}import{GetPool as mr}from"@berachain/graphql/dex/api";async function nn({poolId:e,account:t,...r}){let{config:a}=c(r),l=(await b("api",r).query({query:mr,variables:{id:e,userAddress:t,chain:a.bex.chainName},fetchPolicy:"no-cache"})).data.poolGetPool;if(!l)throw new Error(`Pool not found for id: ${e} and user ${t}`);return l}import{GetGlobalLiquidityAndSwapVolume as pr}from"@berachain/graphql/dex/api";async function dn(e={}){let{config:t}=c(e);return(await b("api",e).query({query:pr,variables:{chain:t.bex.chainName}})).data}import{weightedPoolV4Abi_V2 as fr}from"@berachain-foundation/berancer-sdk";async function Ze({publicClient:e,poolAddress:t}){let r=fr,a=await e.multicall({contracts:[{address:t,abi:r,functionName:"inRecoveryMode"},{address:t,abi:r,functionName:"getPausedState"}],allowFailure:!1});return{isPoolInRecoveryMode:a[0],isPoolPaused:a[1][0]}}import{stablePoolAbi_V3 as gr,vaultV2Abi as br,weightedPoolFactoryAbi_V3 as et,weightedPoolV4Abi_V2 as me}from"@berachain-foundation/berancer-sdk";import{erc20Abi as tt,formatEther as rt,formatUnits as yr,isAddress as Ar,isHex as hr}from"viem";import{GqlPoolType as at}from"@berachain/graphql/pol/api";async function Pn({poolId:e,publicClient:t,...r}){let{config:a}=c(r),o=e.slice(0,42);if(!Ar(o)||!hr(e))throw new G({property:"poolId",value:e,expected:"Hex"});try{let[i,l,n,s,m,u,d,f,g]=await Promise.all([t.readContract({address:o,abi:tt,functionName:"name"}),t.readContract({address:a.bex.vault,abi:br,functionName:"getPoolTokens",args:[e]}),t.readContract({address:o,abi:tt,functionName:"totalSupply"}),t.readContract({address:o,abi:me,functionName:"getSwapFeePercentage"}),t.readContract({address:o,abi:me,functionName:"version"}),t.readContract({address:o,abi:me,functionName:"decimals"}),t.readContract({address:a.bex.factories.composableStable,abi:et,functionName:"isPoolFromFactory",args:[o]}),t.readContract({address:a.bex.factories.weighted,abi:et,functionName:"isPoolFromFactory",args:[o]}),Ze({publicClient:t,poolAddress:o})]),p=Number(u),A=JSON.parse(m),h,P,y;if(d?[h,y]=await Promise.all([t.readContract({address:o,abi:[{type:"function",name:"getActualSupply",stateMutability:"view",inputs:[],outputs:[{type:"uint256"}]}],functionName:"getActualSupply"}),t.readContract({address:o,abi:gr,functionName:"getAmplificationParameter"})]):A.name==="WeightedPool"&&(P=await t.readContract({address:o,abi:me,functionName:"getNormalizedWeights"})),!d&&!f)throw new Error(`Pool ${o} is not a valid BEX pool`);return{name:i,address:o,id:e,poolTokens:[l[0],l[1].map(String),Number(l[2])],totalSupply:yr(h??n,p),swapFee:rt(s),decimals:p,weights:P?.map(I=>rt(I)),version:A,factory:d?a.bex.factories.composableStable:a.bex.factories.weighted,type:d?at.Stable:at.Weighted,amplificationParameter:y?[Number(y[0]),y[1],Number(y[2])]:void 0,pausedState:g}}catch(i){throw D({cause:i})}}import{GetPoolEvents as wr}from"@berachain/graphql/dex/api";async function Sn({poolId:e,typeInArray:t,...r}){let{config:a}=c(r);return(await b("api",r).query({query:wr,variables:{poolId:e,typeIn:t,chain:a.bex.chainName}})).data}import{isHex as Cr}from"viem";import{GetPoolHistoricalData as Pr}from"@berachain/graphql/dex/api";async function En({poolId:e,chain:t,...r}){if(!e||!Cr(e))throw new G({property:"poolId",value:e,expected:"hex string"});let a=b("api",r),{data:o}=await a.query({query:Pr,variables:{poolId:e,chain:t}});return o.poolGetSnapshots}import{isAddress as ot,isHex as Br}from"viem";var Y=({fieldOrType:e,value:t,required:r=!0,baseUrl:a,components:o})=>{if(!["bool","string"].includes(e)&&r&&(t==null||t===""))return"Required";if(e.startsWith("uint")||e.startsWith("int")){if(typeof t!="string")return"Invalid amount";try{let l=BigInt(t);if(e.startsWith("uint")&&l<0n)return"Negative amount"}catch{return"Invalid amount"}return null}switch(e){case"string":return t!==void 0&&typeof t!="string"?"Invalid amount":null;case"bool":return typeof t!="boolean"?"Invalid amount":null;case"title":return t.length===0?"Required":null;case"description":return t.length===0?"Required":null;case"forumLink":if(t.length===0)return"Required";if(!URL.canParse(t))return"Invalid address";let l=new URL(a);return t.startsWith(l.toString())?null:"Must be a berachain forum link";case"address":return ot(t,{strict:!0})?null:"Invalid address";case"hex":return Br(t,{strict:!0})?null:"Invalid address";case"abi":try{JSON.parse(t)}catch{return"Invalid ABI"}return null;case"action":return ot(t,{strict:!0})?null:"Invalid address";case"tuple":if(typeof t=="object"&&Array.isArray(o)){let n={};for(let s of o)n[s.name]=Y({fieldOrType:s.type,value:t[s.name],components:s.components});return Object.values(n).every(s=>s===null)?null:n}return null;case"tuple[]":if(Array.isArray(t)){let n=t.map(s=>Y({fieldOrType:"tuple",value:s,components:o}));return n.every(s=>s===null)?null:n}return null;case"logoURI":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS or IPFS";case"url":return t===void 0||t===""||URL.canParse(t)&&new URL(t).protocol==="https:"?null:"Must be HTTPS";default:return console.error(`Invalid field or type: ${e}`),null}};import{ProposalStatus as C}from"@berachain/graphql/governance";var vr=!1,Qn=[C.Active,C.PendingQueue,C.PendingExecution,C.Defeated,C.QuorumNotReached];function pe(e,t){let r=Date.now()/1e3;if(t!==void 0){if(e.status===C.CanceledByGuardian)return C.CanceledByGuardian;if(t===2)return Number(e.voteStartAt)<r?C.CanceledByUser:C.CanceledByGuardian;if(t===3)return e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?C.QuorumNotReached:C.Defeated:C.QuorumNotReached;if(t===4)return C.PendingQueue;if(t===5)return Number(e.queueEnd)<Date.now()/1e3?C.PendingExecution:C.InQueue;if(t===6)return console.warn("Unexpected expired state on proposal id: ",e.id),C.Defeated}return e.status===C.InQueue&&Number(e.queueEnd)<Date.now()/1e3?C.PendingExecution:vr&&t===1&&e.quorum&&BigInt(e.quorum)<BigInt(e.pollResult.totalTowardsQuorum)&&Number(e.pollResult.forPercentage)>Number(e.pollResult.againstPercentage)?C.PendingQueue:e.status===C.Pending?Number(e.voteStartAt)<r&&Number(e.voteEndAt)>r?C.Active:Number(e.voteEndAt)<r?e.pollResult?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?C.QuorumNotReached:e.pollResult?.against>e.pollResult?.for?C.Defeated:C.PendingQueue:C.QuorumNotReached:C.Pending:e.status===C.Active&&Number(e.voteEndAt)<r?!e.quorum||BigInt(e.quorum)>BigInt(e.pollResult.totalTowardsQuorum)?C.QuorumNotReached:BigInt(e.pollResult?.against??0n)>BigInt(e.pollResult?.for??0n)?C.Defeated:C.PendingQueue:e.status===C.InQueue&&Number(e.queueEnd)<Date.now()/1e3?C.PendingExecution:e.status}import{GetProposals as Rr,SearchProposals as Vr}from"@berachain/graphql/governance";async function Mn({where:e,orderBy:t,orderDirection:r,offset:a=0,perPage:o=20,text:i,...l}){try{if(o>1e3)throw new Error("perPage must be less than 1000");let n=b("governance.subgraph",l),[s]=await Promise.all([i?n.query({query:Vr,variables:{offset:a,limit:o,where:e,text:i}}):n.query({query:Rr,variables:{offset:a,limit:o,where:e,orderBy:t,orderDirection:r}})]);return s.data.proposals.map(m=>({...m,status:pe(m)}))}catch(n){throw console.error("getAllProposals:",n),n}}var Jn=(e,t)=>{let r={};return r.title=Y({fieldOrType:"title",value:e.title}),r.description=Y({fieldOrType:"description",value:e.description}),r.forumLink=Y({fieldOrType:"forumLink",value:e.forumLink,baseUrl:t.forumLink}),r};import{GetProposal as Sr}from"@berachain/graphql/governance";async function zn({proposalId:e,...t}){let a=await b("governance.subgraph",t).query({query:Sr,variables:{id:e}});if(a.data.proposal)return{...a.data.proposal,status:pe(a.data.proposal)}}import nt from"gray-matter";var Nr=e=>{let t=/#(?:([\w-]+)# )?(.+)\n([\s\S]*)/,r=e.match(t);if(r){let a=r[1]||null,o=r[2],i=r[3].replace(`
2
+ `,"<br />");return{type:a,title:o,content:i}}throw new Error("Invalid proposal body")},it=e=>{if(!e)return{isFrontMatter:!1,data:{title:"Loading..."},content:"",matter:"",language:"",orig:"",stringify:()=>""};let t=e?.description??"";if(nt.test(t))return{...nt(t),isFrontMatter:!0};try{let r=Nr(t);return{isFrontMatter:!1,data:{title:r.title},content:r.content,matter:"",language:"",orig:t,stringify:()=>t}}catch{return{isFrontMatter:!1,data:{title:e?.description?.split(`
3
+ `)[0].slice(0,100)},content:t,matter:"",language:"",orig:t,stringify:()=>t}}};import{parseEventLogs as kr}from"viem";import{berachainGovernanceAbi as xr}from"@berachain/abis/gov/berachainGovernance";import{ProposalStatus as Gr}from"@berachain/graphql/governance";async function ii(e){v(e.publicClient);let t;"tx"in e?t=e.tx:t=await e.publicClient.getTransactionReceipt({hash:e.txHash});let r=t?.logs?kr({abi:xr,logs:t.logs,eventName:"ProposalCreated"})?.at(0):void 0;if(!t||!r)return null;let a=await e.publicClient.getBlock({blockNumber:t.blockNumber}),o=it({description:r?.args.description});return{id:String(r.args.proposalId),proposalId:String(r?.args.proposalId),createdAt:a.timestamp.toString(),title:o.data.title,createdAtBlock:a.timestamp.toString(),voteStartAt:String(r?.args.voteStart),voteEndAt:String(r?.args.voteEnd),proposer:r?.args.proposer,description:o.content,unverifiedForumLink:o.data.forumLink,pollResult:{for:"0",forVotersCount:0,forPercentage:"0",against:"0",againstVotersCount:0,againstPercentage:"0",abstain:"0",abstainVotersCount:0,abstainPercentage:"0",total:"0",totalVotersCount:0,totalTowardsQuorum:"0"},status:Gr.Pending,quorum:null,topics:o.data.topics,votes:[],executableCalls:r?.args.targets.map((i,l)=>({__typename:"ExecutableCall",id:`${t.transactionHash}-${l}`,target:i,value:String(r?.args.values[l]),calldata:r?.args.calldatas[l]})),timelock:void 0}}import{GetProposalVotes as Tr}from"@berachain/graphql/governance";async function ci({variables:e,...t}){return b("governance.subgraph",t).query({query:Tr,variables:e})}import{Aggregation_Interval as Er,GetChartData as Fr}from"@berachain/graphql/honey";async function fi({days:e,...t}){return(await b("honey.subgraph",t).query({query:Fr,variables:{interval:Er.Day,first:e}})).data}import{honeyFactoryAbi as Ir}from"@berachain/abis/honey/honeyFactory";async function Ai({client:e,collateralList:t,...r}){let{config:a}=c(r);try{let o=await e.readContract({address:a.honey.factory,abi:Ir,functionName:"getWeights"});return t.reduce((l,n,s)=>Object.assign(l,{[n.address]:o[s]}),{})}catch(o){throw console.log(o),o}}import{erc20Abi as Re}from"viem";async function st({address:e,publicClient:t,chainId:r}){try{if(!t)throw new Error("Public client not found");let[a,o,i]=await Promise.all([t.readContract({address:e,abi:Re,functionName:"decimals"}),t.readContract({address:e,abi:Re,functionName:"name"}),t.readContract({address:e,abi:Re,functionName:"symbol"})]),l={address:e,decimals:a,name:o,symbol:i,chainId:r};if(typeof l.decimals!="number"||typeof l.name!="string"||typeof l.symbol!="string")throw new Error(`Invalid ERC20 token. Address: ${e}`);return l}catch(a){throw console.error(a),D({cause:a})}}import{honeyFactoryAbi as Ve}from"@berachain/abis/honey/honeyFactory";async function Se({client:e,tokenData:t,preferredCollateralOrder:r,...a}){let{config:o}=c(a),[i,l]=await Promise.all([e.readContract({address:o.honey.factory,abi:Ve,functionName:"numRegisteredAssets"}),e.readContract({address:o.honey.factory,abi:Ve,functionName:"referenceCollateral"})]),n=[];for(let f=0;f<i;f++)n.push(e.readContract({address:o.honey.factory,abi:Ve,functionName:"registeredAssets",args:[BigInt(f)]}));let s=await Promise.all(n),u=(await Promise.all(s.map(f=>{let g=t?.find(p=>V(p,f));return g||st({address:f,chainId:o.chainId,publicClient:e})}))).filter(f=>!!f).sort((f,g)=>s.indexOf(f.address)-s.indexOf(g.address)).map((f,g)=>({...f,order:g}));if(r?.length){let f=[];for(let g of r){let p=u.find(A=>V(A.address,g.address));p&&(f.push(p),u.splice(u.indexOf(p),1))}u.unshift(...f)}let d=u.find(f=>V(f,l));if(!u)throw new Error("Collateral tokens not found");if(!d)throw new Error("Reference collateral address not found");return{collaterals:u,referenceCollateral:d}}import{parseUnits as qr}from"viem";import{honeyFactoryAbi as lt}from"@berachain/abis/honey/honeyFactory";import{honeyFactoryReaderAbi as Dr}from"@berachain/abis/honey/honeyFactoryReader";async function ut({client:e,collateral:t,latestPrices:r,isPythWrapperEnabled:a,...o}){let{config:i}=c(o);try{let l=e.readContract({address:i.honey.factory,abi:lt,functionName:"isBadCollateralAsset",args:[t.address]}),n=e.readContract({address:i.honey.factory,abi:lt,functionName:"isPegged",args:[t.address]});if(a&&r){let u=r.prices.map(d=>qr(d,18));n=e.readContract({address:i.honey.reader,abi:Dr,functionName:"isPeggedWithPrice",args:[t.address,u[0]]})}let[s,m]=await Promise.all([l,n]);return{isBlacklisted:s,isDepegged:!m}}catch(l){throw console.log(l),l}}import{parseEther as dt}from"viem";import{honeyFactoryAbi as Wr}from"@berachain/abis/honey/honeyFactory";import{parseEther as Qr}from"viem";import{collateralVaultAbi as Ur}from"@berachain/abis/honey/collateralVault";import{honeyFactoryAbi as ct}from"@berachain/abis/honey/honeyFactory";async function re({client:e,asset:t,amount:r,...a}){let{config:o}=c(a);try{let[i,l]=await Promise.all([e.readContract({address:o.honey.factory,abi:ct,functionName:"vaults",args:[t]}),e.readContract({address:o.honey.factory,abi:ct,functionName:"collectedFees",args:[o.honey.factory,t]})]);return await e.readContract({address:i,abi:Ur,functionName:"balanceOf",args:[o.honey.factory]})+Qr(r??"0")-l}catch(i){throw console.log(i),i}}var Lr=dt("1");async function Ji({client:e,asset:t,amount:r,isMint:a,isPythWrapperEnabled:o,latestPrices:i,...l}){let{config:n}=c(l);try{let s=await e.readContract({address:n.honey.factory,abi:Wr,functionName:"globalCap"});if(s>=Lr)return!1;let[{collaterals:m},u]=await Promise.all([Se({client:e}),Or({client:e,asset:t,amount:r,latestPrices:i,isPythWrapperEnabled:o})]);if(!u)return;for(let d in u)if((a&&V(m[d],t)||!a&&V(m[d],t))&&u[d]>s-ce)return!0;return!1}catch(s){throw console.log(s),s}}async function Or({client:e,asset:t,amount:r,latestPrices:a,isPythWrapperEnabled:o}){let{collaterals:i}=await Se({client:e}),l=0n,n=[];for(let s of i){let m=await ut({client:e,collateral:t,latestPrices:a,isPythWrapperEnabled:o});if(m?.isBlacklisted||m?.isDepegged)continue;let u=await re({client:e,asset:s.address,amount:V(s,t)?r:"0"});u&&(l+=u,n.push(u))}if(l===0n)return n;for(let s in i)n[s]=dt(n[s].toString())/l;return n}import{GetGlobalData as Mr}from"@berachain/graphql/honey";async function Yi({...e}={}){return(await b("honey.subgraph",e).query({query:Mr})).data}import{parseUnits as mt}from"viem";import{honeyFactoryReaderAbi as pt}from"@berachain/abis/honey/honeyFactoryReader";var Hr=(s=>(s.Mint="previewMintHoney",s.MintWithPrice="previewMintHoneyWithPrices",s.RequiredCollateral="previewMintCollaterals",s.RequiredCollateralWithPrice="previewMintCollateralsWithPrices",s.Redeem="previewRedeemCollaterals",s.RedeemWithPrice="previewRedeemCollateralsWithPrices",s.HoneyToRedeem="previewRedeemHoney",s.HoneyToRedeemWithPrice="previewRedeemHoneyWithPrices",s))(Hr||{});async function ts({client:e,collateral:t,collateralList:r,amount:a,method:o,latestPrices:i,isPythWrapperEnabled:l,...n}){let{config:s}=c(n);try{let m=o==="previewMintHoney"||o==="previewRedeemHoney"||o==="previewMintHoneyWithPrices"||o==="previewRedeemHoneyWithPrices",u=mt(a,m?t.decimals:18),d,f=[t.address,u];if(l&&i){let p=i.prices.map(A=>mt(A,18));f=[t.address,u,p]}if(m){let p=await e.readContract({address:s.honey.reader,abi:pt,functionName:o,args:f});d={collaterals:p[0],honey:p[1]}}else d={collaterals:await e.readContract({address:s.honey.reader,abi:pt,functionName:o,args:f}),honey:u};let g=r.reduce((p,A)=>{let h=A.order;return A.address===t.address&&d.collaterals[h]===BigInt(0)?Object.assign(p,{[A.address]:d.collaterals[0]}):Object.assign(p,{[A.address]:d.collaterals[h]})},{});return g[t.address]===BigInt(0)&&(g[t.address]=d.collaterals[0]),{collaterals:g,honey:d.honey}}catch(m){throw console.log("error",m),m}}import{formatUnits as _r}from"viem";import{collateralVaultAbi as Ne}from"@berachain/abis/honey/collateralVault";import{honeyFactoryAbi as ft}from"@berachain/abis/honey/honeyFactory";async function ss({client:e,collateralList:t,honeyFactoryAddress:r,...a}){let{config:o}=c(a),i=r??o.honey.factory;return await Promise.all(t.map(async n=>{let s=await e.readContract({address:o.honey.factory,abi:ft,functionName:"vaults",args:[n.address]}),[m,u,[d,f]]=await Promise.all([e.readContract({address:s,abi:Ne,functionName:"balanceOf",args:[i]}),e.readContract({address:i,abi:ft,functionName:"collectedAssetFees",args:[n.address]}),e.readContract({address:s,abi:Ne,functionName:"custodyInfo"})]),g=await e.readContract({address:s,abi:Ne,functionName:"convertToAssets",args:[m-u]});return{...n,balance:{raw:g.toString(),formatted:_r(g,n.decimals)},vault:d?f:s}}))}import{HermesClient as Jr}from"@pythnetwork/hermes-client";import{formatUnits as $r}from"viem";var jr="https://hermes.pyth.network";async function gt({priceFeedId:e}){let r=await new Jr(jr,{}).getLatestPriceUpdates(e,{encoding:"hex",parsed:!0});return{calldata:r.binary.data.map(a=>`0x${a}`),prices:r.parsed?.flatMap(a=>$r(BigInt(a.price.price),a.price.expo*-1))??[]}}import{parseEther as Kr}from"viem";import{honeyFactoryAbi as Yr}from"@berachain/abis/honey/honeyFactory";async function ys({client:e,asset:t,amount:r,isMint:a,referenceCollateral:o,...i}){let{config:l}=c(i);if(t===o.address)return!1;try{let[n]=await Promise.all([e.readContract({address:l.honey.factory,abi:Yr,functionName:"relativeCap",args:[t]})]),[s,m]=await Promise.all([re({client:e,asset:t,amount:a?r:void 0}),re({client:e,asset:o.address,amount:a?void 0:r})]);return m===0n?s!==0n:Kr((s??0n).toString())/(m??0n)>=n-ce}catch(n){throw console.log(n),n}}async function bt({client:e,priceFeedId:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.external.pyth,abi:qe,functionName:"getUpdateFee",args:[t]})}catch(o){throw console.error("getPythUpdateFee",o),o}}import{parseUnits as yt}from"viem";import{honeyFactoryAbi as zr}from"@berachain/abis/honey/honeyFactory";import{honeyFactoryPythWrapperAbi as Xr}from"@berachain/abis/honey/honeyFactoryPythWrapper";var xs=async({state:e,publicClient:t,priceFeedMap:r,collateralList:a,isPythWrapperEnabled:o,...i})=>{let{config:l}=c(i),n=Le(i),{actionType:s,fromAmount:m,collaterals:u,isBasketModeEnabled:d}=e,f=o?l.honey.pythWrapper:l.honey.factory,g=a.map(p=>p.address);if(m[0]&&g.length){let p=s==="mint";if(o&&t&&r){let h=(await gt({priceFeedId:Object.values(r)})).calldata,P=0n;try{P=await bt({client:t,priceFeedId:h})}catch{P=Oe(u.length)}return({account:y})=>{let I=[h,u[0]?.address,yt(m[0],(p?u[0]?.decimals:n?.decimals)??18),y,!!d];return{address:f,abi:Xr,functionName:p?"mint":"redeem",params:I,value:P}}}return({account:A})=>{let h=[u[0]?.address,yt(m[0],(p?u[0]?.decimals:n?.decimals)??18),A,!!d];return{value:0n,address:f,abi:zr,functionName:p?"mint":"redeem",params:h}}}throw new Error("Something went wrong while creating the Honey swap payload")};import{parseUnits as Zr}from"viem";import{honeyFactoryAbi as ea}from"@berachain/abis/honey/honeyFactory";import{honeyFactoryReaderAbi as ta}from"@berachain/abis/honey/honeyFactoryReader";async function qs({client:e,isMint:t,collateralList:r,latestPrices:a,isPythWrapperEnabled:o,...i}){let{config:l}=c(i);if(o&&a){if(r.length===0)return;let s=a.prices.map(u=>Zr(u,18));return await e.readContract({address:l.honey.reader,abi:ta,functionName:"isBasketModeEnabledWithPrices",args:[t,s]})}return await e.readContract({address:l.honey.factory,abi:ea,functionName:"isBasketModeEnabled",args:[t]})}async function Ws({block:e,currentBlock:t,blockTime:r,publicClient:a}){if(j(e,"block"),v(a),t>e){let i=await a.getBlock({blockNumber:BigInt(e),includeTransactions:!1});return{timestamp:Number(i.timestamp)}}return{timestamp:S(Date.now())+r*(Number(e)-Number(t))}}import{formatUnits as ke}from"viem";import{rewardVaultAbi as z}from"@berachain/abis/pol/rewards/rewardVault";var ra=(a=>(a.Duration="duration",a.TargetRate="targetRate",a.TargetApr="targetApr",a))(ra||{});async function _s(e,t){let[r,a,o,i,l,n]=await Promise.all([t.readContract({address:e,abi:z,functionName:"rewardsDuration"}),t.readContract({address:e,abi:z,functionName:"rewardVaultManager"}),t.readContract({address:e,abi:z,functionName:"rewardRate"}),t.readContract({address:e,abi:z,functionName:"periodFinish"}),t.readContract({address:e,abi:z,functionName:"targetRewardsPerSecond"}),t.readContract({address:e,abi:z,functionName:"minRewardDurationForTargetRate"})]),s=o*(i-BigInt(S(Date.now())))/10n**18n;return{rewardsDuration:Number(r),mode:l===0n?"duration":"targetRate",manager:a,rewardRate:ke(o,36),periodFinish:Number(i),availableRewards:ke(s,18),minRewardDurationForTargetRate:Number(n),targetRewardsPerSecond:ke(l,36)}}function fe(e,t,r){return e?r*t*te(1)/e:null}function aa(e,t,r){return r?e*r/(t*te(1)):0}function js({availableRewards:e,periodFinish:t,tvl:r,bgtPrice:a,MIN_REWARD_DURATION:o,MAX_REWARD_DURATION:i,...l}){let n=S(Date.now());if(n>t)return{apr:0,duration:0,rewardRate:0,targetRate:null,periodFinish:0,mode:null};if(l.mode==="targetRate"||l.mode==="targetApr"){let d,{minRewardDurationForTargetRate:f,currentDuration:g}=l;if(l.mode==="targetRate"?d=l.rewardRate:d=aa(l.apr,a,r),d===0){let h=Math.min(g,i),P=e?e/h:0;return{apr:fe(r,a,P),duration:h,rewardRate:P,targetRate:null,periodFinish:h+n,mode:"duration"}}let p=f||o,A=e?e/d:0;if(A<p){let h=e?e/p:0;return{apr:fe(r,a,h),duration:p,rewardRate:h,targetRate:h.toString(),periodFinish:p+n,mode:null}}return{apr:fe(r,a,d),duration:A,rewardRate:d,targetRate:d.toString(),periodFinish:A+n,mode:null}}let{duration:s}=l,m=e/s;return{apr:fe(r,a,m),mode:null,targetRate:null,duration:s,rewardRate:m,periodFinish:s+n}}async function Xs({address:e,account:t,...r}){let{config:a}=c(r),o=`${a.staking}/vaults/${e}/earnings/${t}`;return We({url:o,type:"rest"})}import{formatUnits as oa}from"viem";import{rewardVaultAbi as na}from"@berachain/abis/pol/rewards/rewardVault";import{GetVaults as ia}from"@berachain/graphql/pol/api";async function ge({filter:e,publicClient:t,...r}={}){let o=await b("api",r).query({query:ia,variables:e}),i=await Promise.allSettled(o.data.polGetRewardVaults.vaults.map(async n=>{if(t)return Promise.allSettled(n.activeIncentives.map(s=>t.readContract({abi:na,address:n.address,functionName:"incentives",args:[s.tokenAddress]})))})),l=o.data.polGetRewardVaults.vaults.map((n,s)=>{let m=0,u=n.activeIncentives.map((d,f)=>{let g=Number(d.remainingAmountUsd)&&Number(d.remainingAmount)?Number(d.remainingAmountUsd)/Number(d.remainingAmount):0,p=i[s]?.status==="fulfilled"&&i[s]?.value?.[f]?.status==="fulfilled"?oa(BigInt(i[s].value[f].value[2]),d.token.decimals):d.remainingAmount;return m+=Number(p)*Number(g),{...d,remainingAmount:p}});return{...n,dynamicData:{...n.dynamicData,allTimeReceivedBGTAmount:n.dynamicData?.allTimeReceivedBGTAmount??"0",bgtCapturePercentage:n.dynamicData?.bgtCapturePercentage??"0",activeIncentivesValueUsd:m.toString(),activeIncentivesRateUsd:n.dynamicData?.activeIncentivesRateUsd??"0",bgtCapturePerBlock:n.dynamicData?.bgtCapturePerBlock??"0"},activeIncentives:u}});return{pagination:o.data.polGetRewardVaults.pagination,gaugeList:l}}import{GlobalData as sa}from"@berachain/graphql/pol/api";async function At(e={}){let{config:t}=c(e),a=await b("api",e).query({query:sa,variables:{chain:t.bex.chainName}});return{...a.data.polGetGlobalInfo,top3EmittingValidators:a.data.top3EmittingValidators.validators,allValidatorsCount:a.data.allValidatorsCount.pagination.totalCount}}import{formatEther as la}from"viem";import{bgtAbi as ua}from"@berachain/abis/pol/bgt";async function ht({publicClient:e,...t}){let{config:r}=c(t);v(e);try{let a=await e.readContract({address:r.tokens.bgt,abi:ua,functionName:"totalBoosts",args:[]});return la(a)}catch(a){throw console.log(a),a}}import{erc20Abi as ca,formatEther as da}from"viem";async function wt({publicClient:e,...t}){let{config:r}=c(t);v(e);try{let a=await e.readContract({address:r.tokens.bgt,abi:ca,functionName:"totalSupply",args:[]});return da(a??0n)}catch(a){throw console.log(a),a}}import{GqlRewardVaultOrderBy as ma,GqlRewardVaultOrderDirection as pa}from"@berachain/graphql/pol/api";async function Ct(e){let{gaugeList:t}=await ge({filter:{orderBy:ma.Apr,orderDirection:pa.Desc,pageSize:e,where:{includeNonWhitelisted:!1}}});return t}async function Sl(e){let[t,r,a,o]=await Promise.allSettled([At(),Ct(300),wt({publicClient:e}),ht({publicClient:e})]);return t.status==="rejected"&&M.captureException(D({cause:t.reason,level:"warning"})),r.status==="rejected"&&M.captureException(D({cause:r.reason,level:"warning"})),a.status==="rejected"&&M.captureException(D({cause:a.reason,level:"warning"})),o.status==="rejected"&&M.captureException(D({cause:o.reason,level:"warning"})),{bgtTotalSupply:a.status==="fulfilled"?a.value:void 0,globalCuttingBoard:r.status==="fulfilled"?r.value:[],bgtTotalBoosts:o.status==="fulfilled"?o.value:void 0,...t.status==="fulfilled"?t.value:{}}}import{GetIncentiveFeeClaimStats as fa}from"@berachain/graphql/pol/fees";async function Pt({...e}){let t=b("pol.fees",e),{data:r}=await t.query({query:fa});if(r.incentiveFeeClaims.length>0){let a=r?.incentiveFeeClaims.reduce((l,n)=>l+Number(n.payoutAmount),3e4),i=(r?.incentiveFeeClaims.filter(l=>Number(l.timestamp)/1e3>Date.now()-He(1))).reduce((l,n)=>l+Number(n.payoutAmount),0);return{sumAllClaims:a,sumClaimsInLast24Hours:i}}return{sumAllClaims:0,sumClaimsInLast24Hours:0}}async function Fl(e={}){let{config:t}=c(e);try{let a=await(await fetch(t.lists.rewardVaultList)).json();if(!a.protocols)throw new Error("Missing protocols in market list");return{marketList:a.protocols,marketDictionary:a.protocols.reduce((o,i)=>(o[i.name]=i,o),{})}}catch(r){throw console.error("Error fetching validator information",r),r}}async function Ul({account:e,validator:t,page:r=1,perPage:a=1e3,...o}){let{config:i}=c(o),l=await fetch(`${i.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/proofs/validator/${t.toLowerCase()}?page=${r}&per_page=${a}`,{cache:"no-store"});if(!l.ok){let s=await le(l);throw new B({message:"Failed to fetch proofs on server",cause:{error:s,result:l,account:e,validator:t},reason:s?.reason})}return await l.json()}import{formatUnits as ga,parseUnits as ba}from"viem";import{wberaStakerVaultAbi as ya}from"@berachain/abis/pol/wberaStakerVault";async function Hl({address:e,publicClient:t}){return v(t),t.readContract({address:e,abi:ya,functionName:"previewRedeem",args:[ba("1",18)]}).then(r=>Number(ga(r,18))).catch(()=>0)}import{GetRewardVault as Aa}from"@berachain/graphql/pol/api";async function Yl({address:e,chainName:t,...r}){let{config:a}=c(r),o=t??a.bex.chainName,i=b("api",r),{data:l}=await i.query({query:Aa,variables:{vaultId:e,chain:o}});if(!l?.rewardVault)throw new _e({resource:"Reward vault",id:e,chainId:a.chainId});return l.rewardVault}import{isSameAddress as Bt}from"@berachain-foundation/berancer-sdk";import{erc20Abi as be,formatUnits as ae}from"viem";import{rewardVaultAbi as xe}from"@berachain/abis/pol/rewards/rewardVault";function Ge(e,t){return e.status==="success"?e.result:t}async function au({address:e,stakingToken:t,publicClient:r}){let a=await r.readContract({address:e,abi:xe,functionName:"getWhitelistedTokens"}),i=a.findIndex(n=>Bt(t,n))!==-1?await r.readContract({address:e,abi:xe,functionName:"totalSupply"}):0n,l=await Promise.allSettled(a.map(async n=>{let[s,m,u,d,f]=await r.multicall({allowFailure:!0,contracts:[{address:e,abi:xe,functionName:"incentives",args:[n]},{address:n,abi:be,functionName:"decimals"},{address:n,abi:be,functionName:"name"},{address:n,abi:be,functionName:"symbol"},{address:n,abi:be,functionName:"balanceOf",args:[e]}]});if(s.status==="failure")throw new B({cause:s.error,message:"Failed to get incentive info. This is not possible.",level:"error",extra:{token:n,address:e}});let[g,p,A,h]=s.result,P=Ge(m,18);return{token:n,manager:h,minIncentiveRate:ae(g,P),incentiveRate:ae(p,P),remainingAmount:ae(A,P),name:Ge(u,void 0),symbol:Ge(d,void 0),decimals:P,pendingAmount:Bt(t,n)?ae((f.result??0n)-i-A,P):ae((f.result??0n)-A,P)}}));return l.forEach((n,s)=>{n.status==="rejected"&&M.captureException(new B({reason:n.reason,message:"Incorrect incentives token received.",level:"error",extra:{token:a[s],address:e,error:n.reason}}))}),l.map(n=>n.status==="fulfilled"?n.value:null).filter(n=>n!==null)}import{rewardVaultAbi as ha}from"@berachain/abis/pol/rewards/rewardVault";async function iu({address:e,publicClient:t}){return await t.readContract({address:e,abi:ha,functionName:"stakeToken"})}import{GetSWberaVaultMetadata as wa,GqlSWberaVaultMetadataResolution as vt}from"@berachain/graphql/pol/api";function Ca(e){return e==="DAY"?vt.OneDay:vt.SevenDays}async function du({window:e,...t}){let{config:r}=c(t),a=b("api",t);try{let o=await a.query({query:wa,variables:{chain:r.bex.chainName,resolution:Ca(e??"DAY")}}),{apr:i}=o.data.polGetSWberaVaultMetadata;return Number(i)}catch(o){throw console.error("Failed to get SW Bera APR",o),o}}import{GetSWberaVaultSnapshots as Pa,GqlVaultSnapshotDataRange as Ba}from"@berachain/graphql/pol/api";async function bu({chain:e,range:t=Ba.ThirtyDays,...r}={}){let{config:a}=c(r),o=b("api",r);try{return(await o.query({query:Pa,variables:{chain:e??a.bex.chainName,range:t}})).data.polGetSWberaVaultSnapshots}catch(i){throw console.error("Failed to get SW Bera Snapshots",i),i}}import{wberaStakerVaultAbi as va}from"@berachain/abis/pol/wberaStakerVault";async function oe({publicClient:e,address:t}){let r=await e.readContract({address:t,abi:va,functionName:"WITHDRAWAL_COOLDOWN"});return Number(r)}import{erc20Abi as ye,erc4626Abi as ne}from"viem";async function Ru({address:e,underlyingAsset:t,publicClient:r,blockTime:a}){v(r);let o=26;try{let i=await r.getBlock({blockTag:"latest"}),l=Math.floor(o*60*60/a),n=i.number-BigInt(l),[s,m,u,d,f,g,p,A,h,P,y]=await Promise.all([r.readContract({address:e,abi:ne,functionName:"totalAssets"}),r.readContract({address:e,abi:ne,functionName:"totalSupply"}),r.readContract({address:e,abi:ne,functionName:"previewRedeem",args:[10n**18n],blockNumber:i.number}),r.readContract({address:t,abi:ye,functionName:"balanceOf",args:[e]}),r.readContract({address:e,abi:ne,functionName:"totalAssets",blockNumber:n}),r.readContract({address:e,abi:ye,functionName:"totalSupply",blockNumber:n}),r.readContract({address:e,abi:ne,functionName:"previewRedeem",args:[10n**18n],blockNumber:n}),r.readContract({address:t,abi:ye,functionName:"balanceOf",args:[e],blockNumber:n}),r.readContract({address:t,abi:ye,functionName:"totalSupply"}),oe({publicClient:r,address:e}),Pt({})]),I=new N(p.toString()),k=new N(u.toString());return{address:e,current:{exchangeRate:k.toString(),totalSupply:new N(m.toString()).dividedBy(1e18).toString(),totalAssets:new N(s.toString()).dividedBy(1e18).toString(),tvl:new N(d.toString()).dividedBy(1e18).toString()},previous:{exchangeRate:I.toString(),totalSupply:new N(g.toString()).dividedBy(1e18).toString(),totalAssets:new N(f.toString()).dividedBy(1e18).toString(),tvl:new N(A.toString()).dividedBy(1e18).toString()},totalWBeraIssued:new N(h.toString()).dividedBy(1e18).toString(),lockPeriod:P,totalBuyBacks:y.sumAllClaims,totalBuyBacksInLast24Hours:y.sumClaimsInLast24Hours}}catch(i){throw console.error("Failed to get SW Bera Vault Metadata",i),i}}import{wberaStakerVaultAbi as Ae}from"@berachain/abis/pol/wberaStakerVault";function Rt(e){let t=Date.now(),r=e*1e3-t;if(r<=0)return;let a=S(r);return $e(a,!0,!0)}async function Tu({contractAddress:e,accountAddress:t,publicClient:r,version:a}){let o=[];function i(l,n){let[s,m,u]=l,d=s,f=Number(u)+Number(n),g=S(Date.now()),p=f-g;if(d>0){let A=Rt(p<=0?0:f);o.push({receiptTokenAddress:e,withdrawalAmount:d,timeRemaining:A})}}switch(a){case"V1":{let[l,n]=await Promise.all([r.readContract({address:e,abi:Ae,functionName:"withdrawalRequests",args:[t]}),oe({publicClient:r,address:e})]);return i(l,n),o}case"V2":{let[l,n]=await Promise.all([r.readContract({address:e,abi:Ae,functionName:"getERC721WithdrawalRequestIds",args:[t]}),oe({publicClient:r,address:e})]);if(V(e,"SWBERA")){let u=await r.readContract({address:e,abi:Ae,functionName:"withdrawalRequests",args:[t]});i(u,n)}let m=(await Promise.all(l.map(async u=>{let d=await r.readContract({address:e,abi:Ae,functionName:"getERC721WithdrawalRequest",args:[u]}),{assets:f,requestTime:g}=d;if(!f||!g)throw new Error("Invalid withdrawal request");let p=f,A=Number(g)+Number(n),h=S(Date.now()),P=A-h;if(p>0){let y=Rt(P<=0?0:A);return{withdrawalAmount:p,timeRemaining:y,withdrawalRequestId:u,receiptTokenAddress:e}}return null}))).filter(u=>u!==null);return o.push(...m),o}}}import{wberaStakerVaultAbi as Ra}from"@berachain/abis/pol/wberaStakerVault";async function qu({vaultAddresses:e,publicClient:t}){v(t);try{let r=await Promise.all(e.map(async o=>await t.readContract({address:o,abi:Ra,functionName:"totalAssets"})));return e.reduce((o,i,l)=>(o[i]=r[l],o),{})}catch(r){throw console.error("Failed to get total staked amount",r),r}}async function Lu({account:e,...t}){let{config:r}=c(t),a=await fetch(`${r.pol.bribeBoostApi}/api/v1/wallets/${e.toLowerCase()}/rewards/aggregation`,{cache:"no-store"});if(!a.ok){let o=await le(a);throw new B({message:"Failed to fetch incentives on server",cause:{error:o,result:a,account:e},reason:o?.error})}return await a.json()}import{rewardVaultAbi as Va}from"@berachain/abis/pol/rewards/rewardVault";async function Vt({account:e,vaultAddress:t,publicClient:r}){if(!r)throw new Error("Missing public client");if(!e)throw new Error("Missing user account");if(!t)throw new Error("Missing vault address");return await r.readContract({address:t,abi:Va,functionName:"earned",args:[e]})}import{formatEther as Te}from"viem";import{rewardVaultAbi as St}from"@berachain/abis/pol/rewards/rewardVault";async function Nt({account:e,vaultAddress:t,publicClient:r}){v(r),Ce(e,"account"),Ce(t,"vaultAddress");try{let[a,o]=await Promise.all([r.readContract({address:t,abi:St,functionName:"balanceOf",args:[e]}),r.readContract({address:t,abi:St,functionName:"getTotalDelegateStaked",args:[e]})]);return{balance:a,delegated:o}}catch(a){throw console.log(a),a}}import{rewardVaultAbi as Sa}from"@berachain/abis/pol/rewards/rewardVault";async function kt({vaultAddress:e,publicClient:t}){if(!t)throw new Error("Missing public client");if(!e)throw new Error("Missing vault address");try{return await t.readContract({address:e,abi:Sa,functionName:"totalSupply",args:[]})}catch(r){throw console.log(r),r}}async function ec({account:e,vaultAddress:t,publicClient:r}){let[a,o,i]=await Promise.all([Nt({account:e,vaultAddress:t,publicClient:r}),Vt({account:e,vaultAddress:t,publicClient:r}),kt({vaultAddress:t,publicClient:r})]),l=a.balance-a.delegated,n=i>0n?Number(Number.parseFloat(Te(a.balance))/Number.parseFloat(Te(i))).toString():"0";return{balance:a.balance,delegatedBalance:a.delegated,withdrawableBalance:l,rewards:Te(o),percentage:n}}import{formatUnits as Ee}from"viem";import{rewardVaultAbi as xt}from"@berachain/abis/pol/rewards/rewardVault";import{GetUserVaults as Na}from"@berachain/graphql/pol/api";async function uc({account:e,publicClient:t,...r}){let{config:a}=c(r),l=(await b("api",r).query({query:Na,variables:{userId:e,chain:a.bex.chainName}})).data?.userVaultDeposits?.deposits;if(!l)return{totalBgtRewards:"0",vaults:[],totalStakedValue:0};let[n,s]=await Promise.all([t.multicall({allowFailure:!1,contracts:l.map(g=>({address:g.vaultAddress,abi:xt,functionName:"earned",args:[e]}))}),t.multicall({allowFailure:!1,contracts:l.map(g=>({address:g.vaultAddress,abi:xt,functionName:"balanceOf",args:[e]}))})]),{userVaults:m,total:u}=l.reduce((g,p,A)=>{let h=n[A],P=s[A];if(g.total+=h,!p.vault)return M.captureException(new B({message:"Deposit data from API is missing vault",level:"error",extra:{deposit:p}})),console.error("Deposit data from API is missing vault",p),g;if(h>0n||P>0n){let y=p.vault.dynamicData?.tvl&&Number(p.vault.stakingTokenAmount)!==0?Number(p.vault.dynamicData?.tvl??0)/Number(p.vault.stakingTokenAmount):null;g.userVaults.push({...p,vault:p.vault,unclaimedBgt:Ee(h,18),formattedBalance:Ee(P,p.vault.stakingToken.decimals),stakingTokenPrice:y})}return g},{userVaults:[],total:0n}),d=[...m].sort((g,p)=>{if(g.vault.isVaultWhitelisted&&!p.vault.isVaultWhitelisted)return-1;if(!g.vault.isVaultWhitelisted&&p.vault.isVaultWhitelisted)return 1;let A=Number.parseFloat(g.unclaimedBgt);return Number.parseFloat(p.unclaimedBgt)-A});return{totalStakedValue:d.reduce((g,p)=>{let A=Number(p.vault.dynamicData?.tvl??0);if(A===0)return g;let h=Number.parseFloat(p.vault.stakingTokenAmount),P=A/h;return g+P*Number(p.formattedBalance)},0),totalBgtRewards:Ee(u,18),vaults:d}}import{GetVaultHistory as ka}from"@berachain/graphql/pol/api";async function fc({vault:e,chain:t,...r}){let{config:a}=c(r);return(await b("api",r).query({query:ka,variables:{...r,vaultId:e,chain:t??a.bex.chainName}})).data.polGetRewardVaultSnapshots}import{GetVaultValidators as xa}from"@berachain/graphql/pol/api";async function Ac({address:e,onlyActiveValidators:t,...r}){return(await b("api",r).query({query:xa,variables:{vaultId:e,isActive:t}})).data.validators.validators??[]}import{getAddress as Ga,zeroAddress as Ta}from"viem";import{GetTokenCurrentPrices as Ea}from"@berachain/graphql/dex/api";async function Vc({addressIn:e,...t}){let{config:r,chainId:a}=c(t),o=e.map(n=>n.toLowerCase()).filter((n,s,m)=>n&&m.indexOf(n)===s),i=b("api",t),{data:l}=await i.query({query:Ea,variables:{chains:[r.bex.chainName],addressIn:o}});return l.tokenGetCurrentPrices.reduce((n,s)=>{if(!s.price||!s.address)return n;let m=s.address;return n[Ga(m)]={price:K(s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[m.toLowerCase()]={price:K(s.price.toString()),updatedAt:s.updatedAt,chainId:a},V(m,"WBERA")&&(n[Ta]={price:K(s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[r.tokens.bgt.toLowerCase()]={price:K(s.price.toString()),updatedAt:s.updatedAt,chainId:a},n[r.tokens.bgt]={price:K(s.price.toString()),updatedAt:s.updatedAt,chainId:a}),n},{})}import{getPublicClient as Fa}from"@wagmi/core";import{erc20Abi as Ia,formatUnits as qa}from"viem";async function Gc({items:e,account:t,config:r}){j(e,"items"),j(r,"config"),j(t,"account");let a=Object.groupBy(e,i=>i.token.chainId);return(await Promise.allSettled(Object.entries(a).map(async([i,l])=>{if(!l)return[];let n=Fa(r,{chainId:Number(i)});return v(n,`publicClient ${i}`),(await n.multicall({contracts:l.map(u=>({address:u.token.address,abi:Ia,functionName:"allowance",args:[t,u.spender]}))})).map((u,d)=>{let f=l[d];return u.error?void 0:{token:f.token,spender:f.spender,amount:f.amount,allowance:{raw:u.result.toString(),formatted:qa(u.result,f.token.decimals)},needsApproval:u.result<BigInt(f.amount.raw)}}).filter(u=>!!u)}))).flatMap(i=>i.status==="fulfilled"?i.value:void 0).filter(i=>!!i)}import{getPublicClient as Ua,getWalletClient as Wa,switchChain as La}from"@wagmi/core";import{BaseError as Oa,createWalletClient as Ma,decodeErrorResult as Ha,HttpRequestError as _a,http as Ja}from"viem";import{ChainId as $a,defaultChainId as Et}from"@berachain/config/internal";import{AbiFunctionSignatureNotFoundError as Da,decodeFunctionData as Qa}from"viem";async function Gt({publicClient:e,abi:t,...r}){let a=[...se,...t??[]],o,i,l,n,s,m,u;if("txHash"in r){let d=await e.getTransaction({hash:r.txHash});if(!d.to)throw new G({property:"tx",value:d,expected:"Transaction",message:"Trying to get revert reason for a contract creation"});s=d.input,i=d.to,l=d.from,n=d.value,o=d.blockNumber}else if(o=r.blockNumber,i=r.to,l=r.account,n=r.value,"data"in r)s=r.data;else if("functionName"in r&&"args"in r)m=r.functionName,u=r.args;else if(!n)throw new G({property:"dataOrFunctionNameAndArgs",value:r,expected:"Hex or FunctionName and Args"});try{if(!a)if(s)await e.call({data:s,to:i,account:l,blockNumber:o,value:n});else throw new Error("Data is required if abi is not provided");if("functionName"in r&&"args"in r&&r.functionName)m=r.functionName,u=r.args;else if(s){if(!a){let d=await e.call({data:s,to:i,account:l,blockNumber:o,value:n});throw new Error(`Getting revert reason for successful simulation. Data: ${s}`,{cause:d})}try{let d=Qa({abi:a,data:s});m=d.functionName,u=d.args}catch(d){throw d instanceof Da&&await e.call({data:s,to:i,account:l,blockNumber:o,value:n}),new Error("Data is required if abi is not provided")}}else throw new Error("No data or function name and args provided");throw a&&m?(await e.simulateContract({functionName:m,args:u,abi:a,address:i,account:l,blockNumber:o}),new H({message:"Getting revert reason for successful simulation",functionName:m,to:i,txHash:"txHash"in r?r.txHash:void 0,input:r})):new Error("No data or function name and args provided")}catch(d){if(d instanceof Error)return ee({error:d,abi:a,revertIfUnknown:!0});throw d}}var ja=Me(1),Tt=(e,t)=>e*(100n+BigInt(t))/100n;function Fe({nonceResult:e,onWarning:t}){if(e.status==="fulfilled"){if(e.value&&e.value>Number.MAX_SAFE_INTEGER){t?.(new B({message:"Nonce is too large. No nonce will be provided to avoid IntegerOutOfRangeError.",cause:e.value,level:"debug"}));return}return e.value}}function Ka(e=Et){return e===$a.BEPOLIA?process.env.NEXT_PUBLIC_80069_ANVIL_IMPERSONATE_ACCOUNT==="true":process.env.NEXT_PUBLIC_80094_ANVIL_IMPERSONATE_ACCOUNT==="true"}async function Zc(e){if(process.env.NODE_ENV==="development"&&!e.contractName&&e.address&&!("calls"in e||e.calls))throw console.warn("beraWriteContract: Contract name is required. Either update the contract mapping in devrel or provide a contract name in ContractName enum","This is a development error and will be thrown in development mode only."),new G({property:"contractName",value:e.contractName,expected:"ContractName",displayMessage:`[DEV] Contract name is required as it's not mapped in the devrel's contract mapping ${e.address}`,level:"error"});let{address:t,calls:r,value:a,gasLimit:o,onLoading:i,onSuccess:l,onWarning:n,onError:s,onSubmission:m,wagmiConfig:u,walletClient:d,account:f,txConfirmationTimeout:g=12e4,chainId:p=Et,impersonateAccount:A=Ka(p),errorsAbi:h=[],pollingInterval:P=ja,...y}=e;i?.(e);let I="data"in y?y.data:void 0,k=[...se,...h,..."abi"in y&&y.abi&&Array.isArray(y.abi)?y.abi:[]],T=d;if(!u){s?.(new G({property:"wagmiConfig",value:u,expected:"Config"}),e);return}if(!(T?.account?.type==="local"))try{await La(u,{chainId:p})}catch(R){let x=R;s?.(new B({cause:x,displayMessage:"There was an error switching to the chain."}),e);return}if(!T)try{T=await Wa(u,{chainId:p})}catch(R){s?.(new B({cause:R,displayMessage:"There was an error connecting to the wallet."}),e);return}if(!T){s?.(new G({displayMessage:"There was an error connecting to the wallet.",property:"walletClient",value:T,expected:"WalletClient"}),e);return}let q=f||T.account;if(!q){s?.(new G({property:"account",value:q,expected:"Account"}),e);return}let ie=typeof q=="string"?q:q.address,W=Ua(u,{chainId:p});try{v(W)}catch(R){s?.(R,e);return}if(A){let R=Be(p);await R.impersonateAccount({address:ie}),T=Ma({transport:Ja(R.transport.url),account:q,chain:T.chain})}let E,Z={calls:"calls"in y?y.calls:void 0,params:"params"in y?y.params:void 0,value:a,data:"data"in y?y.data:void 0};try{let R=W.getTransactionCount({address:ie,blockTag:"latest"}).catch(()=>{}),x={account:ie,to:t,address:t,chainId:p,value:a};if(r){let F=r.map(w=>{if("abi"in w&&Array.isArray(k)&&k.push(...w.abi),"data"in w)return{to:w.address,data:w.data,value:w.value??0n};if("abi"in w&&"functionName"in w){let L="params"in w?w.params:void 0;return{to:w.address,abi:w.abi,functionName:w.functionName,args:L,value:w.value??0n}}return{to:w.address,value:w.value??0n}});if(e.enableSimulateCalls){let w=await W.simulateCalls({calls:F,account:q}),L=w.results.findIndex(O=>O.status==="failure");if(L!==-1){if(w.block.number===null)throw new G({property:"blockNumber",value:w.block.number,expected:"bigint",message:"Block number is null"});let O=w.results[L],{reason:we}=O.data&&O.data!=="0x"?{reason:De(Ha({data:O.data,abi:k}))}:ee({error:O.error,revertIfUnknown:!1,abi:k});s?.(new H({cause:O.error,txHash:E,chainId:p,reason:we,abi:k,input:Z,blockNumber:w.block.number}),e);return}}if(process.env.NODE_ENV==="test")throw new G({displayMessage:"Batch calls are not supported in test environment",expected:"not test",property:"NODE_ENV",value:process.env.NODE_ENV,level:"fatal"});let Q=await T.sendCalls({calls:F,account:q,forceAtomic:!0});m?.({id:Q.id},e);let U=await T.waitForCallsStatus({id:Q.id,pollingInterval:P,timeout:g});if(U.status==="success"){let w=U.receipts?.[0];if(!w)throw new B({message:"Call status is success but no receipt was found",cause:U,level:"error",reason:"CALL_STATUS_SUCCESS_BUT_NO_RECEIPT"});return l?.(w,e),w}throw console.error("wallet_sendCalls: Call failed",U),new H({cause:U,level:"error",input:Z,txHash:E,abi:k,chainId:p})}if(I){let[F,Q,U]=await Promise.allSettled([W.call({...x,data:I}),o??W.estimateGas({...x,data:I}),R]);if(F.status==="rejected")throw F.reason;let w=Q.status==="fulfilled"?Tt(Q.value,10):Pe;E=await T.sendTransaction({data:I,to:t,account:q,gas:w,chainId:p,nonce:Fe({nonceResult:U,onWarning(L){n?.(L,e)}}),value:a}),m?.({txHash:E},e)}else if("abi"in y&&"functionName"in y){let{abi:F,functionName:Q}=y,U="params"in y?y.params:void 0,[w,L,O]=await Promise.allSettled([W.simulateContract({...x,abi:k,functionName:Q,args:U,account:q}),o??W.estimateContractGas({...x,abi:k,functionName:Q,args:U}),R]);if(w.status==="rejected")throw w.reason;let we=o??(L.status==="fulfilled"?Tt(L.value,10):Pe);E=await T.writeContract({...w.value.request,chainId:p,gas:we,nonce:Fe({nonceResult:O,onWarning(Ut){n?.(Ut,e)}})}),m?.({txHash:E},e)}else{let[F]=await Promise.allSettled([R]);E=await T.sendTransaction({chainId:p,to:t,value:a,account:q,nonce:Fe({nonceResult:F,onWarning(Q){n?.(Q,e)}})}),m?.({txHash:E},e)}process.env.NODE_ENV==="test"&&await Be(p).mine({blocks:1});let J=await W.waitForTransactionReceipt({hash:E,pollingInterval:P,timeout:g,confirmations:1});if(J.status==="success")l?.(J,e);else{let F=await Gt({publicClient:W,blockNumber:J.blockNumber,to:t,account:ie,abi:k,args:"params"in y?y.params:void 0,functionName:"functionName"in y?y.functionName:void 0,value:a,data:I});process.env.NODE_ENV==="test"&&console.error("beraWriteContract: Revert reason",F),s?.(new H({reason:F.reason,txHash:E,receipt:J,to:t,functionName:"functionName"in y?y.functionName:void 0,input:Z,chainId:p,abi:k,blockNumber:J.blockNumber}),e)}return J}catch(R){if(R instanceof B)s?.(R,e);else if(R instanceof Error){let x=ee({error:R,revertIfUnknown:!1,abi:k});if(x&&x.rootCause instanceof Oa&&"url"in x.rootCause){s?.(new $({cause:x.rootCause,response:void 0,endpoint:{url:x.rootCause.url,type:"rpc"},statusCode:x.rootCause instanceof _a?x.rootCause.status:void 0}),e);return}s?.(new H({cause:R,to:t,txHash:E,chainId:p,abi:k,functionName:"functionName"in y?y.functionName:void 0,input:Z}),e)}else s?.(new H({cause:R,txHash:E,to:t,chainId:p,functionName:"functionName"in y?y.functionName:void 0,input:Z,abi:k}),e)}}import{GetValidators as Ya}from"@berachain/graphql/pol/api";async function Ft({variables:e={},...t}={}){let{config:r}=c(t);return(await b("api",t).query({query:Ya,variables:{chain:r.bex.chainName,...e}})).data}import{isAddressEqual as za}from"viem";async function sd({allocation:e}){let t=await ge({filter:{where:{vaultAddressIn:e.weights.map(a=>a.receiver)}}}),r=e?.start.blockNumber??0;return e?.weights.map(a=>({percentage:a.percentage,receiver:a.receiver,startBlock:r,receivingVault:t?.gaugeList.find(o=>za(o.address,a.receiver))}))}import{GetValidator as Xa}from"@berachain/graphql/pol/api";async function md({id:e,...t}){let{config:r}=c(t);return(await b("api",t).query({query:Xa,variables:{id:e,chain:r.bex.chainName}})).data}import{GetValidatorBlockStats as Za}from"@berachain/graphql/pol/subgraph";async function bd({pubKey:e,first:t=1,...r}){let a=b("pol.subgraph",r);try{return(await a.query({query:Za,variables:{pubKey:e,first:t}})).data}catch(o){throw console.error("GetValidatorBlockStats:",o),o}}import{beraChefAbi as It}from"@berachain/abis/pol/rewards/beraChef";function X(e,t){return{start:{blockNumber:Number(e.startBlock),timestamp:e.startBlock!==0n?t:0},weights:e.weights.map(r=>({receiver:r.receiver,percentage:Number(r.percentageNumerator)/1e4}))}}function eo(e,t){return e.start.blockNumber===t.start.blockNumber&&e.weights.every((r,a)=>r.percentage===t.weights[a].percentage)}async function wd({client:e,pubKey:t,...r}){let{config:a}=c(r);try{let[o,i]=await Promise.all([e.readContract({address:a.pol.beraChef,abi:It,functionName:"getActiveRewardAllocation",args:[t]}),e.readContract({address:a.pol.beraChef,abi:It,functionName:"getSetActiveRewardAllocation",args:[t]})]),[l,n]=await Promise.all([o.startBlock!==0n?e.getBlock({blockNumber:BigInt(o.startBlock)}):{timestamp:0},i.startBlock!==0n?e.getBlock({blockNumber:BigInt(i.startBlock)}):{timestamp:0}]),s=X(o,Number(l.timestamp)),m=X(i,Number(n.timestamp)),u=!1;return m.start.blockNumber===0?u=!0:u=!eo(m,s),{activeRewardAllocation:s,setRewardAllocation:m,isBaseline:u,isNeverSet:m?.start.blockNumber===0}}catch(o){throw console.log("getValidatorRewardAllocation:",o),o}}import{beraChefAbi as to}from"@berachain/abis/pol/rewards/beraChef";function Rd(e){return e.start.blockNumber===0}async function Vd({client:e,...t}){let{config:r}=c(t),a=await e.readContract({address:r.pol.beraChef,abi:to,functionName:"getDefaultRewardAllocation",args:[]});return X({...a,startBlock:0n},0)}async function Nd({client:e,valPubKey:t}){return 5614}import{formatEther as he}from"viem";import{bgtAbi as Ie}from"@berachain/abis/pol/bgt";async function qt({account:e,pubkey:t,publicClient:r,...a}){let{config:o}=c(a);if(!e)throw new Error("account is required");if(!r)throw new Error("publicClient is required");let[i,l,n]=await Promise.all([r.readContract({address:o.tokens.bgt,abi:Ie,functionName:"boosted",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:Ie,functionName:"boostedQueue",args:[e,t]}),r.readContract({address:o.tokens.bgt,abi:Ie,functionName:"dropBoostQueue",args:[e,t]})]),s=i-n[1];return{pubkey:t,droppableBoostAmount:he(s),activeBoostAmount:he(i),queuedBoostAmount:he(l[1]),queuedDropBoostAmount:he(n[1]),queuedBoostStartBlock:l[0],queuedDropBoostStartBlock:n[0],hasPendingBoosts:l[1]>0n||n[1]>0n,hasActiveBoosts:i>0n,hasDroppableBoosts:s>0n}}import{formatEther as ao,parseEther as Qt}from"viem";import{GetUserValidatorInformation as ro}from"@berachain/graphql/pol/api";async function Dt({account:e,...t}){let{config:r}=c(t);return await b("api",t).query({query:ro,variables:{address:e.toLowerCase(),chain:r.bex.chainName}})}async function Md({account:e,publicClient:t,chain:r,...a}){let{config:o}=c(a),i=r??o.bex.chainName,l=await Dt({account:e}),[n,s]=await Promise.all([Ft({variables:{chain:i,where:{idIn:l.data.polGetValidatorBoosts.boosts.map(m=>m.validatorId)}}}),Promise.all(l.data.polGetValidatorBoosts.boosts.filter(m=>!!m.validator).map(m=>qt({account:e,pubkey:m.validator.pubkey,publicClient:t})))]);return n?.validators.validators.map(m=>{let u=s.find(f=>f.pubkey.toLowerCase()===m.pubkey.toLowerCase());if(!u)throw new Error("User deposited not found");let d=Qt(u?.activeBoostAmount??"0")-Qt(u?.queuedDropBoostAmount);return{...m,userBoosts:{pubkey:u.pubkey,activeBoostAmount:u?.activeBoostAmount,queuedBoostAmount:u?.queuedBoostAmount,queuedBoostStartBlock:Number(u?.queuedBoostStartBlock),queuedDropBoostAmount:u?.queuedDropBoostAmount,queuedDropBoostStartBlock:Number(u?.queuedDropBoostStartBlock),droppableBoostAmount:ao(d),hasPendingBoosts:Number(u?.queuedBoostAmount)>0||Number(u?.queuedDropBoostAmount)>0,hasActiveBoosts:Number(u?.activeBoostAmount)>0,hasDroppableBoosts:d>0n}}})}var oo=[{validatorAddress:"0x8f51e63d9921a461be29e73dca1c2385e1adc5943fbb36ded4ba96025ee8a783184d1118da08171f6ea831153c878a6d",earning:.045,staked:{amount:16114000000000000000n,formattedAmount:"161.14"},rewards:{amount:15214000000000000000n,formattedAmount:"152.14"}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0x97b21253b17f4e814fe7505c15c18e68c85ab2477274ad370a762df50e3eb4cb1a48451e089bc22e158d7448549a8ab9",earning:.045,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:16159000000000000000n,formattedAmount:"161.59"}],unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},validatorAddress:"0xa2705d6b27891f3f5651f26547d1bb79e256f95f249d1ad717cef087d77d38b037e5d6dbaa2538930fd0731ec9b02f3a",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:16159000000000000000n,formattedAmount:"161.59",timestamp:S(Date.now()-72e6)}]}},{staked:{amount:241514000000000000000n,formattedAmount:"2415.14"},validatorAddress:"0xa4e4b63514f54d61da5197359f11ff1fc2930788ba2ffdd30c2fc059cbe0221020197bf9446b16ac347f36c7517a8686",earning:.145,rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{unstake:[{amount:1159000000000000000n,formattedAmount:"11.59",timestamp:S(Date.now()-36e6)}]}},{validatorAddress:"0xb0511ec039591e98bd4e183ba70b85572214a7ad8ca1a43e96ad3495d3821054927bc542e5482ec9733e35b7ef0b1f03",earning:.045,staked:{amount:141514000000000000000n,formattedAmount:"1415.14"},rewards:{amount:15414000000000000000n,formattedAmount:"154.14"},queueData:{stake:[{amount:1159000000000000000n,formattedAmount:"11.59"}]}}];async function Jd(e){return await new Promise(t=>setTimeout(t,2e3)),e==="0x4C368fFE3650379d6318C8d4630bc51f8Ad12bB6"?oo:[]}import{GetValidatorAnalytics as no}from"@berachain/graphql/pol/subgraph";async function zd({pubkey:e,dayRange:t,...r}){return(await b("pol.subgraph",r).query({query:no,variables:{pubKey:e,timestamp:Je(t).toString()}})).data}import{beraChefAbi as io}from"@berachain/abis/pol/rewards/beraChef";async function tm({client:e,pubKey:t,...r}){let{config:a}=c(r),o=await e.readContract({address:a.pol.beraChef,abi:io,functionName:"getValCommissionOnIncentiveTokens",args:[t]});return Number(o??0n)/1e4}var om=(e,t,r)=>{if(!t||!e)return 0;let a=te(1)/r;return(t?a*(Number(e.dynamicData?.stakedBeraAmount)/t):0)*Number.parseFloat(e.dynamicData?.rewardRate??"0")};import{beaconDepositAbi as so}from"@berachain/abis/pol/beaconDeposit";async function lm({client:e,pubKey:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.depositContract,abi:so,functionName:"getOperator",args:[t]})}catch(o){throw console.log("getValidatorOperatorAddress:",o),o}}import{beraChefAbi as lo}from"@berachain/abis/pol/rewards/beraChef";async function mm({client:e,pubKey:t,...r}){let{config:a}=c(r),o=await e.readContract({address:a.pol.beraChef,abi:lo,functionName:"getValQueuedCommissionOnIncentiveTokens",args:[t]});return{blockNumberLast:o.blockNumberLast,commissionRate:Number(o.commissionRate)/1e4}}import{beaconDepositAbi as uo}from"@berachain/abis/pol/beaconDeposit";async function bm({client:e,pubKey:t,...r}){let{config:a}=c(r);try{return await e.readContract({address:a.depositContract,abi:uo,functionName:"queuedOperator",args:[t]})}catch(o){throw console.log("getValidatorQueuedOperatorAddress:",o),o}}import{beraChefAbi as co}from"@berachain/abis/pol/rewards/beraChef";async function Cm({client:e,pubKey:t,...r}){let{config:a}=c(r);try{let o=await e.readContract({address:a.pol.beraChef,abi:co,functionName:"getQueuedRewardAllocation",args:[t]});return X(o,0)}catch(o){throw console.log("getValidatorQueuedRewardAllocation:",o),o}}export{go as a,de as b,b as c,Eo as d,ze as e,Mo as f,en as g,nn as h,dn as i,Ze as j,Pn as k,Sn as l,En as m,Y as n,Qn as o,pe as p,Mn as q,Jn as r,zn as s,it as t,ii as u,ci as v,fi as w,Ai as x,st as y,Se as z,ut as A,Ji as B,Yi as C,Hr as D,ts as E,ss as F,gt as G,ys as H,bt as I,xs as J,qs as K,Ws as L,ra as M,_s as N,js as O,Xs as P,ge as Q,Sl as R,Pt as S,Fl as T,Ul as U,Hl as V,Yl as W,au as X,iu as Y,du as Z,bu as _,oe as $,Ru as aa,Tu as ba,qu as ca,Lu as da,Vt as ea,ec as fa,uc as ga,fc as ha,Ac as ia,Vc as ja,Gc as ka,Ka as la,Zc as ma,Ft as na,sd as oa,md as pa,bd as qa,X as ra,eo as sa,wd as ta,Rd as ua,Vd as va,Nd as wa,qt as xa,Md as ya,Jd as za,zd as Aa,tm as Ba,om as Ca,lm as Da,mm as Ea,bm as Fa,Cm as Ga};
4
+ //# sourceMappingURL=chunk-FCZ72ML6.mjs.map