@andrewkimjoseph/celina-sdk 0.4.8 → 0.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Celina SDK
2
2
 
3
- **`@andrewkimjoseph/celina-sdk@0.4.7`** — Celo mainnet library for frontend apps and agents: **reads** and **unsigned transaction preparation** (no private keys).
3
+ Celo mainnet library for frontend apps and agents: **reads** and **unsigned transaction preparation** (no private keys).
4
4
 
5
5
  Pair with [wagmi](https://wagmi.sh) / viem — users sign prepared transactions in their wallet.
6
6
 
@@ -12,7 +12,7 @@ Celina is layered from chain logic through agent tooling:
12
12
  |-------|---------|------|
13
13
  | **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows, Carbon REST + SDK hybrid |
14
14
  | **MCP** | `@andrewkimjoseph/celina-mcp` | MCP tools for Cursor / Claude / LM Studio — stdio writes or hosted reads + Carbon prepare |
15
- | **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — hosted reads + Carbon prepare (71 tools); no server-key writes or `execute_carbon_*` |
15
+ | **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — hosted reads + Carbon prepare (72 tools); no server-key writes or `execute_carbon_*` |
16
16
 
17
17
  This repo is the **SDK**. Downstream packages depend on published npm semver (no local `file:` links in production).
18
18
 
@@ -92,7 +92,11 @@ Hybrid **Carbon REST** (`https://mcp.carbondefi.xyz`) plus **`@bancor/carbon-sdk
92
92
  - **`deep_link`** on prepare responses — Carbon REST trade/disposable UI URL (reference only; signing is via your wallet flow).
93
93
  - **`carbonActivityDeepLink(wallet)`** — post-execution activity explorer on [celo.carbondefi.xyz](https://celo.carbondefi.xyz).
94
94
 
95
- Set `CARBON_API_BASE_URL` to override the REST base. Hosted MCP exposes **12 read + 13 prepare** tools (71 total); `execute_carbon_*` requires local stdio with `CELO_PRIVATE_KEY`.
95
+ Set `CARBON_API_BASE_URL` to override the REST base. Hosted MCP exposes **72 tools** (reads + Carbon prepare); `execute_carbon_*` requires local stdio with `CELO_PRIVATE_KEY`.
96
+
97
+ ### MCP session wallet (not in the SDK)
98
+
99
+ Local **celina-mcp** with `CELO_PRIVATE_KEY` can omit wallet params on many tools and use **`get_wallet_address`** instead of shelling out for the signer. The SDK always requires an explicit `0x…` from your app (e.g. wagmi). See [MCP session wallet](docs/guides/mcp-session-wallet.md). **Celeste AI** is an independent app built on this SDK + browser wallet signing — it does not use celina-mcp.
96
100
 
97
101
  Full workflow: [Carbon DeFi guide](docs/guides/carbon.md).
98
102
 
@@ -110,10 +114,20 @@ MCP: `get_gooddollar_whitelisting_info`, `get_gooddollar_ubi_entitlement` (read)
110
114
 
111
115
  ## Related packages
112
116
 
113
- - [`@andrewkimjoseph/celina-mcp`](https://www.npmjs.com/package/@andrewkimjoseph/celina-mcp) `@0.8.4` — MCP server (38 Carbon tools on stdio; hosted: 12 read + 13 prepare)
117
+ - [`@andrewkimjoseph/celina-mcp`](https://www.npmjs.com/package/@andrewkimjoseph/celina-mcp) `@0.8.5` — MCP server (`get_wallet_address`, optional address on wallet-scoped tools; 85 tools stdio, 72 hosted)
114
118
  - [`celina-mcp-host`](../celina-mcp-host/) — Vercel-hosted MCP endpoint (`https://mcp.usecelina.xyz/api/mcp`) — reads + Carbon prepare
115
119
  - [`@selfxyz/agent-sdk`](https://www.npmjs.com/package/@selfxyz/agent-sdk) — Self Agent ID browser flows
116
120
 
121
+ ## Roadmap
122
+
123
+ - [x] Mento FX routing (`getFxQuote`, `estimateFx`, `prepareFx`)
124
+ - [x] Uniswap v4 swaps (`getSwapQuote`, `estimateSwap`, `prepareSwap`)
125
+ - [x] Aave lending tools (`prepareSupply`, `prepareWithdraw`) — USDT, WETH, USDm, USDC, CELO, EURm
126
+ - [x] Self proof verification (`verifySelfAgent`, `verifySelfRequest`, ai.self.xyz)
127
+ - [x] Self Agent ID (`lookupSelfAgent`, registration & lifecycle tools)
128
+ - [x] Carbon DeFi on Celo — 25 operations (12 read + 13 prepare); see [Carbon guide](docs/guides/carbon.md)
129
+ - [ ] Cross-chain bridging — bridge tokens to/from Celo (`getBridgeQuote`, `estimateBridge`, `prepareBridge`)
130
+
117
131
  ## License
118
132
 
119
133
  MIT
@@ -23,8 +23,6 @@ export function resolveAmplitudeApiKey(config) {
23
23
  DEFAULT_AMPLITUDE_API_KEY);
24
24
  }
25
25
  export function resolveDeviceId(config) {
26
- return (config.analyticsDeviceId ??
27
- process.env.CELINA_ANALYTICS_DEVICE_ID ??
28
- DEFAULT_DEVICE_ID);
26
+ return config.analyticsDeviceId ?? DEFAULT_DEVICE_ID;
29
27
  }
30
28
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AAE5E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,MAAM,CAAC,eAAe;QACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,CACL,MAAM,CAAC,iBAAiB;QACxB,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACtC,iBAAiB,CAClB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/analytics/config.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AAE5E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,mEAAmE;AACnE,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CACL,MAAM,CAAC,eAAe;QACtB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,MAAM,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;AACvD,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
2
+ export declare function sanitizePackageDeviceId(name: string): string;
3
+ /**
4
+ * npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
5
+ * Returns `undefined` when detection fails or the consumer is the SDK itself.
6
+ */
7
+ export declare function detectConsumerPackageName(stack?: string): string | undefined;
8
+ /** Test-only: clear cached consumer detection between cases. */
9
+ export declare function resetConsumerPackageDetectionForTests(): void;
@@ -0,0 +1,143 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { dirname, join, resolve, sep } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const SDK_PACKAGE_NAME = "@andrewkimjoseph/celina-sdk";
5
+ const SDK_DEVICE_IDS = new Set(["andrewkimjoseph_celina_sdk", "celina-sdk"]);
6
+ let detectionCached = false;
7
+ let detectedDeviceId;
8
+ /** Amplitude-safe id from npm `package.json` `name` (strip `@`, `/` and `-` → `_`). */
9
+ export function sanitizePackageDeviceId(name) {
10
+ const stripped = name.startsWith("@") ? name.slice(1) : name;
11
+ return stripped.replace(/\//g, "_").replace(/-/g, "_");
12
+ }
13
+ function getSdkPackageRoot() {
14
+ let dir = dirname(fileURLToPath(import.meta.url));
15
+ for (let i = 0; i < 24; i++) {
16
+ const pkgPath = join(dir, "package.json");
17
+ if (existsSync(pkgPath)) {
18
+ try {
19
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
20
+ if (pkg.name === SDK_PACKAGE_NAME) {
21
+ return dir;
22
+ }
23
+ }
24
+ catch {
25
+ // ignore malformed package.json
26
+ }
27
+ }
28
+ const parent = dirname(dir);
29
+ if (parent === dir) {
30
+ break;
31
+ }
32
+ dir = parent;
33
+ }
34
+ return undefined;
35
+ }
36
+ function isSdkFramePath(filePath, sdkRoot) {
37
+ const normalized = resolve(filePath);
38
+ if (sdkRoot) {
39
+ const root = resolve(sdkRoot);
40
+ if (normalized === root || normalized.startsWith(root + sep)) {
41
+ return true;
42
+ }
43
+ }
44
+ return normalized.includes(`${sep}node_modules${sep}@andrewkimjoseph${sep}celina-sdk${sep}`);
45
+ }
46
+ function readPackageNameFromFile(filePath) {
47
+ let dir = dirname(resolve(filePath));
48
+ for (let i = 0; i < 24; i++) {
49
+ const pkgPath = join(dir, "package.json");
50
+ if (existsSync(pkgPath)) {
51
+ try {
52
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
53
+ if (typeof pkg.name === "string" && pkg.name.length > 0) {
54
+ return pkg.name;
55
+ }
56
+ }
57
+ catch {
58
+ return undefined;
59
+ }
60
+ }
61
+ const parent = dirname(dir);
62
+ if (parent === dir) {
63
+ break;
64
+ }
65
+ dir = parent;
66
+ }
67
+ return undefined;
68
+ }
69
+ function parseStackFramePaths(stack) {
70
+ const paths = [];
71
+ for (const line of stack.split("\n")) {
72
+ const trimmed = line.trim();
73
+ if (!trimmed.startsWith("at ")) {
74
+ continue;
75
+ }
76
+ const parenMatch = /\(([^)]+)\)/.exec(trimmed);
77
+ let loc = parenMatch?.[1];
78
+ if (!loc) {
79
+ const bare = /^at (?:async )?(?:.+ )?(.+)$/.exec(trimmed);
80
+ loc = bare?.[1];
81
+ }
82
+ if (!loc) {
83
+ continue;
84
+ }
85
+ let filePath = loc.trim();
86
+ if (filePath.startsWith("file://")) {
87
+ try {
88
+ filePath = fileURLToPath(filePath);
89
+ }
90
+ catch {
91
+ continue;
92
+ }
93
+ }
94
+ filePath = filePath.replace(/:\d+:\d+$/, "").replace(/:\d+$/, "");
95
+ if (filePath) {
96
+ paths.push(filePath);
97
+ }
98
+ }
99
+ return paths;
100
+ }
101
+ /**
102
+ * npm package name of the app that called `createCelinaClient()`, sanitized for Amplitude.
103
+ * Returns `undefined` when detection fails or the consumer is the SDK itself.
104
+ */
105
+ export function detectConsumerPackageName(stack) {
106
+ if (detectionCached) {
107
+ return detectedDeviceId;
108
+ }
109
+ detectionCached = true;
110
+ detectedDeviceId = undefined;
111
+ if (typeof process === "undefined") {
112
+ return detectedDeviceId;
113
+ }
114
+ try {
115
+ const stackTrace = stack ?? new Error().stack ?? "";
116
+ const sdkRoot = getSdkPackageRoot();
117
+ for (const framePath of parseStackFramePaths(stackTrace)) {
118
+ if (isSdkFramePath(framePath, sdkRoot)) {
119
+ continue;
120
+ }
121
+ const rawName = readPackageNameFromFile(framePath);
122
+ if (!rawName) {
123
+ continue;
124
+ }
125
+ const deviceId = sanitizePackageDeviceId(rawName);
126
+ if (SDK_DEVICE_IDS.has(deviceId)) {
127
+ continue;
128
+ }
129
+ detectedDeviceId = deviceId;
130
+ return detectedDeviceId;
131
+ }
132
+ }
133
+ catch {
134
+ detectedDeviceId = undefined;
135
+ }
136
+ return detectedDeviceId;
137
+ }
138
+ /** Test-only: clear cached consumer detection between cases. */
139
+ export function resetConsumerPackageDetectionForTests() {
140
+ detectionCached = false;
141
+ detectedDeviceId = undefined;
142
+ }
143
+ //# sourceMappingURL=consumer-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-package.js","sourceRoot":"","sources":["../../src/analytics/consumer-package.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,11 @@ export interface SdkConfig {
16
16
  analyticsEnabled?: boolean;
17
17
  /** Override bundled Amplitude project API key. */
18
18
  amplitudeApiKey?: string;
19
- /** Amplitude `device_id` (default `celina-sdk`). */
19
+ /**
20
+ * Amplitude `device_id`. When omitted, auto-detected from the consuming package
21
+ * `package.json` name (sanitized, e.g. `celeste_ai`, `andrewkimjoseph_celina_mcp`),
22
+ * then `CELINA_ANALYTICS_DEVICE_ID`, then `celina-sdk`.
23
+ */
20
24
  analyticsDeviceId?: string;
21
25
  }
22
26
  /** Default Celo RPC when `rpcUrl` is omitted. */
@@ -1,3 +1,4 @@
1
+ import { detectConsumerPackageName } from "../analytics/consumer-package.js";
1
2
  /** Default Celo RPC when `rpcUrl` is omitted. */
2
3
  export const DEFAULT_RPC_URL = "https://forno.celo.org";
3
4
  /**
@@ -23,7 +24,11 @@ export function resolveSdkConfig(opts) {
23
24
  : undefined),
24
25
  analyticsEnabled: opts?.analyticsEnabled,
25
26
  amplitudeApiKey: opts?.amplitudeApiKey,
26
- analyticsDeviceId: opts?.analyticsDeviceId,
27
+ analyticsDeviceId: opts?.analyticsDeviceId ??
28
+ (typeof process !== "undefined"
29
+ ? process.env.CELINA_ANALYTICS_DEVICE_ID
30
+ : undefined) ??
31
+ detectConsumerPackageName(),
27
32
  };
28
33
  }
29
34
  //# sourceMappingURL=sdk-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAsBA,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,mBAAmB,GACvB,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAE,OAAO,CAAC,GAAG,CAAC,sBAAoD;YACnE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,4BAA4B;QAC9B,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EAAE,IAAI,EAAE,iBAAiB;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AA4B7E,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,MAAM,mBAAmB,GACvB,IAAI,EAAE,mBAAmB;QACzB,CAAC,OAAO,OAAO,KAAK,WAAW;YAC7B,CAAC,CAAE,OAAO,CAAC,GAAG,CAAC,sBAAoD;YACnE,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjB,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,eAAe;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,4BAA4B;QAC9B,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,IAAI,IAAI;QAClD,mBAAmB;QACnB,WAAW,EACT,IAAI,EAAE,WAAW;YACjB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;gBACjC,CAAC,CAAC,SAAS,CAAC;QAChB,gBAAgB,EAAE,IAAI,EAAE,gBAAgB;QACxC,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,iBAAiB,EACf,IAAI,EAAE,iBAAiB;YACvB,CAAC,OAAO,OAAO,KAAK,WAAW;gBAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B;gBACxC,CAAC,CAAC,SAAS,CAAC;YACd,yBAAyB,EAAE;KAC9B,CAAC;AACJ,CAAC"}
@@ -2,6 +2,7 @@ import { encodeFunctionData, erc20Abi } from "viem";
2
2
  import { CELO_CARBON_CONTRACTS } from "../config/carbon.js";
3
3
  import { appendCelinaCalldataTag } from "../config/celina-tag.js";
4
4
  import { resolveCarbonTokenAddress } from "./carbon-token.js";
5
+ import { applyCarbonStepLabels } from "./carbon-step-labels.js";
5
6
  const CARBON_CONTROLLER = CELO_CARBON_CONTRACTS.carbonControllerAddress;
6
7
  function collectApprovalSpecs(meta) {
7
8
  const specs = [];
@@ -95,6 +96,11 @@ export async function buildCarbonExecutionSteps(from, prepared, orderMeta, deps)
95
96
  throw new Error("Carbon prepare response did not include unsigned transaction steps.");
96
97
  }
97
98
  const approvalSteps = await buildApprovalSteps(from, deps.tokenService, deps.clientFactory, collectApprovalSpecs(orderMeta));
98
- return [...approvalSteps, ...carbonSteps];
99
+ return applyCarbonStepLabels([...approvalSteps, ...carbonSteps], {
100
+ summary: prepared.preparedFlow?.summary ?? "Carbon transaction",
101
+ orderMeta,
102
+ strategyPreview: prepared.strategyPreview,
103
+ tokenService: deps.tokenService,
104
+ });
99
105
  }
100
106
  //# sourceMappingURL=carbon-execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carbon-execution.js","sourceRoot":"","sources":["../../src/utils/carbon-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carbon-execution.js","sourceRoot":"","sources":["../../src/utils/carbon-execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { PreparedTx } from "../types/prepared.js";
2
+ import type { TokenService } from "../services/token.service.js";
3
+ export type CarbonStepLabelContext = {
4
+ summary: string;
5
+ orderMeta: Record<string, unknown>;
6
+ strategyPreview?: unknown;
7
+ tokenService: TokenService;
8
+ };
9
+ /** Human-readable label for a Carbon controller transaction step. */
10
+ export declare function describeCarbonControllerStep(ctx: CarbonStepLabelContext, index: number, total: number): string;
11
+ /** Replace generic Carbon REST step descriptions with human-readable labels. */
12
+ export declare function applyCarbonStepLabels(steps: PreparedTx[], ctx: CarbonStepLabelContext): PreparedTx[];
@@ -0,0 +1,180 @@
1
+ const GENERIC_CARBON_STEP = /^Carbon transaction step \d+$/;
2
+ function readRecord(value) {
3
+ return value && typeof value === "object"
4
+ ? value
5
+ : {};
6
+ }
7
+ function readPositive(value) {
8
+ if (value === undefined || value === null || value === "") {
9
+ return null;
10
+ }
11
+ const n = typeof value === "number" ? value : Number(String(value).replace(/,/g, ""));
12
+ return Number.isFinite(n) && n > 0 ? n : null;
13
+ }
14
+ function resolveSymbol(tokenService, token) {
15
+ if (token === undefined || token === null || token === "") {
16
+ return "?";
17
+ }
18
+ try {
19
+ return tokenService.resolveToken(String(token)).symbol;
20
+ }
21
+ catch {
22
+ return String(token).trim();
23
+ }
24
+ }
25
+ function formatAmount(value) {
26
+ if (value >= 1) {
27
+ return value.toLocaleString(undefined, { maximumFractionDigits: 4 });
28
+ }
29
+ return value.toLocaleString(undefined, { maximumFractionDigits: 6 });
30
+ }
31
+ function pairLabel(ctx) {
32
+ const meta = ctx.orderMeta;
33
+ const base = resolveSymbol(ctx.tokenService, meta.base_token ?? meta.base);
34
+ const quote = resolveSymbol(ctx.tokenService, meta.quote_token ?? meta.quote);
35
+ return `${base} / ${quote}`;
36
+ }
37
+ function directionFrom(ctx) {
38
+ const meta = ctx.orderMeta;
39
+ const preview = readRecord(ctx.strategyPreview);
40
+ const raw = String(preview.direction ?? meta.direction ?? "buy").toLowerCase();
41
+ return raw === "sell" ? "sell" : "buy";
42
+ }
43
+ function budgetLabel(ctx) {
44
+ const meta = ctx.orderMeta;
45
+ const preview = readRecord(ctx.strategyPreview);
46
+ const direction = directionFrom(ctx);
47
+ const amount = readPositive(preview.budget) ??
48
+ readPositive(meta.budget) ??
49
+ (direction === "sell"
50
+ ? readPositive(meta.sell_budget)
51
+ : readPositive(meta.buy_budget));
52
+ if (amount === null) {
53
+ return null;
54
+ }
55
+ const token = direction === "sell"
56
+ ? resolveSymbol(ctx.tokenService, meta.base_token ?? meta.base)
57
+ : resolveSymbol(ctx.tokenService, meta.quote_token ?? meta.quote);
58
+ return `${formatAmount(amount)} ${token}`;
59
+ }
60
+ function actionFromSummary(summary) {
61
+ const normalized = summary.trim().toLowerCase();
62
+ if (normalized.includes("limit order"))
63
+ return "limit";
64
+ if (normalized.includes("range order"))
65
+ return "range";
66
+ if (normalized.includes("recurring strategy"))
67
+ return "recurring";
68
+ if (normalized.includes("concentrated strategy"))
69
+ return "concentrated";
70
+ if (normalized.includes("full-range strategy"))
71
+ return "full-range";
72
+ if (normalized.includes("reprice strategy"))
73
+ return "reprice";
74
+ if (normalized.includes("edit strategy"))
75
+ return "edit";
76
+ if (normalized.includes("deposit budget"))
77
+ return "deposit";
78
+ if (normalized.includes("withdraw budget"))
79
+ return "withdraw";
80
+ if (normalized.includes("pause strategy"))
81
+ return "pause";
82
+ if (normalized.includes("resume strategy"))
83
+ return "resume";
84
+ if (normalized.includes("delete strategy"))
85
+ return "delete";
86
+ if (normalized.includes("taker swap"))
87
+ return "swap";
88
+ return null;
89
+ }
90
+ function actionFromPreview(preview) {
91
+ const type = String(preview.type ?? "").toLowerCase();
92
+ if (type.includes("limit"))
93
+ return "limit";
94
+ if (type.includes("range"))
95
+ return "range";
96
+ if (type.includes("recurring"))
97
+ return "recurring";
98
+ if (type.includes("concentrated"))
99
+ return "concentrated";
100
+ if (type.includes("full"))
101
+ return "full-range";
102
+ return null;
103
+ }
104
+ function createActionLabel(ctx) {
105
+ const preview = readRecord(ctx.strategyPreview);
106
+ const action = actionFromPreview(preview) ?? actionFromSummary(ctx.summary) ?? "strategy";
107
+ const direction = directionFrom(ctx);
108
+ const pair = pairLabel(ctx);
109
+ const budget = budgetLabel(ctx);
110
+ if (action === "swap") {
111
+ return "Swap via Carbon DeFi";
112
+ }
113
+ if (action === "reprice")
114
+ return "Reprice Carbon strategy";
115
+ if (action === "edit")
116
+ return "Edit Carbon strategy";
117
+ if (action === "deposit")
118
+ return "Deposit to Carbon strategy";
119
+ if (action === "withdraw")
120
+ return "Withdraw from Carbon strategy";
121
+ if (action === "pause")
122
+ return "Pause Carbon strategy";
123
+ if (action === "resume")
124
+ return "Resume Carbon strategy";
125
+ if (action === "delete")
126
+ return "Close Carbon strategy";
127
+ if (action === "recurring") {
128
+ return budget
129
+ ? `Create recurring strategy — ${budget} on ${pair}`
130
+ : `Create recurring strategy — ${pair}`;
131
+ }
132
+ if (action === "concentrated" || action === "full-range") {
133
+ const kind = action === "concentrated" ? "concentrated" : "full-range";
134
+ return budget
135
+ ? `Create ${kind} strategy — ${budget} on ${pair}`
136
+ : `Create ${kind} strategy — ${pair}`;
137
+ }
138
+ const side = action === "range" ? "range" : "limit";
139
+ const sideLabel = `${side} ${direction}`;
140
+ return budget
141
+ ? `Create ${sideLabel} — ${budget} on ${pair}`
142
+ : `Create ${sideLabel} on ${pair}`;
143
+ }
144
+ /** Human-readable label for a Carbon controller transaction step. */
145
+ export function describeCarbonControllerStep(ctx, index, total) {
146
+ const base = createActionLabel(ctx);
147
+ if (total <= 1) {
148
+ return base;
149
+ }
150
+ return `${base} (step ${index + 1} of ${total})`;
151
+ }
152
+ function isApprovalStep(step) {
153
+ return (step.kind === "erc20" ||
154
+ step.description.startsWith("Approve "));
155
+ }
156
+ function isGenericCarbonStep(step) {
157
+ return GENERIC_CARBON_STEP.test(step.description);
158
+ }
159
+ /** Replace generic Carbon REST step descriptions with human-readable labels. */
160
+ export function applyCarbonStepLabels(steps, ctx) {
161
+ const controllerIndexes = steps
162
+ .map((step, index) => ({ step, index }))
163
+ .filter(({ step }) => !isApprovalStep(step) && isGenericCarbonStep(step));
164
+ if (controllerIndexes.length === 0) {
165
+ return steps;
166
+ }
167
+ const total = controllerIndexes.length;
168
+ const labels = new Map();
169
+ controllerIndexes.forEach(({ index }, controllerIndex) => {
170
+ labels.set(index, describeCarbonControllerStep(ctx, controllerIndex, total));
171
+ });
172
+ return steps.map((step, index) => {
173
+ const label = labels.get(index);
174
+ if (!label) {
175
+ return step;
176
+ }
177
+ return { ...step, description: label };
178
+ });
179
+ }
180
+ //# sourceMappingURL=carbon-step-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carbon-step-labels.js","sourceRoot":"","sources":["../../src/utils/carbon-step-labels.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrewkimjoseph/celina-sdk",
3
- "version": "0.4.8",
3
+ "version": "0.4.10",
4
4
  "description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,