@andrewkimjoseph/celina-sdk 0.15.2 → 0.15.4

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 (48) hide show
  1. package/README.md +5 -8
  2. package/build/aa/create-aa-client.d.ts +2 -2
  3. package/build/aa/create-aa-client.js +1 -1
  4. package/build/aa/prepared-calls.d.ts +1 -1
  5. package/build/aa/prepared-calls.js +1 -1
  6. package/build/aa/types.d.ts +1 -1
  7. package/build/config/celina-tag.d.ts +12 -6
  8. package/build/config/celina-tag.js +16 -21
  9. package/build/config/celina-tag.js.map +1 -1
  10. package/build/config/sdk-config.d.ts +3 -5
  11. package/build/config/sdk-config.js.map +1 -1
  12. package/build/index.d.ts +2 -2
  13. package/build/services/contract.service.d.ts +13 -3
  14. package/build/services/contract.service.js +48 -2
  15. package/build/services/contract.service.js.map +1 -1
  16. package/build/src/aa/create-aa-client.d.ts +2 -2
  17. package/build/src/aa/create-aa-client.js +1 -1
  18. package/build/src/aa/prepared-calls.d.ts +1 -1
  19. package/build/src/aa/prepared-calls.js +1 -1
  20. package/build/src/aa/types.d.ts +1 -1
  21. package/build/src/config/celina-tag.d.ts +12 -6
  22. package/build/src/config/celina-tag.js +16 -21
  23. package/build/src/config/celina-tag.js.map +1 -1
  24. package/build/src/config/sdk-config.d.ts +3 -5
  25. package/build/src/config/sdk-config.js.map +1 -1
  26. package/build/src/index.d.ts +2 -2
  27. package/build/src/services/contract.service.d.ts +13 -3
  28. package/build/src/services/contract.service.js +48 -2
  29. package/build/src/services/contract.service.js.map +1 -1
  30. package/build/src/tools/domains/blockchain.js +2 -2
  31. package/build/src/tools/domains/blockchain.js.map +1 -1
  32. package/build/src/tools/domains/contract.js +53 -1
  33. package/build/src/tools/domains/contract.js.map +1 -1
  34. package/build/src/tools/types.d.ts +10 -0
  35. package/build/src/tools/website-sync.js +2 -0
  36. package/build/src/tools/website-sync.js.map +1 -1
  37. package/build/src/types/prepared.d.ts +1 -1
  38. package/build/tests/catalog/domains/chain-ext.js +31 -0
  39. package/build/tests/catalog/domains/chain-ext.js.map +1 -1
  40. package/build/tools/domains/blockchain.js +2 -2
  41. package/build/tools/domains/blockchain.js.map +1 -1
  42. package/build/tools/domains/contract.js +53 -1
  43. package/build/tools/domains/contract.js.map +1 -1
  44. package/build/tools/types.d.ts +10 -0
  45. package/build/tools/website-sync.js +2 -0
  46. package/build/tools/website-sync.js.map +1 -1
  47. package/build/types/prepared.d.ts +1 -1
  48. package/package.json +1 -1
package/README.md CHANGED
@@ -14,7 +14,7 @@ Celina is layered from chain logic through agent tooling:
14
14
 
15
15
  | Layer | Package | Role |
16
16
  |-------|---------|------|
17
- | **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows (`chainId: 42220`), dual attribution, `createAAClient` |
17
+ | **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows (`chainId: 42220`), ERC-8021 attribution, `createAAClient` |
18
18
  | **MCP** | `@andrewkimjoseph/celina-mcp` | MCP tools for Cursor / Claude / LM Studio — stdio writes or hosted reads |
19
19
  | **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — hosted reads (36 tools); no server-key writes; no sponsorship keys |
20
20
 
@@ -43,7 +43,7 @@ Before broadcasting prepared steps, call `simulatePreparedStep` from `@andrewkim
43
43
  - [Quick start](https://andrewkimjoseph.gitbook.io/celina-sdk/getting-started/quick-start)
44
44
  - [LLM tool catalog](docs/guides/tool-catalog.md) — `@andrewkimjoseph/celina-sdk/tools` for MCP and AI SDK hosts
45
45
  - [Architecture](docs/concepts/architecture.md) — client composition and stack
46
- - [Prepared flows](docs/concepts/prepared-flows.md) — `SerializedPreparedFlow` (`chainId: 42220`), dual CELINA attribution
46
+ - [Prepared flows](docs/concepts/prepared-flows.md) — `SerializedPreparedFlow` (`chainId: 42220`), ERC-8021 Celina attribution
47
47
  - [On-chain attribution](docs/guides/on-chain-attribution.md) — wire format, check vs verify, Celina vs AA tags
48
48
  - [Account Abstraction](docs/guides/account-abstraction.md) — `createAAClient`, app-owned sponsorship, AA `attributionTags`
49
49
  - [Prepared-step simulation](docs/guides/prepared-step-simulation.md) — `simulatePreparedStep` before wallet send
@@ -63,7 +63,7 @@ import { createCelinaClient } from "@andrewkimjoseph/celina-sdk";
63
63
 
64
64
  const celina = createCelinaClient({
65
65
  attributionTags: ["celo_862c21dd97a7", "my_app"],
66
- // suffixCELINA|celo_862c21dd97a7|MY_APP
66
+ // ERC-8021codes celina, celo_862c21dd97a7, my_app
67
67
  });
68
68
 
69
69
  await celina.token.getStablecoinBalances("0xYourAddress");
@@ -90,12 +90,9 @@ const reserveFlow = await celina.gooddollar.prepareReserveSwap(
90
90
 
91
91
  All `prepare*` methods return a **`SerializedPreparedFlow`**: ordered unsigned steps for the user's wallet.
92
92
 
93
- Every step with calldata gets **dual attribution suffixes** via `appendCelinaCalldataTag` — sends, Mento FX, Uniswap, Aave, and GoodDollar. Pass `step.data` to wagmi unchanged.
93
+ Every step with calldata gets an **ERC-8021 Schema 0** attribution suffix via `appendCelinaCalldataTag` — sends, Mento FX, Uniswap, Aave, and GoodDollar. Pass `step.data` to wagmi unchanged.
94
94
 
95
- 1. **Legacy UTF-8** `CELINA|TAG1|TAG2` (app tags uppercase; `celo_<12 hex>` lowercase)
96
- 2. **ERC-8021 Schema 0** — `toDataSuffix(["celina", ...])` via `@celo/attribution-tags` for Celo leaderboards and `verifyTx`
97
-
98
- Optional `attributionTags` in `createCelinaClient({ attributionTags: [...] })` apply to both layers (deduped, stable order). The same option on **`createAAClient`** tags at `sendPreparedFlow` time (omit for pass-through). Prepared flows expose **`chainId: 42220`**. List or check on-chain tags with `check_attribution_tag` (preferred) or `checkAttributionInCalldata`; use `verify_attribution_tag` / `verifyAttributionInCalldata` for raw legacy + ERC-8021 layers.
95
+ Optional `attributionTags` in `createCelinaClient({ attributionTags: [...] })` set custom codes after platform `celina` (deduped, stable order). The same option on **`createAAClient`** tags at `sendPreparedFlow` time (omit for pass-through). Prepared flows expose **`chainId: 42220`**. List or check on-chain tags with `check_attribution_tag` (preferred) or `checkAttributionInCalldata`; use `verify_attribution_tag` / `verifyAttributionInCalldata` for raw layers (including historical legacy `CELINA|…` when present).
99
96
 
100
97
  Before opening the wallet, simulate each step against current chain state with `@andrewkimjoseph/celina-sdk/simulation` (`simulatePreparedStep`). Local **celina-mcp** stdio writes use the same helper in `executePreparedFlow` before broadcast.
101
98
 
@@ -26,7 +26,7 @@ export type AAClient = {
26
26
  attributionTags: string[] | undefined;
27
27
  /**
28
28
  * Submit `prepare*` output (ordered `steps` / prepared transactions) as sponsored UserOp(s).
29
- * When `attributionTags` were set on this client, each step’s `data` is dual-tagged
29
+ * When `attributionTags` were set on this client, each step’s `data` is ERC-8021-tagged
30
30
  * before submit; otherwise `data` is used as-is (including tags from `prepare*`).
31
31
  */
32
32
  sendPreparedFlow: (flow: PreparedFlow | SerializedPreparedFlow, options?: SendPreparedFlowOptions) => Promise<SendPreparedFlowResult>;
@@ -38,7 +38,7 @@ export type AAClient = {
38
38
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
39
39
  *
40
40
  * Optional `attributionTags` are applied in `sendPreparedFlow` via
41
- * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
41
+ * `appendCelinaCalldataTag` (same ERC-8021 format as `prepare*`). Omit them to
42
42
  * pass step calldata through unchanged.
43
43
  */
44
44
  export declare function createAAClient(options: CreateAAClientOptions): Promise<AAClient>;
@@ -45,7 +45,7 @@ export async function deriveSmartAccountAddress(owner, publicClient) {
45
45
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
46
46
  *
47
47
  * Optional `attributionTags` are applied in `sendPreparedFlow` via
48
- * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
48
+ * `appendCelinaCalldataTag` (same ERC-8021 format as `prepare*`). Omit them to
49
49
  * pass step calldata through unchanged.
50
50
  */
51
51
  export async function createAAClient(options) {
@@ -2,7 +2,7 @@ import type { PreparedTx } from "../types/prepared.js";
2
2
  import type { UserOpCall } from "./types.js";
3
3
  /**
4
4
  * Map Celina prepared steps to smart-account `calls`.
5
- * When `attributionTags` is provided, each step's `data` is dual-tagged
5
+ * When `attributionTags` is provided, each step's `data` is ERC-8021-tagged
6
6
  * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
7
7
  */
8
8
  export declare function preparedStepsToUserOpCalls(steps: PreparedTx[], attributionTags?: string[]): UserOpCall[];
@@ -1,7 +1,7 @@
1
1
  import { appendCelinaCalldataTag } from "../config/celina-tag.js";
2
2
  /**
3
3
  * Map Celina prepared steps to smart-account `calls`.
4
- * When `attributionTags` is provided, each step's `data` is dual-tagged
4
+ * When `attributionTags` is provided, each step's `data` is ERC-8021-tagged
5
5
  * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
6
6
  */
7
7
  export function preparedStepsToUserOpCalls(steps, attributionTags) {
@@ -30,7 +30,7 @@ export type CreateAAClientOptions = {
30
30
  publicClient?: PublicClient;
31
31
  /**
32
32
  * Optional custom tags applied via `appendCelinaCalldataTag` on each step's `data`
33
- * in `sendPreparedFlow` (legacy `CELINA|…` + ERC-8021). When omitted, step data
33
+ * in `sendPreparedFlow` (ERC-8021 Schema 0). When omitted, step data
34
34
  * is passed through unchanged.
35
35
  */
36
36
  attributionTags?: string[];
@@ -1,10 +1,16 @@
1
1
  import { ERC_8021_MARKER } from "@celo/attribution-tags";
2
- /** Legacy UTF-8 marker hex(`"CELINA"`) used inside the dual attribution suffix — not the full on-chain tag by itself. Full wire format is legacy `CELINA|…` plus an ERC-8021 Schema 0 suffix; see {@link appendCelinaCalldataTag}. */
2
+ /**
3
+ * Legacy UTF-8 marker hex(`"CELINA"`) for reading historical dual / legacy-only txs.
4
+ * New writes use ERC-8021 only — see {@link appendCelinaCalldataTag}.
5
+ */
3
6
  export declare const CELINA_DATA_SUFFIX: `0x${string}`;
4
7
  export { ERC_8021_MARKER };
5
8
  /** Normalize custom attribution tags while preserving first-seen order. */
6
9
  export declare function normalizeAttributionTags(tags?: string[]): string[];
7
- /** Build deterministic attribution tag string that always starts with `CELINA`. */
10
+ /**
11
+ * Build deterministic legacy UTF-8 tag string (`CELINA` / `CELINA|TAG…`).
12
+ * @deprecated Prefer ERC-8021 via {@link appendCelinaCalldataTag} / {@link toErc8021AttributionCodes}. Kept for historical decode helpers and tests.
13
+ */
8
14
  export declare function buildCelinaAttributionTag(tags?: string[]): string;
9
15
  /** Map client attribution tags to ERC-8021 Schema 0 codes (lowercase `[a-z0-9_]` only). */
10
16
  export declare function toErc8021AttributionCodes(attributionTags?: string[]): string[];
@@ -41,15 +47,15 @@ export declare function verifyAttributionInCalldata(data: `0x${string}`, tag?: s
41
47
  */
42
48
  export declare function checkAttributionInCalldata(data: `0x${string}`, tag?: string): AttributionCheckResult;
43
49
  /**
44
- * Append dual Celina attribution suffixes to calldata (legacy UTF-8 + ERC-8021).
50
+ * Append Celina ERC-8021 Schema 0 attribution to calldata (no legacy UTF-8 `CELINA|…`).
45
51
  *
46
52
  * Used by `prepare*` when `createCelinaClient({ attributionTags })` is set, and by
47
53
  * `createAAClient({ attributionTags }).sendPreparedFlow` when AA tags are set.
48
54
  *
49
55
  * @param data - Original transaction calldata.
50
56
  * @param attributionTags - Optional custom tags (same list semantics on Celina or AA client).
51
- * Legacy layer: `CELINA|TAG1|TAG2` (app tags uppercase, `celo_<12 hex>` lowercase).
52
- * ERC-8021 layer: `toDataSuffix(["celina", ...])` with lowercase codes.
53
- * Example: `["goclaim"]` legacy `CELINA|GOCLAIM` + codes `celina`, `goclaim` (not bare UTF-8 `GOCLAIM`).
57
+ * ERC-8021: `toDataSuffix(["celina", ...])` with lowercase codes.
58
+ * Example: `["goclaim"]` codes `celina`, `goclaim`.
59
+ * Existing legacy UTF-8 on `data` is left in place; a matching ERC-8021 suffix is ensured.
54
60
  */
55
61
  export declare function appendCelinaCalldataTag(data: `0x${string}`, attributionTags?: string[]): `0x${string}`;
@@ -1,6 +1,9 @@
1
1
  import { ERC_8021_MARKER, fromDataSuffix, toDataSuffix, } from "@celo/attribution-tags";
2
2
  import { concat, hexToString, stringToHex } from "viem";
3
- /** Legacy UTF-8 marker hex(`"CELINA"`) used inside the dual attribution suffix — not the full on-chain tag by itself. Full wire format is legacy `CELINA|…` plus an ERC-8021 Schema 0 suffix; see {@link appendCelinaCalldataTag}. */
3
+ /**
4
+ * Legacy UTF-8 marker hex(`"CELINA"`) for reading historical dual / legacy-only txs.
5
+ * New writes use ERC-8021 only — see {@link appendCelinaCalldataTag}.
6
+ */
4
7
  export const CELINA_DATA_SUFFIX = stringToHex("CELINA");
5
8
  export { ERC_8021_MARKER };
6
9
  /** Celo Builders on-chain attribution tag: `celo_` + 12 hex chars (lowercase). */
@@ -26,7 +29,10 @@ export function normalizeAttributionTags(tags) {
26
29
  }
27
30
  return [...deduped];
28
31
  }
29
- /** Build deterministic attribution tag string that always starts with `CELINA`. */
32
+ /**
33
+ * Build deterministic legacy UTF-8 tag string (`CELINA` / `CELINA|TAG…`).
34
+ * @deprecated Prefer ERC-8021 via {@link appendCelinaCalldataTag} / {@link toErc8021AttributionCodes}. Kept for historical decode helpers and tests.
35
+ */
30
36
  export function buildCelinaAttributionTag(tags) {
31
37
  const normalized = normalizeAttributionTags(tags);
32
38
  return normalized.length ? `CELINA|${normalized.join("|")}` : "CELINA";
@@ -46,9 +52,6 @@ export function buildErc8021AttributionSuffix(attributionTags) {
46
52
  ? toDataSuffix(codes[0])
47
53
  : toDataSuffix(codes);
48
54
  }
49
- function buildLegacyAttributionSuffixHex(attributionTags) {
50
- return stringToHex(buildCelinaAttributionTag(attributionTags));
51
- }
52
55
  function sameCodeSets(a, b) {
53
56
  if (a.length !== b.length)
54
57
  return false;
@@ -200,35 +203,27 @@ export function checkAttributionInCalldata(data, tag) {
200
203
  };
201
204
  }
202
205
  /**
203
- * Append dual Celina attribution suffixes to calldata (legacy UTF-8 + ERC-8021).
206
+ * Append Celina ERC-8021 Schema 0 attribution to calldata (no legacy UTF-8 `CELINA|…`).
204
207
  *
205
208
  * Used by `prepare*` when `createCelinaClient({ attributionTags })` is set, and by
206
209
  * `createAAClient({ attributionTags }).sendPreparedFlow` when AA tags are set.
207
210
  *
208
211
  * @param data - Original transaction calldata.
209
212
  * @param attributionTags - Optional custom tags (same list semantics on Celina or AA client).
210
- * Legacy layer: `CELINA|TAG1|TAG2` (app tags uppercase, `celo_<12 hex>` lowercase).
211
- * ERC-8021 layer: `toDataSuffix(["celina", ...])` with lowercase codes.
212
- * Example: `["goclaim"]` legacy `CELINA|GOCLAIM` + codes `celina`, `goclaim` (not bare UTF-8 `GOCLAIM`).
213
+ * ERC-8021: `toDataSuffix(["celina", ...])` with lowercase codes.
214
+ * Example: `["goclaim"]` codes `celina`, `goclaim`.
215
+ * Existing legacy UTF-8 on `data` is left in place; a matching ERC-8021 suffix is ensured.
213
216
  */
214
217
  export function appendCelinaCalldataTag(data, attributionTags) {
215
218
  if (!data || data === "0x")
216
219
  return data;
217
- const legacyHex = buildLegacyAttributionSuffixHex(attributionTags);
218
- const legacySuffix = legacyHex.slice(2);
219
220
  const erc8021Hex = buildErc8021AttributionSuffix(attributionTags);
220
221
  const expectedCodes = toErc8021AttributionCodes(attributionTags);
221
- const fullDualSuffix = `${legacySuffix}${erc8021Hex.slice(2)}`.toLowerCase();
222
- if (data.toLowerCase().endsWith(fullDualSuffix))
222
+ const tip = fromDataSuffix(data);
223
+ if (tip && sameCodeSets(tip.codes, expectedCodes)) {
223
224
  return data;
224
- let result = stripErc8021SuffixIfPresent(data);
225
- if (!result.toLowerCase().endsWith(legacySuffix.toLowerCase())) {
226
- result = concat([result, legacyHex]);
227
- }
228
- const decoded = fromDataSuffix(result);
229
- if (!decoded || !sameCodeSets(decoded.codes, expectedCodes)) {
230
- result = concat([result, erc8021Hex]);
231
225
  }
232
- return result;
226
+ const without8021 = stripErc8021SuffixIfPresent(data);
227
+ return concat([without8021, erc8021Hex]);
233
228
  }
234
229
  //# sourceMappingURL=celina-tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"celina-tag.js","sourceRoot":"","sources":["../../src/config/celina-tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"celina-tag.js","sourceRoot":"","sources":["../../src/config/celina-tag.ts"],"names":[],"mappings":"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"}
@@ -24,12 +24,10 @@ export interface SdkConfig {
24
24
  */
25
25
  analyticsWalletAddress?: string;
26
26
  /**
27
- * Optional custom calldata attribution tags appended after the base `CELINA`
28
- * suffix on prepared transaction steps (`CELINA|TAG1|TAG2`, deduped, stable order).
29
- * An ERC-8021 Schema 0 suffix (`toDataSuffix`) is also appended for Celo ecosystem
30
- * leaderboards and `verifyTx` compatibility.
27
+ * Optional custom calldata attribution tags for ERC-8021 Schema 0 codes
28
+ * after platform `celina` on prepared transaction steps (deduped, stable order).
31
29
  *
32
- * App tags (e.g. `celeste_ai`) normalize to uppercase (`CELESTE_AI`).
30
+ * App tags (e.g. `celeste_ai`) normalize to uppercase (`CELESTE_AI`) then lowercase codes.
33
31
  * Celo Builders on-chain tags matching `celo_<12 hex>` canonicalize to lowercase
34
32
  * (e.g. `celo_862c21dd97a7`). The literal tag `CELINA` is never duplicated.
35
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-config.js","sourceRoot":"","sources":["../../src/config/sdk-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAwC7E,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,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,IAAI,yBAAyB,EAAE;QACxD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB;QACpD,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,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;AAsC7E,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,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,IAAI,yBAAyB,EAAE;QACxD,sBAAsB,EAAE,IAAI,EAAE,sBAAsB;QACpD,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,CAAC;AACJ,CAAC"}
package/build/index.d.ts CHANGED
@@ -48,7 +48,7 @@ export interface CelinaClient {
48
48
  staking: StakingService;
49
49
  /** ERC-721 / ERC-1155 NFT reads. */
50
50
  nft: NftService;
51
- /** Generic read-only contract calls and gas estimates. */
51
+ /** Generic contract reads, gas estimates, and write prepares. */
52
52
  contract: ContractService;
53
53
  /** Self Agent ID on Celo mainnet (ai.self.xyz + on-chain registry). */
54
54
  self: SelfService;
@@ -84,7 +84,7 @@ export type { MentoFxParams } from "./services/mento-fx.service.js";
84
84
  export type { UniswapSwapParams } from "./services/uniswap.service.js";
85
85
  /** Pagination and metadata options for governance proposal lists. */
86
86
  export type { GovernanceProposalsOptions } from "./services/governance.service.js";
87
- /** Parameters for generic read-only contract calls. */
87
+ /** Parameters for generic contract reads, estimates, and write prepares. */
88
88
  export type { ContractCallParams } from "./services/contract.service.js";
89
89
  /** Aave V3 Celo pool address and supported asset symbols. */
90
90
  export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Generic contract reads and gas estimates — caller supplies the ABI.
2
+ * Generic contract reads, gas estimates, and write prepares — caller supplies the ABI.
3
3
  */
4
4
  import { type Abi } from "viem";
5
5
  import type { CeloClientFactory } from "../clients/celo-client.js";
6
- /** Parameters for a read-only or gas-estimated contract call on Celo mainnet. */
6
+ import { type SerializedPreparedFlow } from "../types/prepared.js";
7
+ /** Parameters for a contract call on Celo mainnet (read, estimate, or prepare write). */
7
8
  export interface ContractCallParams {
8
9
  /** Target contract address. */
9
10
  contractAddress: `0x${string}`;
@@ -18,9 +19,10 @@ export interface ContractCallParams {
18
19
  /** Wei value as decimal string for payable calls (default `"0"`). */
19
20
  value?: string;
20
21
  }
21
- /** Read-only and gas-estimation helpers for arbitrary contracts. */
22
+ /** Read, gas-estimate, and prepare helpers for arbitrary contracts. */
22
23
  export declare class ContractService {
23
24
  private readonly clientFactory;
25
+ private readonly attributionTags?;
24
26
  constructor(clientFactory: CeloClientFactory);
25
27
  /**
26
28
  * Simulate a read-only contract call (`eth_call`).
@@ -68,6 +70,14 @@ export declare class ContractService {
68
70
  success: boolean;
69
71
  error: string;
70
72
  }>;
73
+ /**
74
+ * Build an unsigned single-step flow for a contract write (caller ABI).
75
+ * Calldata includes the CELINA attribution suffix. Rejects `view`/`pure` ABI entries.
76
+ * @param from - Sender wallet address (must match connected wallet when signing)
77
+ * @param params - Contract address, ABI, function name, optional args and wei `value`
78
+ * @returns Single-step `SerializedPreparedFlow` for wagmi or MCP `executePreparedFlow`
79
+ */
80
+ prepareFunction(from: `0x${string}`, params: ContractCallParams): Promise<SerializedPreparedFlow>;
71
81
  }
72
82
  /**
73
83
  * Decode raw calldata result bytes using a single ABI function entry.
@@ -1,8 +1,11 @@
1
1
  /**
2
- * Generic contract reads and gas estimates — caller supplies the ABI.
2
+ * Generic contract reads, gas estimates, and write prepares — caller supplies the ABI.
3
3
  */
4
4
  import { decodeFunctionResult, encodeFunctionData, } from "viem";
5
+ import { CHAIN } from "../config/chains.js";
6
+ import { appendCelinaCalldataTag } from "../config/celina-tag.js";
5
7
  import { normalizeAddress } from "../utils/normalize-address.js";
8
+ import { serializePreparedFlow, } from "../types/prepared.js";
6
9
  function findAbiFunction(abi, functionName) {
7
10
  const fn = abi.find((item) => item.type === "function" && item.name === functionName);
8
11
  if (!fn) {
@@ -10,11 +13,19 @@ function findAbiFunction(abi, functionName) {
10
13
  }
11
14
  return fn;
12
15
  }
13
- /** Read-only and gas-estimation helpers for arbitrary contracts. */
16
+ function assertWritableFunction(fn, functionName) {
17
+ const mutability = fn.stateMutability;
18
+ if (mutability === "view" || mutability === "pure") {
19
+ throw new Error(`Function "${functionName}" is ${mutability}; use call_contract_function for reads`);
20
+ }
21
+ }
22
+ /** Read, gas-estimate, and prepare helpers for arbitrary contracts. */
14
23
  export class ContractService {
15
24
  clientFactory;
25
+ attributionTags;
16
26
  constructor(clientFactory) {
17
27
  this.clientFactory = clientFactory;
28
+ this.attributionTags = clientFactory.getConfig().attributionTags;
18
29
  }
19
30
  /**
20
31
  * Simulate a read-only contract call (`eth_call`).
@@ -103,6 +114,41 @@ export class ContractService {
103
114
  };
104
115
  }
105
116
  }
117
+ /**
118
+ * Build an unsigned single-step flow for a contract write (caller ABI).
119
+ * Calldata includes the CELINA attribution suffix. Rejects `view`/`pure` ABI entries.
120
+ * @param from - Sender wallet address (must match connected wallet when signing)
121
+ * @param params - Contract address, ABI, function name, optional args and wei `value`
122
+ * @returns Single-step `SerializedPreparedFlow` for wagmi or MCP `executePreparedFlow`
123
+ */
124
+ async prepareFunction(from, params) {
125
+ const contractAddress = normalizeAddress(params.contractAddress, "contract address");
126
+ const sender = normalizeAddress(from, "from address");
127
+ const fn = findAbiFunction(params.abi, params.functionName);
128
+ assertWritableFunction(fn, params.functionName);
129
+ const args = params.functionArgs ?? [];
130
+ const value = params.value ?? "0";
131
+ const data = appendCelinaCalldataTag(encodeFunctionData({
132
+ abi: params.abi,
133
+ functionName: params.functionName,
134
+ args: args,
135
+ }), this.attributionTags);
136
+ const flow = {
137
+ chainId: CHAIN.id,
138
+ from: sender,
139
+ summary: `Call ${params.functionName} on ${contractAddress}`,
140
+ steps: [
141
+ {
142
+ kind: "contract",
143
+ to: contractAddress,
144
+ data,
145
+ value,
146
+ description: `Call ${params.functionName}`,
147
+ },
148
+ ],
149
+ };
150
+ return serializePreparedFlow(flow);
151
+ }
106
152
  }
107
153
  /**
108
154
  * Decode raw calldata result bytes using a single ABI function entry.
@@ -1 +1 @@
1
- {"version":3,"file":"contract.service.js","sourceRoot":"","sources":["../../src/services/contract.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.service.js","sourceRoot":"","sources":["../../src/services/contract.service.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export type AAClient = {
26
26
  attributionTags: string[] | undefined;
27
27
  /**
28
28
  * Submit `prepare*` output (ordered `steps` / prepared transactions) as sponsored UserOp(s).
29
- * When `attributionTags` were set on this client, each step’s `data` is dual-tagged
29
+ * When `attributionTags` were set on this client, each step’s `data` is ERC-8021-tagged
30
30
  * before submit; otherwise `data` is used as-is (including tags from `prepare*`).
31
31
  */
32
32
  sendPreparedFlow: (flow: PreparedFlow | SerializedPreparedFlow, options?: SendPreparedFlowOptions) => Promise<SendPreparedFlowResult>;
@@ -38,7 +38,7 @@ export type AAClient = {
38
38
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
39
39
  *
40
40
  * Optional `attributionTags` are applied in `sendPreparedFlow` via
41
- * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
41
+ * `appendCelinaCalldataTag` (same ERC-8021 format as `prepare*`). Omit them to
42
42
  * pass step calldata through unchanged.
43
43
  */
44
44
  export declare function createAAClient(options: CreateAAClientOptions): Promise<AAClient>;
@@ -45,7 +45,7 @@ export async function deriveSmartAccountAddress(owner, publicClient) {
45
45
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
46
46
  *
47
47
  * Optional `attributionTags` are applied in `sendPreparedFlow` via
48
- * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
48
+ * `appendCelinaCalldataTag` (same ERC-8021 format as `prepare*`). Omit them to
49
49
  * pass step calldata through unchanged.
50
50
  */
51
51
  export async function createAAClient(options) {
@@ -2,7 +2,7 @@ import type { PreparedTx } from "../types/prepared.js";
2
2
  import type { UserOpCall } from "./types.js";
3
3
  /**
4
4
  * Map Celina prepared steps to smart-account `calls`.
5
- * When `attributionTags` is provided, each step's `data` is dual-tagged
5
+ * When `attributionTags` is provided, each step's `data` is ERC-8021-tagged
6
6
  * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
7
7
  */
8
8
  export declare function preparedStepsToUserOpCalls(steps: PreparedTx[], attributionTags?: string[]): UserOpCall[];
@@ -1,7 +1,7 @@
1
1
  import { appendCelinaCalldataTag } from "../config/celina-tag.js";
2
2
  /**
3
3
  * Map Celina prepared steps to smart-account `calls`.
4
- * When `attributionTags` is provided, each step's `data` is dual-tagged
4
+ * When `attributionTags` is provided, each step's `data` is ERC-8021-tagged
5
5
  * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
6
6
  */
7
7
  export function preparedStepsToUserOpCalls(steps, attributionTags) {
@@ -30,7 +30,7 @@ export type CreateAAClientOptions = {
30
30
  publicClient?: PublicClient;
31
31
  /**
32
32
  * Optional custom tags applied via `appendCelinaCalldataTag` on each step's `data`
33
- * in `sendPreparedFlow` (legacy `CELINA|…` + ERC-8021). When omitted, step data
33
+ * in `sendPreparedFlow` (ERC-8021 Schema 0). When omitted, step data
34
34
  * is passed through unchanged.
35
35
  */
36
36
  attributionTags?: string[];
@@ -1,10 +1,16 @@
1
1
  import { ERC_8021_MARKER } from "@celo/attribution-tags";
2
- /** Legacy UTF-8 marker hex(`"CELINA"`) used inside the dual attribution suffix — not the full on-chain tag by itself. Full wire format is legacy `CELINA|…` plus an ERC-8021 Schema 0 suffix; see {@link appendCelinaCalldataTag}. */
2
+ /**
3
+ * Legacy UTF-8 marker hex(`"CELINA"`) for reading historical dual / legacy-only txs.
4
+ * New writes use ERC-8021 only — see {@link appendCelinaCalldataTag}.
5
+ */
3
6
  export declare const CELINA_DATA_SUFFIX: `0x${string}`;
4
7
  export { ERC_8021_MARKER };
5
8
  /** Normalize custom attribution tags while preserving first-seen order. */
6
9
  export declare function normalizeAttributionTags(tags?: string[]): string[];
7
- /** Build deterministic attribution tag string that always starts with `CELINA`. */
10
+ /**
11
+ * Build deterministic legacy UTF-8 tag string (`CELINA` / `CELINA|TAG…`).
12
+ * @deprecated Prefer ERC-8021 via {@link appendCelinaCalldataTag} / {@link toErc8021AttributionCodes}. Kept for historical decode helpers and tests.
13
+ */
8
14
  export declare function buildCelinaAttributionTag(tags?: string[]): string;
9
15
  /** Map client attribution tags to ERC-8021 Schema 0 codes (lowercase `[a-z0-9_]` only). */
10
16
  export declare function toErc8021AttributionCodes(attributionTags?: string[]): string[];
@@ -41,15 +47,15 @@ export declare function verifyAttributionInCalldata(data: `0x${string}`, tag?: s
41
47
  */
42
48
  export declare function checkAttributionInCalldata(data: `0x${string}`, tag?: string): AttributionCheckResult;
43
49
  /**
44
- * Append dual Celina attribution suffixes to calldata (legacy UTF-8 + ERC-8021).
50
+ * Append Celina ERC-8021 Schema 0 attribution to calldata (no legacy UTF-8 `CELINA|…`).
45
51
  *
46
52
  * Used by `prepare*` when `createCelinaClient({ attributionTags })` is set, and by
47
53
  * `createAAClient({ attributionTags }).sendPreparedFlow` when AA tags are set.
48
54
  *
49
55
  * @param data - Original transaction calldata.
50
56
  * @param attributionTags - Optional custom tags (same list semantics on Celina or AA client).
51
- * Legacy layer: `CELINA|TAG1|TAG2` (app tags uppercase, `celo_<12 hex>` lowercase).
52
- * ERC-8021 layer: `toDataSuffix(["celina", ...])` with lowercase codes.
53
- * Example: `["goclaim"]` legacy `CELINA|GOCLAIM` + codes `celina`, `goclaim` (not bare UTF-8 `GOCLAIM`).
57
+ * ERC-8021: `toDataSuffix(["celina", ...])` with lowercase codes.
58
+ * Example: `["goclaim"]` codes `celina`, `goclaim`.
59
+ * Existing legacy UTF-8 on `data` is left in place; a matching ERC-8021 suffix is ensured.
54
60
  */
55
61
  export declare function appendCelinaCalldataTag(data: `0x${string}`, attributionTags?: string[]): `0x${string}`;
@@ -1,6 +1,9 @@
1
1
  import { ERC_8021_MARKER, fromDataSuffix, toDataSuffix, } from "@celo/attribution-tags";
2
2
  import { concat, hexToString, stringToHex } from "viem";
3
- /** Legacy UTF-8 marker hex(`"CELINA"`) used inside the dual attribution suffix — not the full on-chain tag by itself. Full wire format is legacy `CELINA|…` plus an ERC-8021 Schema 0 suffix; see {@link appendCelinaCalldataTag}. */
3
+ /**
4
+ * Legacy UTF-8 marker hex(`"CELINA"`) for reading historical dual / legacy-only txs.
5
+ * New writes use ERC-8021 only — see {@link appendCelinaCalldataTag}.
6
+ */
4
7
  export const CELINA_DATA_SUFFIX = stringToHex("CELINA");
5
8
  export { ERC_8021_MARKER };
6
9
  /** Celo Builders on-chain attribution tag: `celo_` + 12 hex chars (lowercase). */
@@ -26,7 +29,10 @@ export function normalizeAttributionTags(tags) {
26
29
  }
27
30
  return [...deduped];
28
31
  }
29
- /** Build deterministic attribution tag string that always starts with `CELINA`. */
32
+ /**
33
+ * Build deterministic legacy UTF-8 tag string (`CELINA` / `CELINA|TAG…`).
34
+ * @deprecated Prefer ERC-8021 via {@link appendCelinaCalldataTag} / {@link toErc8021AttributionCodes}. Kept for historical decode helpers and tests.
35
+ */
30
36
  export function buildCelinaAttributionTag(tags) {
31
37
  const normalized = normalizeAttributionTags(tags);
32
38
  return normalized.length ? `CELINA|${normalized.join("|")}` : "CELINA";
@@ -46,9 +52,6 @@ export function buildErc8021AttributionSuffix(attributionTags) {
46
52
  ? toDataSuffix(codes[0])
47
53
  : toDataSuffix(codes);
48
54
  }
49
- function buildLegacyAttributionSuffixHex(attributionTags) {
50
- return stringToHex(buildCelinaAttributionTag(attributionTags));
51
- }
52
55
  function sameCodeSets(a, b) {
53
56
  if (a.length !== b.length)
54
57
  return false;
@@ -200,35 +203,27 @@ export function checkAttributionInCalldata(data, tag) {
200
203
  };
201
204
  }
202
205
  /**
203
- * Append dual Celina attribution suffixes to calldata (legacy UTF-8 + ERC-8021).
206
+ * Append Celina ERC-8021 Schema 0 attribution to calldata (no legacy UTF-8 `CELINA|…`).
204
207
  *
205
208
  * Used by `prepare*` when `createCelinaClient({ attributionTags })` is set, and by
206
209
  * `createAAClient({ attributionTags }).sendPreparedFlow` when AA tags are set.
207
210
  *
208
211
  * @param data - Original transaction calldata.
209
212
  * @param attributionTags - Optional custom tags (same list semantics on Celina or AA client).
210
- * Legacy layer: `CELINA|TAG1|TAG2` (app tags uppercase, `celo_<12 hex>` lowercase).
211
- * ERC-8021 layer: `toDataSuffix(["celina", ...])` with lowercase codes.
212
- * Example: `["goclaim"]` legacy `CELINA|GOCLAIM` + codes `celina`, `goclaim` (not bare UTF-8 `GOCLAIM`).
213
+ * ERC-8021: `toDataSuffix(["celina", ...])` with lowercase codes.
214
+ * Example: `["goclaim"]` codes `celina`, `goclaim`.
215
+ * Existing legacy UTF-8 on `data` is left in place; a matching ERC-8021 suffix is ensured.
213
216
  */
214
217
  export function appendCelinaCalldataTag(data, attributionTags) {
215
218
  if (!data || data === "0x")
216
219
  return data;
217
- const legacyHex = buildLegacyAttributionSuffixHex(attributionTags);
218
- const legacySuffix = legacyHex.slice(2);
219
220
  const erc8021Hex = buildErc8021AttributionSuffix(attributionTags);
220
221
  const expectedCodes = toErc8021AttributionCodes(attributionTags);
221
- const fullDualSuffix = `${legacySuffix}${erc8021Hex.slice(2)}`.toLowerCase();
222
- if (data.toLowerCase().endsWith(fullDualSuffix))
222
+ const tip = fromDataSuffix(data);
223
+ if (tip && sameCodeSets(tip.codes, expectedCodes)) {
223
224
  return data;
224
- let result = stripErc8021SuffixIfPresent(data);
225
- if (!result.toLowerCase().endsWith(legacySuffix.toLowerCase())) {
226
- result = concat([result, legacyHex]);
227
- }
228
- const decoded = fromDataSuffix(result);
229
- if (!decoded || !sameCodeSets(decoded.codes, expectedCodes)) {
230
- result = concat([result, erc8021Hex]);
231
225
  }
232
- return result;
226
+ const without8021 = stripErc8021SuffixIfPresent(data);
227
+ return concat([without8021, erc8021Hex]);
233
228
  }
234
229
  //# sourceMappingURL=celina-tag.js.map