@fatsolutions/cairo-abi-codec 0.0.3 → 0.1.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.
- package/README.md +101 -14
- package/dist/typed-encoder.d.ts +26 -2
- package/dist/typed-encoder.d.ts.map +1 -1
- package/dist/typed-encoder.js +89 -0
- package/dist/typed-encoder.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @fatsolutions/cairo-abi-codec
|
|
2
2
|
|
|
3
|
-
Type-safe encode/decode for Cairo structs and
|
|
3
|
+
Type-safe encode/decode for Cairo structs, enums, constructors, and events to Starknet calldata.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -100,6 +100,72 @@ decoded.activeVariant(); // => 'Move'
|
|
|
100
100
|
decoded.unwrap(); // => 42n
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
+
## Constructors
|
|
104
|
+
|
|
105
|
+
Encode/decode constructor calldata for deploy transactions:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
const abi = [
|
|
109
|
+
{
|
|
110
|
+
type: "constructor",
|
|
111
|
+
name: "constructor",
|
|
112
|
+
inputs: [
|
|
113
|
+
{ name: "owner", type: "core::starknet::contract_address::ContractAddress" },
|
|
114
|
+
{ name: "initial_supply", type: "core::integer::u64" },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
] as const;
|
|
118
|
+
|
|
119
|
+
const codec = createTypedCodec(abi);
|
|
120
|
+
|
|
121
|
+
const encoded = codec.encodeConstructor({
|
|
122
|
+
owner: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
|
|
123
|
+
initial_supply: 1000n,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const decoded = codec.decodeConstructor(encoded);
|
|
127
|
+
// => { owner: '0x049d...dc7', initial_supply: 1000n }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The constructor can reference struct/enum types defined in the same ABI.
|
|
131
|
+
|
|
132
|
+
## Events
|
|
133
|
+
|
|
134
|
+
Decode events from transaction receipts. Event members are split by `kind`: `"key"` members come from the keys array, `"data"` members from the data array.
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
const abi = [
|
|
138
|
+
{
|
|
139
|
+
type: "event",
|
|
140
|
+
name: "Transfer",
|
|
141
|
+
kind: "struct",
|
|
142
|
+
members: [
|
|
143
|
+
{ name: "from", type: "core::starknet::contract_address::ContractAddress", kind: "key" },
|
|
144
|
+
{ name: "to", type: "core::starknet::contract_address::ContractAddress", kind: "key" },
|
|
145
|
+
{ name: "amount", type: "core::integer::u64", kind: "data" },
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
] as const;
|
|
149
|
+
|
|
150
|
+
const codec = createTypedCodec(abi);
|
|
151
|
+
|
|
152
|
+
// Decoding from a transaction receipt — strip the selector (keys[0]) first:
|
|
153
|
+
const decoded = codec.decodeEvent("Transfer", {
|
|
154
|
+
keys: receipt.events[0].keys.slice(1), // skip selector
|
|
155
|
+
data: receipt.events[0].data,
|
|
156
|
+
});
|
|
157
|
+
// => { from: '0x049d...dc7', to: '0x000...001', amount: 500n }
|
|
158
|
+
|
|
159
|
+
// Encoding (for testing) — returns { keys, data } without selector
|
|
160
|
+
const encoded = codec.encodeEvent("Transfer", {
|
|
161
|
+
from: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
|
|
162
|
+
to: "0x0000000000000000000000000000000000000000000000000000000000000001",
|
|
163
|
+
amount: 500n,
|
|
164
|
+
});
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Only `kind: "struct"` events are supported. Enum events (`kind: "enum"`) are Cairo's internal dispatch pattern and don't need off-chain handling.
|
|
168
|
+
|
|
103
169
|
## ContractAddress
|
|
104
170
|
|
|
105
171
|
Decoded `ContractAddress` fields are automatically formatted as `0x`-prefixed, zero-padded 64-char hex strings. This applies in all positions: top-level struct members, nested structs, Options, Arrays, and custom enum variants.
|
|
@@ -124,19 +190,38 @@ const codec = createTypedCodec(subset);
|
|
|
124
190
|
|
|
125
191
|
### `createTypedCodec(abi)`
|
|
126
192
|
|
|
127
|
-
Creates a reusable codec with
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
193
|
+
Creates a reusable codec with the following methods:
|
|
194
|
+
|
|
195
|
+
| Method | Description |
|
|
196
|
+
|---|---|
|
|
197
|
+
| `encode(typeName, data)` | Encode a struct or enum to calldata |
|
|
198
|
+
| `decode(typeName, calldata)` | Decode calldata to a struct or enum |
|
|
199
|
+
| `encodeConstructor(data)` | Encode constructor arguments to calldata |
|
|
200
|
+
| `decodeConstructor(calldata)` | Decode constructor calldata |
|
|
201
|
+
| `encodeEvent(eventName, data)` | Encode event data to `{ keys, data }` |
|
|
202
|
+
| `decodeEvent(eventName, { keys, data })` | Decode event keys/data to a typed object |
|
|
203
|
+
|
|
204
|
+
### One-off helpers
|
|
205
|
+
|
|
206
|
+
| Function | Description |
|
|
207
|
+
|---|---|
|
|
208
|
+
| `encodeTyped(abi, typeName, data)` | One-off struct/enum encoding |
|
|
209
|
+
| `decodeTyped(abi, typeName, calldata)` | One-off struct/enum decoding |
|
|
210
|
+
| `encodeConstructor(abi, data)` | One-off constructor encoding |
|
|
211
|
+
| `decodeConstructor(abi, calldata)` | One-off constructor decoding |
|
|
212
|
+
| `encodeEvent(abi, eventName, data)` | One-off event encoding |
|
|
213
|
+
| `decodeEvent(abi, eventName, event)` | One-off event decoding |
|
|
214
|
+
|
|
215
|
+
### Type utilities
|
|
216
|
+
|
|
217
|
+
| Type | Description |
|
|
218
|
+
|---|---|
|
|
219
|
+
| `AbiType<TAbi, TName>` | TypeScript type for a struct or enum |
|
|
220
|
+
| `ConstructorArgs<TAbi>` | Typed object for constructor inputs |
|
|
221
|
+
| `AbiEventType<TAbi, TName>` | Typed object for event members |
|
|
222
|
+
| `ExtractAbiTypeNames<TAbi>` | Union of all struct/enum names |
|
|
223
|
+
| `ExtractAbiConstructor<TAbi>` | Constructor entry from the ABI |
|
|
224
|
+
| `ExtractAbiEventNames<TAbi>` | Union of all event names |
|
|
140
225
|
|
|
141
226
|
### `narrowAbi(abi, names)`
|
|
142
227
|
|
|
@@ -148,6 +233,8 @@ Filters an ABI to only the named struct/enum entries, preserving the const tuple
|
|
|
148
233
|
- Integer types (`u64`, `u128`, `u256`, `felt252`) resolve to `bigint`
|
|
149
234
|
- `Option<T>` resolves to `CairoOption<T>`, custom enums to `CairoCustomEnum`
|
|
150
235
|
- `ContractAddress` decodes to `0x`-prefixed hex strings (64 chars, zero-padded)
|
|
236
|
+
- Constructor ABIs use `inputs` (not `members`) — the codec handles this automatically
|
|
237
|
+
- Event `decodeEvent` expects keys **without** the selector — strip `keys[0]` from receipt data
|
|
151
238
|
|
|
152
239
|
## Build & Test
|
|
153
240
|
|
package/dist/typed-encoder.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames, StringToPrimitiveType } from "abi-wan-kanabi/kanabi";
|
|
2
|
-
export type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames } from "abi-wan-kanabi/kanabi";
|
|
1
|
+
import type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames, ExtractAbiEventNames, EventToPrimitiveType, StringToPrimitiveType } from "abi-wan-kanabi/kanabi";
|
|
2
|
+
export type { Abi, ExtractAbiStructNames, ExtractAbiEnumNames, ExtractAbiEventNames } from "abi-wan-kanabi/kanabi";
|
|
3
3
|
/** Extracts the constructor entry from an ABI. */
|
|
4
4
|
export type ExtractAbiConstructor<TAbi extends Abi> = Extract<TAbi[number], {
|
|
5
5
|
type: "constructor";
|
|
@@ -8,6 +8,8 @@ export type ExtractAbiConstructor<TAbi extends Abi> = Extract<TAbi[number], {
|
|
|
8
8
|
export type ConstructorArgs<TAbi extends Abi> = {
|
|
9
9
|
[K in ExtractAbiConstructor<TAbi>["inputs"][number] as K["name"]]: StringToPrimitiveType<TAbi, K["type"]>;
|
|
10
10
|
};
|
|
11
|
+
/** Gets the TypeScript type for a struct event defined in the ABI. */
|
|
12
|
+
export type AbiEventType<TAbi extends Abi, TName extends ExtractAbiEventNames<TAbi>> = EventToPrimitiveType<TAbi, TName>;
|
|
11
13
|
/** Union of all struct and enum type names in the ABI. */
|
|
12
14
|
export type ExtractAbiTypeNames<TAbi extends Abi> = ExtractAbiStructNames<TAbi> | ExtractAbiEnumNames<TAbi>;
|
|
13
15
|
export type ExtractAbiType<TAbi extends Abi, K extends ExtractAbiTypeNames<TAbi>> = Extract<TAbi[number], {
|
|
@@ -42,6 +44,14 @@ export declare function createTypedCodec<TAbi extends Abi>(abi: TAbi): {
|
|
|
42
44
|
decode<TName extends ExtractAbiTypeNames<TAbi>>(typeName: TName, calldata: string[]): AbiType<TAbi, TName>;
|
|
43
45
|
encodeConstructor(data: ConstructorArgs<TAbi>): string[];
|
|
44
46
|
decodeConstructor(calldata: string[]): ConstructorArgs<TAbi>;
|
|
47
|
+
encodeEvent<TName extends ExtractAbiEventNames<TAbi>>(eventName: TName, data: AbiEventType<TAbi, TName>): {
|
|
48
|
+
keys: string[];
|
|
49
|
+
data: string[];
|
|
50
|
+
};
|
|
51
|
+
decodeEvent<TName extends ExtractAbiEventNames<TAbi>>(eventName: TName, event: {
|
|
52
|
+
keys: string[];
|
|
53
|
+
data: string[];
|
|
54
|
+
}): AbiEventType<TAbi, TName>;
|
|
45
55
|
};
|
|
46
56
|
/**
|
|
47
57
|
* One-off type-safe encoding.
|
|
@@ -59,4 +69,18 @@ export declare function encodeConstructor<TAbi extends Abi>(abi: TAbi, data: Con
|
|
|
59
69
|
* One-off constructor decoding.
|
|
60
70
|
*/
|
|
61
71
|
export declare function decodeConstructor<TAbi extends Abi>(abi: TAbi, calldata: string[]): ConstructorArgs<TAbi>;
|
|
72
|
+
/**
|
|
73
|
+
* One-off event encoding.
|
|
74
|
+
*/
|
|
75
|
+
export declare function encodeEvent<TAbi extends Abi, TName extends ExtractAbiEventNames<TAbi>>(abi: TAbi, eventName: TName, data: AbiEventType<TAbi, TName>): {
|
|
76
|
+
keys: string[];
|
|
77
|
+
data: string[];
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* One-off event decoding.
|
|
81
|
+
*/
|
|
82
|
+
export declare function decodeEvent<TAbi extends Abi, TName extends ExtractAbiEventNames<TAbi>>(abi: TAbi, eventName: TName, event: {
|
|
83
|
+
keys: string[];
|
|
84
|
+
data: string[];
|
|
85
|
+
}): AbiEventType<TAbi, TName>;
|
|
62
86
|
//# sourceMappingURL=typed-encoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-encoder.d.ts","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,GAAG,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"typed-encoder.d.ts","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"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"}
|
package/dist/typed-encoder.js
CHANGED
|
@@ -139,6 +139,25 @@ function transformAddresses(value, cairoType, typeMap) {
|
|
|
139
139
|
}
|
|
140
140
|
return value;
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Build a synthetic struct from arbitrary members and return
|
|
144
|
+
* a CallData instance + typeMap for encode/decode.
|
|
145
|
+
*/
|
|
146
|
+
function buildSyntheticCodec(abi, structName, members) {
|
|
147
|
+
const syntheticStruct = {
|
|
148
|
+
type: "struct",
|
|
149
|
+
name: structName,
|
|
150
|
+
members,
|
|
151
|
+
};
|
|
152
|
+
const typeEntries = abi.filter((e) => e.type === "struct" || e.type === "enum");
|
|
153
|
+
const syntheticAbi = [syntheticStruct, ...typeEntries];
|
|
154
|
+
const wrapped = buildWrappedAbi(syntheticAbi);
|
|
155
|
+
const patched = patchAbi(wrapped, structName);
|
|
156
|
+
return {
|
|
157
|
+
callData: new CallData(patched),
|
|
158
|
+
typeMap: buildTypeMap(syntheticAbi),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
142
161
|
// ============================================================================
|
|
143
162
|
// Type-Safe Codec
|
|
144
163
|
// ============================================================================
|
|
@@ -200,6 +219,64 @@ export function createTypedCodec(abi) {
|
|
|
200
219
|
const raw = constructorCallData.parse("__codec__", calldata);
|
|
201
220
|
return transformAddresses(raw, "__ConstructorArgs__", constructorTypeMap);
|
|
202
221
|
},
|
|
222
|
+
encodeEvent(eventName, data) {
|
|
223
|
+
const eventEntry = abi.find((e) => e.type === "event" && e.name === eventName && e.kind === "struct");
|
|
224
|
+
if (!eventEntry) {
|
|
225
|
+
throw new Error(`ABI does not contain a struct event named "${eventName}"`);
|
|
226
|
+
}
|
|
227
|
+
const members = eventEntry.members;
|
|
228
|
+
const keyMembers = members
|
|
229
|
+
.filter((m) => m.kind === "key")
|
|
230
|
+
.map((m) => ({ name: m.name, type: m.type }));
|
|
231
|
+
const dataMembers = members
|
|
232
|
+
.filter((m) => m.kind === "data")
|
|
233
|
+
.map((m) => ({ name: m.name, type: m.type }));
|
|
234
|
+
const dataObj = data;
|
|
235
|
+
let keys = [];
|
|
236
|
+
if (keyMembers.length > 0) {
|
|
237
|
+
const keysCodec = buildSyntheticCodec(abi, "__EventKeys__", keyMembers);
|
|
238
|
+
const keyData = {};
|
|
239
|
+
for (const m of keyMembers)
|
|
240
|
+
keyData[m.name] = dataObj[m.name];
|
|
241
|
+
keys = keysCodec.callData.compile("__codec__", [keyData]);
|
|
242
|
+
}
|
|
243
|
+
let encodedData = [];
|
|
244
|
+
if (dataMembers.length > 0) {
|
|
245
|
+
const dataCodec = buildSyntheticCodec(abi, "__EventData__", dataMembers);
|
|
246
|
+
const dataValues = {};
|
|
247
|
+
for (const m of dataMembers)
|
|
248
|
+
dataValues[m.name] = dataObj[m.name];
|
|
249
|
+
encodedData = dataCodec.callData.compile("__codec__", [dataValues]);
|
|
250
|
+
}
|
|
251
|
+
return { keys, data: encodedData };
|
|
252
|
+
},
|
|
253
|
+
decodeEvent(eventName, event) {
|
|
254
|
+
const eventEntry = abi.find((e) => e.type === "event" && e.name === eventName && e.kind === "struct");
|
|
255
|
+
if (!eventEntry) {
|
|
256
|
+
throw new Error(`ABI does not contain a struct event named "${eventName}"`);
|
|
257
|
+
}
|
|
258
|
+
const members = eventEntry.members;
|
|
259
|
+
const keyMembers = members
|
|
260
|
+
.filter((m) => m.kind === "key")
|
|
261
|
+
.map((m) => ({ name: m.name, type: m.type }));
|
|
262
|
+
const dataMembers = members
|
|
263
|
+
.filter((m) => m.kind === "data")
|
|
264
|
+
.map((m) => ({ name: m.name, type: m.type }));
|
|
265
|
+
let result = {};
|
|
266
|
+
if (keyMembers.length > 0) {
|
|
267
|
+
const keysCodec = buildSyntheticCodec(abi, "__EventKeys__", keyMembers);
|
|
268
|
+
const raw = keysCodec.callData.parse("__codec__", event.keys);
|
|
269
|
+
const transformed = transformAddresses(raw, "__EventKeys__", keysCodec.typeMap);
|
|
270
|
+
Object.assign(result, transformed);
|
|
271
|
+
}
|
|
272
|
+
if (dataMembers.length > 0) {
|
|
273
|
+
const dataCodec = buildSyntheticCodec(abi, "__EventData__", dataMembers);
|
|
274
|
+
const raw = dataCodec.callData.parse("__codec__", event.data);
|
|
275
|
+
const transformed = transformAddresses(raw, "__EventData__", dataCodec.typeMap);
|
|
276
|
+
Object.assign(result, transformed);
|
|
277
|
+
}
|
|
278
|
+
return result;
|
|
279
|
+
},
|
|
203
280
|
};
|
|
204
281
|
}
|
|
205
282
|
/**
|
|
@@ -226,4 +303,16 @@ export function encodeConstructor(abi, data) {
|
|
|
226
303
|
export function decodeConstructor(abi, calldata) {
|
|
227
304
|
return createTypedCodec(abi).decodeConstructor(calldata);
|
|
228
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* One-off event encoding.
|
|
308
|
+
*/
|
|
309
|
+
export function encodeEvent(abi, eventName, data) {
|
|
310
|
+
return createTypedCodec(abi).encodeEvent(eventName, data);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* One-off event decoding.
|
|
314
|
+
*/
|
|
315
|
+
export function decodeEvent(abi, eventName, event) {
|
|
316
|
+
return createTypedCodec(abi).decodeEvent(eventName, event);
|
|
317
|
+
}
|
|
229
318
|
//# sourceMappingURL=typed-encoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed-encoder.js","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"typed-encoder.js","sourceRoot":"","sources":["../src/typed-encoder.ts"],"names":[],"mappings":"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"}
|