@andrewkimjoseph/celina-sdk 0.14.0 → 0.15.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.
@@ -19,9 +19,15 @@ export type AAClient = {
19
19
  smartAccountAddress: `0x${string}`;
20
20
  /** Underlying sponsorship service (URLs, paymaster, fees). */
21
21
  gasSponsorship: GasSponsorshipService;
22
+ /**
23
+ * Tags applied in `sendPreparedFlow` via `appendCelinaCalldataTag`.
24
+ * `undefined` means step `data` is passed through unchanged.
25
+ */
26
+ attributionTags: string[] | undefined;
22
27
  /**
23
28
  * Submit `prepare*` output (ordered `steps` / prepared transactions) as sponsored UserOp(s).
24
- * Does not append attribution; uses each step’s `data` as-is (including Celina dual tags from `prepare*`).
29
+ * When `attributionTags` were set on this client, each step’s `data` is dual-tagged
30
+ * before submit; otherwise `data` is used as-is (including tags from `prepare*`).
25
31
  */
26
32
  sendPreparedFlow: (flow: PreparedFlow | SerializedPreparedFlow, options?: SendPreparedFlowOptions) => Promise<SendPreparedFlowResult>;
27
33
  };
@@ -31,7 +37,8 @@ export type AAClient = {
31
37
  * Pass an explicit `gasSponsorship` provider object — credentials are app-owned
32
38
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
33
39
  *
34
- * Does not accept `attributionTags`. Set them on `createCelinaClient({ attributionTags })`
35
- * before `prepare*`; `sendPreparedFlow` preserves already-tagged step calldata.
40
+ * Optional `attributionTags` are applied in `sendPreparedFlow` via
41
+ * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
42
+ * pass step calldata through unchanged.
36
43
  */
37
44
  export declare function createAAClient(options: CreateAAClientOptions): Promise<AAClient>;
@@ -44,12 +44,14 @@ export async function deriveSmartAccountAddress(owner, publicClient) {
44
44
  * Pass an explicit `gasSponsorship` provider object — credentials are app-owned
45
45
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
46
46
  *
47
- * Does not accept `attributionTags`. Set them on `createCelinaClient({ attributionTags })`
48
- * before `prepare*`; `sendPreparedFlow` preserves already-tagged step calldata.
47
+ * Optional `attributionTags` are applied in `sendPreparedFlow` via
48
+ * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
49
+ * pass step calldata through unchanged.
49
50
  */
50
51
  export async function createAAClient(options) {
51
52
  const eoaAccount = resolveOwner(options.owner);
52
53
  const publicClient = options.publicClient ?? defaultPublicClient();
54
+ const attributionTags = options.attributionTags;
53
55
  const gasSponsorship = new GasSponsorshipService(options.gasSponsorship, CHAIN.id);
54
56
  const smartAccount = await toSimpleSmartAccount({
55
57
  client: publicClient,
@@ -71,7 +73,7 @@ export async function createAAClient(options) {
71
73
  });
72
74
  async function sendPreparedFlow(flow, sendOptions) {
73
75
  const mode = sendOptions?.mode ?? "batch";
74
- const calls = preparedStepsToUserOpCalls(flow.steps);
76
+ const calls = preparedStepsToUserOpCalls(flow.steps, attributionTags);
75
77
  const userOpHashes = [];
76
78
  const transactionHashes = [];
77
79
  if (mode === "batch") {
@@ -106,6 +108,7 @@ export async function createAAClient(options) {
106
108
  eoaAddress: eoaAccount.address,
107
109
  smartAccountAddress: smartAccount.address,
108
110
  gasSponsorship,
111
+ attributionTags,
109
112
  sendPreparedFlow,
110
113
  };
111
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-aa-client.js","sourceRoot":"","sources":["../../src/aa/create-aa-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-aa-client.js","sourceRoot":"","sources":["../../src/aa/create-aa-client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import type { PreparedTx } from "../types/prepared.js";
2
2
  import type { UserOpCall } from "./types.js";
3
- /** Map Celina prepared steps to smart-account `calls` (preserves tagged `data`). */
4
- export declare function preparedStepsToUserOpCalls(steps: PreparedTx[]): UserOpCall[];
3
+ /**
4
+ * Map Celina prepared steps to smart-account `calls`.
5
+ * When `attributionTags` is provided, each step's `data` is dual-tagged
6
+ * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
7
+ */
8
+ export declare function preparedStepsToUserOpCalls(steps: PreparedTx[], attributionTags?: string[]): UserOpCall[];
@@ -1,15 +1,25 @@
1
- /** Map Celina prepared steps to smart-account `calls` (preserves tagged `data`). */
2
- export function preparedStepsToUserOpCalls(steps) {
1
+ import { appendCelinaCalldataTag } from "../config/celina-tag.js";
2
+ /**
3
+ * Map Celina prepared steps to smart-account `calls`.
4
+ * When `attributionTags` is provided, each step's `data` is dual-tagged
5
+ * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
6
+ */
7
+ export function preparedStepsToUserOpCalls(steps, attributionTags) {
3
8
  if (!steps.length) {
4
9
  throw new Error("prepared flow has no steps");
5
10
  }
11
+ const shouldTag = attributionTags !== undefined;
6
12
  return steps.map((step) => {
7
13
  const value = step.value !== undefined && step.value !== ""
8
14
  ? BigInt(step.value)
9
15
  : undefined;
16
+ let data = step.data;
17
+ if (shouldTag && data !== undefined) {
18
+ data = appendCelinaCalldataTag(data, attributionTags);
19
+ }
10
20
  return {
11
21
  to: step.to,
12
- ...(step.data !== undefined ? { data: step.data } : {}),
22
+ ...(data !== undefined ? { data } : {}),
13
23
  ...(value !== undefined && value > 0n ? { value } : {}),
14
24
  };
15
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"prepared-calls.js","sourceRoot":"","sources":["../../src/aa/prepared-calls.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,MAAM,UAAU,0BAA0B,CAAC,KAAmB;IAC5D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;YAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"prepared-calls.js","sourceRoot":"","sources":["../../src/aa/prepared-calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIlE;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,eAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,KAAK,SAAS,CAAC;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;YAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,GAAG,uBAAuB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -16,8 +16,10 @@ export type GasSponsorshipConfig = {
16
16
  };
17
17
  /**
18
18
  * Options for {@link createAAClient}.
19
- * Does not accept `attributionTags` — set those on `createCelinaClient({ attributionTags })`
20
- * before calling `prepare*`.
19
+ *
20
+ * Set `attributionTags` here for hand-built prepared steps (tagged at `sendPreparedFlow`).
21
+ * For `prepare*` flows, you can set the same tags on `createCelinaClient` instead —
22
+ * use one consistent list per send path so suffixes do not stack with mismatched tags.
21
23
  */
22
24
  export type CreateAAClientOptions = {
23
25
  /** EOA owner of the Simple Smart Account (account or private key hex). */
@@ -26,6 +28,12 @@ export type CreateAAClientOptions = {
26
28
  gasSponsorship: GasSponsorshipConfig;
27
29
  /** Optional Celo public client; defaults to Forno mainnet. */
28
30
  publicClient?: PublicClient;
31
+ /**
32
+ * Optional custom tags applied via `appendCelinaCalldataTag` on each step's `data`
33
+ * in `sendPreparedFlow` (legacy `CELINA|…` + ERC-8021). When omitted, step data
34
+ * is passed through unchanged.
35
+ */
36
+ attributionTags?: string[];
29
37
  };
30
38
  /** How to map prepared transactions (`prepare*` output / ordered `steps`) into UserOperations. */
31
39
  export type SendPreparedFlowMode = "batch" | "sequential";
@@ -19,9 +19,15 @@ export type AAClient = {
19
19
  smartAccountAddress: `0x${string}`;
20
20
  /** Underlying sponsorship service (URLs, paymaster, fees). */
21
21
  gasSponsorship: GasSponsorshipService;
22
+ /**
23
+ * Tags applied in `sendPreparedFlow` via `appendCelinaCalldataTag`.
24
+ * `undefined` means step `data` is passed through unchanged.
25
+ */
26
+ attributionTags: string[] | undefined;
22
27
  /**
23
28
  * Submit `prepare*` output (ordered `steps` / prepared transactions) as sponsored UserOp(s).
24
- * Does not append attribution; uses each step’s `data` as-is (including Celina dual tags from `prepare*`).
29
+ * When `attributionTags` were set on this client, each step’s `data` is dual-tagged
30
+ * before submit; otherwise `data` is used as-is (including tags from `prepare*`).
25
31
  */
26
32
  sendPreparedFlow: (flow: PreparedFlow | SerializedPreparedFlow, options?: SendPreparedFlowOptions) => Promise<SendPreparedFlowResult>;
27
33
  };
@@ -31,7 +37,8 @@ export type AAClient = {
31
37
  * Pass an explicit `gasSponsorship` provider object — credentials are app-owned
32
38
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
33
39
  *
34
- * Does not accept `attributionTags`. Set them on `createCelinaClient({ attributionTags })`
35
- * before `prepare*`; `sendPreparedFlow` preserves already-tagged step calldata.
40
+ * Optional `attributionTags` are applied in `sendPreparedFlow` via
41
+ * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
42
+ * pass step calldata through unchanged.
36
43
  */
37
44
  export declare function createAAClient(options: CreateAAClientOptions): Promise<AAClient>;
@@ -44,12 +44,14 @@ export async function deriveSmartAccountAddress(owner, publicClient) {
44
44
  * Pass an explicit `gasSponsorship` provider object — credentials are app-owned
45
45
  * and never stored by Celina. v1 supports `provider: "pimlico"`.
46
46
  *
47
- * Does not accept `attributionTags`. Set them on `createCelinaClient({ attributionTags })`
48
- * before `prepare*`; `sendPreparedFlow` preserves already-tagged step calldata.
47
+ * Optional `attributionTags` are applied in `sendPreparedFlow` via
48
+ * `appendCelinaCalldataTag` (same dual format as `prepare*`). Omit them to
49
+ * pass step calldata through unchanged.
49
50
  */
50
51
  export async function createAAClient(options) {
51
52
  const eoaAccount = resolveOwner(options.owner);
52
53
  const publicClient = options.publicClient ?? defaultPublicClient();
54
+ const attributionTags = options.attributionTags;
53
55
  const gasSponsorship = new GasSponsorshipService(options.gasSponsorship, CHAIN.id);
54
56
  const smartAccount = await toSimpleSmartAccount({
55
57
  client: publicClient,
@@ -71,7 +73,7 @@ export async function createAAClient(options) {
71
73
  });
72
74
  async function sendPreparedFlow(flow, sendOptions) {
73
75
  const mode = sendOptions?.mode ?? "batch";
74
- const calls = preparedStepsToUserOpCalls(flow.steps);
76
+ const calls = preparedStepsToUserOpCalls(flow.steps, attributionTags);
75
77
  const userOpHashes = [];
76
78
  const transactionHashes = [];
77
79
  if (mode === "batch") {
@@ -106,6 +108,7 @@ export async function createAAClient(options) {
106
108
  eoaAddress: eoaAccount.address,
107
109
  smartAccountAddress: smartAccount.address,
108
110
  gasSponsorship,
111
+ attributionTags,
109
112
  sendPreparedFlow,
110
113
  };
111
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-aa-client.js","sourceRoot":"","sources":["../../../src/aa/create-aa-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-aa-client.js","sourceRoot":"","sources":["../../../src/aa/create-aa-client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import type { PreparedTx } from "../types/prepared.js";
2
2
  import type { UserOpCall } from "./types.js";
3
- /** Map Celina prepared steps to smart-account `calls` (preserves tagged `data`). */
4
- export declare function preparedStepsToUserOpCalls(steps: PreparedTx[]): UserOpCall[];
3
+ /**
4
+ * Map Celina prepared steps to smart-account `calls`.
5
+ * When `attributionTags` is provided, each step's `data` is dual-tagged
6
+ * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
7
+ */
8
+ export declare function preparedStepsToUserOpCalls(steps: PreparedTx[], attributionTags?: string[]): UserOpCall[];
@@ -1,15 +1,25 @@
1
- /** Map Celina prepared steps to smart-account `calls` (preserves tagged `data`). */
2
- export function preparedStepsToUserOpCalls(steps) {
1
+ import { appendCelinaCalldataTag } from "../config/celina-tag.js";
2
+ /**
3
+ * Map Celina prepared steps to smart-account `calls`.
4
+ * When `attributionTags` is provided, each step's `data` is dual-tagged
5
+ * via {@link appendCelinaCalldataTag}; otherwise `data` is preserved as-is.
6
+ */
7
+ export function preparedStepsToUserOpCalls(steps, attributionTags) {
3
8
  if (!steps.length) {
4
9
  throw new Error("prepared flow has no steps");
5
10
  }
11
+ const shouldTag = attributionTags !== undefined;
6
12
  return steps.map((step) => {
7
13
  const value = step.value !== undefined && step.value !== ""
8
14
  ? BigInt(step.value)
9
15
  : undefined;
16
+ let data = step.data;
17
+ if (shouldTag && data !== undefined) {
18
+ data = appendCelinaCalldataTag(data, attributionTags);
19
+ }
10
20
  return {
11
21
  to: step.to,
12
- ...(step.data !== undefined ? { data: step.data } : {}),
22
+ ...(data !== undefined ? { data } : {}),
13
23
  ...(value !== undefined && value > 0n ? { value } : {}),
14
24
  };
15
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"prepared-calls.js","sourceRoot":"","sources":["../../../src/aa/prepared-calls.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,MAAM,UAAU,0BAA0B,CAAC,KAAmB;IAC5D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;YAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAChB,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"prepared-calls.js","sourceRoot":"","sources":["../../../src/aa/prepared-calls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAIlE;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAmB,EACnB,eAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,SAAS,GAAG,eAAe,KAAK,SAAS,CAAC;IAChD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;YAC3C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,GAAG,uBAAuB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -16,8 +16,10 @@ export type GasSponsorshipConfig = {
16
16
  };
17
17
  /**
18
18
  * Options for {@link createAAClient}.
19
- * Does not accept `attributionTags` — set those on `createCelinaClient({ attributionTags })`
20
- * before calling `prepare*`.
19
+ *
20
+ * Set `attributionTags` here for hand-built prepared steps (tagged at `sendPreparedFlow`).
21
+ * For `prepare*` flows, you can set the same tags on `createCelinaClient` instead —
22
+ * use one consistent list per send path so suffixes do not stack with mismatched tags.
21
23
  */
22
24
  export type CreateAAClientOptions = {
23
25
  /** EOA owner of the Simple Smart Account (account or private key hex). */
@@ -26,6 +28,12 @@ export type CreateAAClientOptions = {
26
28
  gasSponsorship: GasSponsorshipConfig;
27
29
  /** Optional Celo public client; defaults to Forno mainnet. */
28
30
  publicClient?: PublicClient;
31
+ /**
32
+ * Optional custom tags applied via `appendCelinaCalldataTag` on each step's `data`
33
+ * in `sendPreparedFlow` (legacy `CELINA|…` + ERC-8021). When omitted, step data
34
+ * is passed through unchanged.
35
+ */
36
+ attributionTags?: string[];
29
37
  };
30
38
  /** How to map prepared transactions (`prepare*` output / ordered `steps`) into UserOperations. */
31
39
  export type SendPreparedFlowMode = "batch" | "sequential";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrewkimjoseph/celina-sdk",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,