@andrewkimjoseph/celina-sdk 0.4.5 → 0.4.7
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 +51 -21
- package/build/config/celina-tag.d.ts +2 -0
- package/build/config/celina-tag.js +10 -1
- package/build/config/celina-tag.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/utils/carbon-execution.js +3 -6
- package/build/utils/carbon-execution.js.map +1 -1
- package/build/utils/carbon-prepared-flow.js +4 -1
- package/build/utils/carbon-prepared-flow.js.map +1 -1
- package/build/utils/carbon-rest-adapter.js +2 -1
- package/build/utils/carbon-rest-adapter.js.map +1 -1
- package/build/utils/finalize-carbon-prepare.d.ts +10 -0
- package/build/utils/finalize-carbon-prepare.js +17 -0
- package/build/utils/finalize-carbon-prepare.js.map +1 -0
- package/package.json +1 -1
- package/tests/catalog/domains/carbon.ts +138 -0
package/README.md
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
# Celina SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**`@andrewkimjoseph/celina-sdk@0.4.7`** — 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
|
|
|
7
|
+
## Stack
|
|
8
|
+
|
|
9
|
+
Celina is layered from chain logic through agent tooling:
|
|
10
|
+
|
|
11
|
+
| Layer | Package | Role |
|
|
12
|
+
|-------|---------|------|
|
|
13
|
+
| **SDK** | `@andrewkimjoseph/celina-sdk` | Reads, gas estimates, `prepare*` flows, Carbon REST + SDK hybrid |
|
|
14
|
+
| **MCP** | `@andrewkimjoseph/celina-mcp` | MCP tools for Cursor / Claude / LM Studio — stdio writes or hosted reads |
|
|
15
|
+
| **MCP host** | `celina-mcp-host` | Vercel Streamable HTTP — read-only public endpoint |
|
|
16
|
+
|
|
17
|
+
This repo is the **SDK**. Downstream packages depend on published npm semver (no local `file:` links in production).
|
|
18
|
+
|
|
7
19
|
## Install
|
|
8
20
|
|
|
9
21
|
```bash
|
|
@@ -17,12 +29,13 @@ Requires Node.js ≥ 20.
|
|
|
17
29
|
**Full docs:** [celina-sdk on GitBook](https://andrewkimjoseph.gitbook.io/celina-sdk)
|
|
18
30
|
|
|
19
31
|
- [Quick start](https://andrewkimjoseph.gitbook.io/celina-sdk/getting-started/quick-start)
|
|
32
|
+
- [Architecture](docs/concepts/architecture.md) — client composition and stack
|
|
33
|
+
- [Prepared flows](docs/concepts/prepared-flows.md) — `SerializedPreparedFlow`, CELINA calldata tag
|
|
20
34
|
- [wagmi integration](https://andrewkimjoseph.gitbook.io/celina-sdk/guides/wagmi-integration)
|
|
21
|
-
- [
|
|
22
|
-
- [GoodDollar UBI](docs/guides/gooddollar.md) — whitelist, daily entitlement, `prepareClaimUbi`
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [Telemetry](docs/guides/telemetry.md) — optional Amplitude read metrics (opt out with `CELINA_ANALYTICS_DISABLED=1`)
|
|
35
|
+
- [Carbon DeFi on Celo](docs/guides/carbon.md) — hybrid REST + `@bancor/carbon-sdk` (25 operations)
|
|
36
|
+
- [GoodDollar UBI](docs/guides/gooddollar.md) — whitelist, daily entitlement, `prepareClaimUbi`
|
|
37
|
+
- [Self Agent ID](docs/guides/self-agent-id.md) — verify, register, refresh human-backed agents
|
|
38
|
+
- [Telemetry](docs/guides/telemetry.md) — optional Amplitude read metrics (`CELINA_ANALYTICS_DISABLED=1`)
|
|
26
39
|
- [API reference](https://andrewkimjoseph.gitbook.io/celina-sdk/api-reference)
|
|
27
40
|
|
|
28
41
|
Docs source lives in [`docs/`](docs/) in this repository.
|
|
@@ -37,7 +50,7 @@ const celina = createCelinaClient();
|
|
|
37
50
|
await celina.token.getStablecoinBalances("0xYourAddress");
|
|
38
51
|
|
|
39
52
|
const flow = await celina.transaction.prepareSend("0xFrom", "0xTo", "USDm", "10");
|
|
40
|
-
// flow.steps → pass to wagmi sendTransaction
|
|
53
|
+
// flow.steps → pass to wagmi sendTransaction (calldata includes CELINA attribution suffix)
|
|
41
54
|
|
|
42
55
|
// Carbon DeFi (reads + unsigned strategy/trade prep)
|
|
43
56
|
const strategies = await celina.carbon.getStrategies("0xYourAddress");
|
|
@@ -49,40 +62,57 @@ const prepared = await celina.carbon.prepareLimitOrder({
|
|
|
49
62
|
price: 0.5,
|
|
50
63
|
budget: 100,
|
|
51
64
|
});
|
|
52
|
-
// prepared.preparedFlow?.steps
|
|
65
|
+
// prepared.preparedFlow?.steps — controller + approve steps, all tagged
|
|
66
|
+
// prepared.deep_link — Carbon trade UI reference (optional)
|
|
67
|
+
// prepared.warnings — always surface to the user
|
|
53
68
|
|
|
54
69
|
// GoodDollar UBI (reads + unsigned claim)
|
|
55
70
|
const eligibility = await celina.gooddollar.getUbiClaimEligibility("0xYourAddress");
|
|
56
71
|
const ubiFlow = await celina.gooddollar.prepareClaimUbi("0xYourAddress");
|
|
57
|
-
// ubiFlow.steps → wagmi sendTransaction (G$ to signer, gas in CELO)
|
|
58
72
|
```
|
|
59
73
|
|
|
60
|
-
##
|
|
74
|
+
## Prepared flows and calldata tagging
|
|
61
75
|
|
|
62
|
-
|
|
76
|
+
All `prepare*` methods return a **`SerializedPreparedFlow`**: ordered unsigned steps for the user's wallet.
|
|
63
77
|
|
|
64
|
-
|
|
65
|
-
|-----------------------------|-------------------|
|
|
66
|
-
| `getWhitelistingInfo`, `getUbiClaimEligibility` | `prepareClaimUbi` |
|
|
78
|
+
Every step with calldata gets a **CELINA attribution suffix** (`appendCelinaCalldataTag`) — sends, Mento FX, Uniswap, Aave, GoodDollar, and **Carbon controller transactions** (not just ERC-20 approvals). Pass `step.data` to wagmi unchanged.
|
|
67
79
|
|
|
68
|
-
|
|
80
|
+
See [Prepared flows](docs/concepts/prepared-flows.md).
|
|
69
81
|
|
|
70
82
|
## Carbon DeFi
|
|
71
83
|
|
|
72
|
-
Hybrid **Carbon REST** (`https://mcp.carbondefi.xyz`) plus **`@bancor/carbon-sdk`** fallback for trade quotes and taker swaps when REST is unavailable. All 25 operations target Celo mainnet
|
|
84
|
+
Hybrid **Carbon REST** (`https://mcp.carbondefi.xyz`) plus **`@bancor/carbon-sdk`** fallback for trade quotes and taker swaps when REST is unavailable. All 25 operations target Celo mainnet.
|
|
73
85
|
|
|
74
86
|
| Reads (`celina.carbon`) | Prepare (unsigned) |
|
|
75
87
|
|-------------------------|-------------------|
|
|
76
|
-
| `getStrategies`, `getStrategy`, `getTradeQuote`, `explorePair`, `resolveToken`, `getActivity`, `findOpportunities`, `getProtocolStats`, `getPriceHistory`, `simulateStrategy`, `help`, `learn` |
|
|
88
|
+
| `getStrategies`, `getStrategy`, `getTradeQuote`, `explorePair`, `resolveToken`, `getActivity`, `findOpportunities`, `getProtocolStats`, `getPriceHistory`, `simulateStrategy`, `help`, `learn` | 13 `prepare*` methods — limit/range/recurring/concentrated/full-range orders, edit/reprice/deposit/withdraw/pause/resume/delete, taker `prepareTrade` |
|
|
89
|
+
|
|
90
|
+
- Token symbols are **normalized to `0x` addresses** before Carbon REST (avoids ENS resolution errors on Celo).
|
|
91
|
+
- **`finalizeCarbonPrepare(carbon, wallet, prepared, orderMeta)`** — merges ERC-20 approve steps via `buildExecutionSteps` into `preparedFlow.steps` (used by MCP `prepare_carbon_*` and browser apps).
|
|
92
|
+
- **`deep_link`** on prepare responses — Carbon REST trade/disposable UI URL (reference only; signing is via your wallet flow).
|
|
93
|
+
- **`carbonActivityDeepLink(wallet)`** — post-execution activity explorer on [celo.carbondefi.xyz](https://celo.carbondefi.xyz).
|
|
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`.
|
|
96
|
+
|
|
97
|
+
Full workflow: [Carbon DeFi guide](docs/guides/carbon.md).
|
|
98
|
+
|
|
99
|
+
## GoodDollar UBI
|
|
100
|
+
|
|
101
|
+
Identity whitelist reads, daily entitlement checks, and unsigned `UBISchemeV2.claim()` preparation. One claim per verified identity per day.
|
|
102
|
+
|
|
103
|
+
| Reads | Prepare |
|
|
104
|
+
|-------|---------|
|
|
105
|
+
| `getWhitelistingInfo`, `getUbiClaimEligibility` | `prepareClaimUbi` |
|
|
77
106
|
|
|
78
|
-
|
|
107
|
+
MCP: `get_gooddollar_whitelisting_info`, `get_gooddollar_ubi_entitlement` (read); `claim_daily_gooddollar_ubi` (stdio write with server key). Browser apps: `prepareClaimUbi` + wagmi.
|
|
79
108
|
|
|
80
|
-
|
|
109
|
+
[GoodDollar guide](docs/guides/gooddollar.md)
|
|
81
110
|
|
|
82
111
|
## Related packages
|
|
83
112
|
|
|
84
|
-
- [`@andrewkimjoseph/celina-mcp`](https://www.npmjs.com/package/@andrewkimjoseph/celina-mcp) — MCP server
|
|
85
|
-
- [
|
|
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)
|
|
114
|
+
- [`celina-mcp-host`](../celina-mcp-host/) — Vercel-hosted read-only MCP endpoint
|
|
115
|
+
- [`@selfxyz/agent-sdk`](https://www.npmjs.com/package/@selfxyz/agent-sdk) — Self Agent ID browser flows
|
|
86
116
|
|
|
87
117
|
## License
|
|
88
118
|
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
/** Calldata suffix appended to prepared transactions for on-chain Celina attribution. */
|
|
2
2
|
export declare const CELINA_DATA_SUFFIX: `0x${string}`;
|
|
3
|
+
/** Append CELINA suffix to calldata; no-op when empty or already tagged. */
|
|
4
|
+
export declare function appendCelinaCalldataTag(data: `0x${string}`): `0x${string}`;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import { stringToHex } from "viem";
|
|
1
|
+
import { concat, stringToHex } from "viem";
|
|
2
2
|
/** Calldata suffix appended to prepared transactions for on-chain Celina attribution. */
|
|
3
3
|
export const CELINA_DATA_SUFFIX = stringToHex("CELINA");
|
|
4
|
+
/** Append CELINA suffix to calldata; no-op when empty or already tagged. */
|
|
5
|
+
export function appendCelinaCalldataTag(data) {
|
|
6
|
+
if (!data || data === "0x")
|
|
7
|
+
return data;
|
|
8
|
+
const suffix = CELINA_DATA_SUFFIX.slice(2);
|
|
9
|
+
if (data.toLowerCase().endsWith(suffix.toLowerCase()))
|
|
10
|
+
return data;
|
|
11
|
+
return concat([data, CELINA_DATA_SUFFIX]);
|
|
12
|
+
}
|
|
4
13
|
//# sourceMappingURL=celina-tag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"celina-tag.js","sourceRoot":"","sources":["../../src/config/celina-tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"celina-tag.js","sourceRoot":"","sources":["../../src/config/celina-tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE3C,yFAAyF;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAExD,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,IAAmB;IACzD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,MAAM,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -79,6 +79,7 @@ export type { ContractCallParams } from "./services/contract.service.js";
|
|
|
79
79
|
/** Aave V3 Celo pool address and supported asset symbols. */
|
|
80
80
|
export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
|
|
81
81
|
export { CHAIN, DEFAULT_RPC_URL } from "./config/chains.js";
|
|
82
|
+
export { appendCelinaCalldataTag, CELINA_DATA_SUFFIX, } from "./config/celina-tag.js";
|
|
82
83
|
export type { AaveAsset } from "./config/aave.js";
|
|
83
84
|
export { GOODDOLLAR_IDENTITY_ADDRESS, GOODDOLLAR_UBI_SCHEME_ADDRESS, } from "./config/gooddollar.js";
|
|
84
85
|
export type { CarbonPrepareResult, CarbonRestSuccess, } from "./types/carbon.js";
|
|
@@ -86,6 +87,7 @@ export type { CarbonWriteBody } from "./services/carbon.service.js";
|
|
|
86
87
|
export { CARBON_APP_BASE_URL, CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, carbonActivityDeepLink, } from "./config/carbon.js";
|
|
87
88
|
export { resolveCarbonTokenAddress, normalizeCarbonWriteBody, CARBON_WRITE_TOKEN_FIELDS, } from "./utils/carbon-token.js";
|
|
88
89
|
export { buildCarbonExecutionSteps } from "./utils/carbon-execution.js";
|
|
90
|
+
export { finalizeCarbonPrepare, type FinalizedCarbonPrepareFlow, } from "./utils/finalize-carbon-prepare.js";
|
|
89
91
|
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
90
92
|
export { SelfService, type VerifySelfAgentParams, type VerifySelfRequestParams, type RegisterSelfAgentParams, } from "./services/self.service.js";
|
|
91
93
|
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
package/build/index.js
CHANGED
|
@@ -55,10 +55,12 @@ export { serializePreparedFlow } from "./types/prepared.js";
|
|
|
55
55
|
/** Aave V3 Celo pool address and supported asset symbols. */
|
|
56
56
|
export { AAVE_POOL, AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "./config/aave.js";
|
|
57
57
|
export { CHAIN, DEFAULT_RPC_URL } from "./config/chains.js";
|
|
58
|
+
export { appendCelinaCalldataTag, CELINA_DATA_SUFFIX, } from "./config/celina-tag.js";
|
|
58
59
|
export { GOODDOLLAR_IDENTITY_ADDRESS, GOODDOLLAR_UBI_SCHEME_ADDRESS, } from "./config/gooddollar.js";
|
|
59
60
|
export { CARBON_APP_BASE_URL, CARBON_CHAIN, CELO_CARBON_CONTRACTS, DEFAULT_CARBON_REST_BASE_URL, carbonActivityDeepLink, } from "./config/carbon.js";
|
|
60
61
|
export { resolveCarbonTokenAddress, normalizeCarbonWriteBody, CARBON_WRITE_TOKEN_FIELDS, } from "./utils/carbon-token.js";
|
|
61
62
|
export { buildCarbonExecutionSteps } from "./utils/carbon-execution.js";
|
|
63
|
+
export { finalizeCarbonPrepare, } from "./utils/finalize-carbon-prepare.js";
|
|
62
64
|
export { CarbonRestError } from "./clients/carbon-rest.js";
|
|
63
65
|
export { SelfService, } from "./services/self.service.js";
|
|
64
66
|
export { SelfApiError, SelfExpiredSessionError, } from "./clients/self-api.js";
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { encodeFunctionData, erc20Abi } from "viem";
|
|
2
2
|
import { CELO_CARBON_CONTRACTS } from "../config/carbon.js";
|
|
3
|
-
import {
|
|
3
|
+
import { appendCelinaCalldataTag } from "../config/celina-tag.js";
|
|
4
4
|
import { resolveCarbonTokenAddress } from "./carbon-token.js";
|
|
5
5
|
const CARBON_CONTROLLER = CELO_CARBON_CONTRACTS.carbonControllerAddress;
|
|
6
|
-
function taggedCalldata(data) {
|
|
7
|
-
return concat([data, CELINA_DATA_SUFFIX]);
|
|
8
|
-
}
|
|
9
6
|
function collectApprovalSpecs(meta) {
|
|
10
7
|
const specs = [];
|
|
11
8
|
const direction = meta.direction;
|
|
@@ -74,7 +71,7 @@ async function buildApprovalSteps(from, tokenService, clientFactory, specs) {
|
|
|
74
71
|
if (!(await needsApproval(clientFactory, from, tokenAddress, amountWei))) {
|
|
75
72
|
continue;
|
|
76
73
|
}
|
|
77
|
-
const approveData =
|
|
74
|
+
const approveData = appendCelinaCalldataTag(encodeFunctionData({
|
|
78
75
|
abi: erc20Abi,
|
|
79
76
|
functionName: "approve",
|
|
80
77
|
args: [CARBON_CONTROLLER, amountWei],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbon-execution.js","sourceRoot":"","sources":["../../src/utils/carbon-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"carbon-execution.js","sourceRoot":"","sources":["../../src/utils/carbon-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { appendCelinaCalldataTag } from "../config/celina-tag.js";
|
|
1
2
|
import { serializePreparedFlow, } from "../types/prepared.js";
|
|
2
3
|
/**
|
|
3
4
|
* Map @bancor/carbon-sdk `PopulatedTransaction` to Celina prepared flow (SDK fallback path).
|
|
4
5
|
*/
|
|
5
6
|
export function populatedTransactionToPreparedFlow(from, tx, summary) {
|
|
6
7
|
const to = (tx.to ?? "");
|
|
7
|
-
const data = tx.data
|
|
8
|
+
const data = tx.data
|
|
9
|
+
? appendCelinaCalldataTag(tx.data)
|
|
10
|
+
: undefined;
|
|
8
11
|
const value = tx.value !== undefined && tx.value !== null
|
|
9
12
|
? String(tx.value)
|
|
10
13
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbon-prepared-flow.js","sourceRoot":"","sources":["../../src/utils/carbon-prepared-flow.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAQ9B;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAChD,IAAmB,EACnB,EAAgB,EAChB,OAAe;IAEf,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAkB,CAAC;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"carbon-prepared-flow.js","sourceRoot":"","sources":["../../src/utils/carbon-prepared-flow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAQ9B;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAChD,IAAmB,EACnB,EAAgB,EAChB,OAAe;IAEf,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAkB,CAAC;IAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI;QAClB,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,IAAqB,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,KAAK,GACT,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI;QACzC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,IAAI,GAAe;QACvB,IAAI,EAAE,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QACpD,EAAE;QACF,IAAI;QACJ,KAAK;QACL,WAAW,EAAE,OAAO;KACrB,CAAC;IAEF,OAAO,qBAAqB,CAAC;QAC3B,IAAI;QACJ,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,OAAO;QACP,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { appendCelinaCalldataTag } from "../config/celina-tag.js";
|
|
1
2
|
import { serializePreparedFlow } from "../types/prepared.js";
|
|
2
3
|
function asHex(value) {
|
|
3
4
|
if (!value)
|
|
@@ -37,7 +38,7 @@ function txToPreparedStep(tx, index) {
|
|
|
37
38
|
return {
|
|
38
39
|
kind: value && value !== "0" ? "native" : "contract",
|
|
39
40
|
to,
|
|
40
|
-
data: data === "0x" ? undefined : data,
|
|
41
|
+
data: data === "0x" ? undefined : appendCelinaCalldataTag(data),
|
|
41
42
|
value,
|
|
42
43
|
description: `Carbon transaction step ${index + 1}`,
|
|
43
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carbon-rest-adapter.js","sourceRoot":"","sources":["../../src/utils/carbon-rest-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAC;AAE1F,SAAS,KAAK,CAAC,KAAyB;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;IACxD,OAAO,CAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgC;IAC1D,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,WAAW;QACnB,OAAO,CAAC,oBAAoB;QAC5B,OAAO,CAAC,mBAAmB;KAC5B,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,GAAG,CAAC,IAAI,CAAC,MAA0B,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAwB,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAoB,EAAE,KAAa;IAC3D,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACrB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACpC,MAAM,KAAK,GACT,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI;QACzC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;QACpD,EAAE;QACF,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"carbon-rest-adapter.js","sourceRoot":"","sources":["../../src/utils/carbon-rest-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CarbonService } from "../services/carbon.service.js";
|
|
2
|
+
import type { CarbonPrepareResult } from "../types/carbon.js";
|
|
3
|
+
import type { SerializedPreparedFlow } from "../types/prepared.js";
|
|
4
|
+
export type FinalizedCarbonPrepareFlow = SerializedPreparedFlow & {
|
|
5
|
+
deep_link?: string;
|
|
6
|
+
warnings?: string[];
|
|
7
|
+
strategyPreview?: unknown;
|
|
8
|
+
};
|
|
9
|
+
/** Merge Carbon REST prepare + ERC-20 approve steps for external wallet signing. */
|
|
10
|
+
export declare function finalizeCarbonPrepare(carbon: Pick<CarbonService, "buildExecutionSteps">, from: `0x${string}`, prepared: CarbonPrepareResult, orderMeta: Record<string, unknown>): Promise<FinalizedCarbonPrepareFlow>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Merge Carbon REST prepare + ERC-20 approve steps for external wallet signing. */
|
|
2
|
+
export async function finalizeCarbonPrepare(carbon, from, prepared, orderMeta) {
|
|
3
|
+
const steps = await carbon.buildExecutionSteps(from, prepared, orderMeta);
|
|
4
|
+
if (!prepared.preparedFlow) {
|
|
5
|
+
throw new Error("Carbon prepare returned no transaction steps.");
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
...prepared.preparedFlow,
|
|
9
|
+
steps,
|
|
10
|
+
...(prepared.deep_link ? { deep_link: String(prepared.deep_link) } : {}),
|
|
11
|
+
...(prepared.warnings?.length ? { warnings: prepared.warnings } : {}),
|
|
12
|
+
...(prepared.strategyPreview !== undefined
|
|
13
|
+
? { strategyPreview: prepared.strategyPreview }
|
|
14
|
+
: {}),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=finalize-carbon-prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize-carbon-prepare.js","sourceRoot":"","sources":["../../src/utils/finalize-carbon-prepare.ts"],"names":[],"mappings":"AAUA,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAkD,EAClD,IAAmB,EACnB,QAA6B,EAC7B,SAAkC;IAElC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,GAAG,QAAQ,CAAC,YAAY;QACxB,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE;YAC/C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -40,6 +40,23 @@ function carbonPrepare(
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
function carbonExecute(
|
|
44
|
+
id: string,
|
|
45
|
+
tool: string,
|
|
46
|
+
args: () => Record<string, unknown>,
|
|
47
|
+
): OperationSpec {
|
|
48
|
+
return {
|
|
49
|
+
id,
|
|
50
|
+
domain: "carbon",
|
|
51
|
+
layer: "write",
|
|
52
|
+
requiresEnv: ["CELO_PRIVATE_KEY"],
|
|
53
|
+
requiresWrites: true,
|
|
54
|
+
mcp: { tool, arguments: args },
|
|
55
|
+
assert: (result) => assertHasKeys(result, ["hash", "from"]),
|
|
56
|
+
skip: () => "Set CELINA_TEST_WRITES=1 to run on-chain Carbon execute tests",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
43
60
|
export const carbonOperations: OperationSpec[] = [
|
|
44
61
|
carbonRead(
|
|
45
62
|
"carbon.getStrategies",
|
|
@@ -406,4 +423,125 @@ export const carbonOperations: OperationSpec[] = [
|
|
|
406
423
|
min_return: "0",
|
|
407
424
|
}),
|
|
408
425
|
),
|
|
426
|
+
carbonExecute(
|
|
427
|
+
"carbon.executeLimitOrder",
|
|
428
|
+
"execute_carbon_limit_order",
|
|
429
|
+
() => ({
|
|
430
|
+
base_token: CELO,
|
|
431
|
+
quote_token: USDC,
|
|
432
|
+
direction: "buy",
|
|
433
|
+
price: 0.5,
|
|
434
|
+
budget: 1,
|
|
435
|
+
}),
|
|
436
|
+
),
|
|
437
|
+
carbonExecute(
|
|
438
|
+
"carbon.executeRangeOrder",
|
|
439
|
+
"execute_carbon_range_order",
|
|
440
|
+
() => ({
|
|
441
|
+
base_token: CELO,
|
|
442
|
+
quote_token: USDC,
|
|
443
|
+
direction: "buy",
|
|
444
|
+
price: 0.5,
|
|
445
|
+
budget: 1,
|
|
446
|
+
}),
|
|
447
|
+
),
|
|
448
|
+
carbonExecute(
|
|
449
|
+
"carbon.executeRecurringStrategy",
|
|
450
|
+
"execute_carbon_recurring_strategy",
|
|
451
|
+
() => ({
|
|
452
|
+
base_token: CELO,
|
|
453
|
+
quote_token: USDC,
|
|
454
|
+
direction: "buy",
|
|
455
|
+
price: 0.5,
|
|
456
|
+
budget: 1,
|
|
457
|
+
}),
|
|
458
|
+
),
|
|
459
|
+
carbonExecute(
|
|
460
|
+
"carbon.executeConcentratedStrategy",
|
|
461
|
+
"execute_carbon_concentrated_strategy",
|
|
462
|
+
() => ({
|
|
463
|
+
base_token: CELO,
|
|
464
|
+
quote_token: USDC,
|
|
465
|
+
budget: 1,
|
|
466
|
+
}),
|
|
467
|
+
),
|
|
468
|
+
carbonExecute(
|
|
469
|
+
"carbon.executeFullRangeStrategy",
|
|
470
|
+
"execute_carbon_full_range_strategy",
|
|
471
|
+
() => ({
|
|
472
|
+
base_token: CELO,
|
|
473
|
+
quote_token: USDC,
|
|
474
|
+
budget: 1,
|
|
475
|
+
}),
|
|
476
|
+
),
|
|
477
|
+
carbonExecute(
|
|
478
|
+
"carbon.executeRepriceStrategy",
|
|
479
|
+
"execute_carbon_reprice_strategy",
|
|
480
|
+
() => ({
|
|
481
|
+
wallet_address: CARBON_WALLET,
|
|
482
|
+
strategy_id: "1",
|
|
483
|
+
price: 0.5,
|
|
484
|
+
}),
|
|
485
|
+
),
|
|
486
|
+
carbonExecute(
|
|
487
|
+
"carbon.executeEditStrategy",
|
|
488
|
+
"execute_carbon_edit_strategy",
|
|
489
|
+
() => ({
|
|
490
|
+
wallet_address: CARBON_WALLET,
|
|
491
|
+
strategy_id: "1",
|
|
492
|
+
price: 0.5,
|
|
493
|
+
}),
|
|
494
|
+
),
|
|
495
|
+
carbonExecute(
|
|
496
|
+
"carbon.executeDepositBudget",
|
|
497
|
+
"execute_carbon_deposit_budget",
|
|
498
|
+
() => ({
|
|
499
|
+
wallet_address: CARBON_WALLET,
|
|
500
|
+
strategy_id: "1",
|
|
501
|
+
budget: 1,
|
|
502
|
+
}),
|
|
503
|
+
),
|
|
504
|
+
carbonExecute(
|
|
505
|
+
"carbon.executeWithdrawBudget",
|
|
506
|
+
"execute_carbon_withdraw_budget",
|
|
507
|
+
() => ({
|
|
508
|
+
wallet_address: CARBON_WALLET,
|
|
509
|
+
strategy_id: "1",
|
|
510
|
+
budget: 1,
|
|
511
|
+
}),
|
|
512
|
+
),
|
|
513
|
+
carbonExecute(
|
|
514
|
+
"carbon.executePauseStrategy",
|
|
515
|
+
"execute_carbon_pause_strategy",
|
|
516
|
+
() => ({
|
|
517
|
+
wallet_address: CARBON_WALLET,
|
|
518
|
+
strategy_id: "1",
|
|
519
|
+
}),
|
|
520
|
+
),
|
|
521
|
+
carbonExecute(
|
|
522
|
+
"carbon.executeResumeStrategy",
|
|
523
|
+
"execute_carbon_resume_strategy",
|
|
524
|
+
() => ({
|
|
525
|
+
wallet_address: CARBON_WALLET,
|
|
526
|
+
strategy_id: "1",
|
|
527
|
+
}),
|
|
528
|
+
),
|
|
529
|
+
carbonExecute(
|
|
530
|
+
"carbon.executeDeleteStrategy",
|
|
531
|
+
"execute_carbon_delete_strategy",
|
|
532
|
+
() => ({
|
|
533
|
+
wallet_address: CARBON_WALLET,
|
|
534
|
+
strategy_id: "1",
|
|
535
|
+
}),
|
|
536
|
+
),
|
|
537
|
+
carbonExecute(
|
|
538
|
+
"carbon.executeTrade",
|
|
539
|
+
"execute_carbon_trade",
|
|
540
|
+
() => ({
|
|
541
|
+
source_token: CELO,
|
|
542
|
+
target_token: USDC,
|
|
543
|
+
amount: "1",
|
|
544
|
+
min_return: "0",
|
|
545
|
+
}),
|
|
546
|
+
),
|
|
409
547
|
];
|