@chainlink/cre-sdk 1.16.0 → 1.17.0-alpha.2

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 (26) hide show
  1. package/dist/generated/capabilities/blockchain/solana/v1alpha/client_pb.d.ts +2885 -15
  2. package/dist/generated/capabilities/blockchain/solana/v1alpha/client_pb.js +459 -7
  3. package/dist/generated/capabilities/networking/http/v1alpha/client_pb.js +1 -1
  4. package/dist/generated/chain-selectors/testnet/evm/glamsterdam-devnet-6.d.ts +3 -0
  5. package/dist/generated/chain-selectors/testnet/evm/glamsterdam-devnet-6.js +12 -0
  6. package/dist/generated/chain-selectors/testnet/evm/t-rex-testnet.d.ts +3 -0
  7. package/dist/generated/chain-selectors/testnet/evm/t-rex-testnet.js +12 -0
  8. package/dist/generated/networks.d.ts +1 -1
  9. package/dist/generated/networks.js +14 -0
  10. package/dist/generated/sdk/v1alpha/sdk_pb.d.ts +505 -0
  11. package/dist/generated/sdk/v1alpha/sdk_pb.js +121 -15
  12. package/dist/generated/tools/generator/v1alpha/cre_metadata_pb.d.ts +30 -1
  13. package/dist/generated/tools/generator/v1alpha/cre_metadata_pb.js +20 -2
  14. package/dist/generated-sdk/capabilities/blockchain/solana/v1alpha/client_sdk_gen.d.ts +54 -2
  15. package/dist/generated-sdk/capabilities/blockchain/solana/v1alpha/client_sdk_gen.js +287 -1
  16. package/dist/sdk/cre/index.d.ts +2 -2
  17. package/dist/sdk/cre/index.js +1 -1
  18. package/dist/sdk/test/generated/capabilities/blockchain/solana/v1alpha/solana_mock_gen.d.ts +19 -1
  19. package/dist/sdk/test/generated/capabilities/blockchain/solana/v1alpha/solana_mock_gen.js +141 -1
  20. package/dist/sdk/utils/capabilities/blockchain/solana/solana-helpers.d.ts +65 -1
  21. package/dist/sdk/utils/capabilities/blockchain/solana/solana-helpers.js +76 -0
  22. package/dist/sdk/utils/index.d.ts +1 -0
  23. package/dist/sdk/utils/index.js +1 -0
  24. package/dist/sdk/utils/triggers/trigger-interface.d.ts +7 -0
  25. package/dist/sdk/utils/triggers/trigger-interface.js +13 -1
  26. package/package.json +2 -2
@@ -98,3 +98,79 @@ export const SOLANA_DEFAULT_REPORT_ENCODER = {
98
98
  * @returns The prepared report request.
99
99
  */
100
100
  export const prepareSolanaReportRequest = (payload, reportEncoder = SOLANA_DEFAULT_REPORT_ENCODER) => prepareReportRequestFromBytes(payload, reportEncoder);
101
+ const U64_LENGTH = 8;
102
+ const U64_SIGN_BIT = 1n << 63n;
103
+ const UTF8_ENCODER = new TextEncoder();
104
+ /** Encodes a bigint as a big-endian u64, wrapping modulo 2^64 (two's complement). */
105
+ const u64BE = (value) => {
106
+ const bytes = new Uint8Array(U64_LENGTH);
107
+ new DataView(bytes.buffer).setBigUint64(0, BigInt.asUintN(64, value), false);
108
+ return bytes;
109
+ };
110
+ /**
111
+ * Encodes a filter value for use in a `SubkeyConfig` `ValueComparator`,
112
+ * matching the byte representation the Solana log-trigger capability indexes.
113
+ *
114
+ * Encodings (mirrors Go `bindings.PrepareSubkeyValue`):
115
+ * - `Uint8Array` — used as-is (public keys, fixed byte arrays, `bytes` fields)
116
+ * - `string` — UTF-8 bytes
117
+ * - `bigint` / integer `number` — 8-byte big-endian two's complement
118
+ *
119
+ * For `f32`/`f64` event fields use {@link prepareSubkeyFloatValue}; passing a
120
+ * non-integer `number` here throws.
121
+ *
122
+ * @param value - The filter value to encode.
123
+ * @returns The encoded comparator value bytes.
124
+ */
125
+ export const prepareSubkeyValue = (value) => {
126
+ if (value instanceof Uint8Array) {
127
+ return value;
128
+ }
129
+ if (typeof value === 'string') {
130
+ return UTF8_ENCODER.encode(value);
131
+ }
132
+ if (typeof value === 'bigint') {
133
+ return u64BE(value);
134
+ }
135
+ if (typeof value === 'number') {
136
+ if (!Number.isInteger(value)) {
137
+ throw new Error('prepareSubkeyValue: non-integer number; use prepareSubkeyFloatValue for f32/f64 values');
138
+ }
139
+ return u64BE(BigInt(value));
140
+ }
141
+ throw new Error(`prepareSubkeyValue: unsupported subkey value type ${typeof value}`);
142
+ };
143
+ /**
144
+ * Encodes an `f32`/`f64` filter value into the 8-byte big-endian
145
+ * representation the Solana log-trigger capability indexes.
146
+ *
147
+ * Byte-compatible with Go `bindings.EncodeIndexedValue` for floats: positive
148
+ * values map to `float64bits + 2^63`, others to `2^63 - float64bits`
149
+ * (modulo 2^64). Ordering is preserved among values of the same sign.
150
+ *
151
+ * @param value - The float filter value to encode.
152
+ * @returns The encoded comparator value bytes.
153
+ */
154
+ export const prepareSubkeyFloatValue = (value) => {
155
+ const view = new DataView(new ArrayBuffer(U64_LENGTH));
156
+ view.setFloat64(0, value, false);
157
+ const bits = view.getBigUint64(0, false);
158
+ return u64BE(value > 0 ? bits + U64_SIGN_BIT : U64_SIGN_BIT - bits);
159
+ };
160
+ /** Method name Anchor uses for `emit_cpi!` self-invocations. */
161
+ const ANCHOR_CPI_METHOD_NAME = 'anchor:event';
162
+ const ANCHOR_CPI_METHOD_NAME_B64 = bytesToBase64(UTF8_ENCODER.encode(ANCHOR_CPI_METHOD_NAME));
163
+ /**
164
+ * Builds the `CPIFilterConfig` for log triggers on events emitted via
165
+ * Anchor's `emit_cpi!`: destination is the program itself, method is
166
+ * `anchor:event`.
167
+ *
168
+ * Mirrors Go `bindings.AnchorCPILogTriggerConfig`.
169
+ *
170
+ * @param programId - The program's public key, as 32 raw bytes or a base58 string.
171
+ * @returns The CPI filter config in protobuf JSON shape.
172
+ */
173
+ export const anchorCPILogTriggerConfig = (programId) => ({
174
+ destAddress: bytesToBase64(typeof programId === 'string' ? solanaAddressToBytes(programId) : programId),
175
+ methodName: ANCHOR_CPI_METHOD_NAME_B64,
176
+ });
@@ -6,6 +6,7 @@ export * from './chain-selectors';
6
6
  export * from './decode-json';
7
7
  export * from './hex-utils';
8
8
  export * from './safe-json-stringify';
9
+ export * from './triggers/trigger-interface';
9
10
  export * from './values/consensus_aggregators';
10
11
  export * from './values/serializer_types';
11
12
  export * from './values/value';
@@ -5,6 +5,7 @@ export * from './chain-selectors';
5
5
  export * from './decode-json';
6
6
  export * from './hex-utils';
7
7
  export * from './safe-json-stringify';
8
+ export * from './triggers/trigger-interface';
8
9
  export * from './values/consensus_aggregators';
9
10
  export * from './values/serializer_types';
10
11
  export * from './values/value';
@@ -19,3 +19,10 @@ export interface Trigger<TRawTriggerOutput extends Message<string>, TTriggerOutp
19
19
  /** Transform the raw trigger output to the adapted type */
20
20
  adapt(rawOutput: TRawTriggerOutput): TTriggerOutput;
21
21
  }
22
+ /**
23
+ * Wraps a trigger with an extra output transformation, delegating everything
24
+ * else to the wrapped trigger. The TypeScript analog of Go bindings embedding
25
+ * `cre.Trigger` and overriding only `Adapt` — generated bindings use this to
26
+ * decode raw trigger outputs into typed data.
27
+ */
28
+ export declare const adaptTrigger: <TRaw extends Message<string>, TIn, TOut>(trigger: Trigger<TRaw, TIn>, adapt: (output: TIn) => TOut) => Trigger<TRaw, TOut>;
@@ -1 +1,13 @@
1
- export {};
1
+ /**
2
+ * Wraps a trigger with an extra output transformation, delegating everything
3
+ * else to the wrapped trigger. The TypeScript analog of Go bindings embedding
4
+ * `cre.Trigger` and overriding only `Adapt` — generated bindings use this to
5
+ * decode raw trigger outputs into typed data.
6
+ */
7
+ export const adaptTrigger = (trigger, adapt) => ({
8
+ capabilityId: () => trigger.capabilityId(),
9
+ method: () => trigger.method(),
10
+ outputSchema: () => trigger.outputSchema(),
11
+ configAsAny: () => trigger.configAsAny(),
12
+ adapt: (rawOutput) => adapt(trigger.adapt(rawOutput)),
13
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainlink/cre-sdk",
3
- "version": "1.16.0",
3
+ "version": "1.17.0-alpha.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -73,7 +73,7 @@
73
73
  "@biomejs/biome": "2.3.14",
74
74
  "@bufbuild/buf": "1.56.0",
75
75
  "@types/bun": "1.3.8",
76
- "chain-selectors": "https://github.com/smartcontractkit/chain-selectors.git#3e718d1c9910b2952c50befe378b0fe8707e6647",
76
+ "chain-selectors": "https://github.com/smartcontractkit/chain-selectors.git#7d1e9798b28404818eba5246383c0688c4ee0e1f",
77
77
  "fast-glob": "3.3.3",
78
78
  "ts-proto": "2.7.5",
79
79
  "typescript": "5.9.3",